基于AMR和加速度傳感器的電子羅盤的抗干擾設(shè)計
本文介紹的基于AMR磁阻傳感器和加速度傳感器ADXL202的電子羅盤,是捷聯(lián)式慣性導(dǎo)航系統(tǒng)中的一種。在電子羅盤系統(tǒng)中,單片機VRS51L3074完成對加速度傳感器輸出信號脈寬和周期的計數(shù),獲得車輛瞬時加速度值,然后利用三角函數(shù)關(guān)系計算出當(dāng)前位置相對于已知參考位置之間的橫滾和俯仰角度,進(jìn)行姿態(tài)解算,得到車輛的前進(jìn)方向和方位角。但是汽車電磁環(huán)境復(fù)雜,特別是汽車的震動和瞬時功率變化會對ADXL202輸出的占空比信號產(chǎn)生尖峰脈沖干擾,嚴(yán)重影響計數(shù)的精度。因此,抑制脈沖干擾在提高計數(shù)精度、增強系統(tǒng)性能方面顯得尤為重要。
1 ADXL202工作原理
ADXL202傳感器是由震蕩器,X、Y方向傳感器,相位檢波電路以及占空比調(diào)制器組成,具有數(shù)字輸出接口和模擬電壓信號輸出接口。X、Y方向傳感器是2 個相互正交的加速度傳感器。ADXL202相對于地平面方向變化時,X、Y方向?qū)?yīng)不同的輸出,從而可以測量動態(tài)變化的加速度和恒定的加速度。傳感器的后級連相位檢波器,主要是用來修正信號,并對信號的方向作出判斷。檢波器輸出的信號通過1個32 kΩ的電阻來驅(qū)動占空比調(diào)制器,設(shè)計時可以通過在XFILT和YFILT引腳外接電容CX和CY來改變帶寬。同時,外接電容對于濾除噪聲和抑制零點漂移都有一定的效果。
信號通過低通濾波器之后,占空比調(diào)制器把信號轉(zhuǎn)換為數(shù)字信號輸出。通過T2腳的外接電阻可以改變T2的周期T2(1~10 ms),這就方便在精度要求不同的場合下使用。輸出的占空比信號通過計數(shù)器可以計算出占空比。加速度的計算可以通過公式(1)得到。
當(dāng)加速度為Og時,輸出信號的占空比為50%;靈敏度每1g所引起的脈寬占空比變化12.5%。在應(yīng)用中Og時的失調(diào)和系統(tǒng)誤差影響實際輸出值。則根據(jù)測得的加速度值即可求得X和Y軸的傾角:
當(dāng)加速度計被定向,那么它的X和Y軸就和地球表面平行可用來作為具有翻滾和傾斜兩個軸的雙軸斜度傳感器,被測物體的俯仰角記為γ和橫滾角β。將磁阻傳感器的3個敏感軸沿載體的3個坐標(biāo)軸安裝,分別測量地磁場磁感應(yīng)強度H在載體坐標(biāo)系3個坐標(biāo)上的投影分量(HX,HY,HZ),然后利用俯仰角和橫滾角進(jìn)行姿態(tài)解算就可以得到電子羅盤的方位角。
2 ADXL202的抗干擾設(shè)計思想
根據(jù)ADXL202使用手冊知,傳感器與微處理器共用電源時會引起干擾,因此在電路設(shè)計時采用了抑制干擾的解決方案。設(shè)計時采用1個0.1μF的電容和1 個小于或等于100 Ω的電阻來抑制干擾。實驗測試顯示,仍然存在電路其他部分電源和傳感器電源互相影響的情況,干擾抑制效果并不理想。經(jīng)過反復(fù)試驗,傳感器采用獨立的電源供電,并且在布線時把器件和調(diào)理信號的電阻、電容放在1塊單獨的板上或用粗地線將其圍在線路板的某一區(qū)域,在實驗室條件下得到較好的干擾抑制效果。但實際應(yīng)用中,汽車的震動和瞬時功率變化對ADXL 202E輸出的占空比信號產(chǎn)生尖峰脈沖干擾(脈寬約1~2 ms)并不能消除,這就需要對其更多的處理。抑制和消除尖峰脈沖干擾影響的措施較多,常見的有硬件方法和軟件方法,或兩者相結(jié)合??紤]到電子羅盤整體體積和磁阻傳感器信號對干擾較為敏感,如果采用高效的硬件濾波,系統(tǒng)電路將變得非常龐大;使用簡易的硬件電路,濾波效果又不徹底。實際上,還可以借助于微處理器進(jìn)行軟件濾波消除尖峰脈沖干擾。軟件濾波算法的采用,無疑會在簡化電路結(jié)構(gòu)的同時使系統(tǒng)的硬件資源得到更加充分的利用,并達(dá)到降低產(chǎn)品設(shè)計成本的要求。
ADXL202E輸出的信號占空比調(diào)節(jié)(DCM)周期由外接電阻決定,一般低于1 kHz,因此計數(shù)輸入端高低電平持續(xù)時間長達(dá)幾ms甚至幾十ms,可見傳感器輸出的正常計數(shù)信號高、低電平變化較慢;而控制器脈寬計數(shù)時間小于1μs,干擾尖峰脈沖是突變的,所以能把干擾從正常計數(shù)中辨別出來。因此,使用軟件濾波來消除尖峰脈沖干擾是可行的。
VRS51L3074單片機是由美國Ramtron(瑞創(chuàng))公司推出的8位單片機家族VRS51L3xxx系列的成員。VRS51L3074提供了2個與定時器O和1關(guān)連的獨立的脈寬計數(shù)器(PWC)模塊,用戶可通過對PWC模塊和定時器的配置,靈活地控制定時器啟動或停止計數(shù),從而方便地實現(xiàn)對 ADXL202E輸出的脈寬和周期的計數(shù)。
從單片機計數(shù)輸入端,觀察信號波形。為便于分析,在高、低電平段設(shè)置了幾個干擾尖峰脈沖,分別標(biāo)示為Section A和Section C,占空比信號下降沿、上升沿分別標(biāo)示為Section B和Section D。單片機按計數(shù)時鐘周期性采樣,采樣值中“1”表示采到的是高電平,“O”表示低電平。I/O口采樣占空比信號輸出端口中狀態(tài),利用1個字節(jié)型變量R來動態(tài)存儲采樣值。控制器每采樣1次,變量R中數(shù)據(jù)向左移1個二進(jìn)制位,R原最高位電平狀態(tài)被移除,而當(dāng)前時刻新的采樣狀態(tài)保存到R的最低位,變量R被更新了,狀態(tài)存儲器R中保存著最近8個采樣周期的采樣值。
在圖1中,從正常下降沿過程(Section B),可以看到變量R中的數(shù)據(jù)經(jīng)歷了從各位全為1,到1、O共存,再變化到全為O的過程;然而,在高電平段的干擾部分(Section A),變量R經(jīng)歷了從全為1,到1、0混合,再回到全為l的過程。類似地,正常上升沿(Section D)變量R經(jīng)歷了各位全為0,到O、1共存,再變化到全為1的狀態(tài)變化過程;在低電平段的干擾部分(Section C),變量R經(jīng)歷了采樣狀態(tài)從全為O,到O、1混合,再回到全為O的過程。通過判斷此4種情況下變量R中數(shù)據(jù)的不同變化過程,可以達(dá)到從正常變化中辨別出干擾的目的。這就是本設(shè)計所采用的軟件濾波抗干擾方法的基本思想。
3 軟件濾波算法的實現(xiàn)
3.1 軟件濾波分析
根據(jù)軟件濾波設(shè)計思想,濾波子程序由主程序在信號狀態(tài)發(fā)生變化,進(jìn)入中斷時調(diào)用,圖2給出了濾波程序流程。對照圖1中4種Section來分析流程圖。當(dāng)有邊沿或干擾信號(信號周期大于計數(shù)時鐘周期)到來時,VRS51L3074單片機的PWC計數(shù)停止條件滿足,系統(tǒng)進(jìn)入中斷服務(wù)子程序。在中斷子程序中,首先重置脈寬計數(shù)條件,然后對當(dāng)前狀態(tài)進(jìn)行采樣,采樣1次,狀態(tài)寄存器左移1位,采樣到高電平記為“1”,采樣到低電平記為“O”。如正常下降沿 Section B,前面處于高電平段,初始狀態(tài)變量Flag全為1,當(dāng)出現(xiàn)低電平,控制器進(jìn)入中斷,緊接著進(jìn)行16次采樣。前已提及系統(tǒng)處理的尖峰干擾約1~2 ms,每個采樣周期約為O.4 ms,其尖峰干擾脈寬達(dá)不到8個采樣周期。系統(tǒng)設(shè)計時采樣16次,只取最后8次的存儲狀態(tài)與原狀態(tài)進(jìn)行比較,如果最后采樣的狀態(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 源程序代碼分析
對應(yīng)程序流程圖,給出了單片機通過P4.2口對ADXL202某一輸出通道采樣濾波并完成脈寬計數(shù)的源程序。源程序如下:
源程序中定義了3個變量,其中變量Flag存儲原狀態(tài)值;FlagReg存儲當(dāng)前采樣值;變量i記錄采樣次數(shù);改變i的值可控制濾除尖峰脈沖的等待時間。程序通過對原狀態(tài)與當(dāng)前采樣狀態(tài)異或之后的值來判斷當(dāng)前信號是有效信號還是干擾信號,從而對上升沿、下降沿的中間過度或尖峰脈沖干擾進(jìn)行相應(yīng)處理,退出中斷子程序。實現(xiàn)了對正常信號計數(shù)、濾掉尖峰脈沖干擾的目的。
4 測試結(jié)果
由于條件限制以及干擾的隨機性,對基于ADXL202構(gòu)成的車載電子羅盤進(jìn)行的測試,無法對所測量的角度以及方向角進(jìn)行精確標(biāo)定。實驗時,通過相同條件下同一物理量多次測量值的標(biāo)準(zhǔn)差來對相應(yīng)算法進(jìn)行*估。測試結(jié)果如表1所列。
從實驗測試的標(biāo)準(zhǔn)差可以看出,經(jīng)過軟件濾波后σ小了很多,這種軟件濾波算法對濾除尖峰脈沖干擾是非常有效的。
結(jié)語
本文提出的軟件濾波算法速度快,代碼效率高,濾波效果理想,是一種實用的數(shù)字濾波設(shè)計方法,體現(xiàn)了將算法與具體硬件相結(jié)合的思想。另一方面,當(dāng)脈沖干擾較寬時可將存儲器變量適當(dāng)擴展成多字節(jié)變量。這個算法還可以與FPGA結(jié)合,用于其他計數(shù)精度要求較高、易受尖峰脈沖干擾的應(yīng)用場合。