關於MPU9250的六軸DMP和九軸MPL

2021-09-24 20:53:33 字數 1218 閱讀 4129

九軸mpl重新整理的最快頻率應該是200hz,直接出三個尤拉角--偏航、俯仰、翻滾(可以檢視四元素),三軸加速度、角速度、磁力值和溫度都能讀,有單獨的讀取函式,讀出來的都是原始值,還要處理(例程正點原子的實驗_ mpu9250九軸感測器實驗,用的不是中斷,是一直讀取,不過也挺快),用的是i2c,如果想用spi,只需換一下底層即可參考spi讀取mpu9250資料

如果不用中斷總是出現每次讀取mpl一次後要復位一次(mpu_reset_fifo),這裡面有延時函式造成總體時間過長,不知道為什麼(應該是**造成的時間不連續進而引起mpl自動判斷出現異常情況進行重啟),用了中斷(9250有中斷引腳)後,連續讀取1000次資料,用時5秒多,基本上最快了

dmp和mpl的庫不一樣,官方沒開源,有的函式比如  inv_enable_9x_sensor_fusion();是無法檢視具體內容的,keil跳轉不過去的,屬於內部引用函式

mpl執行後必須先將磁力計8字校準才能呼叫出mpl的資料,否則是六軸的mpl,資料雖然比dmp要準,實測一小時偏不了0.1度,當然dmp要比不用dmp準(不用演算法的話),六軸mpl的資料每次開機不管載體朝向那,數值都是固定的;九軸雖然也是每次重啟資料都是0,但是8字校準完成後資料就是相對地球的位置方向角度了,波動比較大,注意是波動不是漂移,大概有4、5度,但是不管過多長時間都是圍繞某個值波動,不會漂移,可以用乙個中值濾波或滑動平均濾波處理一下

磁力計校準完成後,函式inv_build_compass(compass,0,sensor_timestamp); //把磁力計值發給mpl   中compass會置為3,如果有強磁場干擾或者未校準會置0

磁力計如果收到的外界磁場過大時,九軸mpl會自動切換為六軸

也可以不用mpl,手動imu融合,有演算法更直觀但是占用運算資源,參考imu姿態融合或者橢球擬合的原理或者ahrs演算法

x-imu的融合**

移植i2c程式引腳時,注意除了修改引腳的名字位置,還要修改輸入輸出方向stm32的io口暫存器配置

例如以下幾句

#define mpu_sda_in()  

#define mpu_sda_out()

#define iic_scl    pbout(13) //scl         

#define iic_sda    pbout(15) //sda                  

#define mpu_read_sda   pbin(15)  //輸入sda            

移植中可能用到的函式

2023年3月4日 MPU9250使用(一)

在mpu9250的實際使用中 發現繞著z軸在緩慢旋轉的過程中 yaw會出現較大的誤差 記錄的角度明顯小於實際角度 實際90 記錄80 看晶元手冊介紹如下 one die houses the 3 axis gyroscope and the 3 axis accelerometer.the othe...

MPU9250用DMP庫受1W433M射頻天線干擾

小功率射頻模組一切正常 433m射頻模組不插天線不會干擾 插天線干擾射頻模組對面 電路板兩面 的微控制器,加防磁墊有效果 插天線,天線不對著9250,不會干擾 天線在9250某個位置,dmp庫中斷方式,正常輸出幾次,然後9250隨時宕機 卡死後給任何復位訊號都沒用,只能斷電重啟 中斷訊號一直高 低電...

MPU6050六軸感測器筆記

mpu6050六軸感測器 1 自帶數字運動處理 2 整合可程式控制 陀螺儀 3 整合可程式控制 加速度感測器 4 自帶數字溫度感測器 5 可輸出中斷 支援姿勢識別各種動作感應功能 6 自帶1024位元組fifo 有助於降低系統功耗 7 高達400khz 的iic通訊介面 8 超小封裝尺寸 4 4 0...