慣性量測單元BMI160使用設計之自我測試與校正

這裡介紹一下Bosch的慣性量測單元 BMI160 的自我測試功能和校正功能。為了讓連接傳感器的控制器能夠驗證傳感器的功能是否正常,BMI160 內建一個自我測試功能稱為BIST (built-in self-test),這個內建的自我測試可以透過控制界面 I2C 或 SPI,設定自我測試的暫存器,用來測試的傳感器MEMS單元是否正常工作。

 

BMI160 是二合一的傳感器,內部有加速度計傳感器和陀螺儀傳感器,是一顆6軸傳感器,其軸向的定義如下圖所示:

x,y, z 表示加速度計傳感器之3軸方向

Ωx,Ωy,Ωz表示陀螺儀傳感器之3軸方向


BMI160的自我測試功能分別敘述如下,由於自我測試必須透過控制界面來使用, 可由下列連結下載Bosch Sensor Technical 提供BMI160 的driver API,將其移植到微控制器上來使用

https://github.com/BoschSensortec/BMI160_driver

 

加速度計的自我檢測

測試前需先將測量的範圍設置為8G, ODR 設置為1600 Hz,



 



參考暫存器0x6D, Enable acc_self_test_amp bit,再改變acc_self_test_sign 和 acc_self_test-enable bits,致能 self -test 需等待50 ms,後讀取加速度輸出資料分別檢測+X、-X、+Y、 -Y、 +Z、 -Z 的輸出資料,同一軸的差值需達到下列表列中的標準,才能判斷MEMS 是正常的。




這部分可以在driver API 中參考下列function

perform_accel_self_test(…)

 

陀螺儀的自我檢測

陀螺儀的自我檢測, 需要先將陀螺儀切換到Normal mode, 致能register 0x6D 中的gyr_self_test_enable bit。

再讀取register 0x1B 中的 gyr_self_test_ok 來判斷檢測結果。

這部分可以在driver API 中參考下列function

perform_gyro_self_test(…)



在校正部分就會提到關於BMI160 的offset補償,利用offset 暫存器來校正加速度計和陀螺儀傳感器。BMI160 的 offset補償暫存器位於register 0x71~ 0x77分別為加速度計和陀螺儀,若要致能加速度計的 offset 補償需, 要致能acc_off_en bit, 加速度計XYZ 的補償單位是3.9 mg。

若要致能陀螺儀的offset 補償, 要致能gyr_off_en bit,陀螺儀XYZ 的補償單位是0.061 度/s。

 




BMI160 的校正

BMI160 內建校正機制Fast offset compensation,執行一個command 就可以完成校正。

校正之前需先將BMI160 置於靜止水平面上,參考如下說明設置暫存器0x69, XYZ 各軸的校正target value。

 

開始校正之前,需先致能暫存器0x69的速度計和陀螺儀FOC,再透過CMD register (0x7E) , 寫入start_foc command 即為開始校正,等待STATUS register 0x1B 的Foc_rdy flag, 約需要250ms 時間確認校正完成後, 就可以由暫存器0x71~ 0x77 讀出加速度計和陀螺儀的 offset 補償值。




在driver API 中可以參考下列function

bmi160_start_foc (…)

 

校正完成後, 就可以利用由bmi160_get_offsets(…)

來讀取Offset暫存器0x71~ 0x77的補償值, 將其儲存於檔案系統中,爾後就可利用bmi160_set_offsets(…) 來設置補償值。

 

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論