datasheet
網(wǎng)上能找到兩個 pdf 文件,一個主要講功能和各種參數(shù),另一個是寄存器映射。因為 datasheet 很好找,這里就不提供連接了,只是提一下要找到這兩個才算找全。
方向定義
后面會給出 MicropPython 寫過的驅(qū)動,這里先提出一個結(jié)果:
如下圖 z 軸向上放置的時候,Z 方向的加速度是正 9.8 m/s/s左右。

可編程量程

1、陀螺儀

可選量程:±250,±500,±1000 和 ±2000°/ sec(dps)
FS_SEL 量程(°/ sec)
0 ±250
1 ±500
2 ±1000
3 ±2000
2、加速度可選量程:±2g,±4g,±8g 和 ±16g
AFS_SEL 量程(g)
0 ±2
1 ±4
2 ±8
3 ±16
讀數(shù)方法
參考鏈接 https://blog.csdn.net/u013636775/article/details/69668860
這個鏈接講得非常好,這里照搬了這個鏈接的文字內(nèi)容。
1、陀螺儀
陀螺儀的范圍有±250、±500、±2000可選,而對應(yīng)的精度分別是131LSB/(°/s)、65.5LSB/(°/s)、32.8LSB/(°/s)、16.4 LSB/(°/s)
a.那么這個精度和范圍的關(guān)系是什么?
首先MPU6050數(shù)據(jù)寄存器是一個16位的,由于最高位是符號位,故而數(shù)據(jù)寄存器的輸出范圍是-7FFF~7FFF ,也既是-32767~32767;
b.如果選擇陀螺儀范圍是±2000,那么意味著-32767對應(yīng)的是-2000(°/s),32767對應(yīng)是2000(°/s),當(dāng)讀取陀螺儀的值是1000的,對應(yīng)的角速度計算如下:32767/2000 =1000/x; 既x = 1000/16.4(°/s),可以看出32767/2000 = 16.4 ,對應(yīng)手冊中的精度 16.4 LSB/(°/s),其他范圍的也是如此。
c.在四軸姿態(tài)計算中,我們通常要把角度換算成弧度。我們知道2Pi代表360度,那么1度換算成弧度就是:2Pi/360=(2*3.1415926)/360=0.0174532=1/57.30。
d.總結(jié):當(dāng)量程為-2000到+2000的范圍,把陀螺儀獲取的數(shù)據(jù)轉(zhuǎn)換為真正的弧度每秒的公式:(gyro_x來代表從陀螺儀讀到的數(shù)據(jù)): gyro_x/(16.40*57.30)=gyro_x*0.001064,單位為弧度每秒。
2、加速度計

采用和陀螺儀同樣的計算方法,當(dāng)AFS_SEL=3時,數(shù)字-32767對應(yīng)-16g,32767對應(yīng)16g。把32767除以16,就可以得到2048, 即我們說的靈敏度。把從加速度計讀出的數(shù)字除以2048,就可以換算成加速度的數(shù)值。舉個例子,如果我們從加速度計讀到的數(shù)字是1000,那么對應(yīng)的加速度數(shù)據(jù)是1000/2048=0.49g。g為加速度的單位,重力加速度定義為1g, 等于9.8米每平方秒。
MicroPython 的驅(qū)動
Sugar 發(fā)現(xiàn)測傳感器用 MicroPython 非常方便。我們看下測試程序一共就這么幾行(Sugar 用 ESP8266 測的):
from machine import I2C, Pinimport mpu6050i2c = I2C(scl=Pin(13), sda=Pin(12))accelerometer = mpu6050.accel(i2c)print(accelerometer.get_dps())print(accelerometer.get_mss())
在公眾號回復(fù) mpu6050 得到 MicroPython 的驅(qū)動程序,放到你的設(shè)備里(命名為 mpu6050.py)就可以 import mpu6050 了。