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