• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    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



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 石门县| 宁蒗| 石林| 昌邑市| 洛阳市| 庆城县| 元朗区| 大悟县| 桂林市| 蓬溪县| 莲花县| 突泉县| 麦盖提县| 积石山| 界首市| 阿拉善左旗| 明光市| 兴宁市| 长春市| 白玉县| 宁明县| 德钦县| 永济市| 抚松县| 全南县| 巴东县| 图木舒克市| 怀安县| 武清区| 遵义市| 满城县| 吉隆县| 密山市| 庆阳市| 抚州市| 衡山县| 通州市| 陈巴尔虎旗| 蓬安县| 长岛县| 建湖县|