极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 48645|回复: 18

用MPU6050的dmp得到的数据乱的一塌糊涂,求指导。

[复制链接]
发表于 2013-7-26 12:52:29 | 显示全部楼层 |阅读模式
本帖最后由 ShadowWalker 于 2013-7-26 12:52 编辑
  1. #include "Wire.h"
  2. #include "I2Cdev.h"
  3. #include "MPU6050_6Axis_MotionApps20.h"
  4. MPU6050 mpu;

  5. bool dmpReady = false;  // set true if DMP init was successful
  6. uint8_t mpuIntStatus;   // holds actual interrupt status byte from MPU
  7. uint8_t devStatus;      // return status after each device operation (0 = success, !0 = error)
  8. uint16_t packetSize;    // expected DMP packet size (default is 42 bytes)
  9. uint16_t fifoCount;     // count of all bytes currently in FIFO
  10. uint8_t fifoBuffer[64]; // FIFO storage buffer

  11. Quaternion q;           // [w, x, y, z]         quaternion container
  12.    
  13. VectorFloat gravity;    // [x, y, z]            gravity vector
  14.   
  15. float ypr[3];           // [yaw, pitch, roll]   yaw/pitch/roll container and gravity vector

  16. void setup()
  17. {
  18.    
  19.     Wire.begin();
  20.     Serial.begin(115200);
  21.     while (!Serial);                 // wait for serial port to connect. Needed for Leonardo only
  22.     mpu.initialize();  
  23.     devStatus = mpu.dmpInitialize();                 //为0是成功
  24.     mpu.setDMPEnabled(true);      
  25.     packetSize = mpu.dmpGetFIFOPacketSize();        //默认42byte
  26.    
  27. }
  28. void loop()
  29. {
  30.         fifoCount = mpu.getFIFOCount();
  31.         while (fifoCount < packetSize)
  32.         fifoCount = mpu.getFIFOCount();

  33.         // read a packet from FIFO
  34.         mpu.getFIFOBytes(fifoBuffer, packetSize);

  35.         // track FIFO count here in case there is > 1 packet available
  36.         // (this lets us immediately read more without waiting for an interrupt)
  37.         fifoCount -= packetSize;

  38.         mpu.dmpGetQuaternion(&q, fifoBuffer);
  39.         mpu.dmpGetGravity(&gravity, &q);
  40.         mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);

  41.         Serial.println(ypr[0] * 180/M_PI);
  42.         // Serial.print(",");
  43.         // Serial.print(ypr[1] * 180/M_PI);
  44.         // Serial.print(",");
  45.         // Serial.println(ypr[2] * 180/M_PI);                           
  46. }
复制代码


哪里错了,求各位指点。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-7-26 20:03:48 | 显示全部楼层
那个DMP融合貌似我试过了官方的库一直无法运行,不过据说;论坛有人调试成功了,但是测试几乎无法通过....
回复 支持 反对

使用道具 举报

发表于 2013-7-26 20:08:34 | 显示全部楼层
用了github上下载下来的库和范例程序,得到的数据都挺稳定的呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-27 12:39:58 | 显示全部楼层
goodboy3 发表于 2013-7-26 20:08
用了github上下载下来的库和范例程序,得到的数据都挺稳定的呀

在MPU6050_DMP6里面加delay(300)才能得到正确的数据,延时小于300得到的数据就如我帖子里的图一样,但1/0.3这样的频率也低得让人无法接受
回复 支持 反对

使用道具 举报

发表于 2013-7-27 14:37:35 | 显示全部楼层
ShadowWalker 发表于 2013-7-27 12:39
在MPU6050_DMP6里面加delay(300)才能得到正确的数据,延时小于300得到的数据就如我帖子里的图一样,但1 ...

我不加delay貌似也OK嘛 串口监视器显示的数据满稳定的如果模块不移动的话
回复 支持 反对

使用道具 举报

发表于 2013-7-28 13:41:31 | 显示全部楼层
试试用现成的成品代码调试 来测试器件工作状况
比如用 MWC代码来测试下看看?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-30 10:30:50 | 显示全部楼层

在 Arduino forum发帖的收获,先贴给大家看看,我也好好研究一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-7-30 12:38:19 | 显示全部楼层
goodboy3 发表于 2013-7-26 20:08
用了github上下载下来的库和范例程序,得到的数据都挺稳定的呀

小菜一枚,求github链接
回复 支持 反对

使用道具 举报

发表于 2013-8-1 08:31:26 | 显示全部楼层
lukefan2008 发表于 2013-7-30 12:38
小菜一枚,求github链接

https://github.com/jrowberg/i2cdevlib
回复 支持 反对

使用道具 举报

发表于 2013-8-2 21:02:00 | 显示全部楼层
goodboy3 发表于 2013-8-1 08:31
https://github.com/jrowberg/i2cdevlib

谢谢楼主,不甚感激
回复 支持 反对

使用道具 举报

发表于 2013-8-2 21:05:26 | 显示全部楼层
goodboy3 发表于 2013-8-1 08:31
https://github.com/jrowberg/i2cdevlib

可是链接怎么打不开呢?
回复 支持 反对

使用道具 举报

发表于 2013-8-5 14:03:10 | 显示全部楼层
lukefan2008 发表于 2013-8-2 21:05
可是链接怎么打不开呢?

我好像可以打开,要不你换个时间段试试看,或者是找个代理翻墙
回复 支持 反对

使用道具 举报

发表于 2014-2-26 11:29:52 | 显示全部楼层
ShadowWalker 发表于 2013-7-30 10:30
在 Arduino forum发帖的收获,先贴给大家看看,我也好好研究一下。

英语不济。。。回复是说噪声比较大的话吧motinapp20.h这个文件里的01改成09么?上面是要做什么?
回复 支持 反对

使用道具 举报

发表于 2014-4-20 11:01:01 | 显示全部楼层
是不是要滤个波?
回复 支持 反对

使用道具 举报

发表于 2015-4-21 09:37:50 | 显示全部楼层
同lz,碰到一样的问题

加了个300ms的延时,数据是稳定了,但三行里有两行都是  overflow

话说楼主解决了没  求指导
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 22:40 , Processed in 0.056730 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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