1.MPU6050介绍
- MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角也叫做欧拉角,常应用于平衡车、飞行器等需要检测自身姿态的场景
- 6轴代表3轴加速度,3轴角速度
- 9轴代表3轴加速度,3轴角速度,3轴磁场强度
- 10轴代表3轴加速度,3轴角速度,3轴磁场强度,1轴气压强度
2.MPU6050参数
-
16位ADC采集传感器的模拟信号,量化范围:-32768~32767,数据是16位,分2个字节存储。
-
加速度计满量程选择:±2、±4、±8、±16(g)也就是重力加速度,1g=9.8m/s^2。如测量物体剧烈,量程选择大的,如测量物体平缓,量程选择小的。因为AD值范围是一定的,满量程选择越小,测量越细腻。
-
陀螺仪满量程选择: ±250、±500、±1000、±2000(°/sec)单位是度每秒,是角速度单位,就是每秒旋转多少度。
-
可配置的数字低通滤波器,可配置寄存器来选择对输出数据进行低通滤波,如输出数据抖动太厉害,就可以加低通滤波,这样输出数据就会平缓。
-
可配置的时钟源和可配置的采样分频,配合使用,时钟源经过分频器的分频,可以为AD转换和内部其他电路提供时钟,控制分频系数,就可以控制AD转换的快慢。
-
I2C从机地址:1101000(AD0=0)这里地址是7位的 1101001(AD0=1)
如程序中用16位表示,一般会有2种表示方式,以110 1000例,转换16进制为0x68,有的地方说MPU6050从机地址是0x68。在发送一个字节时,要先把0x68左移1位,在按位或上读写位,读1写0,这是认为从机地址是0x68的操作。 第2种,把0x68左移1位后的数据,当做从机地址,左移1位后是0XD0,那MPU6050从机地址是0XD0。在发送一个字节时,如果要写,就直接把0XD0当做第一个字节,如要读,就把0XD0或上0x01,即0XD1当作一个字节。
3.硬件电路
- 在仅有6轴的情况下无法保证一定是平衡的,欧拉角不够稳定,所以需要接入磁力计或者气压计来增加准确度,而XCL、XDA这两个引脚就是用来外接磁力计或者气压计使用的,在接入磁力计或者气压计后MPU6050的主机接口可以直接访问这些扩展芯片的数据,将数据读取进MPU6050中,在芯片中有DMP单元进行数据融合和姿态解算,但是如果不需要姿态解算功能的话其实也可以直接接在SCL和SDA这条总线上。
- AD0引脚是从机地址的最低位
- 另外芯片内部还内置了一些小功能,比如自由落体检测,运动检测,零运动检测etc
- 左上角LDO是供电的逻辑,MPU6050的供电脚是2.375-3.46v,左上角是为了产生稳定的3.3v,因此有了稳定的3.3v,左上角就可以不要
4.MPU6050模块框图
-
左上角为内部时钟系统,但是一般使用内部时钟
-
自测单元,验证芯片好坏,当启动自测后,芯片内部会模拟一个外力施加在传感器上,这个外力会导致传感器数据比平时大一点。可以先使能自测,读取数据,再失能自测,读取数据,两数相减,得到的数据叫自测响应,这个自测响应,芯片手测有个范围,如果自测响应的范围在芯片手册的范围,说明芯片没有问题,否则芯片有问题,使用时要小心。(自测响应=自测使能时的数据-自测失能时的数据)