??? 摘? 要: 針對(duì)傳統(tǒng)的“高頻用測(cè)頻法,低頻用測(cè)周法”的頻率測(cè)量的精度差異過(guò)大的不足,提出了在高低頻實(shí)現(xiàn)等精度測(cè)量的周期滑動(dòng)擴(kuò)展的測(cè)周法,并在單片機(jī)上予以實(shí)現(xiàn),。?
??? 關(guān)鍵詞: 頻率測(cè)量? 等精度測(cè)量? 周期滑動(dòng)擴(kuò)展? 單片機(jī)
?
??? 長(zhǎng)期以來(lái),在頻率測(cè)量領(lǐng)域內(nèi)一直沿用著“高頻用測(cè)頻法,低頻用測(cè)周法”的方法,這種做法對(duì)提高測(cè)量精度無(wú)疑是十分有效的,但卻存在兩個(gè)問(wèn)題:一是被測(cè)頻率越高或被測(cè)頻率越低則測(cè)量精度越高,但不同頻率下的測(cè)量精度差異甚大;二是在測(cè)頻法和測(cè)周法的頻率銜接點(diǎn)附近不可避免地存在著測(cè)量精度的跳變,使同一頻率的各次測(cè)量結(jié)果不同。這兩種測(cè)量的精度離散性問(wèn)題大大降低了測(cè)量結(jié)果的置信度,尤其在很多以頻率為判據(jù)的診斷系統(tǒng)中更是如此,。這時(shí)人們往往希望在整個(gè)頻率測(cè)量域中能獲得精度一致的測(cè)量結(jié)果,然而在經(jīng)典的測(cè)頻和測(cè)周法中,卻難以解決甚至無(wú)法解決。為此,本文摒棄了傳統(tǒng)的測(cè)頻與測(cè)周相結(jié)合的方法,采用單一測(cè)周法并輔以周期滑動(dòng)擴(kuò)展算法,在單片機(jī)上實(shí)現(xiàn)了高頻到低頻范圍內(nèi)的等精度測(cè)量,從根本上解決了測(cè)頻與測(cè)周結(jié)合方法的不足。?
1 周期滑動(dòng)擴(kuò)展的測(cè)周法?
??? 在周期測(cè)量法中,顧名思義是要測(cè)出被測(cè)信號(hào)兩相鄰脈沖間的間隔時(shí)間,如圖1所示,。?
?
?
??? 由圖1可知:?
?????
??? (3)式中第二項(xiàng)實(shí)際上是系統(tǒng)的時(shí)基誤差,通常取決于系統(tǒng)的晶振頻率穩(wěn)定度,與被測(cè)頻率無(wú)關(guān),而且因其值在10-6~10-9/d之間,所以在所要求的相對(duì)誤差未接近該范圍時(shí)可認(rèn)為:?
?????
??? 又由于量化誤差ΔN=±1(在本系統(tǒng)中實(shí)際上ΔN≤1),所以有:?
?????
??? 由(5)式可見(jiàn),計(jì)時(shí)次數(shù)N的大小基本決定了相對(duì)誤差的大小,顯然,N越大越好,。?
??? 由(1)式可知:?
?????
??? (6)式中To由系統(tǒng)時(shí)鐘確定,無(wú)法改變;而Tx則隨被測(cè)Fx而變。顯然要增大N,就必須增大Tx,在Tx無(wú)法隨意改變的情況下可考慮采用周期擴(kuò)展法變通解決,。?
??? 令:?
?????
??? 即多測(cè)M個(gè)Tx周期后,計(jì)時(shí)次數(shù)N′也隨之?dāng)U大M倍,必然使相對(duì)誤差縮小為原來(lái)的1/M,。顯然對(duì)不同的Fx,只要選取合適的M,便能滿足所要求的相對(duì)誤差,進(jìn)而實(shí)現(xiàn)被測(cè)頻域內(nèi)的等精度測(cè)量。由于M是由被測(cè)頻率Fx而定,因而這種周期擴(kuò)展是可靈活滑動(dòng)的,。?
??? 值得說(shuō)明的是,當(dāng)被測(cè)頻率很低時(shí)(例如Fx=0.01),即使選M=1,也可能使測(cè)得的N很大,。此時(shí)已無(wú)法考慮Fx較高時(shí)的等精度問(wèn)題,好在此時(shí)精度是上升而不是下降的。?
2 測(cè)量周期滑動(dòng)擴(kuò)展的硬件配合?
??? 在同樣的精度下,周期滑動(dòng)擴(kuò)展的測(cè)周法對(duì)時(shí)基頻率和硬件電路的要求比經(jīng)典的測(cè)頻與測(cè)周相結(jié)合的方法低得多,因而很適于在單片機(jī)上實(shí)現(xiàn),。但在具體實(shí)現(xiàn)時(shí)還應(yīng)考慮相應(yīng)的硬件配合,即周期擴(kuò)展因子M應(yīng)當(dāng)分為兩部分,其中一部分由單片機(jī)片內(nèi)解決,另一部分則應(yīng)由片外硬件解決,。?
??? M由單片機(jī)片內(nèi)解決很好理解,只要根據(jù)預(yù)測(cè)所得的N和精度所要求的N′求出相應(yīng)的M,由軟件控制測(cè)量M個(gè)Tx周期即可。M之所以還要由片外硬件解決一部分,是考慮到當(dāng)Fx很高時(shí),其受單片機(jī)內(nèi)置計(jì)數(shù)器硬件的計(jì)數(shù)頻率所限而無(wú)法對(duì)片外脈沖進(jìn)行計(jì)數(shù),。具體說(shuō)來(lái),當(dāng)89C51采用12MHz晶振時(shí),由于其T0引腳識(shí)別外部一個(gè)脈沖需要兩個(gè)機(jī)器周期,所以其片內(nèi)計(jì)數(shù)器的上限計(jì)數(shù)頻率僅為500kHz,。若被測(cè)Fx大于此值則無(wú)法直接測(cè)量其Tx。解決的辦法是將擴(kuò)展因子M的一部分由外部硬件分頻器承擔(dān),分頻器級(jí)數(shù)的切換由單片機(jī)控制,這樣便可由單片機(jī)外部實(shí)現(xiàn)部分的周期擴(kuò)展,。筆者實(shí)現(xiàn)此功能時(shí)分頻器采用8級(jí),如圖2所示,。這樣當(dāng)Fxmax=100MHz時(shí),外部分頻器由單片機(jī)切換為8級(jí),則Fxmax經(jīng)8級(jí)分頻后送到單片機(jī)計(jì)數(shù)端的Fx′僅為100MHz÷28=390.625kHz,完全滿足計(jì)數(shù)器硬件的要求。顯然若想進(jìn)一步提高測(cè)量頻率的上限,只要相應(yīng)增加片外分頻器的級(jí)數(shù)即可(當(dāng)然還得考慮印制版排版,、測(cè)量電路前級(jí)以及測(cè)量探頭的高頻設(shè)計(jì)問(wèn)題),。?
?
?
??? 此外在具體實(shí)現(xiàn)時(shí)還得注意合理選擇片外分頻器電路的速度。顯然第一級(jí)要求最高,宜選傳輸速度在6.5ns的SN74F74(雙D),。這樣在Fxmax=100MHz時(shí),兩級(jí)下來(lái)頻率便降為25MHz,后級(jí)便可選常規(guī)電路了,。?
??? 由圖2還可看到,Fx′送到單片機(jī)的計(jì)數(shù)端T0。按理說(shuō),測(cè)周期只要能測(cè)到信號(hào)的跳變即可,那么單片機(jī)的大部分引腳均可實(shí)現(xiàn)這一點(diǎn),。這里之所以選T0,是基于其具有21~2n的計(jì)數(shù)功能,。當(dāng)測(cè)一個(gè)周期時(shí),利用其裝入2n-1后計(jì)入一個(gè)脈沖便能溢出的特點(diǎn)連做兩次即可;當(dāng)測(cè)k個(gè)周期時(shí),裝入2n-k后一次計(jì)數(shù)溢出便可完成,不僅十分方便,而且省去了k次溢出中斷服務(wù)中應(yīng)做的軟件工作和由此帶來(lái)的時(shí)間延誤和測(cè)量誤差。從這個(gè)意義上說(shuō),T0引腳對(duì)應(yīng)的片內(nèi)計(jì)數(shù)器TC0以硬件方式承擔(dān)了擬由單片機(jī)軟件實(shí)現(xiàn)的周期擴(kuò)展任務(wù),。由此可以進(jìn)一步認(rèn)為,此處的周期滑動(dòng)擴(kuò)展實(shí)質(zhì)上是由單片機(jī)片內(nèi)外兩部分硬件分頻器在軟件的控制下協(xié)調(diào)完成的,。?
3 周期擴(kuò)展因子的配置與調(diào)整?
??? 由于周期擴(kuò)展因子M系由片外M1與片內(nèi)M2兩部分組成,且兩者作用不盡相同,因此配置與調(diào)整時(shí)要有所區(qū)別。其中M1控制的分頻器承擔(dān)著單片機(jī)計(jì)數(shù)端T0能否正確識(shí)別高頻時(shí)Fx′的重任,。因此配置與調(diào)整時(shí)應(yīng)當(dāng)優(yōu)先考慮M1,。同時(shí)考慮到在測(cè)量開(kāi)始時(shí)無(wú)法預(yù)計(jì)被測(cè)頻率的高低,因此M1的初始值應(yīng)設(shè)置為其配置的最大值28。至于M2,由于其處于周期擴(kuò)展的第二級(jí),因此在第一級(jí)級(jí)數(shù)確定的前提下,M2的最大值決定了測(cè)頻范圍的上限?,F(xiàn)因本系統(tǒng)設(shè)定的最高測(cè)量頻率為100MHz,所要求的相對(duì)誤差為10-4,系統(tǒng)的晶振頻率為12MHz,因此由(9)式可知計(jì)時(shí)值N′必須不小于104,所以在Fxmax=100MHz的情況下,由(8)式可得:?
?????
??? 因220=1024·1024>106,所以取Mmax=220,前已確定M1max=28,由此得:M2max=212,。為了在實(shí)際處理時(shí)方便起見(jiàn),分別取其指數(shù)為實(shí)際調(diào)整值:m1=0~8,m2=0~12。?
4 周期滑動(dòng)擴(kuò)展等精度測(cè)頻的軟件實(shí)現(xiàn)?
??? 如前所述,要實(shí)現(xiàn)周期滑動(dòng)擴(kuò)展的等精度測(cè)頻,只要根據(jù)測(cè)量的中間結(jié)果動(dòng)態(tài)地調(diào)整周期擴(kuò)展因子m1或m2即可,。具體說(shuō)來(lái)就是當(dāng)測(cè)量所得的計(jì)時(shí)值小時(shí)增大m1或m2,反之則減小,但在軟件實(shí)現(xiàn)時(shí)還得處理量程換檔和超量程判斷等問(wèn)題。?
??? 量程換檔可分為自動(dòng)和手動(dòng)兩種方式。手動(dòng)換檔是在測(cè)量時(shí)由人工按鍵告訴系統(tǒng)Fx處在什么范圍,自動(dòng)方式則完全不需人工干預(yù),。本系統(tǒng)沒(méi)有必要完全采用手動(dòng)方法,這是因?yàn)橹芷诨瑒?dòng)擴(kuò)展的算法本身便具有一定的自動(dòng)換檔作用,。然而也難以完全采用自動(dòng)方式,因每次測(cè)量時(shí)由于無(wú)法預(yù)計(jì)Fx是處在高端還是低端,因而難以確定兩個(gè)擴(kuò)展因子的初值。例如,Fx大于500kHz時(shí),不接入片外8級(jí)分頻器T0端便無(wú)法識(shí)別Fx的輸入脈沖;但當(dāng)Fx很低例如為1Hz時(shí),片外8級(jí)分頻器的接入將使原本只需1秒的測(cè)量過(guò)程竟然長(zhǎng)達(dá)256秒,。為此在片外增加一個(gè)選擇開(kāi)關(guān)K1,由其讀入的電平?jīng)Q定片外8級(jí)分頻器是否接入,。顯然K1的狀態(tài)取決于Fx是否大于等于500kHz。?
??? 超量程的判斷只能通過(guò)測(cè)量的結(jié)果來(lái)下結(jié)論,。本系統(tǒng)的測(cè)量范圍為100MHz~0.001Hz,。由前面所述的系統(tǒng)參數(shù)不難得出,在高端當(dāng)Fx>104.8576MHz時(shí),系統(tǒng)的計(jì)時(shí)次數(shù)將小于104,由此便可下“Fx超上限”的結(jié)論,當(dāng)然這里給Fxmax留了約4%的余量。在低端當(dāng)Fx<0.0009313Hz時(shí),系統(tǒng)的計(jì)時(shí)次數(shù)將大于109(超過(guò)30位二進(jìn)制),由此同樣可下“Fx超下限”的結(jié)論,當(dāng)然這里也給Fxmin留了約6.9%的余量,。?
??? 解決以上幾個(gè)主要問(wèn)題后,便可在軟硬件的適當(dāng)配合下以周期滑動(dòng)擴(kuò)展的測(cè)周法實(shí)現(xiàn)高低頻的等精度測(cè)量,。圖3給出了相應(yīng)的測(cè)量主流程圖。?
?
?
??? 由圖3可見(jiàn),周期測(cè)量的計(jì)時(shí)始于T0端測(cè)得的第一個(gè)脈沖的下跳沿,它利用了TC0在裝入2n-1后計(jì)入一個(gè)脈沖便會(huì)溢出,以及相鄰兩個(gè)機(jī)器周期測(cè)得一高一低便會(huì)計(jì)數(shù)的特點(diǎn),。這種以硬件進(jìn)行的檢測(cè)要比軟件指令做得可靠和干脆得多,因?yàn)?9C51的檢測(cè)指令最快也要2個(gè)機(jī)器周期(12MHz晶振時(shí)需2μs),而T0端輸入500kHz時(shí)稍有延誤便會(huì)造成檢測(cè)失誤(例如其它指令或中斷服務(wù)),。并且這種硬件檢測(cè)法不會(huì)影響緊隨的后續(xù)脈沖的正常識(shí)別,因?yàn)樵诟哳l時(shí),后續(xù)的測(cè)量會(huì)自動(dòng)增加片外分頻器的級(jí)數(shù)m1,在低頻時(shí)則后續(xù)脈沖相隔甚遠(yuǎn)。周期測(cè)量計(jì)時(shí)的停止則是由m2給TC0賦值后計(jì)得2m2個(gè)脈沖周期時(shí)的溢出來(lái)實(shí)現(xiàn)的,。?
??? 由圖3的算法和上述系統(tǒng)參數(shù)還不難得出,在Fx=100MHz~100Hz的頻率范圍內(nèi),測(cè)量的響應(yīng)時(shí)間為21ms~33ms,。Fx=10Hz時(shí),響應(yīng)時(shí)間為100ms。以后便隨Fx的下降,其響應(yīng)時(shí)間也相應(yīng)增加,。顯然這是受被測(cè)頻率自身的限制,與算法無(wú)關(guān),。由此不難看到,這種算法的另一優(yōu)點(diǎn)是在大部分測(cè)量頻率范圍內(nèi)其測(cè)量響應(yīng)時(shí)間十分接近。當(dāng)然若想進(jìn)一步加快的話,只要將上述流程中m1與m2的遞增遞減循環(huán)改為查表即可,。此外,測(cè)量響應(yīng)時(shí)間還與系統(tǒng)要求的測(cè)量精度有關(guān),。精度要求越高,則測(cè)量所需時(shí)間越長(zhǎng)。?
??? 最后在軟件中還得注意主程序與各中斷服務(wù)程序的時(shí)間配合,。以及運(yùn)算程序的字長(zhǎng)與精度等問(wèn)題,限于篇幅此處不再贅述,。?
??? 本文介紹的周期滑動(dòng)擴(kuò)展的測(cè)周法以測(cè)量精度為準(zhǔn)繩,靈活調(diào)整被測(cè)信號(hào)的周期數(shù),使其能在大部分測(cè)量頻域內(nèi)實(shí)現(xiàn)等精度測(cè)量,同時(shí)也使測(cè)量時(shí)間的差異大為減少。由于這種方法是用增加測(cè)量周期來(lái)提高測(cè)量精度,因而比經(jīng)典方法中提高計(jì)時(shí)晶振的頻率來(lái)提高精度要方便得多,特別適合在單片機(jī)上實(shí)現(xiàn),。?
參考文獻(xiàn)?
1 華南盾,朱 杰,張林欣.電子測(cè)量原理與模擬電路試驗(yàn).上海:上海交通大學(xué)出版社,1993?
2 王永生.電子測(cè)量學(xué).西安:西北工業(yè)大學(xué)出版社,1995?
3 楊吉祥,詹宏英,梅杓春.電子測(cè)量技術(shù)基礎(chǔ).南京:東南大學(xué)出版社,1999