关于mpu6050的简单使用

时间:2024-03-19 16:16:37

关于mpu6050的简单使用

MPU6050芯片的座标系是这样定义的:令芯片表面朝向自己,将其表面文字转至正确角度,此时,以芯片内部中心为原点,水平向右的为X轴,竖直向上的为Y轴,指向自己的为Z轴。见下图:
关于mpu6050的简单使用

角速度计

绕X、Y和Z三个座标轴旋转的角速度分量GYR_X、GYR_Y和GYR_Z均为16位有符号整数。从原点向旋转轴方向看去,取正值时为顺时针旋转,取负值时为逆时针旋转。

三个角速度分量均以“度/秒”为单位,能够表示的角速度范围,即倍率可统一设定,有4个可选倍率:250度/秒、500度/秒、1000度/秒、2000度/秒。以GYR_X为例,若倍率设定为250度/秒,则意味着GYR取正最大值32768时,当前角速度为顺时针250度/秒;若设定为500度/秒,取32768时表示当前角速度为顺时针500度/秒。显然,倍率越低精度越好,倍率越高表示的范围越大。
(存储加速度分量是16位有符号整数,所以1位用来存储正负,15位用来存储数值,数值范围是-32768~32767)

以GYR_X为例,若当前设定的角速度倍率为1000度/秒,那么将GRY_X读数换算为角速度(顺时针)的公式为:anglev_x=1000*GYR_X/32768;

加速度计模型

我们可以把加速度计想象为一个正立方体盒子里放着一个球,这个球被弹簧固定在立方体的中心。当盒子运动时,根据假想球的位置即可算出当前加速度的值。或者,正立方体的六个面有力传感器。
经过实验结果,各个方向加速度正负如下:
如上图位置摆放时,Z轴加速度数值为+;
当Z轴正方向向下,Z轴加速度数值为-;
当X轴正方向向上,X轴加速度数值为+;
当X轴正方向向下,X轴加速度数值为-;
当Y轴正方向向上,Y轴加速度数值为+;
当Y轴正方向向下,Y轴加速度数值为-;
往某个轴正方向加速,该轴对应的加速度值减小,反之增大。

:加速计自检、测量范围,一般不自检,四种量程2g,4g,8g,16g,对应的值分别为0x00,0x08,0x10,0x18。

量程越大,测量的范围越大,精度越低。

数据处理

MPU6050芯片提供的数据夹杂有较严重的噪音,在芯片处理静止状态时数据摆动都可能超过2%。除了噪音,各项数据还会有偏移的现象,也就是说数据并不是围绕静止工作点摆动,因此要先对数据偏移进行校准 ,再通过滤波算法消除噪音。

校准是比较简单的工作,我们只需要找出摆动的数据围绕的中心点即可。我们以GRY_X为例,在芯片处理静止状态时,这个读数理论上讲应当为0,但它往往会存在偏移量,比如我们以10ms的间隔读取了10个值。这10个值的均值,也就是这个读数的偏移量为x。在获取偏移量后,每次的读数都减去偏移量就可以得到校准后的读数了。当然这个偏移量只是估计值,比较准确的偏移量要对大量的数据进行统计才能获知,数据量越大越准,但统计的时间也就越慢。一般校准可以在每次启动系统时进行,那么你应当在准确度和启动时间之间做一个权衡。

三个角速度读数GYR_X、GYR_Y和GYR_Z均可通过统计求平均的方法来获得,但三个加速度分量就不能这样简单的完成了,因为芯片静止时的加速度并不为0。

加速度值的偏移来自两个方面,一是由于芯片的测量精度,导至它测得的加速度向量并不垂直于大地;二是芯片在整个系统(如无人机)上安装的精度是有限的,系统与芯片的座标系很难达到完美重合。前者我们称为读数偏移,后者我们称为角度偏移。因为读数和角度之间是非线性关系,所以要想以高精度进行校准必须先单独校准读数偏移,再把芯片固定在系统中后校准角度偏移。然而,由于校准角度偏移需要专业设备,且对于一般应用来说,两步校准带来的精度提升并不大,因此通常只进行读数校准即可。下面介绍读数校准的方法。

当6050按照上图方式放置时,加速度和X、Y轴数值都应为0;
若加速度量程为8g,则Z轴数值应为g/8,即32768/8=4096;
这种矫正方法只针对系统平衡状态下传感器是水平或竖直安装的。对于复杂的变化的系统并不适用。

当然我们不能保证传感器的位置是完全水平的,传感器测量的数据也有一定的噪声,一般来说,水平静止时的值在理论值±几百之内是合理的,说明传感器没有问题。

计算姿态角方法即为反三角函数法,这里不予说明。
因为重力加速度永远竖直向下,所以无法计算航向角。

在互补滤波中,因加速度所占比值较小,由于运动产生的加速度偏差一般不考虑。
//写文章时参考了很多博客,如有侵权请联系删改。