mpu6050精度提高重要小点
简要:本文章主要讲述mpu6050在应用中遇到的问题、问题的本质分析和解决办法。在此之前我们需要知道姿态(x,y,z轴角度)解算是通过mpu6050返回的各轴的“加速度”和“角速度”来解算的。希望大家阅读完后对mpu6050有更深的理解。
一、存在的问题
1. mpu6050零漂问题
2.mpu6050力漂问题(自己称呼的)
3.mpu6050温漂问题
二、问题本质分析
1.零漂问题是指传感器在没有输入信号时输出的偏差,这是MEMS传感器常见的问题,因为它们的制造工艺和材料特性可能导致的。(不可避免的)
@2.就以今年“电赛”2024年的H题-自动行驶小车来分析:
小车在非转弯行驶时的受力分析:
小车在垂直方向上受到,自身的重力和地面的支持力的影响。
小车在急弯行驶时的受力分析:
小车在急弯行驶时,受到自身的重力和地面的支持力和理论上完全水平向圆心方向的“向心力”。不过在事实中小车由于自身的车身或者自己的机械结构的差异,导致此时的向心力不是完全水平向里的了,就会导致向心力会有一些分力分解到垂直方向上,那么此时的z轴加速度数据就会受到影响。
那我们回来,还记得我们说过姿态解算是通过mpu6050传回来的加速度和角速度进行解算的嘛。那么此时的mpu6050传感器z轴数据就变得不是那么准确了,那我们用不准确的数据解算出来的数据自然也是有问题的。
现象描述:不知道你们有没有这个现象,就是在做任务4的时候,智能小车跑到循迹那部分的有时候会突然抖那么一两下。然后有时候就会跑完四圈没有问题,有时候有问题,跑着跑着到有时候到第几圈小车就切不进去了。
3.温度变化会影响MEMS传感器的物理性质,如材料的膨胀系数、弹性模量、粘附力等,这些变化会导致传感器的零点漂移和灵敏度变化,进而影响传感器的测量准确性。(不可避免的)
三、解决办法
1.零漂可以通过漂移的差值来补偿。原理就是一开始mpu6050先测出1秒内的六轴数据的漂移平均值(此过程mpu6050是静止状态)并记录下来,然后此后再读取六轴数据时,把每个轴的数据减去漂移平均值就是约等于此时的六轴数据了。
示例代码部分(可以参考着用):
百度网盘:https://pan.baidu.com/s/1-6PTiSpWuZm-82V4qj0u3w
提取码:1111
2.力漂可以通过多传感器的数据进行融合或者可以通过各种滤波器算法来进行解决。
示例代码部分(可以参考着用):
百度网盘:https://pan.baidu.com/s/1GL5gThApqT8EufvyMU00Kw
提取码:2222
3.温漂(一般影响较小)可以在软件上面程序运行多长时间才进行手动补偿一点。这个多长时间补偿一下,补偿多少合适呢?
理论教程:我们可以把零漂问题给他解决了先,同时把系统滴答定时器也给他开了(用来观察程序运行的时间点),然后一直不动mpu6050传感器,并且让mpu6050一直实时返回实时数据。然后开始观察看他什么时候开始温漂了,漂多少。最后把记录下来的数据写进程序里面就行啦。(这个大家可以自己去试试)
那到这里本次文章就算结束啦,以上是本人对如何提高mpu6050使用精度的一些浅见,本人只是一名大二的学生,见识还太少,望大家积极指正与批评。
声明:本文章中的图片是我上网获取的,然后代码是在b站的一些博主教程里面学习的和移植的,如果有不符合版权的使用原则,我将立即采取措施给予纠正。