基于A(yíng)VR的數字濾波器濾除工頻干擾的快速算法實(shí)現
工頻干擾廣泛存在各種工業(yè)現場(chǎng)中,其產(chǎn)生的途徑主要包括輸電饋線(xiàn)、照明設備、發(fā)動(dòng)機以及各種電子儀器設備等。一般可以通過(guò)濾波電路消除工頻干擾,但這必將增加硬件結構的復雜程度。實(shí)際上,還可以采用數字信號處理的相關(guān)算法,通過(guò)軟件濾波器濾除工頻干擾。軟件濾波算法的采用,無(wú)疑會(huì )在簡(jiǎn)化電路結構的同時(shí),使系統的硬件資源得到更加充分的利用,并達到降低產(chǎn)品成本的要求。
本文引用地址:http://dyxdggzs.com/article/170550.htmAVR單片機是Atmel公司生產(chǎn)的8位精簡(jiǎn)指令集(RISC)單片機。與同類(lèi)單片機相比,在運算速度、外設資源、靈活性等方面性能均衡,性?xún)r(jià)比較高。AVR單片機適合C語(yǔ)言開(kāi)發(fā),Mega系列AVR單片機還有一個(gè)內部硬件乘法器單元。這些特點(diǎn)都為軟件濾波器的實(shí)現提供了極大的便利。
1 濾波算法
常用的單片機濾波算法包括中值濾波、均值濾波、滑動(dòng)平均以及復合濾波算法等。工頻干擾的頻率范圍在50Hz附近,可以采用一個(gè)截止頻率遠低于50Hz的低通濾波器來(lái)濾除工頻干擾。
假設輸入信號為x(t),輸出信號為y(t),則一個(gè)RC低通濾波器表達式為:

連續時(shí)間信號經(jīng)過(guò)采樣后成為離散時(shí)間信號,低通濾波器的表達式也變?yōu)椋?/p>

所以系統的傳遞函數為:

假設采樣頻率Fs=500Hz,a分別取0.8、0.85、0.9、0.95,代入(4)式,利用matlab畫(huà)出頻率響應曲線(xiàn),如圖1。其中50Hz頻率對應的幅度衰減見(jiàn)表1。


2 定點(diǎn)小數表達方式
為了精確構造數字濾波器,經(jīng)常要用到浮點(diǎn)數據和系數。在進(jìn)行浮點(diǎn)數乘法運算時(shí),針對AVR單片機設計的C編譯器例如AVR-GCC,需要加入額外的數學(xué)庫函數進(jìn)行編譯。而這會(huì )使編譯后程序的代碼量增加、處理時(shí)間加長(cháng)、處理器的開(kāi)銷(xiāo)也隨之增加。為了更大限度地降低系統開(kāi)銷(xiāo),提高程序效率,采用定點(diǎn)小數表示形式進(jìn)行乘法運算是最佳選擇。
AVR單片機是一種8位精簡(jiǎn)指令集(RISC)單片機。其中megaAVR系列內部都帶有一個(gè)硬件乘法器,計算一次8位乘8位的定點(diǎn)乘法只需2個(gè)時(shí)鐘周期。因此采用8位定點(diǎn)采樣數據乘以8位系數的定點(diǎn)乘法方式完成濾波算法是最高效的。
低通濾波處理涉及的運算形式為一個(gè)純小數系數和一個(gè)已知數據相乘再相加。因此將系數采用定點(diǎn)小數的表示形式,對于提高算法速度是至關(guān)重要的。
可以定義一種8位定點(diǎn)小數表示形式——Q8數,其各位權系數如下:

Q8數的表示范圍從0到1-2-8=0.99609375,每?jì)蓚€(gè)數之間的間隔是2-8(0.00390625),其所能表達的純小數共有28=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之間的純小數只能用這兩個(gè)數中的一個(gè)近似表示了。這對于乘法計算的精度有一定的影響,但是由于濾波公式(3)中的系數a和(1-a)都是常數,在整體性能穩定的情況下,系數微小的不確定性對濾波器整體性能并沒(méi)有太大的影響。
評論