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