基于多MEMS傳感器的姿態測量系統
2.3 加速度計、電子羅盤與I2C接口
MC9S08QE8內帶的高速I2C模塊擁有多主機操作、可編程從機地址、中斷驅動的逐字節數據發送、支持廣播模式和10位尋址等特點,總線在最大負荷下可達到100kbps的速度。系統中,加速度計、電子羅盤芯片與MC9S08QE8 I2C模塊的接口如圖4所示。圖中ADXL345的CS引腳用來控制選擇I2C還是SPI通信協議,電平為高表示采用I2C協議,而SDA和SCL引腳分別連接到MC9S08QE8的I2C總線引腳上。電子羅盤HMC5843支持雙電壓工作,其中引腳VDD表示內核電壓,引腳VDDIO表示外部I/O電壓,本系統中采用單電壓模式,即內核電壓與外部I/O電壓相同。

3 軟件設計與測試
系統的軟件設計是整個系統的重要組成部分。依據上述硬件電路的設計原理與功能要求,軟件中首先要完成MC9S08QE8的初始化,對各種MEMS傳感器的工作模式進行設定;然后獲取三軸陀螺儀、加速度計、電子羅盤的實時信號,并根據姿態計算算法計算姿態角,最終把姿態角信息通過串口傳送到上位機中進行測試與演示,嵌入式姿態測量系統軟件流程如圖5所示。

3.1 MC9S08QE8的初始化
MC9S08QE8的初始化函數主要實現對系統時鐘、端口及各個使用的功能模塊進行初始化,如ADC模塊、SCI模塊、I2C模塊。初始化函數Sys_init_fun(void)如下:

3.2 傳感器工作模式的設定
各種MEMS傳感器工作模式的設定中,陀螺儀涉及的均為模擬信號,不用對其具體工作模式進行設定。加速度計ADXL345豐富的功能是通過配置對應的寄存器來實現的,通過對應的寄存器可以選擇數據格式、FIFO工作模式、數字通信模式、節電模式、中斷使能以及修正各軸偏差等。POWER_CTL寄存器用來設定供電模式,與BW_RATE寄存器配合,可設定數據傳輸速率,如果要進一步降低功耗,可將BW_RATE寄存器中的LOW_POWER位置位,進入低功耗模式。而DATA_FORMAT寄存器用來設定數據格式與加速度計的量程,FIFO_CTL寄存器用來設置緩存器具體的工作模式,如Bypass、FIFO、Stream、Trigger。最后OFSX、OFSY、OFSZ三個用來存放初始化時標定的X、Y、Z軸的偏移量,以便對數據進行修正。
電子羅盤HMC5843配置相對簡單,主要有3個寄存器,通過配置寄存器A可以設定數據傳輸速率和測量模式,寄存器B用來設置設備的增益大小,而通過模式寄存器用來設置設備的工作模式。
3.3 姿態計算
典型的姿態解算方法有方向余弦矩陣求解法、四元數法、旋轉矢量法等,本系統采用William Premerlani andPaul Bizard的DCM算法,DCM算法框圖如圖6所示。三軸陀螺儀的輸入信號通過運動學方程計算出方向余弦矩陣,三軸加速度計信號與三軸電子羅盤信號結合PI反饋控制對陀螺儀信號進行修正。

其中算法由kinematics_and_normalization(t_vector*gyro,t_matrix*dcm)函數實現:

上述計算得到的實時姿態角數據通過串口傳送到上位機,上位機中通過編寫的python演示程序對下位機姿態測量模塊的運動姿態進行跟蹤與顯示,演示效果如圖7所示。每幅圖中包含3個部分:第1部分(左上角)中紅、綠、藍3種指針指向分別代表橫滾角(roll)、俯仰角(pitch)與航向角(yaw)的大小,第2部分(左下角)顯示模塊實時運動姿態,第3部分(右邊)用于顯示姿態角信息。左圖為物體靜止不動下的演示效果,右圖表示在運動過程中物體的姿態運動效果,通過對比與分析2個圖及各圖對應3部分的效果,可以說明本設計達到了良好的效果,能比較正確地測量物體的姿態信息。

結語
評論