GY-521MPU6050 介绍
关于MPU6050各个方面的介绍,这篇博文
[MPU6050开发 – 基本概念简介]
(https://blog.csdn.net/qq_29350001/article/details/78603714)
GY-521MPU6050 是三维角度传感器,为全球首例集成六轴传感器的运动处理组件。
这里的六轴,代表的是它内置了一个三轴 MEMS 陀螺仪、一个三轴 MEMS 加速度计,一个数字运动处理引擎(DMP)。它还有用于第三方的数字传感器接口的辅助 I2C 串行接口,比如当辅助 I2C 串行接口连接到一个三轴磁力计,MPU6050 能提供一个完整的九轴融合输出到其主 I2C 端口。
MPU6050内部内置一个三轴 MEMS 陀螺仪、一个三轴 MEMS 加速度计、一个数字运动处理引擎(DMP),陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。一个片上1024字节的FIFO。通过配置,它可以精确测量角度的变化,通过DMP处理,可以输出16位的原始数据(16位ADC),然后通过算法得到四元数,再转换为欧拉角,我们就可以根据欧拉角的变化来进一步是小车处于平衡状态!
- 从IIC总线上读到的数据不再是MPU6050的AD值,而是通过初始化对DMP引擎的配置,从IIC总线上读到的直接就是四元数的值,从而跳过了程序通过AD值计算四元数的步骤。
陀螺仪
- 陀螺仪主要短时间有效,不能长时间测量——零点漂移
假设陀螺仪固定不动,理想角速度值是0dps(degree per second),但是存在零点漂移,例如有一个偏置0.1dps加在上面,于是测量出来是0.1dps,积分一秒之后,得到的角度是0.1度,1分钟之后是6度,还能忍受,一小时之后是360度,转了一圈,也就是说,陀螺仪在短时间内有很大的参考价值。
加速度计
- 加速度计的低频特性好,可以测量低速的静态加速度。在我们的飞行器上,就是对重力加速度g(也就是前面说的静态加速度)的测量和分析,其它瞬间加速度可以忽略。记住这一点对姿态解算融合理解非常重要。
- 速度计测量加速度是通过比力来测量,而不是通过加速度。
- 加速度计仅仅测量的是重力加速度,3轴加速度计输出重力加速度在加速度计所在机体坐标系3个轴上的分量大小。重力加速度的方向和大小是固定的。通过这种关系,可以得到加速度计所在平面与地面的角度关系.、
- 速度计若是绕着重力加速度的轴转动,则测量值不会改变,也就是说加速度计无法感知这种水平旋转。
陀螺仪和加速度计的关系,姿态解算融合的原理
-
机体好似一条船,姿态就是航向(船头的方位),重力是灯塔,陀螺(角速度积分)是舵手,加速度计是瞭望手。舵手负责估计和把稳航向,他相信自己,本来船向北开的,就一定会一直往北开,觉得转了90度弯,那就会往东开。当然如果舵手很牛逼,也许能估计很准确,维持很长时间。不过只信任舵手,肯定会迷路,所以一般都有瞭望手来观察误差。
-
瞭望手根据地图灯塔方位和船的当前航向,算出灯塔理论上应该在船的X方位。然而看到实际灯塔在船的Y方位,那肯定船的当前航向有偏差了,偏差就是ERR=X-Y。舵手收到瞭望手给的ERR报告,觉得可靠,那就听个90%ERR,觉得天气不好、地图误差大,那就听个10%ERR,根据这个来纠正估算航向。
硬件
以下是MPU6050的相关管脚。
从机地址
AD0接地时,地址是0110 1000 即0x68,
AD0接高电平时是0110 1001,即0x69
当 AD0 悬空时,默认IIC 地址为(0X68)。
而在实际的读写过程中,
所以写地址为0XD0,读地址为0XD1
关于寄存器,查看参考博文,以及参考手册
bug
IIC读写函数
刚开始的时候,
这里错误还是在,移植代码的时候不仔细,所有的这些函数的第一个形参都是在IIC的7位寻址时,读写数据要填写的地址。
就是说dev这个,主要都是读写数据的这个作为“命令”的地址。
就比如这个,dev,深究下去调用的函数都是前面那张的函数。
这两个函数写的地址是从机设备的地址,比如0x68。
好几篇文章提到了要平放MPU6050才能初始化成功,其实函数里提到了