楊東永
? 要:針對海上浮體航向姿態(tài)數(shù)據(jù)測量的實際需求,采用ARM芯片STM32F407VGT6為控制核心,通過HMR3000模塊獲取航向姿態(tài)數(shù)據(jù),采用北斗GPS雙模定位授時模塊UM220-IIIN獲取時間信息,利用SD卡存儲采集數(shù)據(jù),研制了一套海上浮體航向姿態(tài)測量裝置。闡述了設(shè)計思路和軟硬件設(shè)計思想,給出了原理框圖及部分線路圖。
關(guān)鍵詞:海上浮體 航向姿態(tài) ARM HMR3000
Abstract: With the requirements of measuring seaborne floating body attitude and course,a professional measurement device was developed in this paper. An ARM controller of STM32F407VGT6 was used as the control core. Time information was obtained with Beidou UM220-IIIN,which is a GPS dual-mode positioning timing module. The measured data were stored in a SD card for convenience. Overall design of the device including software and hardware is also stated and the schematic diagram and parts of branching program were displayed in our paper.
Key words: seaborne floating body; attitude and course; ARM; HMR3000
夢乃傅暮I細(xì)√遄ㄓ糜誚懈呶O招緣暮I咸厥庾氨稈槭占觳饈匝槿撾瘛J匝槭貝鈐囟嘀中禿諾募觳庾氨覆⑶沂匝楣討形奕酥凳亍S捎謔艿椒紜⒗擻?、篈韉裙餐饔?浮體的航向姿態(tài)隨時處于變動狀態(tài)。根據(jù)承擔(dān)的軍事測量使命要求,需獲取浮體的實時航向姿態(tài)數(shù)據(jù),用于事后修正測量裝備所獲取的測量數(shù)據(jù)。根據(jù)試驗需求,設(shè)計開發(fā)了基于ARM的海上浮體航向姿態(tài)測量儀。
1 總體組成及軟硬件實現(xiàn)途徑
1.1 總體組成
基于HMR3000的海上浮體航向姿態(tài)測量裝置由主控ARM芯片STM32F407VGT6、HMR3000模塊、SD卡電路、UM220-IIIN電路和電源電路組成,原理框圖如圖1所示。
1.2 硬件設(shè)計說明
1.2.1 電源電路
電源模塊選擇LM2576系列降壓型開關(guān)穩(wěn)壓器,降壓開關(guān)穩(wěn)壓器LM2576最高輸入電壓為40 V,該系統(tǒng)采用12 V的蓄電池供電,輸入電壓符合穩(wěn)壓器要求。電源電路如圖2所示[1-2]。
圖2中的J1是電源接入插座,D1為IN5406,起到極性保護(hù)作用,當(dāng)輸入電壓接反時,電路不工作,不會燒壞電路板上的電子元器件,C3、C3構(gòu)成輸入電源濾波電路。圖2中的U2是開關(guān)電源芯片LM2576-5.0,它將12 V輸入電壓變換成5.0 V的直流電源VCC輸出,為HMR3000模塊供電。D2、L1、C7、C5構(gòu)成LM2576-5.0芯片的外圍電路。圖2中的U3是開關(guān)電源芯片LM2576-3.3,它將12 V輸入電壓變換成3.3 V的直流穩(wěn)定電壓輸出,為ARM芯片和SD卡電路供電。D3、L2、C8、C6構(gòu)成電源芯片LM2576-3.3的外圍電路。
1.2.2 HMR3000模塊接口電路設(shè)計
該設(shè)計選擇美國Honeywell公司生產(chǎn)的數(shù)字羅盤模塊HMR3000,實現(xiàn)航向姿態(tài)數(shù)據(jù)的采集。數(shù)字羅盤HMR3000使用磁阻傳感器和兩軸傾斜傳感器來提供航向姿態(tài)信息,其航向的精度為±0.5°,分辨率為±0.1°,俯仰角和滾動角精度為±0.4°,分辨率為±0.1°。模塊采用NMEA0813語句傳輸數(shù)據(jù),包括3類標(biāo)準(zhǔn)信息(HDG、HDT和XDR),3類專用語句(HPR、RCD和CCD)[3-5]。HMR3000模塊接口電路如圖3所示。
圖3中STM32F407VGT6的UART1用于和電子羅盤HMR3000通信。圖3中的接口端子COM2是DB9接口,用于連接HMR3000,5 V穩(wěn)壓電源通過引腳8輸入,HMR3000供電也可以通過引腳9輸入6~15 V的非穩(wěn)定電源。圖3中的U4是TTL電平與RS232電平互換芯片。HMR3000有4種工作模式:連續(xù)、選通、睡眠和校準(zhǔn)。HMR3000可在連續(xù)和選通模式下工作。在連續(xù)模式下,HMR3000以可組態(tài)的速率輸出羅盤主動提供的NMEA標(biāo)準(zhǔn)信息,而在選通模式下,則根據(jù)用戶控制電路的申請輸出。
軟件編寫時,采用HMR3000出廠時的默認(rèn)設(shè)置,即通信波特率為19200bps,1位停止位,8位數(shù)據(jù)位、無奇偶校驗位和1位停止位。通過用戶控制申請獲取數(shù)據(jù)。該設(shè)計只讀取NMEA語句中的$PTNTHPR語句,讀取方法是ARM通過UART1接口向HMR3000發(fā)送語句$PTNT,HPR, 模塊回送$PTNTHPR語句。具體為ARM發(fā)送語句的具體內(nèi)容為:“$PTNT,HPR*78\r\n”,模塊回應(yīng)語句的具體內(nèi)容為:“$PTNTHPR,85.9,N,-0.9,N,0.8,N*2C\r\n”。回應(yīng)數(shù)據(jù)中:85.9為航向角,-0.9為俯仰角,0.8為滾動角。
根據(jù)以上分析進(jìn)行ARM程序編寫,首先對UART1進(jìn)行初始化,初始化子程序片段如下[4]:
程序中的一維數(shù)組g_quer_HPRdata[i]在程序的頭文件中定義為:
uint8_t g_quer_HPRdata[15]="$PTNT,HPR*78\r\n"。
1.2.3 SD卡接口電路設(shè)計
該設(shè)計存儲電路采用SD卡方式實現(xiàn),ARM芯片STM32F407具備SDIO(Secure digital input/output interface)接口用于讀寫8G以下的Micro SD卡。SD卡接口電路如圖4所示[1-6]。
圖4中的J4為Micro SD卡插座,Micro SD卡的引腳7、8、1、2是數(shù)據(jù)接口,連接到STM32F407的PC8、PC9、PC10、PC11,Micro SD卡的引腳3是命令/回應(yīng)接口,連接到STM32F407的PD2,Micro SD卡的引腳5是時鐘接口,連接到STM32F407的PC12,Micro SD卡的引腳9是卡檢測接口,連接到STM32F407的PC13,用于檢測有無SD卡插入。
該設(shè)計通過在STM32F407移植R0.09版本的FATFS文件系統(tǒng),實現(xiàn)對SD卡的讀寫。FatFs Module是一種完全免費(fèi)開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設(shè)計,它完全用標(biāo)準(zhǔn)C語言編寫,所以具有良好的硬件平臺獨(dú)立性,可以移植到8051、PIC、AVR、SH、Z80、H8、ARM等系列單片機(jī)上而只需做簡單的修改。它支持FATl2、FATl6和FAT32,支持多個存儲媒介;有獨(dú)立的緩沖區(qū),可以對多個文件進(jìn)行讀/寫[6]。
該系統(tǒng)直接將以前移植過的FATFS源代碼拷貝過來使用,就是將 ff.c文件添加到工程文件夾中,新建diskio.c文件,在diskio.c文件中實現(xiàn)五個函數(shù):
disk_initialize (BYTE);//卡的初始化。
disk_status (BYTE);//獲取卡的狀態(tài)。
disk_read (BYTE,BYTE*,DWORD,BYTE);//從讀取數(shù)據(jù)。
disk_write (BYTE,const BYTE*,DWORD,BYTE);//寫數(shù)據(jù)disk_ioctl (BYTE,BYTE,void*);//獲取卡文件信息。
1.2.4 UM220-IIIN模塊外圍電路設(shè)計
授時模塊選用和芯星通的BD2/GPS雙系統(tǒng)精密授時產(chǎn)品UM220-IIIN。該模塊為高性能SoC芯片,能夠同時支持BD2 B1、GPS L1兩個頻點(diǎn),其1PPS精度為20 ns。UM220-IIIN模塊包括2個可配置的串口,默認(rèn)波特率為9 600 bps。2個串口波特率均可由用戶自行配置,最高可設(shè)為230 400 bps。輸入/輸出信號類型為LVTTL電平。UM220-IIIN模塊外圍電路如圖5所示。
圖5中ANT1為北斗/GPS雙模天線接入端,圖5中ARM芯片通過UART2和UM220-IIIN通信。授時模塊的1PPS輸出接入ARM芯片的PD0端。ARM嵌入式程序編寫時,如果授時模塊沒有鎖住衛(wèi)星則使用ARM內(nèi)部的RTC作為時間信息,如果授時模塊鎖住了衛(wèi)星則通過UART2接收中斷讀取授時模塊輸出的“$GPGGA”和“$GPRMC”兩條NMEA語句,取出日期和時間信息,并以PD0輸入的1PPS信號上升沿作為準(zhǔn)時刻點(diǎn),定時200 ms讀取和存儲一幀數(shù)據(jù)。
1.3 軟件設(shè)計思想
該系統(tǒng)的ARM程序采用C語音編寫,可讀性強(qiáng),存于ARM芯片STM32F407VGT6內(nèi)部的FLASH存儲器中,軟件系統(tǒng)流程如圖6所示。
程序初始化結(jié)束后,ARM微處理器處于定時讀取航向姿態(tài)狀態(tài),定時200 ms讀取一幀航向姿態(tài)數(shù)據(jù),讀取的數(shù)據(jù)存入SD卡內(nèi)。SD卡內(nèi)數(shù)據(jù)的存儲格式為:“編號、時間、航向、俯仰、橫滾”的順序,例如:“8 2016/03/20 11:19:40:20 312.5 0.6 -1.4”表示第8條記錄,時間是2016年03月20日11時19分40秒20毫秒,航向312.5°,俯仰0.6°,滾動-1.4°。
2 測量結(jié)果分析
測試方法:將航向姿態(tài)測量儀放置在傾斜度在0~15°可調(diào)節(jié)的單軸滑臺上,滑臺上同時放置一個測量精度為0.1°的Bevel Box數(shù)字測角儀作為真值。先測試俯仰角,調(diào)節(jié)滑臺到測角儀顯示為0.0°,航向姿態(tài)測量儀加電開始測量記錄數(shù)據(jù),手動從0°~15°~0°慢慢調(diào)節(jié)滑臺傾斜度,其中在數(shù)字測角儀顯示值為1.0°、3.0°、5.0°、7.0°、9.0°、10.0°、13.0°、15.0°處各停留3 s左右。再測試滾動角,將航向姿態(tài)測量儀轉(zhuǎn)動90°再重復(fù)以上過程。
表1部分只選取了8組實測數(shù)據(jù),第一行,序號26是SD卡的存儲序號,讀取SD卡的存儲數(shù)據(jù)后,序號18~33的俯仰數(shù)據(jù)都是1.1°~1.5°之間,均值為1.3°,在數(shù)字測角儀顯示值為1.0°時停留3 s左右,SD卡可記錄15條左右,因此,SD卡內(nèi)序號18~33的數(shù)據(jù)就是滑臺在1.0°時測得的數(shù)據(jù)。取第26條記錄代表1.0°時的測量數(shù)據(jù)。余下的7條記錄也采用相同的方法獲得。從表1可以看出,實測數(shù)據(jù)與測角儀數(shù)據(jù)之間的誤差不大于0.4°,同樣,對負(fù)方向的俯仰角和正負(fù)方向的滾動角進(jìn)行了對比,實測數(shù)據(jù)與測角儀數(shù)據(jù)之間的誤差絕對值都不大于0.3°,與HMR3000精度參數(shù)中俯仰角和精度為±0.4°符合。
最后測試航向角,航向角測量采用中海達(dá)支持BDS(B1/B3)、GPS(L1/L2)雙天線輸入,四頻高端測向板卡BX242所測的航向作為真值,采用10 m長的玻璃鋼條作為BX242測向板卡前后天線的基線,則BX242測向板卡的測向精度為:0.2°/L= 0.2°/10=0.02°。測試時,將BX242測向板卡固定在為其供電并引出了RS232調(diào)試接口的測試底板上。航向姿態(tài)測量儀放置在作為基線的玻璃鋼條中心位置,航向與基線平行且指向前天線方向。玻璃鋼條平行于地面放置在無遮擋的開闊地上,基線0°~360°可連續(xù)轉(zhuǎn)動。將測向板卡引出的RS232調(diào)試接口COMA通過USB轉(zhuǎn)RS232連接到筆記本電腦的USB接口,運(yùn)行中海達(dá)提供的WaiView軟件,正確設(shè)置COM接口后即可實時觀測航向數(shù)據(jù),手動從0°~360°慢慢旋轉(zhuǎn)天線基線,每隔5.0°停留3 s左右。
由表2可知,8組實測數(shù)據(jù)與BX242高精度測向板獲取的數(shù)據(jù)之間的誤差平均大于2.7°,這與測量模塊中航向精度為±0.5°不相符。特別是在碼頭實際安裝到浮體之后,與BX242高精度測向板獲取的數(shù)據(jù)之間的誤差平均大于8.2°,這種不相符是由使用環(huán)境中存在鐵磁材料造成的,這種環(huán)境引起的誤差是固定值,事后處理時,浮體上測得的航向數(shù)據(jù)減去8.2°后,實測數(shù)據(jù)與BX242高精度測向板獲取的數(shù)據(jù)之間的誤差絕對值都不大于0.4°,經(jīng)過處理后與HMR3000參數(shù)中航向精度為±0.5°相符。
3 結(jié)語
目前,高危險性復(fù)雜海況的海上特殊裝備驗收檢測試驗任務(wù)增多,海上浮體的航向姿態(tài)數(shù)據(jù)獲取是亟待解決的問題。基于ARM的海上浮體航向姿態(tài)測量儀體積小,能夠很方便安裝到海上浮體,在試驗過程中能夠適應(yīng)無人值守,海上多發(fā)的惡劣環(huán)境,實時采集海上浮體的航向姿態(tài)數(shù)據(jù),且經(jīng)事后誤差修正可實現(xiàn)精度為±0.5°的航向姿態(tài)數(shù)據(jù)的測量記錄功能,能夠滿足海上浮體航向姿態(tài)數(shù)據(jù)測量要求。
參考文獻(xiàn)
[1]趙晶.Protel 99高級應(yīng)用[M].北京:人民郵電出版社,2001.
[2]薛明軍,張輝,趙敏.LM2575系列開關(guān)穩(wěn)壓集成電路及其應(yīng)用[J].國外電子元器件,2001(1):67-68.
[3]彭建新,段智文,石明,等.HMR3000電子羅盤與DSP的接口設(shè)計及編程[J].電子設(shè)計工程,2010(3):182-185.
[4]杜春雷.ARM體系結(jié)構(gòu)與編程[M].清華大學(xué)出版社,2003.
[5]Michael J.Caruso Applications of Magnetic Sensors for Low Cost Compass Systems[R].Honeywell Inc,2000.
[6]李世奇,董浩斌.基于FatFs文件系統(tǒng)的SD卡存儲器設(shè)計[J].測控技術(shù),2011(12):79-81.