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