极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: zhaowenwin

牛人用MPU6050做的串口输出模块,硬件卡尔曼滤波,直接输出角度

[复制链接]
 楼主| 发表于 2013-8-28 09:04:32 | 显示全部楼层
研究了几天,终于有点头绪了,8位单片机上面真的可以做卡尔曼滤波,只不过得用简化版本的,不能用原来的那种带很多矩阵运算的,效果很好,看来那位淘宝店家真是行家!
回复 支持 反对

使用道具 举报

发表于 2013-8-28 09:17:46 | 显示全部楼层
做得挺不错的,我也去搞两个玩玩,试试效果~
回复 支持 反对

使用道具 举报

发表于 2013-8-28 10:51:29 | 显示全部楼层
有没有人能介绍一下姿态解算的算法,让大家学习一下呀?
回复 支持 反对

使用道具 举报

发表于 2013-8-28 10:52:44 | 显示全部楼层
怎么通过角速度和加速度就能算出姿态了?好像三轴是耦合的,还和坐标旋转的顺序有关,有没有做过这方面的?
回复 支持 反对

使用道具 举报

发表于 2013-8-28 11:12:22 | 显示全部楼层
zhaowenwin 发表于 2013-8-26 16:01
没人回复?自己顶起!

{:soso_e103:} 其实这个模块思路还是不错的。。。以TTL输出姿态数据。。。体积还小。。。不过最好能加个电子罗盘,这样就能做姿态识别了。应用范围更广。
回复 支持 反对

使用道具 举报

发表于 2013-8-28 11:28:58 | 显示全部楼层
用DMP的吧!做成TTL输出也好不到什么地方去,TTL口在嵌入式系统里是多么宝贵,相对来说,I2C同一端口可以最多接127个I2C设备.......

如果用一片MEGA8+MPU6050,使用DMP同样可以做成这个“商品”的.......也可以不使用DMP,移植开源飞控MWC或者APM的姿态解算代码.......
回复 支持 反对

使用道具 举报

发表于 2013-8-28 12:14:43 | 显示全部楼层
      Jeff Jrowberg  的DMP库(库名 MPU6050 I2C device class, 6-axis MotionApps20.h;当然这个库不是AVR的),这个库,是作者通过“反向工程“得到的,不是官方的!
      如果你仔细读Jeff Jrowberg的代码,其实就是i2c操作,先设置6050寄存器,再在6050内存中写入firmware,然后是config,最后是update,然后就可以直接读出FIFO里的quarternion数据,当然还有gyro和accel数据!注意,陀螺仪数据是可以自动校正,只需要传感器8秒保持不动即可,四元数处理后得到的角度数据是非常稳定的!自动校正功能是在DMP模式下才有的.
       MPU-6050内部的DMP运算,roll和pitch两个参数,用了片内的加计(重力)对陀螺仪数据进行了校正,而yaw轴就没有相应的校正参考,陀螺仪的输出会漂移是很正常的,只能采用磁感传感器校正(使用invensense的9轴DMP或自己校正)!很不莘,当你用5883时,请一定记得先将5883做8字校准,不然你的YAW轴不会得到能用的数据的!
        
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-28 13:20:17 | 显示全部楼层
拾瑞 发表于 2013-8-28 12:14
Jeff Jrowberg  的DMP库(库名 MPU6050 I2C device class, 6-axis MotionApps20.h;当然这个库不是AV ...

果然是高手啊,先膜拜一下。说得真好,为我们学习的道路指出了方向~问题是那个DMP库是放在MPU6050内部的呢还是与它相连的CPU里面的?也就是说这个解算是不是还是CPU做的,而不是MPU6050做的?
回复 支持 反对

使用道具 举报

发表于 2013-8-28 13:25:59 | 显示全部楼层
弘毅 发表于 2013-8-28 11:12
其实这个模块思路还是不错的。。。以TTL输出姿态数据。。。体积还小。。。不过最好能加个电 ...

恩,体积的确很小,毕竟串口连接电脑或者单片机还是要方便很多。我去淘宝看了,觉得还不错,先搞一个来玩玩。我也期待有电子罗盘的,这样Z轴就不会漂移了。不过算法可能回复杂很多,要再来个GPS滤波就全了。
回复 支持 反对

使用道具 举报

发表于 2013-8-28 13:30:55 | 显示全部楼层
拾瑞 发表于 2013-8-28 11:28
用DMP的吧!做成TTL输出也好不到什么地方去,TTL口在嵌入式系统里是多么宝贵,相对来说,I2C同一端口可以最多接 ...

现在好多单片机都有多串口了吧,STM32的动不动就4个串口。I2C是有组网的优势,但和计算机连不方便,怎么也得加个处理器才能在计算机上显示。不用DMP,自己做姿态解算的关键还是得滤波修正,要不长时间的稳定性不好。尤其是动态调节下误差会很大,有些很贵的倾角仪都这样,只要一加速,就姿态角就变了,而实际上姿态可能并每有边,只是加速了而已!
回复 支持 反对

使用道具 举报

发表于 2013-8-28 13:53:11 | 显示全部楼层
zhaowenwin 发表于 2013-8-28 13:20
果然是高手啊,先膜拜一下。说得真好,为我们学习的道路指出了方向~问题是那个DMP库是放在MPU6050内部的呢 ...

解算是6050自己做的!

库当然是放在MCU里的,MPU6050每次断电后重启动都必须重新配置,才能启动DMP......

我基本上可以断定你买的这个就是用的DMP,要不然的话,STM8里面还得放自动零飘抑制,姿态解算(如果用卡尔曼的有相对于STM8来说不能承受的巨量计算),等等......STM8搞不定这些事情的!

以后你会明白的,TTL口永远是不够用的!四个算多么,真不多,要不是被逼得实在没有办法,何苦用软串啊.....
回复 支持 反对

使用道具 举报

发表于 2013-8-28 13:55:09 | 显示全部楼层
弘毅 发表于 2013-8-26 16:36
也想知道算法。。。

你这就没有大神范儿了,你应该说 “嗯,不错,回去研究一下,等我的开源贴”
回复 支持 反对

使用道具 举报

发表于 2013-8-28 13:58:06 | 显示全部楼层
弘毅 发表于 2013-8-26 16:36
也想知道算法。。。

大神,搞开源贴啊
回复 支持 反对

使用道具 举报

发表于 2013-8-28 14:02:54 | 显示全部楼层
ShadowWalker 发表于 2013-8-28 13:58
大神,搞开源贴啊

{:soso_e103:} DMP的话论坛里有很多。。。其他地方也能找到很多资料。。。最近在苦心钻研厨艺。。。=.=清蒸鱼。。。萝卜炖牛腩。。。
回复 支持 反对

使用道具 举报

发表于 2013-8-28 14:05:41 | 显示全部楼层
弘毅 发表于 2013-8-28 14:02
DMP的话论坛里有很多。。。其他地方也能找到很多资料。。。最近在苦心钻研厨艺。。。=.=清 ...

我说的是楼主说的那个东西,
  1. 大牛做的MPU6050模块,号称内部集成了数字滤波和姿态结算技术,网上大部分MPU6050模块都是I2C接口的,而这家做成了串口,接口倒是方便许多,还有完整的上位机程序。

  2. 于是手贱地搞了一个,今天测试发现效果确实不错,尤其是俯仰角和滚转角的输出相当稳定,跟随也快。
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 00:24 , Processed in 0.054823 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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