- 相關(guān)推薦
一種基于AVR單片機(jī)的工頻干擾濾除快速算法
摘要:提出了一種利用數(shù)字濾波器濾除工頻干擾的快速算法。這種算法從AVR單片機(jī)內(nèi)部硬件乘法器的特點(diǎn)出發(fā),采用分配系統(tǒng)數(shù)法進(jìn)行低通數(shù)字濾波器設(shè)計(jì)。經(jīng)過(guò)VMLAB集成開(kāi)發(fā)環(huán)境的仿真驗(yàn)證,算法速度快、代碼效率高、濾波效果理想。工頻干擾廣泛存在各種工業(yè)現(xiàn)場(chǎng)中,其產(chǎn)生的途徑主要包括輸電饋線、照明設(shè)備、發(fā)動(dòng)機(jī)以及各種電子儀器設(shè)備等。一般可以通過(guò)濾波電路消除工頻干擾,但這必將增加硬件結(jié)構(gòu)的復(fù)雜程度。實(shí)際上,還可以采用數(shù)字信號(hào)處理的相關(guān)算法,通過(guò)軟件濾波器濾除工頻干擾。軟件濾波算法的采用,無(wú)疑會(huì)在簡(jiǎn)化電路結(jié)構(gòu)的同時(shí),使系統(tǒng)的硬件資源得到更加充分的利用,并達(dá)到降低產(chǎn)品成本的要求。
AVR單片機(jī)是Atmel公司生產(chǎn)的8位精簡(jiǎn)指令集(RISC)單片機(jī)。與同類單片機(jī)相比,在運(yùn)算速度、外設(shè)資源、靈活性等方面性能均衡,性價(jià)比較高。AVR單片機(jī)適合C語(yǔ)言開(kāi)發(fā),Mega系列AVR單片機(jī)還有一個(gè)內(nèi)部硬件乘法器單元。這些特點(diǎn)都為軟件濾波器的實(shí)現(xiàn)提供了極大的便利。
1 濾波算法
常用的單片機(jī)濾波算法包括中值濾波、增色值濾波、滑動(dòng)平均以及復(fù)合濾波算法等。工頻干擾的頻率范圍在50Hz附近,可以采用一個(gè)截止頻率遠(yuǎn)低于50Hz的低通濾波器來(lái)濾除工頻干擾。
假設(shè)輸入信號(hào)x(t),輸出信號(hào)y(t),則一個(gè)RC低通濾波器表達(dá)式為:τ[dy(t)]/dt y(t)=x(t),其中τ為時(shí)間常數(shù)。
連續(xù)時(shí)間信號(hào)經(jīng)過(guò)采樣后成為離散時(shí)間信號(hào),低通濾波器的表達(dá)式也變?yōu)椋?/P>
τ[y(t)-y(k-1)]/ Δt y(k)=x(t) (1)
Δt為采樣時(shí)間間隔,k為歸一化時(shí)間。
由(1)式可得:
y(k)=[1/(1 τ/Δt)]x(k) (τ/Δt)/(1 τ/Δt)[y(k-1) (2)
令a=(τ/Δt)(1 τ/Δt),代入(2)式,
y(k)=(1-a)·x(k) a·y(k-1) (3)
對(duì)(3)式進(jìn)行z變換,可得:
Y(z)=(1-a) ·X(z) a·z-1·Y(z)
所以系統(tǒng)的傳遞函數(shù)為:
假設(shè)采樣頻率Fs=500Hz,a分別取0.8、0.85、0.9、0.95,代入(4)式,利用matlab畫(huà)出頻率響應(yīng)曲線,如圖1。其中50Hz頻率對(duì)應(yīng)的幅度衰減見(jiàn)表1。
表1 50Hz幅度衰減
2 定點(diǎn)小數(shù)表達(dá)方式
為了精確構(gòu)造數(shù)字濾波器,經(jīng)常要用到浮點(diǎn)數(shù)據(jù)和系統(tǒng)。在進(jìn)行浮點(diǎn)數(shù)乘法運(yùn)算時(shí),針對(duì)AVR單片機(jī)設(shè)計(jì)的C編譯器例如AVR-GCC,需要加入額外的數(shù)學(xué)庫(kù)函數(shù)進(jìn)行編譯。而這會(huì)使編譯后程序的代碼量增加、處理時(shí)間加長(zhǎng)、處理器的開(kāi)銷也隨之增加。為了更大限度地降低系統(tǒng)開(kāi)銷,提高程序效率,采用定點(diǎn)小數(shù)表示形式進(jìn)行乘法運(yùn)算是最佳選擇。
AVR單片機(jī)是一種8位精簡(jiǎn)指令集(RISC)單片機(jī)。其中megaAVR系列內(nèi)部都帶有一個(gè)硬件乘法器,計(jì)算一次8位乘8位的定點(diǎn)乘法只需2個(gè)時(shí)鐘周期。因此采用8位定點(diǎn)采樣數(shù)據(jù)乘以8位系數(shù)的定點(diǎn)乘法方式完成濾波器算法是最高效的。
低通濾波處理涉及的運(yùn)算形式為一個(gè)純小數(shù)系數(shù)和一個(gè)已知數(shù)據(jù)相乘再相加。因此將系數(shù)采用定點(diǎn)小數(shù)的表示形式,對(duì)于提高算法速度是至關(guān)重要的。
可以定義一種8位定點(diǎn)小數(shù)表示形成——Q8,其各位權(quán)系數(shù)如下:
Q8數(shù)的表示范圍從0到1-2 -8=0.99609375,每?jī)蓚(gè)數(shù)之間的間隔是2 -8(0.00390625),其所能表示的純小數(shù)共有2 8=256個(gè)。例如11011000就表示2 -1 2 -2 2 -4 2 -5=0.84375,而11011001就是表示2 -1 2 -2 2 -4 2 -5 2 -8=0.84765625,因此0.84375和0.84765625之間的純小數(shù)只能用這兩個(gè)數(shù)中的一個(gè)近似表示了。這對(duì)于乘法計(jì)算的精度有一定的影響,但是由于濾波公式(3)中的系數(shù)a和(1-a)都是常數(shù),在整體性能穩(wěn)定的情況下,系數(shù)微小的不確定性對(duì)濾波器整體性能并沒(méi)有太大的影響。
3 分配系數(shù)法原理
從(3)式可知,濾波算法可以用迭代計(jì)算實(shí)現(xiàn),為保證每個(gè)新的輸出值都可以作為下次計(jì)算的輸入值,必須使輸出值和輸入值的位寬度一致。必須使輸出值和輸入值的位寬度一致。AVR單片機(jī)內(nèi)部硬件乘法器的輸出結(jié)果為16位,兩次乘法運(yùn)算的結(jié)果還要進(jìn)行加法運(yùn)算,其結(jié)果很有可能超過(guò)16位寬度。如果要進(jìn)行迭代計(jì)算,就要將乘加運(yùn)算的結(jié)果轉(zhuǎn)化成8位表示方式。一種解決方法是用查表法實(shí)現(xiàn)乘法計(jì)算,這樣運(yùn)算結(jié)果就直接表達(dá)成8位定點(diǎn)數(shù)形式,不用進(jìn)行表示方式的轉(zhuǎn)化,但是這種方案要占用額外的硬件在座空間構(gòu)造一張查找表。
【一種基于AVR單片機(jī)的工頻干擾濾除快速算法】相關(guān)文章:
一種基于光突發(fā)交換環(huán)網(wǎng)中的改進(jìn)型令牌協(xié)議05-11
數(shù)據(jù)關(guān)聯(lián)算法綜述及其性能評(píng)估05-05
試析基于勝任素質(zhì)的薪酬模式構(gòu)建01-03
基于戰(zhàn)略治理的企業(yè)環(huán)境風(fēng)險(xiǎn)研究08-28
自制快速干手器05-11
基于minigui的網(wǎng)真機(jī)界面的實(shí)現(xiàn)08-05
基于軟交換的固網(wǎng)智能化05-11