mpu6050加速度计算速度
扫描二维码
随时随地手机看文章
datasheet
网上能找到两个 pdf 文件,一个主要讲功能和各种参数,另一个是寄存器映射。因为 datasheet 很好找,这里就不提供连接了,只是提一下要找到这两个才算找全。
方向定义
后面会给出 MicropPython 写过的驱动,这里先提出一个结果:
如下图 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
读数方法
参考链接 https://blog.csdn.net/u013636775/article/details/69668860
这个链接讲得非常好,这里照搬了这个链接的文字内容。
1、陀螺仪
陀螺仪的范围有±250、±500、±2000可选,而对应的精度分别是131LSB/(°/s)、65.5LSB/(°/s)、32.8LSB/(°/s)、16.4 LSB/(°/s)
a.那么这个精度和范围的关系是什么?
首先MPU6050数据寄存器是一个16位的,由于最高位是符号位,故而数据寄存器的输出范围是-7FFF~7FFF ,也既是-32767~32767;
b.如果选择陀螺仪范围是±2000,那么意味着-32767对应的是-2000(°/s),32767对应是2000(°/s),当读取陀螺仪的值是1000的,对应的角速度计算如下:32767/2000 =1000/x; 既x = 1000/16.4(°/s),可以看出32767/2000 = 16.4 ,对应手册中的精度 16.4 LSB/(°/s),其他范围的也是如此。
c.在四轴姿态计算中,我们通常要把角度换算成弧度。我们知道2Pi代表360度,那么1度换算成弧度就是:2Pi/360=(2*3.1415926)/360=0.0174532=1/57.30。
d.总结:当量程为-2000到+2000的范围,把陀螺仪获取的数据转换为真正的弧度每秒的公式:(gyro_x来代表从陀螺仪读到的数据): gyro_x/(16.40*57.30)=gyro_x*0.001064,单位为弧度每秒。
2、加速度计
采用和陀螺仪同样的计算方法,当AFS_SEL=3时,数字-32767对应-16g,32767对应16g。把32767除以16,就可以得到2048, 即我们说的灵敏度。把从加速度计读出的数字除以2048,就可以换算成加速度的数值。举个例子,如果我们从加速度计读到的数字是1000,那么对应的加速度数据是1000/2048=0.49g。g为加速度的单位,重力加速度定义为1g, 等于9.8米每平方秒。
MicroPython 的驱动
Sugar 发现测传感器用 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())
在公众号回复 mpu6050 得到 MicroPython 的驱动程序,放到你的设备里(命名为 mpu6050.py)就可以 import mpu6050 了。