填充計數式相位測量的分析與實(shí)現
要獲得兩個(gè)同頻信號間的相位值有多種實(shí)現方法。較為常用的一種是采用過(guò)零鑒相法,這種方法的基本要點(diǎn)是:將兩個(gè)同頻被測信號整形為兩個(gè)方波信號,其前后沿分別對應于被測信號的正向過(guò)零點(diǎn)和負向過(guò)零點(diǎn),然后測量出這兩個(gè)同頻方波的前沿(或后沿)之間的時(shí)間差比例,即為這兩個(gè)被測信號之間的相位差,簡(jiǎn)稱(chēng)相差。
而要獲得這個(gè)時(shí)間差比例,通常采用填充計數法,其基本原理見(jiàn)圖1,設A,B為兩路同頻待測的正弦波信號,兩信號經(jīng)整形后形成A'和B'兩路方波,若A'的兩個(gè)前沿之間(一個(gè)信號周期)的計數脈沖的個(gè)數為N個(gè),A'與B'的兩個(gè)相鄰前沿之間的計數脈沖的個(gè)數為n個(gè),則A,B兩路之間的相位差為:
n/N * 360° (1)
從上述方法測量相位的原理來(lái)看,要獲得兩個(gè)同頻信號間的相位差,只要獲得兩個(gè)計數值N和n,通過(guò)(1)式計算即可。那么相位計算的分辯率就為3600/N ,也就是表示相差的最小單位。當被測信號的頻率一定時(shí),計數脈沖的頻率就決定了相位測量的精度。如在一個(gè)信號周期內所獲得的計數脈沖的個(gè)數為360個(gè),則獲得相差的最小單位是3600/360=10(可看作是每個(gè)脈沖代表10)。若在一個(gè)信號周期內所獲得的計數脈沖的個(gè)數為3600個(gè),則獲得相差的最小單位就為3600/3600=0.10(可看作是每個(gè)脈沖代表0.10)。由此可見(jiàn)在一個(gè)信號周期內所獲得的計數脈沖的個(gè)數越多,則獲得相位差的最小單位也就越小,精度也就越高。要達到0.10以上的精度,則計數脈沖的頻率必須是被測信號頻率的3600倍以上。設被測信號頻率為fx,計數脈沖頻率為fa ,則設計時(shí)應滿(mǎn)足:
fa>3600×fx (2)
三.利用MCS-51系列單片機片內資源實(shí)現相位測量的分析
由于需要進(jìn)行計算,目前市場(chǎng)上流行的相位表,多數為單純利用MSC─51系列機片內資源實(shí)現計數與計算。在典型的MSC-51系列單機片內,有2個(gè)16位的定時(shí)/計數器(CTC0,CTC1),5個(gè)中斷源,時(shí)鐘頻率為3.8-12MHz ,這些都為實(shí)現相位差的測量與計算提供了一定的硬件基礎??衫闷瑑?個(gè)定時(shí)/計數器,(CTC0,CTC1)分別記錄前面所述的N和n的計數值。將CTC0,CTC1設置為定時(shí)方式(計片內機器周期數)。兩個(gè)外部中斷INT0,INT1,設置成下沿觸發(fā)方式,并將上述A',B'兩個(gè)方波信號接至INT0,INT1的輸入端。利用INT0和INT1的中斷服務(wù)程序來(lái)控制CTC0,CTC1的啟動(dòng)與停止,以此來(lái)獲取N和n的計數值。
由于MCS-51系列單片機的最高工作頻率為12MHZ,故CTC0,CTC1的最高計數頻率為1MHz。16位字長(cháng)的CTC0和CTC1計數范圍是0ー65535。對于1MHz的計數頻率而言,輸入信號的頻率響應范圍的下限是:在一個(gè)信號周期內CTC的計數從零計到最大65535,而每一計數脈沖的周期是1μS(1MHz的計數脈沖)。故CTC從零計到最大值所需時(shí)間是:65535 * 1μS=65535μS,因而,輸入信號的最低頻率約為1/0.065535=15.26Hz。頻率響應的上限是:雖然在一個(gè)信號周期內CTC的計數值大于零即可計算,但為了使計算結果具有足夠的精度(至少0.10),故記錄N值的CTC在一個(gè)信號周期內的計數值必須大于3600(因3600/3600=0.10)而CTC從零計數到3600所需時(shí)間為3600*1μS=3600μS。由此可得輸入信號的最高頻率約為1/0.0036=277.78Hz。
在最高的輸入信號頻率下,每一個(gè)計數脈沖即代表0.10機器每多計或少計一個(gè)脈沖就意味著(zhù)帶來(lái)一個(gè)0.10的誤差。另外由于CTC的啟停是由中斷服務(wù)程序來(lái)控制的,那么CTC啟停時(shí)刻不能絕對代表信號的下沿時(shí)刻,故誤差是不可避免。當信號頻率較低時(shí),其誤差尚可忽略。當信號頻率越接近最高響應頻率,其單片機所帶來(lái)的誤差就越不可忽略。以這樣的方式構成的相位計,實(shí)際上的最高響應頻率僅在100Hz左右。
四.高頻計數的實(shí)現
從以上分析得知,若僅利用單片機的資源來(lái)實(shí)現相差的測量,是無(wú)法以高精度測得較高頻率信號的相位差的。其關(guān)鍵所在是計數頻率已無(wú)法再提高。鑒于這點(diǎn)筆者考慮到不用單片機內部的CTC計數,而是采用廉價(jià)的74系列芯片搭成高速計數,鎖存電路。當計數值鎖定這后,再讀入單片機進(jìn)行計算和顯示。
具體實(shí)現的電路圖如圖2所示。高速計數器由4片74LS191串聯(lián)組成16位計數器。計數脈沖的輸入由一個(gè)觸發(fā)器控制,觸發(fā)器設計成自鎖式,即由被測的周期信號A'鎖定一個(gè)完整的信號周期后,封鎖計數脈沖的輸入 ,不再響應后一個(gè)周期,待單片機處理完該周期內的數據后,由單片機先對計數器清零,然后解除觸發(fā)器的封鎖,系統才繼續采集下一個(gè)信號周期的數據。周期計數鎖存器(記N值)由74LS373(U8),(U7)組成,相差計數鎖存器(記n值)由74LS373(U6),(U5)組成,其中(U5),(U7)鎖存低8位數據,(U6) ,(U8)鎖存高8位數據,當A'信號的上沿來(lái)臨時(shí),由觸發(fā)器打開(kāi)U10門(mén),開(kāi)始計數。當B' 信號的上沿來(lái)臨時(shí),鎖存U6,U5(獲得n值)。當A'信號的上沿再次來(lái)臨時(shí),鎖存U8,U7(獲得N值)。并封鎖觸發(fā)器。通知單片機依次讀入U5,U6,U7,U8的鎖存值進(jìn)行計算。高頻振蕩源采用高精度晶體振蕩器,以提供高精度的計數脈沖。
評論