[陀螺仪] MPU6050陀螺仪数据抖动问题

曾经in   2016-6-10 22:27 楼主
最近在慢慢的搞四轴,但是不是太顺利,前段调24l01没法接收,估计硬件有问题买了模块来替换,现在又出状况了 一波还未平息 一波又来侵袭 茫茫人海狂风暴雨 一波还来不及 一波早就过去 一生一世如梦初醒 好吧,不感慨了 在四轴的的板上运行,静止时X轴陀螺仪数据抖动非常厉害,z轴有小抖动,y轴数据平稳 改用开发板+模块的话同样的代码,3轴数陀螺仪据都能正常接收而且非常平稳,
  1. #include "HAR_I2C.h"
  2. #include "MPU6050.h"
  3. #define MPU_INT PAin(10)
  4. #define MPU6050_ADDRESS 0x68
  5. #define MPU_RE_REG(reg,buf,num) IIC_ReadBuffer(buf,MPU6050_ADDRESS,reg,num)
  6. uint32_t MPU_WR_REG(uint8_t reg,uint8_t value)
  7. {
  8. return I2C_WriteBuffer(&value,MPU6050_ADDRESS,reg,1);
  9. }
  10. void mpu6050_init(void)
  11. {
  12. uint8_t test;
  13. IIC_init();
  14. MPU_WR_REG(POWER_MANAGEMENT_1,0x00); //唤醒
  15. MPU_WR_REG(SAMPLE_RATE_DIVIDER ,0x07); //采样率
  16. MPU_WR_REG(CONFIGURATION ,0x07); //低通滤波
  17. MPU_WR_REG(GYROSCOPE_CONFIGURATION ,0x00<<3); //陀螺仪配置
  18. MPU_WR_REG(ACCELEROMETER_CONFIGURATION,0x00); //加速度计配置
  19. }
  20. void char2int(unsigned char *puc,uint16_t *pui)
  21. {
  22. unsigned char xy;
  23. for(xy=6;xy>0;xy--)
  24. {
  25. *pui=(*puc++)<<8;
  26. *(pui++)+=*(puc++);
  27. }
  28. }
  29. void mpu6050_re(uint16_t *poin)
  30. {
  31. unsigned char hc[12];
  32. MPU_RE_REG(ACCELEROMETERMEASUREMENTS,hc,6);
  33. MPU_RE_REG(GYROSCOPE_MEASUREMENTS,hc+6,6);
  34. char2int(hc,poin);
  35. }
四轴上MPU6050部分原理图 QQ截图20160610221035.png 四轴上读到的MPU6050陀螺仪数据:(整个过程都是静止的,但是数据抖动的很厉害) QQ截图20160610215307.png 用模块读到的数据:(后半部分是静止的,较平稳) QQ截图20160610215206.png 没什么头绪呢,大家什么看 本帖最后由 曾经in 于 2016-6-10 22:36 编辑

回复评论 (13)

电源好好检查下,滤波做好
点赞  2016-6-11 00:18
引用: yl20084784 发表于 2016-6-11 00:18
电源好好检查下,滤波做好

都是USB供电,四轴SP6205稳压,开发板1117稳压
点赞  2016-6-11 02:27
模块是相同的吗?是不是模块布线的问题?
点赞  2016-6-11 20:32
引用: leifengfirst 发表于 2016-6-11 20:32
模块是相同的吗?是不是模块布线的问题?

一个是买的独立模块,
四轴上的mpu6050是画在四轴板一起的
点赞  2016-6-11 20:37
那就是布线的问题了,参考单独模块的布线看看你的硬件,特别是地线
点赞  2016-6-11 20:40
有原厂的参考吧
点赞  2016-6-12 09:10
有原厂的参考吧 没有滤波的代码吗?
点赞  2016-6-12 09:11
6050在PCB上 有没有方向的问题
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
点赞  2016-6-12 11:01
引用: hinii23 发表于 2016-6-12 09:11
有原厂的参考吧 没有滤波的代码吗?

不是滤波的问题,两是完全相同的程序,都是原始数据,效果完全不同
点赞  2016-6-12 20:50
pcb布线的问题,信号线尽量远离电源线,再主要就是看看地线。
点赞  2016-6-15 14:51
卡尔曼滤波
点赞  2016-9-21 13:42

硬件问题,估计芯片坏了
点赞  2016-9-21 21:32

我的也是,下图是陀螺仪数据导数(角加速度)的波形,尖峰实在是没找到原因,分析了一下数据,怀疑是MPU6050寄存器更新一半的时候被IIC读了造成错误?链接是波形图

https://sm.ms/image/WTf3GXMimyPE5kI

点赞  2020-1-22 19:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复