常用电子模块整理(竞赛)——JY61(MPU6050) 原理简述及缺陷分析

时间:2024-03-18 16:40:10

——

实际上该模块的原理相当复杂(因为涉及了DSP),虽然参阅了很多资料,本文也只是力求不出错。

JY61(MPU6050)简介

MPU6050由四部分组成:加速度计、陀螺仪、DMP、温度传感器(检测温度,通过算法优化来减少温漂)。

JY61和MPU6050为从属关系。六轴模块jy61自带稳压电路,包含陀螺仪加速度计MPU6050和STM8单片机,STM8通过IIC读取 MPU6050 中DMP的测量数据然后通过串口输出,免去了用户自己去开发 MPU6050 复杂的 IIC 协议;同时保留了 MPU6050 的 IIC 接口,以满足用户访问底层测量数据(加速度、角速度)的需求。
在大部分情况下二者名称可以混用,因为通常MPU6050不会单独进行应用。实际上使用MPU6050作为搜索关键词能找到的资料更多。

jy61通过串口与外部单片机进行通信。
常用电子模块整理(竞赛)——JY61(MPU6050) 原理简述及缺陷分析

轴向说明

常用电子模块整理(竞赛)——JY61(MPU6050) 原理简述及缺陷分析
如上图所示,模块的轴向在上图标示出来,向上为 X 轴,向左为 Y 轴,垂直模块向外为 Z 轴。
旋转的方向按右手法则定义,即右手大拇指指向轴向,四指弯曲的方向即为绕该轴旋转的方向
**X 轴角度(滚转角 Roll)即为绕 X 轴旋转方向的角度,Y 轴角度(俯仰角 Pitch)即为绕 Y 轴旋转方向的角度,Z 轴角度(偏航角 Yaw)即为绕 Z 轴旋转方向的角度,**三者合称姿态角/欧拉角(Euler angles)。

对于导航和控制问题,姿态角等同于欧拉角,这是因为旋转顺序是按ZYX提供坐标,二者实际有所不同
详情:https://zhuanlan.zhihu.com/p/28514084 欧拉角与姿态角,旋转矩阵和四元数的一些思考

常用电子模块整理(竞赛)——JY61(MPU6050) 原理简述及缺陷分析

姿态融合

MPU6050的正式名称为六轴运动姿态陀螺仪传感器,可测量三维加速度,三维角速度和三维角度,之所以称其为“六轴”,是因为MPU6050是一个6轴运动处理组件,包含了3轴加速度计和3轴陀螺仪,可分别输出三轴加速度和三轴角速度,然后再根据以上原始数据在DMP(Digital Motion Processor,数字运动处理器)中使用算法进行姿态融合解算出三轴的角度数据。
常用的姿态融合算法有四元数法 、一阶互补算法和卡尔曼滤波算法,其中第三者最为常用。

卡尔曼滤波算法简述:对于姿态传感器模块来说,角度解算来源与两种类型的数据,第一种是通过加速度和磁场数据进行运动学解算可以求出三轴的姿态角,优点是没有长期漂移和误差累计,但缺点是精度差,而且仅在静态时能保证精度。第二种时通过陀螺仪测量出来的角速度进行积分运算,可以得出三轴姿态角,优点是精度高,可以进行动态测量,对加速度不敏感,缺点是有累积误差和漂移,时间越长累积误差越大。卡尔曼滤波就是一种数据融合算法,结合加速度计和陀螺仪的信息,共同来解算姿态,集合二者的优点获得在动态环境下可以准确测量姿态的方法[^1]。

JY61工作的总体过程为:将模块的姿态用四元素表示,作为系统的状态量,模块的姿态运动学方程作为滤波的状态转移方程,加速度信息作为滤波的观察量信息,然后利用卡尔曼滤波的计算方法迭代计算更新[^2]。

由于没有参考量,所以无法求出当前的Yaw角的绝对角度(另外两个角可得出),因此Z轴角度通过角速度积分运算得来,会有累积误差。如果必须要获得绝对的Yaw角,那么应当选用MPU9250(九轴,jy901内置),它相比较前者自带一个三轴电子罗盘,从而根据地球磁场方向计算Z轴角度,避免漂移现象。(当 901 使用环境有磁场干扰时,可以在上位机中配置算法转换,尝试用 6 轴算法检测角度)

  1. https://zhuanlan.zhihu.com/p/77494866 维特智能JY61姿态陀螺仪模块的使用测评
  2. https://blog.csdn.net/a752109494/article/details/52387786 关于MPU6050陀螺仪模块的测量误差分析

数据校准

由于MPU6050输出的各项数据有偏移现象(零点漂移,静态时),且具有较大噪音,因此需要先对数据偏移进行矫正,再进行滤波

数据偏移处理
传感器在出厂时都会有不同程度的零偏误差,需要手动进行校准后,测量才会准确。
角速度:可通过统计求平均的方法来获得。
加速度:通常只进行单独校准读数偏移。
以上二者皆可通过上位机程序进行校正,详询厂商说明书。

数据滤波
即卡尔曼滤波算法。一个卡尔曼滤波器接受一个轴上的角度值、角速度值以及时间增量,估计出一个消除噪音的角度值。
这一过程实际上被包含在姿态融合过程中

https://zhuanlan.zhihu.com/p/20082486 Arduino教程:MPU6050的数据获取、分析与处理

提高输出精度的方法

jy61在日常实验应用中会时而表现出较大的角度输出误差,鉴于硬件(陀螺仪和加速度计)本身精度尚可,推测为:

  1. 姿态融合算法具有缺陷。由于对算法的更新需要极强的数学思维,对于学生来说,对算法更新的难度过大。
  2. Z轴角度的积分累计误差。此为硬件缺陷,可通过升级硬件进行修改。

综上,选用精度更高的传感器如jy901等从成本上来看显得更为划算。

详情可参考:
MPU6050 /jy61帮助文档 二者内容相似
MPU9250 /jy901帮助文档 二者内容相似