STM32 MPU9250原始資料轉換 含原始碼

2021-10-17 22:10:29 字數 1428 閱讀 5696

mpu9250 內部整合有 3 軸陀螺儀、3 軸加速度計和 3 軸磁力計,輸出都是 16 位的數字量; 可以通過積體電路匯流排( iic) 介面和微控制器進行資料互動,傳輸速率可達 400 khz /s。陀螺儀的角速度測量範圍最高達±2000(° /s),具有良好的動態響應特性。加速度計的測量範圍最大為±16g( g 為重力加速度),靜態測量精度高。磁力計採用高靈度霍爾型感測器進行資料採集,磁感應強度測量範圍為±4800μt,可用於對偏航角的輔助測量。

在mpu9250初始化函式中,我們需要關注兩個函式,這兩個函式與資料轉換直接相關。

從圖中可以看出,這兩個函式是用於設定陀螺儀和加速度滿量程範圍的。

對陀螺儀來說,從紅色方框內可以看到,當函式輸入為0時,對應的量程範圍為 -250(°/s) ~ +250(°/s);當函式輸入為1時,對應的量程範圍為 -500(°/s) ~ +500(°/s),以此類推。

對加速度來說,從紅色方框內可以看到,當函式輸入為0時,對應的量程範圍為 -2×g(m/s²) ~ +2×g(m/s²);當函式輸入為1時,對應的量程範圍為 -4×g(m/s²) ~ +4×g(m/s²),以此類推(g為重力加速度)。

假設我們設定函式的輸入為3,即陀螺儀滿量程範圍為-2000(°/s) ~ +2000(°/s)。

我們知道mpu9250輸出都是16位的數字量,即輸出的原始資料範圍為 -32768 ~ +32768。它對應了陀螺儀的滿量程範圍,即當讀到的資料為32768時,它的角速度為2000(°/s)。

假設我們讀取到的資料為data,則真實的角速度大小為:data×2000/32768(°/s)=data/16.384(°/s)

轉換為弧度制為:(data/16.384)×pi/180(rad/s)=data/938.734(rad/s)

假設我們設定函式的輸入為3,即加速度滿量程範圍為-16×g(m/s²) ~ +16×g(m/s²)。

我們知道mpu9250輸出都是16位的數字量,即輸出的原始資料範圍為 -32768 ~ +32768。它對應了加速度的滿量程範圍,即當讀到的資料為32768時,它的加速度為16×g(m/s²)。

假設我們讀到的資料為data,則真實的加速度大小為:data×16×9.8/32768(m/s²)=data/208.98(m/s²)

我做了乙個**,方便大家採用不同量程範圍時進行資料的轉換,其中data為讀取到的原始資料。

新手除錯stm32f4 mpu60500

6050的原理和相關的暫存器就不多說了,這裡跟大家說幾點要注意的事項和實用的方法。1.一上手可以先讀一下位址為0x75的暫存器,這個暫存器存放著6050的位址0x68。如果正確讀到0x68,那麼可以進行下一步的工作,如果這個都沒讀到,可以先檢查一下iicc通訊函式和6050的好壞再說其他了。2.在進...

stm32產生隨機數

stm32使用rand 函式產生隨機數,在os程式設計中會設定srand 隨機種子,其實隨機種子就是某一時候的time 的值,因為這個值不同,所以每次的隨機數都不同。那麼我們需要在stm32中模擬這樣的乙個隨機種子 1 可以採用adc取樣值,必須是乙個空腳 沒接gnd vcc 2 可以採用定時器的計...

stm32產生隨機數

srand和rand 配合使用產生偽隨機數序列。rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。1 使用rtc時鐘的時間作為隨機數種子。2 微控制器內部執行乙個迴...