使用 ST MEMS Library(MotionDI )達成動態傾角儀 ,搭配STM32CubeIDE進行擴展

簡介

MotionDI library是 X-CUBE-MEMS1 軟體中的一部分,可在 STM32 上運行。 它提供有關設備方向的實時資訊,包括傾斜資訊,還可以執行加速度計和陀螺儀校準。

該library僅用於 ST MEMS sensor。

該演算法以靜態庫格式提供,設計基於 ARM® Cortex-M3®、ARM® Cortex-M4® 或 ARM® Cortex-M7® 架構的 STM32 微控制器上使用。

它建立在 STM32Cube 軟體技術之上,便於不同 STM32 微控制器之間的移植。

該軟體附帶了在 X-NUCLEO-IKS01A2 或 X-NUCLEO-IKS01A3 擴展板上運行的示例實現在 NUCLEO-F401RE、NUCLEO-L476RG 或 NUCLEO-L152RE 開發板上運行。

MotionDI 概述

MotionDI 庫擴展了 X-CUBE-MEMS1 軟體的功能。

該庫從加速度計和陀螺儀獲取數據,並提供有關設備位置的資訊(四元數、歐拉角、線性加速度、重力向量)。

MotionDI 濾波和預測軟體採用先進的演算法,可智慧地整合來自多個 MEMS 感測器的輸出,以獲得最佳效果。

MotionDI 濾波和預測軟體採用先進的演算法,智慧整合多個 MEMS 感測器的輸出,無論環境條件如何,都能實現最佳性能。

該庫僅為 ST MEMS 設計。 使用其他 MEMS 感測器時的功能和性能尚未經過測試。

使用其他 MEMS 感測器時的功能和性能尚未經過測試,可能與記錄的行為有很大差異。


MotionDI 庫

完整描述MotionDI API功能和參數的技術資訊可在

文件資料夾中的 MotionDI_Package.chm 編譯 HTML 檔中。

MotionDI 庫說明

MotionDI 動態傾角儀庫管理從加速度計和陀螺儀感測器獲取的數據。

感測器取得的數據:

- 即時 6 軸運動感測器數據融合(加速度計、陀螺儀)

- 計算旋轉向量、四元數、重力和線性加速度數據

- 陀螺儀偏置校準

- 加速度計偏置和刻度校準

- 建議感測器數據採樣頻率為 100 Hz

注:不同集成開發環境(工具鏈)的實際大小可能不同

- 資源要求:

- Cortex-M3:56.1 kB 代碼和 6.2 kB 數據記憶體

- Cortex-M4: 48.7 kB 代碼和 6.2 kB 數據記憶體

- Cortex-M7:46.5 kB 代碼和 6.2 kB 數據記憶體

- 可用於 ARM® Cortex-M3®、ARM® Cortex-M4® 和 ARM® Cortex-M7® 體系結構

MotionDI 庫的運行

MotionDI 庫實現了用於估計空間三維方向的感測器融合演算法。 它使用基於卡爾曼濾波器的

它使用基於卡爾曼濾波理論的數位濾波器來合併來自多個感測器的數據,並補償單個感測器的局限性。

單個感測器的局限性。 例如,由於陀螺儀的數據漂移會影響方位估算,因此可以使用加速度計來提供精確的方位。

加速度計可用於提供絕對傾斜方向資訊。

MotionDI 庫在一個庫中集成了感測器融合和校準演算法; 校準功能可通過旋鈕設置啟用或禁用校準功能。

MotionDI 庫參數

該庫基於與 MDI_knobs_t 結構相關的參數。

該結構的 MDI_fusion_knobs_t 參數如下:

- ATime、FrTime:表示用於預測的感測器加權穩定性(信任因數),範圍為 0.5 至 5。

建議使用預設值。

- ATime:降低該值可增加加速度計權重和對外部加速度的靈敏度。

加速度的靈敏度。

- FrTime:降低該值可增加對陀螺儀數據的信任度,並降低加速度計的修正值。

加速度計的修正。

- modx:表示 MotionDI_update 調用頻率的抽取率。

- output_type:表示感測器融合庫的輸出方向: 0 = ned,1 = enu

該結構的 MDI_acc_cal_knobs_t 參數為

- MoveThresh_g:校準過程中允許的最大運動量。 建議範圍為

偏差的預期精度與 MoveThresh_g 參數相同。

- CalType:可配置運行校準的庫和相應頻率。

- MDI_CAL_NONE:禁用校準

- MDI_CAL_ONETIME:運行一次校準,然後在校準質量達到良好水平時關閉校準。

校準品質

- MDI_CAL_CONTINUOUS:連續運行校準。

該結構的 MDI_gyro_cal_knobs_t 參數為

- AccThr:以 g 為單位的加速度計穩態檢測閾值。

輸入範圍為 0.0005 至 0.01 g。

感測器,則設置較高值。

- GyroThr:陀螺儀檢測穩定狀態的閾值,單位為每秒度數。 預設值為 0.25dps。 輸入範圍為 0.008 至 0.4 dps。 要獲得更高精度,請將該值設低。

- MaxGyro:是以 [dps] 為單位時的最大預期角速度偏移。 預設值為 15 dps。

- GBiasDiffAVTh:以 dps 為單位的陀螺儀閾值。 該變數的預設值為0.33,輸入範圍為0.2至0.33。

輸入範圍為 0.2 至 0.5。 為獲得更高精度,請將該值設為較低值。

- GBiasDiffVelTh:加速度計閾值,單位為 g。 該變數的預設值為0.033,輸入範圍為0.02。

輸入範圍為 0.02 至 0.05。 為獲得更高精度,請將該值設低。 兩個變數(GBiasDiffAVTh

和 GBiasDiffVelTh)都表示檢測靜止狀態所需的最小加速度和角速度變化。

檢測靜止狀態所需的最小加速度和角速度變化。

- CalType:校準類型

如下圖所示,X-NUCLEO-IKS01A2 加速計感測器具有 NWU(x-北、y-西、z-上),因此字串為 “nwu”。


MotionDI 庫輸出數據速率

正確設置動態傾角儀庫輸出數據速率(ODR)。 雖然可以將 ODR 設置為更高的值,但建議設置為 100 Hz。

但建議設置為 100 Hz。


MotionDI 庫中的感測器校準

加速度計校準

加速度計校準可提高傾斜角的精確度,建議用於要求非常精確定位的應用。

需要非常精確定位的應用。 它根據重力方向將系統對準六個位置。

由於校準參數漂移非常小,因此加速度計校準可配置為一次性運行。

校準可通過將設備置於6個不同的重力方向來完成。 例如,設備

可放置在 ±X、±Y、±Z 方向。

陀螺儀校準

陀螺儀校準由MotionDI庫通過持續補償零位偏移效應自動處理。


MotionDI 應用程式介面

MotionDI API 包括

- uint8_t MotionDI_GetLibVersion(字元*版本)

- 檢索庫的版本

- 版本是一個指向 35 個字元陣列的指標

- 傳回版本字串中的字元數

- 無效MotionDI_Initialize(浮動*頻率)

- 執行MotionDI庫初始化和內部機制設置

- freq 是向庫提供 IMU 數據的頻率

- 必須啟用 STM32 微控制器中的 CRC 模組(在 RCC 外設時鐘使能寄存器中)。

 

MotionDI 庫

- 空隙MotionDI_setKnobs(MDI_knobs_t*旋鈕)

- 設置內部旋鈕

- knobs 是指向包含旋鈕的結構的指標

- 空隙MotionDI_getKnobs(MDI_knobs_t*旋鈕)

- 獲取當前的內部旋鈕

- knobs 是指向包含旋鈕的結構的指標

- 無效MotionDI_AccCal_getParams(MDI_cal_output_t *acc_cal)

- 獲取加速度計校準參數

- acc_cal 是一個指向加速度計校準參數結構的指標。 加速度計校準參數包含偏置、比例因數和校準品質。

- 無效MotionDI_AccCal_setParams(MDI_cal_output_t *acc_cal)

- 設置加速度計校準參數

- acc_cal 是一個指向加速度計校準參數結構的指標。 加速度計校準參數包含偏置、比例因數和校準品質。

此函數應在調用 MotionDI_Initialize 之後、調用 MotionDI_update 之前調用。

- 無效MotionDI_AccCal_reset(無效)

- 重啟加速度計校準演算法

- 無效MotionDI_GyrCal_getParams(MDI_cal_output_t*gyro_cal)

- 獲取陀螺儀校準參數

- gyro_cal 是一個指向陀螺儀校準參數結構的指標。 陀螺儀校準參數包含偏差和校準品質。 比例因數保持為 1。

- 無效MotionDI_GyrCal_setParams(MDI_cal_output_t *gyro_cal)

- 設置陀螺儀校準參數

- gyro_cal 是一個指向陀螺儀校準參數結構的指標。 陀螺儀校準參數包含偏差和校準品質。 比例因數保持為 1。

此函數應在 MotionDI_Initialize 之後、調用 MotionDI_update 之前調用。

- 無效MotionDI_GyrCal_reset(無效)

- 重啟陀螺儀校準演算法

- 無效MotionDI_update(MDI_output_t*data_out,MDI_input_t*data_in)

- 運行更新

- data_out 是輸出數據結構指標

- data_in 是輸入數據結構的指標

移植到通用微控制器

MotionDI 庫對外部庫沒有任何依賴性。 它需要在微控制器上啟用 FPU。


應用程式介面流程圖



演示代碼
以下演示代碼讀取加速度計和陀螺儀感測器的數據,並獲取旋轉、四元數、重力和線性加速度值

★博文內容參考自 網站,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能

參考來源

ST: https://www.st.com/en/mems-and-sensors.html