吳宏碩,宗 群
(天津大學(xué)電氣與自動(dòng)化工程學(xué)院,天津 300072)
隨著科學(xué)技術(shù)的發(fā)展和社會(huì)的需要,電子羅盤的應(yīng)用越來越廣泛。電子羅盤是一種利用地磁場信息實(shí)現(xiàn)定位方向功能的裝置。目前,已實(shí)現(xiàn)的電子羅盤大都是采用單片機(jī)和數(shù)字信號處理器(DSP)作為處理器[1,2]。其中,單片機(jī)的時(shí)鐘頻率較低,難以適應(yīng)系統(tǒng)對速度和實(shí)時(shí)性的要求,而DSP雖然可以實(shí)現(xiàn)較高速的數(shù)據(jù)采集和處理,但其速度提高的同時(shí)也提高了系統(tǒng)的成本?,F(xiàn)場可編程門陣列(FPGA)片內(nèi)具有豐富的可編程資源,而且指令是并行的,具有速度快、成本低的優(yōu)點(diǎn)。
因此,為了彌補(bǔ)現(xiàn)有技術(shù)的一些缺陷,本文開發(fā)了一種基于FPGA作為微處理器的磁羅盤測量系統(tǒng),在保證系統(tǒng)響應(yīng)速度的同時(shí),分析了磁羅盤誤差來源,并進(jìn)行了誤差補(bǔ)償,實(shí)驗(yàn)結(jié)果表明:該方法能夠有效地改善磁羅盤的測量精度。
如圖1所示,數(shù)字磁羅盤主要由傳感器模塊、電源模塊、顯示輸出模塊和微處理器構(gòu)成。
圖1 系統(tǒng)結(jié)構(gòu)框圖Fig 1 Structure block diagram of system
傳感器模塊輸出三軸磁場信息和三軸加速度信息;電源模塊用于提供整個(gè)系統(tǒng)的供電;顯示輸出模塊能夠?qū)崟r(shí)顯示當(dāng)前的方位角信息以及完成對數(shù)據(jù)的串口輸出;微處理器FPGA完成對傳感器數(shù)據(jù)的采集處理,并輸出顯示。
傳感器模塊由三軸磁阻傳感器和三軸加速度計(jì)構(gòu)成。電路設(shè)計(jì)如圖2所示。
圖2 傳感器模塊電路圖Fig 2 Circuit diagram of the sensor module
HMC5883為帶有I2C總線接口的三軸數(shù)字磁阻傳感器,內(nèi)部具有12位A/D轉(zhuǎn)換器,并且內(nèi)置偏置和驅(qū)動(dòng)器置位/復(fù)位電路。采用4 mm×4 mm×1.3 mm的LCC封裝,體積小、質(zhì)量輕、價(jià)格低、電路設(shè)計(jì)簡單。R3,R4為I2C總線上拉電阻器,DRDY為數(shù)據(jù)準(zhǔn)備好中斷,接控制器FPGA的107號管腳。電容C3,C5加上傳感器片內(nèi)的ASIC電路中的H電橋驅(qū)動(dòng)電路可以產(chǎn)生電流脈沖,使片上的置位/復(fù)位電流帶產(chǎn)生磁場給傳感器去磁和極性翻轉(zhuǎn),能夠把磁阻傳感器恢復(fù)到測量磁場的高靈敏度狀態(tài)。
ADXL345為三軸數(shù)字加速度計(jì),內(nèi)置A/D轉(zhuǎn)換器,可以對高達(dá)±16gn的加速度信號進(jìn)行高分辨率(13位)測量,并且兼容SPI和I2C總線接口。芯片采用3 mm×5 mm×1 mm的LGA封裝,體積小、成本低、分辨率高、測量范圍寬。
采用FPGA作為微處理器,芯片選用Altera公司Cyclone系列的EP1C3T144C8,該芯片具有2910個(gè)邏輯單元,完全滿足本文開發(fā)方案的編程需要。
該模塊包括LED四段數(shù)碼管顯示和串口輸出。采用數(shù)碼管實(shí)時(shí)顯示當(dāng)前的方位角信息,顯示范圍為0°~360°,最低有效位為小數(shù)點(diǎn)后一位。串口輸出部分將采集得到的傳感器數(shù)據(jù)通過串口傳到PC機(jī)上,便于磁羅盤的測試和校正工作。
考慮到羅盤工作時(shí)并不是總與地平面保持水平狀態(tài),因此,要測量方位角必須先計(jì)算出姿態(tài)角[3]。姿態(tài)角的計(jì)算公式如下
式中 θ為俯仰角,φ為橫滾角,Ax,Ay為加速度計(jì)x軸和y軸的輸出。由上面的式子可以計(jì)算得到方位角信息
式中H為方位角,Hx,Hy,Hz分別為磁阻傳感器三軸輸出的磁場大小。
在實(shí)際應(yīng)用中,外界環(huán)境的磁介質(zhì)干擾會(huì)使磁羅盤的精度降低。磁干擾主要分為兩大類[4]:硬干擾和軟干擾。在本設(shè)計(jì)中只考慮硬干擾的影響,所謂硬干擾是指傳感器附近的固定磁場對磁阻傳感器的干擾,使傳感器的輸出發(fā)生偏移的影響是固定的。假設(shè)硬干擾對磁阻傳感器三軸的輸出造成的偏移量分別為Hxoffset,Hyoffset,Hzoffset,則方位角的計(jì)算式(3)可以寫成
式中Hr為誤差補(bǔ)償后的方位角,其中
系統(tǒng)數(shù)據(jù)采集的流程如圖3所示,在FPGA內(nèi)部采用狀態(tài)機(jī)的方法實(shí)現(xiàn)了I2C總線接口的設(shè)計(jì),把磁阻傳感器和加速度計(jì)同時(shí)掛載在一個(gè)I2C總線上,根據(jù)器件地址的不同分別讀取數(shù)據(jù)。FIFO是一個(gè)先進(jìn)先出堆棧,作為數(shù)據(jù)緩沖器,為了防止傳送過程中數(shù)據(jù)的丟失和重復(fù)讀取,將讀取到的數(shù)據(jù)存入FIFO中。在測試過程中發(fā)現(xiàn)有時(shí)讀取到的數(shù)據(jù)會(huì)有比較大的波動(dòng),為了提高測量精度,在FIFO緩存之前,采用數(shù)字平均濾波的方法對采集到的數(shù)據(jù)進(jìn)行了處理。
圖3 數(shù)據(jù)采集流程圖Fig 3 Flow chart of data acquisition
由2.1可知,求解方位角的計(jì)算過程存在著三角函數(shù)運(yùn)算,而FPGA內(nèi)部并沒有集成的三角函數(shù)運(yùn)算指令,因此需要編程實(shí)現(xiàn)。在這里,采用CORDIC算法[5]實(shí)現(xiàn)正弦、余弦以及反正切運(yùn)算。
整個(gè)程序是基于 Quartus II 11.0軟件開發(fā)的,采用Verilog語言編程,主程序采用原理圖設(shè)計(jì)方法,各子程序采用模塊化設(shè)計(jì),便于調(diào)試和后期的移植。軟件功能主要包括系統(tǒng)初始化、I2C總線接口設(shè)計(jì)、FIFO緩存、數(shù)字平均濾波、CORDIC算法、方位角計(jì)算、誤差校正以及顯示輸出等。程序主流程圖如圖4所示。
在本文中,將磁羅盤的工作模式分為校準(zhǔn)工作和正常工作2種模式。當(dāng)選擇校準(zhǔn)模式時(shí),只需要進(jìn)行磁場信息的采集,并對三軸磁場數(shù)據(jù)進(jìn)行數(shù)字濾波,然后由微處理器FPGA計(jì)算磁阻傳感器的偏置量,并保存到寄存器中;當(dāng)選擇正常工作模式時(shí),需要依次采集三軸磁場信息和三軸加速度計(jì)數(shù)據(jù),再對采集后的數(shù)據(jù)濾波處理,最后由FPGA進(jìn)行方位解算。
圖4 程序主流程圖Fig 4 Main flow chart of program
為了驗(yàn)證開發(fā)系統(tǒng)的有效性,按照設(shè)計(jì)思路制作了實(shí)物樣機(jī),并進(jìn)行了測試。實(shí)驗(yàn)時(shí),每隔20°采集作一次記錄,共18次。為了準(zhǔn)確的記錄18個(gè)方位角數(shù)據(jù)采集點(diǎn),采用量角器畫了一張具有角度刻度的圓圖,并把該圖放在了水平試驗(yàn)臺(tái)上;然后把傳感器水平放置于圓圖上,Z軸向上,周圍盡量避開帶有磁場干擾的環(huán)境。按照圖紙旋轉(zhuǎn)傳感器,每隔20°觀察LED顯示的方位角數(shù)值并作記錄。硬磁干擾補(bǔ)償前后方位角的實(shí)測數(shù)據(jù)見表1。為了更加直觀的顯示磁羅盤的誤差補(bǔ)償效果,將表1中的數(shù)據(jù)用繪圖的形式展現(xiàn)出來,如圖5所示。可以看出:磁羅盤在經(jīng)過硬干擾誤差修正后,方位角的誤差基本上在±1°~2°以內(nèi),相比補(bǔ)嘗前測量精度有了較大的提高。
表1 實(shí)驗(yàn)測試結(jié)果Tab 1 Result of experimental test
圖5 硬干擾補(bǔ)償前后方位角的誤差曲線Fig 5 Azimuth error curve before and after hard interference compensation
本文開發(fā)了一種基于FPGA作為微處理器的數(shù)字磁羅盤,并從器件選擇、硬件設(shè)計(jì)和軟件設(shè)計(jì)上進(jìn)行了詳細(xì)的闡述和研究。為了驗(yàn)證開發(fā)方案的可行性,對磁羅盤實(shí)物樣機(jī)進(jìn)行了測試。初步試驗(yàn)結(jié)果表明:本文研究的磁羅盤開發(fā)方案是可行的,且經(jīng)過硬干擾誤差補(bǔ)償后磁羅盤的精度可達(dá)到2°以內(nèi)。
[1] 李怡達(dá),張中平,秦 明,等.基于磁阻傳感器與微處理器的二維磁電子羅盤的設(shè)計(jì)[J].功能材料與器件學(xué)報(bào),2008,14(2):557-560.
[2] 陳美麗,昂海松,高月山,等.基于DSP的微型飛行器磁羅盤[J].傳感器與微系統(tǒng),2008,27(3):94 -96.
[3] Choi Seungkeun,Kim Seong-hyok,Yoon Yong-kyu,et al.A magnetically excited and sensed MEMS-based resonant compass[J].Transactions on Magnetics,2006,42(10):3505 -3507.
[4] 崔瑞芬,常 佶.微型磁阻式電子羅盤的設(shè)計(jì)及羅差補(bǔ)償方法的研究[J].計(jì)算機(jī)測量與控制,2010,18(21):2608-2611.
[5] 張建斌,梁 芳,劉乃安.一種改進(jìn)型CORDIC算法的FPGA實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2010,27(11):181 -184.