MPU6050初探

版权声明:转载记得声明~~~ :) https://blog.csdn.net/ReCclay/article/details/82829280

芯片介绍

  • 以数字形式输出 6 轴或 9 轴(需外接磁传感器)的旋转矩阵、四元数
    (quaternion)、欧拉角格式的融合演算数据(需 DMP 支持)。

三轴陀螺仪,三轴加速度计,第二个I2C接口可连接其他数位运动处理器(DMP),比如加速器、磁力传感器。(故也有说6050是九轴传感器的说法)

  • 自带数字运动处理(DMP: Digital Motion Processing)引擎可减少 MCU 复杂
    的融合演算数据、感测器同步化、姿势感应等的负荷

  • 标准I2C协议、

  • 芯片内置LDO,供电3-5V都可以

  • 16bitAD转换器,16位数据输出

原理图

在这里插入图片描述

PCB封装

在这里插入图片描述

从重要的参数图理解原理

陀螺仪

陀螺仪直接输出的是角速度,角速度是指物体在单位时间内转过的角度大小。所以对角速度积分可以得到角度!

在这里插入图片描述

由于MPU6050采用的是16位带符号数作为陀螺仪测量数据输出,即数据类型是int16。所以以16进制来表示,最小的数是FFFF,由于最高位为符号位,所以相当于-7FFFF,即-32767;最大的数是7FFF,即32767。

综合上述的描述,我们可以得到,数字-32767对应-2000度每秒的陀螺仪角速度,32767对应2000度每秒的陀螺仪角速度。把32767除以2000,就可以得到16.40, 即我们说的灵敏度

把从陀螺仪读出的数字除以16.40,就可以换算成陀螺仪的角速度数值。

我们通常要把角度换算成弧度。我们知道2Pi代表360度,那么1度换算成弧度就是:2Pi/360=(2*3.1415926)/360=0.0174532。用倒数表示就是:1/57.30

通过上述分析,我们就可以知道,当采用量程为-2000到+2000的范围,把我们从陀螺仪获取的数据做如下处理,就可以用于四元数的姿态解算(用gyro_x来代表从陀螺仪读到的数据): gyro_x/(16.40*57.30)=gyro_x*0.001064,单位为弧度每秒。

加速度计

加速度计输出的是倾斜角

在这里插入图片描述

分析方法同以上的陀螺仪,当AFS_SEL=3时,数字-32767对应-16g,32767对应16g。把32767除以16,就可以得到2048, 即我们说的灵敏度。把从加速度计读出的数字除以2048,就可以换算成加速度的数值。举个例子,如果我们从加速度计读到的数字是1000,那么对应的加速度数据是1000/2048=0.49g。g为加速度的单位,重力加速度定义为1g, 等于9.8米每平方秒。

加速度计与陀螺仪联合

联合使用的缘由

简而言之就是,单独的陀螺仪使用有累计误差,而单独的加速度计使用有运动叠加误差。所以有了两者的共同作用,用加速计测量的数据来修正陀螺仪的数据。

数据融合方法

四元数法,互补滤波法,卡尔曼法等。通过调整合适的参数比例,把陀螺仪测量出来的物体角度和加速度计测量出来的角度进行互相修正。

参考链接

淘宝MPU6050的描述
http://www.bspilot.com/?p=145
http://www.bspilot.com/?p=252

猜你喜欢

转载自blog.csdn.net/ReCclay/article/details/82829280