OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 50535|回复: 18
打印 上一主题 下一主题

吐槽一下MPU6050和DMP的缺陷问题

[复制链接]

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-7-2
在线时间
2 小时
跳转到指定楼层
楼主
发表于 2015-7-21 17:02:05 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

大家都知道,MPU6050的DMP模式目前还不是开元的。 
不是开元就会有很多的各种问题,况且MPU6050也谈不上好的陀螺仪

估计大家使用MPU6050,很多人都是使用的其DMP方式抽出四元素,得到欧拉角进行PID解算方面的问题。但是发现会有或多或少的问题让人抓心,问度娘和论坛也根本没什么答案。

这篇文章就和大家简单说说,我在使用MPU6050的时候遇到的一些问题,当然了,有不少问题我到现在也没有解决,都怪元件做的不好罢了。

第一个问题:MPU6050的陀螺仪不精确 
这个不精确不是指零点漂移,如果漂移了直接在程序中加一小横代码就能搞定。 
大家可以用MPU6050试一下,你把MPU6050航片转360度然后恢复到原来的方位(可以用个参照物,)按理来说和0度就有一两度的误差就好了,然后就会莫名其妙的显示-15度左右……….. 
这就真没什么办法了 要不就换个好点的陀螺仪就应该能好

第二个问题:DMP发现FIFO有的时候读不出来数据 
DMP模式其实就是读取MPU6050里面的FIFO,FIFO里面存的是最近状态下的包括GYRO,ACC,四元数等参数。 
个别人可能会用上位机调调IMU的时候,发现曲线是这样的。。。 
这里写图片描述 

尖峰是MPU6050的三个姿态角都调到零点了。 
细致的查了几个问题。DMP模式下,有一条语句是读取FIFO的,就是DMP_READ_FIFO这个函数。通过示波器和逻辑分析仪细致的查了一下这个到底是什么问题,我的测试结果在这: 
这里写图片描述 
所以DMP_READ_FIFO这个函数是只有1.04%的成功率能够正确读数更新 
数据更新时间隔了9.96ms,也就是相当于现在输出的采样频率是100HZ左右。 
于是我改了一下DMP模式里的宏定义来测试一下DMP的采样周期 
这里写图片描述 
当然了,DMP的宏定义还有一个和SAMPLE_RATE相关的,调了也没什么鸟用,效果和这没多大差别。 
根本不是线性的!! 
这绝逼在逗我!! 
而且DMP不是开源的,所以怎么整也不知道内部核心怎么转的。 
网络上的DMP资源也很匮乏。

所以MPU6050现在来看,就是适合一个低端用的。 
如果做飞控的话,单独一个MPU6050就像控稳几乎不可能,肯定需要很多的辅助传感器,比如光流传感器什么的

如果嫌麻烦,直接把MPU6050扔了,换个好的就OK了


本人的帖子,博客地址是http://blog.csdn.net/u013051445


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


关闭

原子哥极力推荐上一条 /1 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-12-17 20:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表