GY-521 MPU6050加速度計
正點原子-戰(zhàn)艦V3第三十七章 MPU6050 六軸傳感器實驗
文章以ALIENTEK 戰(zhàn)艦 STM32F1 開發(fā)板為例
原文鏈接:https://baijiahao.baidu.com/s?id=1664210044090658371&wfr=spider&for=pc
MPU6050工作原理及STM32控制MPU6050
①陀螺儀傳感器:個旋轉(zhuǎn)物體的旋轉(zhuǎn)軸所指的方向在不受外力影響時,是不會改變的。人們根據(jù)這個道理,用它來保持方向。
②加速度傳感器:加速度傳感器是一種能夠測量加速度的傳感器。通常由質(zhì)量塊、阻尼器、彈性元件、敏感元件和適調(diào)電路等部分組成。傳感器在加速過程中,通過對質(zhì)量塊所受慣性力的測量,利用牛頓第二定律獲得加速度值。
數(shù)字運動處理器(DMP):http://t.csdn.cn/C2Wof
?DMP 從陀螺儀、加速度計以及外接的傳感器接收并處理數(shù)據(jù),處理結(jié)果可以從 DMP 寄存器讀出,或通過 FIFO 緩沖。DMP 有權(quán)使用 MPU 的一個外部引腳產(chǎn)生中斷。
原文參考:

vcc--->3.3v
GND--->GND
SCL---->PB6
SDA----->PB7
OLED接線:
vcc--->3.3v
GND--->GND
SCL---->PA6
SDA----->PA7
卡爾曼濾波:
? ? ? 是一種利用線性系統(tǒng)狀態(tài)方程,通過系統(tǒng)輸入輸出觀測數(shù)據(jù),對系統(tǒng)狀態(tài)進行最優(yōu)估計的算法。由于觀測數(shù)據(jù)中包括系統(tǒng)中的噪聲和干擾的影響,所以最優(yōu)估計也可看作是濾波過程。
? ? ? 數(shù)據(jù)濾波是去除噪聲還原真實數(shù)據(jù)的一種數(shù)據(jù)處理技術(shù),Kalman濾波在測量方差已知的情況下能夠從一系列存在測量噪聲的數(shù)據(jù)中,估計動態(tài)系統(tǒng)的狀態(tài)。由于它便于計算機編程實現(xiàn),并能夠?qū)ΜF(xiàn)場采集的數(shù)據(jù)進行實時的更新和處理,Kalman濾波是目前應用最為廣泛的濾波方法,在通信,導航,制導與控制等多領域得到了較好的應用。
采用up主愛轉(zhuǎn)的光凌https://www.bilibili.com/video/BV15f4y1h7GM?share_source=copy_web的卡爾曼濾波法接收數(shù)據(jù),詳細可看視頻

正常顯示的情況
有時候也會出現(xiàn)一下情況

讀取不到數(shù)值的時候建議reset一下,如果依然沒有解決,建議重新燒錄程序,或者換大佬分享的其它更加穩(wěn)定的代碼試一試。當然這個時候也要檢查接線是否有問題,有時候杜邦線可能接觸不良。
mpu6050姿態(tài)解算與卡爾曼濾波(用于飛行器的參考)
? ? ?定義地理坐標系n系:x軸指向東,y軸指向北,z軸指向天。在mpu6050芯片上定義載體坐標系b系。那么b系的姿態(tài)就是指n系與b系相對的旋轉(zhuǎn)關(guān)系,即如何由n系旋轉(zhuǎn)到b系。
? ? ?歐拉角指的是將n系按照z軸->x’軸->y”軸的順序依次轉(zhuǎn)動 ψ,θ,γψ,θ,γ 后就是b系,事實上歐拉角并沒有規(guī)定轉(zhuǎn)動順序,以上轉(zhuǎn)動順序z軸->x’軸->y”軸為慣性導航中常使用的規(guī)定,(ψ,θ,γ)T(ψ,θ,γ)T依次命名為偏航、俯仰、滾轉(zhuǎn)。

由于算法公式較多在這里附上參考:http://t.csdn.cn/n7ESW
關(guān)于mpu6050加速度計,很多人可能無法理解為什么在相對n系靜止的情況下加速度計會測量到一個與重力加速度相反的加速度,建議閱讀這篇知乎專欄文章中關(guān)于加速度計的部分:https://zhuanlan.zhihu.com/p/20082486這里對加速度計的測量解釋的較為形象。
MPU6050多用于航模的飛行數(shù)據(jù)監(jiān)控。
? ?
計步器算法
計步原理:
1.先要模型的特征
? ? ?目前,大部分設備都提供了能夠檢測各個方向的加速度傳感器。以iOS設備為例,咱們利用了其三軸加速度傳感器(x,y,z軸表明方向如圖)的特性來分析。分別用以檢測人步行中三個方向的加速度變化。
? ? ? 用戶在水平步行運動中,垂直和前進兩個加速度會呈現(xiàn)周期性變化,如圖所示。在步行收腳的動做中,因為重心向上單只腳觸地,垂直方向加速度是呈正向增長的趨勢,以后繼續(xù)向前,重心下移兩腳觸底,加速度相反。水平加速度在收腳時減少,在邁步時增長。

2.計步的合理算法
經(jīng)過計算三個加速度的矢量長度,咱們能夠得到一條步行運動的正弦曲線軌跡

此外還需做一些數(shù)據(jù)的排除
參考此文:http://www.javashuo.com/article/p-gxwarmwc-bz.html
由于MPU6050內(nèi)置了一個DMP庫,由此可以直接調(diào)用直接獲取步數(shù)
調(diào)用方法參考:https://blog.csdn.net/x1131230123/article/details/105986156
DMP庫的移植:https://mbb.eet-china.com/blog/3867054-205001.html

當然在這里直接調(diào)用DMP庫中的會出現(xiàn)模擬正常走步動做7次左右,才能正確讀出計步數(shù),動做頻率過快或和人體走路動做不匹配時,讀出的數(shù)據(jù)都是0的現(xiàn)象,可以通過代碼進行優(yōu)化。