??? 摘? 要: 介紹一種單片機(jī)測(cè)量時(shí)頻參數(shù)時(shí)的數(shù)據(jù)處理方法,即線性地址變換法,。在存儲(chǔ)容量有效壓縮的基礎(chǔ)上,進(jìn)一步分析采樣數(shù)據(jù),用軟件實(shí)現(xiàn)可控時(shí)標(biāo),保證測(cè)量精度,。?
??? 關(guān)鍵詞: 測(cè)量? 頻率? 周期? 單片機(jī)? 存儲(chǔ)容量
?
??? 在智能儀表、網(wǎng)絡(luò)通訊,、過(guò)程控制等測(cè)控系統(tǒng)應(yīng)用中,經(jīng)常需要對(duì)脈沖信號(hào)的頻率(或周期)進(jìn)行精確測(cè)量。常用的方法是被測(cè)信號(hào)作為閘門信號(hào),而用一個(gè)標(biāo)準(zhǔn)頻率信號(hào)作為填充脈沖,在閘門周期內(nèi)對(duì)標(biāo)準(zhǔn)頻率信號(hào)計(jì)數(shù),如圖1所示,。設(shè)計(jì)數(shù)器的值為N,則被測(cè)信號(hào)的周期T=N/f0,頻率fx=1/T,。在以單片機(jī)為核心的測(cè)控系統(tǒng)中,為了保證信號(hào)的測(cè)量精度,需要對(duì)大量的計(jì)數(shù)值Ni進(jìn)行計(jì)算處理,這樣勢(shì)必占用較多的存儲(chǔ)單元。如何壓縮數(shù)據(jù)存儲(chǔ)量,是本文要解決的主要問(wèn)題,。
?
?
1 基于單片機(jī)系統(tǒng)的時(shí)頻參數(shù)測(cè)量?
??? 當(dāng)采用單片機(jī)微處理器測(cè)量信號(hào)頻率(周期)時(shí),定時(shí)器T0工作在計(jì)數(shù)方式,定時(shí)器T1工作在定時(shí)方式,T1向外部發(fā)固定頻率的脈沖(時(shí)標(biāo)),T0對(duì)時(shí)標(biāo)進(jìn)行計(jì)數(shù),。被測(cè)脈沖信號(hào)產(chǎn)生一個(gè)外部中斷控制信號(hào),向CPU發(fā)出一個(gè)中斷請(qǐng)求,CPU響應(yīng)中斷,在中斷服務(wù)程序中把T0的計(jì)數(shù)值讀入數(shù)據(jù)存儲(chǔ)器,數(shù)據(jù)轉(zhuǎn)移完成后,使T0復(fù)位,重新計(jì)數(shù), 開始新的周期測(cè)量,其測(cè)量原理如圖2所示,。?
?
?
2 線性地址變換?
??? 單片機(jī)把計(jì)數(shù)值讀入存儲(chǔ)器,是把每一個(gè)測(cè)出的周期值Ti按其時(shí)間先后順序存入存儲(chǔ)器中,。這樣,測(cè)出的每一個(gè)Ti無(wú)論是否相同都要用一個(gè)單元來(lái)存放,且隨著被測(cè)信號(hào)的平均頻率和測(cè)量時(shí)間t的增長(zhǎng),所需要的存儲(chǔ)容量就會(huì)增加,即:?
??? 存儲(chǔ)容量? M=f·t?
??? 如被測(cè)信號(hào)平均頻率f=10kHz,則1秒約需存儲(chǔ)容量10KB,10秒約需存儲(chǔ)容量100KB。顯然,單片機(jī)片內(nèi)RAM是不能滿足要求的,。即使擴(kuò)充外存,也不宜太大,會(huì)有一定的限制,。?
??? 但實(shí)際上,所測(cè)出的Ti中,有相當(dāng)多是相同的。如果把相同的Ti值用一個(gè)單元來(lái)存放,則可大大壓縮存儲(chǔ)容量,。為此,可采用線性變換的方法,把每個(gè)Ti按(1)式轉(zhuǎn)換為單元地址值,并將其內(nèi)容加1,表示已有一個(gè)該Ti值,。最后該單元的內(nèi)容Ni就表示測(cè)量中共有Ni個(gè)相同的Ti值出現(xiàn)。?
??? 存儲(chǔ)地址=起始地址+kTi????????????????? ?? (1)?
??? 式中:起始地址——對(duì)應(yīng)于Ti=0的存儲(chǔ)單元地址,根據(jù)所選單片機(jī)型號(hào)任意設(shè)定,。?
??? k——變換比,表示出現(xiàn)Ti值的個(gè)數(shù)Ni用k個(gè)字節(jié)來(lái)存放,。
??? k=1,表示Ti對(duì)應(yīng)的Ni值用1個(gè)字節(jié)存放。?
??? k=2,表示Ti對(duì)應(yīng)的Ni值用2個(gè)字節(jié)存放,。?
??? 這樣:?
??? 存儲(chǔ)容量M=存儲(chǔ)地址最大值-起始地址值=kTimax (2)?
??? 因此,使用線性地址變換時(shí),存儲(chǔ)容量由測(cè)量的最大周期Timax決定,。且當(dāng)采用計(jì)數(shù)方式測(cè)Ti值時(shí),若計(jì)數(shù)時(shí)標(biāo)周期為tc,則計(jì)數(shù)器測(cè)得的Ti值實(shí)際上是Ti所包含的tc個(gè)數(shù)。這樣,存儲(chǔ)容量可改寫為:?
??? 存儲(chǔ)容量M=Timax/tc???????? ?(設(shè)k=1)????????(3)?
??? 若規(guī)定測(cè)量的Timax=10ms,當(dāng)設(shè)置tc=4μs時(shí),M=2.5KB;若要進(jìn)一步壓縮存儲(chǔ)容量,可增大tc,如當(dāng)tc=8μs時(shí),M=1.25KB,從而可滿足有限存儲(chǔ)容量的要求,。?
??? 單片機(jī)進(jìn)行線性地址變換時(shí),用定時(shí)器計(jì)數(shù)方法測(cè)量每一個(gè)Ti值,然后用中斷服務(wù)子程序按(1)式進(jìn)行地址變換,把Ti值轉(zhuǎn)換為地址單元號(hào),并使該單元內(nèi)容加1,。如把一次采樣規(guī)定為測(cè)n個(gè)Ti值,則當(dāng)把n個(gè)Ti采樣完后,在存儲(chǔ)器從起始地址開始的單元內(nèi)就直接存放了如圖3所示的反映被測(cè)脈沖頻率波動(dòng)情況的周期概率分布曲線。圖3中Ni為一次采樣的n個(gè)脈沖周期中出現(xiàn)周期為Ti的次數(shù),Nmax為Ni中的最大值,TNmax為對(duì)應(yīng)的周期值,。?
?
?
??? 根據(jù)測(cè)得的存儲(chǔ)數(shù)據(jù),由數(shù)理統(tǒng)計(jì)方法可計(jì)算出平均周期?
??? 上述數(shù)據(jù)處理方法既保證了數(shù)據(jù)采樣的信息量又節(jié)約了存儲(chǔ)空間,較真實(shí)地反映了采樣期間信號(hào)的變化情況,。?
3 存儲(chǔ)容量的壓縮與測(cè)量精度的保證?
??? 上述數(shù)據(jù)處理方法雖然可用增大時(shí)標(biāo)tc來(lái)壓縮存儲(chǔ)容量,但另一方面則可能使測(cè)試的相對(duì)誤差Δ增大,其最大相對(duì)誤差Δmax出現(xiàn)在測(cè)量區(qū)間的低端Ti min時(shí):?
?????
??? 考慮測(cè)試誤差,將(4)式代入(3)式,則存儲(chǔ)容量可表示為:?
?????
??? 此式表明,考慮測(cè)試誤差時(shí),要壓縮存儲(chǔ)容量就要壓縮測(cè)量區(qū)間。若測(cè)量范圍定為50μs~10ms,則測(cè)量區(qū)間計(jì)算值為:?
?????
??? 如設(shè)定? Δmax≤0.01,則M≥20KB,。?
??? 因此,為了將存儲(chǔ)容量壓縮到2KB左右,又使其Δmax≤0.01,則應(yīng)壓縮測(cè)量區(qū)間到20以下,。?
??? 若把整個(gè)測(cè)量范圍分成若干個(gè)區(qū)間,每個(gè)區(qū)間以不同的時(shí)標(biāo)進(jìn)行測(cè)試,就可滿足Δmax≤0.01,存儲(chǔ)容量2~3KB的要求。?
??? 上述定標(biāo)是由軟件完成的,。采用的方法是先用較大的時(shí)標(biāo)測(cè)量一次(稱為粗測(cè)),然后從概率分布曲線上找到Nmax所對(duì)應(yīng)的TNmax值,與區(qū)間定標(biāo)界限系數(shù)相比較,視其所在區(qū)間確定定時(shí)器T1的時(shí)間常數(shù),輸出相應(yīng)的時(shí)標(biāo)脈沖,。自動(dòng)定標(biāo)后,以新的時(shí)標(biāo)重新進(jìn)行測(cè)量(稱為精測(cè)),精測(cè)得到的周期概率分布曲線才作為計(jì)算和控制的依據(jù)。?
??? 關(guān)于數(shù)據(jù)采集的軟件流程如圖4所示,。?
?
?
??? 隨著單片機(jī)主頻的不斷提高,DSP技術(shù)的廣泛應(yīng)用,為時(shí)頻參數(shù)的高精度測(cè)量創(chuàng)造了有利條件,。本文提出的存儲(chǔ)容量壓縮方法,旨在提供一條解決精度與數(shù)據(jù)存儲(chǔ)量問(wèn)題的新途徑,特別對(duì)于那些有一定離散度的不穩(wěn)定頻率信號(hào)是較為適用的,。此方法已在多項(xiàng)數(shù)據(jù)采集測(cè)控系統(tǒng)中得到了應(yīng)用和驗(yàn)證,取得了較好的效果。?
參考文獻(xiàn)?
1 何立民. MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,1990?
2 沈蘭蓀. 高速數(shù)據(jù)采集系統(tǒng)的原理與應(yīng)用. 北京:人民郵電出版社,1995?
3 柳義利. 高速連續(xù)頻率測(cè)量. 電子測(cè)量技術(shù),1999;25(2)?