基于AMR和加速度傳感器的電子羅盤的抗干擾設計
3 軟件濾波算法的實現(xiàn)
3.1 軟件濾波分析
根據(jù)軟件濾波設計思想,濾波子程序由主程序在信號狀態(tài)發(fā)生變化,進入中斷時調用,圖2給出了濾波程序流程。對照圖1中4種Section來分析流程圖。當有邊沿或干擾信號(信號周期大于計數(shù)時鐘周期)到來時,VRS51L3074單片機的PWC計數(shù)停止條件滿足,系統(tǒng)進入中斷服務子程序。在中斷子程序中,首先重置脈寬計數(shù)條件,然后對當前狀態(tài)進行采樣,采樣1次,狀態(tài)寄存器左移1位,采樣到高電平記為“1”,采樣到低電平記為“O”。如正常下降沿 Section B,前面處于高電平段,初始狀態(tài)變量Flag全為1,當出現(xiàn)低電平,控制器進入中斷,緊接著進行16次采樣。前已提及系統(tǒng)處理的尖峰干擾約1~2 ms,每個采樣周期約為O.4 ms,其尖峰干擾脈寬達不到8個采樣周期。系統(tǒng)設計時采樣16次,只取最后8次的存儲狀態(tài)與原狀態(tài)進行比較,如果最后采樣的狀態(tài)全為“O”則與原狀態(tài)相反,就可判斷出這是1個正常下降沿。如果是干擾信號引起計數(shù)中斷,前面8個采樣狀態(tài)不全為“1”,后面8個狀態(tài)全為“1”,最后采樣的狀態(tài)與原狀態(tài)相同,就可判斷出這是1個干擾信號,如Section A。在信號狀態(tài)采樣期間,計數(shù)條件滿足PWC繼續(xù)計數(shù),直到真正的下降沿到來,計數(shù)停止并保存,計數(shù)寄存器還原為初始值,這樣干擾信號即被濾除。類似地,正常上升沿Section D,存儲器原狀態(tài)為“O”,上升沿來臨后存儲器狀態(tài)為“1”,與原狀態(tài)相反,PWC計數(shù)停止并保存,計數(shù)寄存器還原為初始值,退出中斷子程序。有干擾信號出現(xiàn)后采樣狀態(tài)與原狀態(tài)相同,干擾尖峰脈沖可被濾除。如果要使脈寬計數(shù)更精確,可判斷前8個采樣周期中系統(tǒng)不正常計數(shù)的周期,然后與最終計數(shù)周期相加即可。此時,程序流程體現(xiàn)出軟件濾波功能。
3.2 源程序代碼分析
對應程序流程圖,給出了單片機通過P4.2口對ADXL202某一輸出通道采樣濾波并完成脈寬計數(shù)的源程序。源程序如下:
源程序中定義了3個變量,其中變量Flag存儲原狀態(tài)值;FlagReg存儲當前采樣值;變量i記錄采樣次數(shù);改變i的值可控制濾除尖峰脈沖的等待時間。程序通過對原狀態(tài)與當前采樣狀態(tài)異或之后的值來判斷當前信號是有效信號還是干擾信號,從而對上升沿、下降沿的中間過度或尖峰脈沖干擾進行相應處理,退出中斷子程序。實現(xiàn)了對正常信號計數(shù)、濾掉尖峰脈沖干擾的目的。
4 測試結果
由于條件限制以及干擾的隨機性,對基于ADXL202構成的車載電子羅盤進行的測試,無法對所測量的角度以及方向角進行精確標定。實驗時,通過相同條件下同一物理量多次測量值的標準差來對相應算法進行*估。測試結果如表1所列。
從實驗測試的標準差可以看出,經(jīng)過軟件濾波后σ小了很多,這種軟件濾波算法對濾除尖峰脈沖干擾是非常有效的。
結語
本文提出的軟件濾波算法速度快,代碼效率高,濾波效果理想,是一種實用的數(shù)字濾波設計方法,體現(xiàn)了將算法與具體硬件相結合的思想。另一方面,當脈沖干擾較寬時可將存儲器變量適當擴展成多字節(jié)變量。這個算法還可以與FPGA結合,用于其他計數(shù)精度要求較高、易受尖峰脈沖干擾的應用場合。
評論