新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的GPS/電子羅盤測姿定位系統

        基于單片機的GPS/電子羅盤測姿定位系統

        作者: 時間:2012-05-23 來源:網絡 收藏

        2.2 串行通信接口電路

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

        d.JPG

        3 軟件設計

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

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

        e.JPG

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

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

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

        4 實驗驗證

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

        a.JPG



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 满洲里市| 鲁甸县| 连城县| 古蔺县| 长白| 闽清县| 长寿区| 江永县| 黄平县| 柯坪县| 博客| 铜梁县| 九江县| 东乌珠穆沁旗| 云南省| 广水市| 承德县| 长葛市| 多伦县| 龙川县| 乌拉特前旗| 冀州市| 滁州市| 米易县| 丁青县| 海城市| 宁海县| 合川市| 靖西县| 玉溪市| 织金县| 黎城县| 玉屏| 高阳县| 泽库县| 大渡口区| 芦山县| 遂平县| 合肥市| 安远县| 静乐县|