引言

當(dāng)前,衛(wèi)星導(dǎo)航成為導(dǎo)航技術(shù)發(fā)展的主要方向,自助式導(dǎo)航繼續(xù)發(fā)展,組合導(dǎo)航系統(tǒng)已經(jīng)成為主要的導(dǎo)航方式。針對(duì)電子羅盤經(jīng)啟動(dòng)后要較長(zhǎng)時(shí)間才能穩(wěn)定,而陀螺球轉(zhuǎn)速高、磨損大、壽命短等問題[1],本文做了載體姿態(tài)和位置測(cè)量的研究。就測(cè)姿定位問題,本文基于單片機(jī)最小系統(tǒng),設(shè)計(jì)了基于GPS/電子羅盤的測(cè)姿定位系統(tǒng),將GPS與電子羅盤組合,利用多種信息源相互補(bǔ)充,構(gòu)成了一種有多余度和高精度的導(dǎo)航定位系統(tǒng)。它具有高精度、穩(wěn)定、小型化、易操作等特點(diǎn),為最終組合導(dǎo)航的實(shí)現(xiàn)奠定了基礎(chǔ)。

1 系統(tǒng)總體設(shè)計(jì)方案

基于GPS/電子羅盤的測(cè)姿定位系統(tǒng)結(jié)構(gòu)框圖如圖1所示。

RXD0為GPS接收機(jī)發(fā)送到單片機(jī)的數(shù)據(jù);RXD1為電子羅盤發(fā)送到單片機(jī)的數(shù)據(jù);TXD0為單片機(jī)發(fā)送到MAX3232的數(shù)據(jù);P(2~3)為單片機(jī)發(fā)送到LCD進(jìn)行顯示的數(shù)據(jù)。整個(gè)流程如下:首先,GPS接收機(jī)iTrax0302通過天線接收GPS衛(wèi)星發(fā)射的信號(hào),按要求輸出當(dāng)前經(jīng)度、緯度和高度信息。電子羅盤HMR3300 實(shí)時(shí)輸出跟蹤天線的當(dāng)前方向、俯仰信息。GPS 接收機(jī)iTrax0302和電子羅盤HMR3300 輸出的信息由C8051F021單片機(jī)通過串行口接收,單片機(jī)子系統(tǒng)是整個(gè)系統(tǒng)的控制核心,它完成串行信息的接收、數(shù)據(jù)處理和對(duì)各部分電路的控制工作。經(jīng)處理的信息由單片機(jī)串行口輸出后,再經(jīng)過電平轉(zhuǎn)換芯片MAX3232實(shí)現(xiàn)由TTL到RS232電平的轉(zhuǎn)換。最后,再由MAX3232將信息傳入上位機(jī)顯示即可。



圖1 基于GPS/電子羅盤的測(cè)姿定位系統(tǒng)結(jié)構(gòu)框圖

2 系統(tǒng)硬件設(shè)計(jì)

2.1 電路的基本構(gòu)成

在信息接收模塊中,本系統(tǒng)采用iTrax0302作為GPS接收機(jī),GPS上電后將自動(dòng)從天線接收GPS衛(wèi)星發(fā)射的射頻信號(hào),經(jīng)過一系列的處理過程,通過并行通道完成最佳位置衛(wèi)星的跟蹤,測(cè)出衛(wèi)星到天線的傳播距離,解讀導(dǎo)航電文,從而計(jì)算出經(jīng)度、緯度、海拔高度等信息。iTrax0302是體積小、功耗低的GPS OEM板,具有極快的信號(hào)獲取引擎,自帶2個(gè)UART接口,可接收NMEA0183格式的數(shù)據(jù)和二進(jìn)制的iTalk格式數(shù)據(jù)。

iTrax0302內(nèi)嵌8 Mb的Flash,可用于存儲(chǔ)中間定位數(shù)據(jù),并為授時(shí)應(yīng)用提供極高的精度[2]。對(duì)偏航、俯仰等姿態(tài)信息的獲取選用了數(shù)字電子羅盤HMR3300,航向精度為±1.0°,分辨率可達(dá)0.1°,橫滾和俯仰的精度為±0.3°,分辨率為±0.1°,輸出端口采用RS232(或RS485)。同時(shí),它還具有體積小、功耗低、價(jià)格便宜等特點(diǎn)[3]。

在信息處理模塊中,GPS和電子羅盤將采集到的信息通過串口不斷發(fā)送過來,單片機(jī)通過對(duì)這些數(shù)據(jù)的處理提取所需的有用信息,然后將有用信息按一定協(xié)議組裝成數(shù)據(jù)包傳送給電平轉(zhuǎn)換器發(fā)送模塊??刂普麄€(gè)系統(tǒng)的中央處理器選用C8051F021,它是集成在一塊芯片上的混合信號(hào)系統(tǒng)級(jí)單片機(jī),其最突出的優(yōu)點(diǎn)就是改進(jìn)了可以控制片內(nèi)數(shù)字資源與外部I/O引腳相連的交叉開頭網(wǎng)絡(luò)。
 

C8051F021具有異步的雙串口UART0和UART1,可分別用于接收電子羅盤信息與GPS信息。而在接收電子羅盤信息與GPS信息時(shí)要分為兩個(gè)中斷分別進(jìn)行信息處理。C8051F021具有多中斷源,滿足這一性能要求。此外,C8051F021還具有低功耗、高速度、低電壓工作(3.3 V)、高容量存儲(chǔ)器等特性,滿足本方案的要求,故信息處理模塊采用C8051F021單片機(jī)。

信息接收和信息處理模塊的硬件電路圖如圖2所示。



圖2 信息接收和信息處理模塊的硬件電路圖

2.2 串行通信接口電路

在信息傳輸模塊中,由于C8051F021引腳的信號(hào)電平為TTL類型,而上位機(jī)串口的異步串行通信是基于RS232標(biāo)準(zhǔn)的,兩者通信信號(hào)的邏輯電平不一致,必須進(jìn)行信號(hào)電平轉(zhuǎn)換。而MAX3232芯片能直接將單片機(jī)輸出的TTL電平轉(zhuǎn)換成上位機(jī)能接收的RS232電平,或?qū)C機(jī)輸出的RS232電平轉(zhuǎn)換成單片機(jī)能接收的TTL電平,故采用MAX3232來實(shí)現(xiàn)其中的電平轉(zhuǎn)換,從而實(shí)現(xiàn)系統(tǒng)的串行通信[4]。本系統(tǒng)的串行通信硬件結(jié)構(gòu)框圖如圖3所示。



圖3 串行通信硬件結(jié)構(gòu)框圖
 

3 系統(tǒng)軟件設(shè)計(jì)

系統(tǒng)的軟件實(shí)現(xiàn)采用C語(yǔ)言,C語(yǔ)言具有功能豐富的標(biāo)準(zhǔn)函數(shù)庫(kù),具有運(yùn)算速度快和可移植性強(qiáng)等特點(diǎn)。用C語(yǔ)言來編寫軟件會(huì)大大縮短開發(fā)周期,增強(qiáng)軟件的可讀性,便于改進(jìn)和擴(kuò)充。

對(duì)于串口的數(shù)據(jù)處理有兩種方法:一種是查詢的方法,另一種是中斷的方法。查詢的方法是不斷地檢測(cè)接收和發(fā)送標(biāo)志位,當(dāng)查詢到有數(shù)據(jù)進(jìn)入到SBUF時(shí)對(duì)SBUF數(shù)據(jù)進(jìn)行判斷,是否為所需的數(shù)據(jù),如果是則存儲(chǔ)到數(shù)據(jù)寄存器中。由于查詢方法在編寫程序時(shí)比較復(fù)雜,需要反復(fù)地查詢標(biāo)志位,但是相較于其他算法對(duì)于實(shí)現(xiàn)循環(huán)比較簡(jiǎn)單。本系統(tǒng)對(duì)串口接收和發(fā)送的數(shù)據(jù)采用的是查詢的方法[4]。



圖4 單片機(jī)信息處理流程

單片機(jī)信息處理流程如圖4所示。首先,待單片機(jī)初始化后,開啟中斷0,關(guān)閉中斷1,開始通過串口0接收電子羅盤信息。電子羅盤HMR3300更新頻率為8 Hz,即每秒最多可更新8次[5]。為了保證其穩(wěn)定輸出,每秒鐘提取4次電子羅盤信息。然后,以判斷回車來表示接收完一次羅盤信息,即hmr[i]=10。待接收完畢后,開啟中斷1,關(guān)閉中斷0,通過串口1接收GPS定位信息。iTrax0302更新速率為1fix/s。提取定位信息時(shí),每秒鐘提取一次GPS信息。接收到一條完整的語(yǔ)句后將其放入GPS數(shù)據(jù)存儲(chǔ)區(qū)。同樣地,我們以判斷回車來表示接收完一次GPS信息,即gps[i]=10。

GPS信息接收完畢后,再開啟中斷0,關(guān)閉中斷1,接收電子羅盤信息。同時(shí),將采集到的姿態(tài)和定位信息通過串口0傳送給MAX3232后,不斷發(fā)送給上位機(jī)。在中斷0中接收電子羅盤的數(shù)據(jù)時(shí),需要提取的是其航向、俯仰和滾動(dòng)信息,應(yīng)判定接收到的數(shù)據(jù)是否為起始標(biāo)志位,若是則開始采集數(shù)據(jù),讀取第二位數(shù),進(jìn)行采集的同時(shí)保存數(shù)據(jù);如不是,則繼續(xù)判定。

由于采用的是非定長(zhǎng)通信,因此,在采集數(shù)據(jù)的同時(shí)還要判定當(dāng)前位是否為結(jié)束標(biāo)志位,若是則進(jìn)行CRC校驗(yàn),若正確則對(duì)得到的數(shù)據(jù)進(jìn)行HPR分離;若否則開始新的采集。同樣,在中斷1中應(yīng)在接收有效后,判斷是否接收到GGA語(yǔ)句,若是再進(jìn)行分析處理[6]。也可直接發(fā)送指令給GPS接收機(jī),使GPS接收機(jī)只輸出所需要的語(yǔ)句信息。同樣的操作也適用于電子羅盤HMR3300。

4 實(shí)驗(yàn)驗(yàn)證

為了驗(yàn)證所設(shè)計(jì)系統(tǒng)的正確性和有效性,筆者進(jìn)行了地面跑車實(shí)驗(yàn)。將該系統(tǒng)固定于汽車內(nèi),實(shí)驗(yàn)過程中可見衛(wèi)星數(shù)為11顆,可用衛(wèi)星為7顆。實(shí)驗(yàn)后,將采集到的數(shù)據(jù)運(yùn)用MATLAB軟件進(jìn)行數(shù)據(jù)處理并對(duì)結(jié)果進(jìn)行了分析。跑車實(shí)驗(yàn)數(shù)據(jù)分析如圖5所示。結(jié)論如下:

① 通過對(duì)比汽車內(nèi)的里程顯示器與采集回來的實(shí)驗(yàn)數(shù)據(jù)計(jì)算得出跑車距離,結(jié)果均為2.9 km,基本一致;對(duì)比分析圖中的軌跡顯示與實(shí)際跑車路線,基本匹配;對(duì)比分析圖中的姿態(tài)信息與實(shí)際跑車路線情況,基本匹配。


② 當(dāng)衛(wèi)星信號(hào)被某些障礙物暫時(shí)阻斷時(shí),儀器線路的瞬間故障使基準(zhǔn)信號(hào)無法與衛(wèi)星信號(hào)混頻產(chǎn)生差頻信號(hào);外界干擾或接收機(jī)所處的動(dòng)態(tài)條件惡劣,使載波跟蹤環(huán)路無法鎖定信號(hào)而引起信號(hào)的暫時(shí)失鎖等,所有這些原因都會(huì)使GPS計(jì)數(shù)中斷,使恢復(fù)跟蹤后的整周計(jì)數(shù)產(chǎn)生錯(cuò)誤,如何在短時(shí)間內(nèi)測(cè)出何時(shí)發(fā)生整周數(shù)跳變,并求出丟失的整周數(shù),則需要與慣性導(dǎo)航相結(jié)合,才能在任何條件下都實(shí)現(xiàn)高精度的實(shí)時(shí)導(dǎo)航定位,為MEMSIMU/GPS/電子羅盤組合導(dǎo)航系統(tǒng)起到更好的輔助作用。



圖5 跑車實(shí)驗(yàn)數(shù)據(jù)分析

結(jié)語(yǔ)

本文設(shè)計(jì)了基于GPS/電子羅盤的測(cè)姿定位系統(tǒng),以無線方式實(shí)現(xiàn)了載體的定位和姿態(tài)數(shù)據(jù)的采集,并通過將采集到的信息顯示于LCD及上位機(jī)上,使信息更直觀地展示在人們眼前。