引言

當前,衛星導航成為導航技術發展的主要方向,自助式導航繼續發展,組合導航已經成為主要的導航方式。針對經啟動后要較長時間才能穩定,而陀螺球轉速高、磨損大、壽命短等問題[1],本文做了載體姿態和位置測量的研究。就測姿問題,本文單片機最小的測姿,將GPS與組合,利用多種信息源相互補充,構成了一種有多余度和高精度的導航系統。它具有高精度、穩定、小型化、易操作等特點,為最終組合導航的實現奠定了基礎。

1 系統總體方案

電子羅盤的測姿定位系統結構框圖如圖1所示。

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

本文引用地址:http://www.104case.com/article/170621.htm



圖1 基于電子羅盤的測姿定位系統結構框圖

2 系統硬件

2.1 電路的基本構成

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

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

在信息處理模塊中,GPS和電子羅盤將采集到的信息通過串口不斷發送過來,單片機通過對這些數據的處理提取所需的有用信息,然后將有用信息按一定協議組裝成數據包傳送給電平轉換器發送模塊。控制整個系統的中央處理器選用F021,它是集成在一塊芯片上的混合信號系統級單片機,其最突出的優點就是改進了可以控制片內數字資源與外部I/O引腳相連的交叉開頭網絡。

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

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



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

2.2 串行通信接口電路

在信息傳輸模塊中,由于C8051F021引腳的信號電平為TTL類型,而上位機串口的異步串行通信是基于RS232標準的,兩者通信信號的邏輯電平不一致,必須進行信號電平轉換。而MAX3232芯片能直接將單片機輸出的TTL電平轉換成上位機能接收的RS232電平,或將PC機輸出的RS232電平轉換成單片機能接收的TTL電平,故采用MAX3232來實現其中的電平轉換,從而實現系統的串行通信[4]。本系統的串行通信硬件結構框圖如圖3所示。



圖3 串行通信硬件結構框圖

3 系統軟件設計

系統的軟件實現采用C語言,C語言具有功能豐富的標準函數庫,具有運算速度快和可移植性強等特點。用C語言來編寫軟件會大大縮短開發周期,增強軟件的可讀性,便于改進和擴充。

對于串口的數據處理有兩種方法:一種是查詢的方法,另一種是中斷的方法。查詢的方法是不斷地檢測接收和發送標志位,當查詢到有數據進入到SBUF時對SBUF數據進行判斷,是否為所需的數據,如果是則存儲到數據寄存器中。由于查詢方法在編寫程序時比較復雜,需要反復地查詢標志位,但是相較于其他算法對于實現循環比較簡單。本系統對串口接收和發送的數據采用的是查詢的方法[4]。



圖4 單片機信息處理流程

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

GPS信息接收完畢后,再開啟中斷0,關閉中斷1,接收電子羅盤信息。同時,將采集到的姿態和定位信息通過串口0傳送給MAX3232后,不斷發送給上位機。在中斷0中接收電子羅盤的數據時,需要提取的是其航向、俯仰和滾動信息,應判定接收到的數據是否為起始標志位,若是則開始采集數據,讀取第二位數,進行采集的同時保存數據;如不是,則繼續判定。

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

4 實驗驗證

為了驗證所設計系統的正確性和有效性,筆者進行了地面跑車實驗。將該系統固定于汽車內,實驗過程中可見衛星數為11顆,可用衛星為7顆。實驗后,將采集到的數據運用MATLAB軟件進行數據處理并對結果進行了分析。跑車實驗數據分析如圖5所示。結論如下:

① 通過對比汽車內的里程顯示器與采集回來的實驗數據計算得出跑車距離,結果均為2.9 km,基本一致;對比分析圖中的軌跡顯示與實際跑車路線,基本匹配;對比分析圖中的姿態信息與實際跑車路線情況,基本匹配。


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



圖5 跑車實驗數據分析

結語

本文設計了基于GPS/電子羅盤的測姿定位系統,以無線方式實現了載體的定位和姿態數據的采集,并通過將采集到的信息顯示于LCD及上位機上,使信息更直觀地展示在人們眼前。