MPU6050陀螺仪数据抖动问题
本帖最后由 曾经in 于 2016-6-10 22:36 编辑最近在慢慢的搞四轴,但是不是太顺利,前段调24l01没法接收,估计硬件有问题买了模块来替换,现在又出状况了
一波还未平息
一波又来侵袭
茫茫人海狂风暴雨
一波还来不及
一波早就过去
一生一世如梦初醒
好吧,不感慨了
在四轴的的板上运行,静止时X轴陀螺仪数据抖动非常厉害,z轴有小抖动,y轴数据平稳
改用开发板+模块的话同样的代码,3轴数陀螺仪据都能正常接收而且非常平稳,
#include "HAR_I2C.h"
#include "MPU6050.h"
#define MPU_INT PAin(10)
#define MPU6050_ADDRESS 0x68
#define MPU_RE_REG(reg,buf,num) IIC_ReadBuffer(buf,MPU6050_ADDRESS,reg,num)
uint32_t MPU_WR_REG(uint8_t reg,uint8_t value)
{
return I2C_WriteBuffer(&value,MPU6050_ADDRESS,reg,1);
}
void mpu6050_init(void)
{
uint8_t test;
IIC_init();
MPU_WR_REG(POWER_MANAGEMENT_1,0x00); //唤醒
MPU_WR_REG(SAMPLE_RATE_DIVIDER ,0x07); //采样率
MPU_WR_REG(CONFIGURATION ,0x07); //低通滤波
MPU_WR_REG(GYROSCOPE_CONFIGURATION ,0x00<<3); //陀螺仪配置
MPU_WR_REG(ACCELEROMETER_CONFIGURATION,0x00); //加速度计配置
}
void char2int(unsigned char *puc,uint16_t *pui)
{
unsigned charxy;
for(xy=6;xy>0;xy--)
{
*pui=(*puc++)<<8;
*(pui++)+=*(puc++);
}
}
void mpu6050_re(uint16_t *poin)
{
unsigned char hc;
MPU_RE_REG(ACCELEROMETERMEASUREMENTS,hc,6);
MPU_RE_REG(GYROSCOPE_MEASUREMENTS,hc+6,6);
char2int(hc,poin);
}四轴上MPU6050部分原理图
四轴上读到的MPU6050陀螺仪数据:(整个过程都是静止的,但是数据抖动的很厉害)
用模块读到的数据:(后半部分是静止的,较平稳)
没什么头绪呢,大家什么看
电源好好检查下,滤波做好
yl20084784 发表于 2016-6-11 00:18
电源好好检查下,滤波做好
都是USB供电,四轴SP6205稳压,开发板1117稳压
模块是相同的吗?是不是模块布线的问题? leifengfirst 发表于 2016-6-11 20:32
模块是相同的吗?是不是模块布线的问题?
一个是买的独立模块,
四轴上的mpu6050是画在四轴板一起的 那就是布线的问题了,参考单独模块的布线看看你的硬件,特别是地线 有原厂的参考吧 有原厂的参考吧 没有滤波的代码吗? 6050在PCB上 有没有方向的问题 hinii23 发表于 2016-6-12 09:11
有原厂的参考吧 没有滤波的代码吗?
不是滤波的问题,两是完全相同的程序,都是原始数据,效果完全不同 pcb布线的问题,信号线尽量远离电源线,再主要就是看看地线。 卡尔曼滤波 Scarborough7 发表于 2016-9-21 13:42
卡尔曼滤波
硬件问题,估计芯片坏了 <p>我的也是,下图是陀螺仪数据导数(角加速度)的波形,尖峰实在是没找到原因,分析了一下数据,怀疑是MPU6050寄存器更新一半的时候被IIC读了造成错误?链接是波形图</p>
<p>https://sm.ms/image/WTf3GXMimyPE5kI</p>
<p>抱歉挖坟,LZ最后解决了吗。我和你一摸一样的问题自己画的板子上的MPU波动幅度很大,用的模块就很正常程序也都是同一套。不确定是不是芯片问题。</p>
页:
[1]