基于AVR微控制器的交流信號(hào)峰值檢測與校正
摘要:微控制器外圍電路的設(shè)計(jì)已經(jīng)是一個(gè)比較成熟的領(lǐng)域,相比硬件,軟件系統(tǒng)的研發(fā)周期更短,投入更少,在中國更加具有發(fā)展空間。基于AVR單片機(jī)的硬件結(jié)構(gòu)和工作原理,采用一種全新的檢測交流信號(hào)峰值的算法,并輔以相應(yīng)的自校正算法來實(shí)現(xiàn)精確的峰值檢測。通過硬件上的實(shí)現(xiàn)證明此種算法的速度非常快,精度高達(dá)0.1%,在測控工業(yè)應(yīng)用中具有非常好的前景。
關(guān)鍵詞:峰值檢測;自我校正;算法
0 引言
單片機(jī)在民用電子產(chǎn)品中的應(yīng)用主要以測量和控制為主。一個(gè)完整的單片機(jī)系統(tǒng)除了健全的軟件系統(tǒng)外,往往還需要外圍電路的支持。而現(xiàn)如今,對一些傳統(tǒng)電路的設(shè)計(jì)已經(jīng)非常成熟,因此在硬件上要想有所突破要比在軟件算法的突破難得多。拿峰值檢波電路來說,理論上,交流電源在正半周的一段時(shí)間內(nèi),通過二極管對電容充電,使電容上的電壓逐漸趨近于峰值電壓。只要RC足夠大,可以認(rèn)為其輸出的直流電壓數(shù)值上十分接近于交流電壓的峰值。但是由于泄放電流的影響,輸出電流很難精確地等于輸入電流的峰值。盡管有很多改良后的解決方案,但無論是哪一個(gè)種檢波電路,它們的一個(gè)相通的缺點(diǎn)就在于電路是非線性的。非線性的電路使內(nèi)部的軟件系統(tǒng)不能用相對簡單的方法來實(shí)現(xiàn)系統(tǒng)誤差的校正。系統(tǒng)誤差是指在相同的條件下(包括溫度,電路,測量工具等),誤差值隨輸入值按一定規(guī)律變化,這種變化可以是線性或非線性的。非線性系統(tǒng)誤差通常采用查表法來修正,通過實(shí)際校準(zhǔn)將各校準(zhǔn)點(diǎn)的數(shù)據(jù)存入校準(zhǔn)表中,在以后的實(shí)際測量中,通過查表求得修正了的測量結(jié)果,因此需要建立大量的校正點(diǎn)數(shù)據(jù)來提高計(jì)算結(jié)果的準(zhǔn)確度,增加算法的計(jì)算量和復(fù)雜程度就不可避免的了。一個(gè)系統(tǒng)研發(fā)人員追求的是簡潔度與先進(jìn)性,而不是復(fù)雜度,因此簡化外部模擬輸入電路是當(dāng)務(wù)之急。
1 硬件電路設(shè)計(jì)
圖1給出的是精密電壓表與精密電流表的模擬輸入部分電路。整個(gè)電路只用到放大器與分壓電路,設(shè)計(jì)簡潔,而且在低頻區(qū)系統(tǒng)誤差是線性的,因此用作AVR內(nèi)部ADC的模擬輸入電路。
不足的是,圖l中的LM324放大器對高頻信號(hào)的頻率響應(yīng)不理想。如果用傳統(tǒng)的峰值計(jì)算的算法,利用Nyquist定理,在采樣頻率不小于信號(hào)頻率的條件下,對多個(gè)樣本的幅值進(jìn)行綜合運(yùn)算如下:
這種方法對采樣頻率有較高的要求,尤其是高頻輸入的時(shí)候,要求高速的ADC,而且樣本數(shù)過大會(huì)造成計(jì)算量加大,所以要想在高頻區(qū)有所應(yīng)用非常困難。如果使用專用轉(zhuǎn)換芯片又會(huì)增加產(chǎn)品制作的成本,而且存在系統(tǒng)誤差難測算的問題。因此筆者在硬件設(shè)計(jì)和軟件設(shè)計(jì)上都做出了一些新的嘗試。
硬件電路方面,借助圖2的頻率測量電路和AVR的輸入捕捉功能(ICP)配合來測算輸入信號(hào)的頻率。74HCU04是高速的16進(jìn)制CMOS反相器,傳輸時(shí)間很短,具有很好的頻率特性。2 正弦波峰值測量理論的建立
算法上,通過測算出來的信號(hào)周期值,在1/4個(gè)周期上任取兩點(diǎn)就可以推導(dǎo)求出信號(hào)的峰值,下面是對該方法的推導(dǎo)和求證。
首先,利用AVR ATmega64的定時(shí)器1的輸入捕捉功能,在單位圓的1/4周期內(nèi)截取兩個(gè)點(diǎn)yl,y2。無論它的捕捉屬性是上升沿還是下降沿,因?yàn)檠訒r(shí)的關(guān)系不可能絕對準(zhǔn)確地捕捉到電平翻轉(zhuǎn)的瞬間時(shí)刻,也就是說檢測的初相不同于真實(shí)的初相,又因?yàn)槌跸鄷?huì)隨著峰值和頻率發(fā)生變化,因此不能用勾股定理中使用相位相加為90度方法取出兩點(diǎn)再求出峰值。具體的推導(dǎo)如下。
在公式(17)中,y1和y2的相位是已知的,幅值可以通過內(nèi)部ADC采樣得到。那么,求峰值的問題就迎刃而解了。
3 算法實(shí)現(xiàn)
前面提到,通過AVR內(nèi)部的ICP捕捉到的初相和實(shí)際初相有偏差,但因?yàn)樵谙乱粋€(gè)周期來臨的時(shí)刻又會(huì)出現(xiàn)相同的偏差,所以并不影響周期計(jì)算的結(jié)果。只要利用Timerl的ICP中斷服務(wù)程序,就可以輕松求得信號(hào)周期,然后再將y1的相位增量(φ1=30所對應(yīng)的周期分量:周期的1/12)加到輸出比較寄存器上,以此來控制ADC的啟動(dòng)并對y1進(jìn)行采樣。同時(shí)利用輸出比較中斷服務(wù)程序和y2的相位增量,開啟ADC并對y2進(jìn)行采樣。
因?yàn)橥獠康哪M輸入部分是線性電路,在實(shí)際測量時(shí),只要取兩點(diǎn)做為校正點(diǎn),讀取和測取兩組真實(shí)值和誤差值,就能求得下面二元二次方程的解Ki和K0:
4 總結(jié)
本文中采用一種新的峰值測算方法,打破傳統(tǒng)方法中對硬件的過度依賴,不僅方法新穎,而且大大簡化了硬件電路的設(shè)計(jì),將測控功能最大程度地轉(zhuǎn)移到軟件系統(tǒng)中來實(shí)現(xiàn),使得校正工作變得十分簡單而有效。同時(shí),這種檢測方法具有超乎尋常的高精度,可達(dá)O.1%,為工業(yè)測控的一些技術(shù)難題提供了很好的解決方案。