OpenEdv-开源电子网

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

MPU6050采集数据不稳定

[复制链接]

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-7-22
在线时间
11 小时
发表于 2016-11-26 20:05:38 | 显示全部楼层 |阅读模式
10金钱

我用的是战舰F4的开发板,源码用的也是配套的源码。然后就出现了如下问题:

1、不知道大家有没有关注MPU6050读取出来的数据,极其不稳定,特别是加速度计,尤其y轴的数据,其他轴的也不稳定,陀螺仪的也不稳定,飘的范围有大有小,尤其是accy,开发板发在桌面上不动,数值小的时候几十,大的时候就差不多六万多,也就是接近量程了

2、尽管读取的数据飘的很厉害,但是DMP(硬解)依旧很稳定

3、如果不用硬解,用软解,也就是用算法进行姿态解算,悲剧就产生了,飘的厉害,Yaw这个角就是一圈一圈的转,从0~180(-180)~0,或者从-180~0~180,真的很头疼。不动是软解的程序问题,还是读取的数据太飘的原因。不知道大伙还有没有好的软解方法。我用的是crazepony的源码改的。

不知道大伙有没有遇到这种情况,特别怪异,难道是我的开发板出问题了吗?之后我用自己做的mpu6050模块进行测试,如出一辙,不知道什么原因。

如果只用一个MPU6050模块,我觉得硬解还是很好用的,但是如果使用若干个模块,硬解的函数太复杂,不好复制成多套代码。


我参考了一个无人机的代码,改成了软解,可是就是mpu6050读取数据出现问题,心力憔悴、夜不能寐、辗转反侧,都年老了若干天了。

不知道有哪位大鸟知道是什么原因,还望赐教。

(为了测试,我就在显示的地方把采集到的6个原数据显示出来,其他的都没变,无论dmp初始化与否,结果都是采集到的数据很飘)

已经把程序上传到附件了,还希望小伙伴帮忙看看有啥问题,谢谢了!!!



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-7-22
在线时间
11 小时
 楼主| 发表于 2016-11-26 20:13:50 | 显示全部楼层
补充一下,这里边的sysTick计时器好像有问题,比设定速率快了七八倍,不知道什么原因。我设置的滴答计时器的频率是168M/8,装载值是168M/8/1000,在systick中断中记录毫秒数,但是好像比正常要快很多,没有配置对吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-11-27 11:11:14 | 显示全部楼层
直接下载我们例程,就有读取加速度传感器,陀螺仪传感器的原始数据,并发送到匿名上位机软件,你看波形曲线,很稳的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-7-22
在线时间
11 小时
 楼主| 发表于 2016-11-27 19:50:23 | 显示全部楼层
正点原子 发表于 2016-11-27 11:11
直接下载我们例程,就有读取加速度传感器,陀螺仪传感器的原始数据,并发送到匿名上位机软件,你看波形曲线 ...

谢谢原子哥,上面的没说清楚,硬解确实很稳定,accy的数据不知道是不是正常波动,一会几十,一会快到了量程。 现在主要的目的就是想读取多个mpu6050的数据,但是硬解的程序太复杂了,所以就打算软解,但是软解出来的数据有问题。不知道原子哥有没有软解的经验。
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-7-22
在线时间
11 小时
 楼主| 发表于 2016-11-27 19:55:11 | 显示全部楼层
正点原子 发表于 2016-11-27 11:11
直接下载我们例程,就有读取加速度传感器,陀螺仪传感器的原始数据,并发送到匿名上位机软件,你看波形曲线 ...

还有一个问题想请教一下原子哥,就是关于滴答计时器的问题。教程里的滴答计时器的频率是168M进行8分频,然后我把重载值设为168M/8/1000,也就是说,寄存器里的VAL走21个数是1微秒,那么滴答一下就应该是1毫秒,可是实际运行起来,滴答计时器的速度是100us到200us之间,不知道什么原因
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-7-22
在线时间
11 小时
 楼主| 发表于 2016-11-28 18:44:44 | 显示全部楼层
正点原子 发表于 2016-11-27 11:11
直接下载我们例程,就有读取加速度传感器,陀螺仪传感器的原始数据,并发送到匿名上位机软件,你看波形曲线 ...

原子哥,不知道为什么滴答计时器老是不准,帮忙看看呗,嘻嘻下边这三个函数是在delay.c里边的,

void delay_init(u8 SYSCLK)
{
#if SYSTEM_SUPPORT_OS                                                
        u32 reload;
#endif
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
       
        fac_us=SYSCLK/8;                                               
#if SYSTEM_SUPPORT_OS                                        
        reload=SYSCLK/8;                                               
        reload*=1000000/delay_ostickspersec;
                                                                                       
        fac_ms=1000/delay_ostickspersec;               
        SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;          
        SysTick->LOAD=reload;                                        
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;        
#else
        SysTick_Config(SYSCLK/8*1000);
#endif
}                               


void delay_us(u32 nus)
{
        u32 t0=micros();
        while(micros()-t0 < nus);
}


void delay_ms(uint16_t nms)
{       
        uint32_t t0=micros();
        while(micros() - t0 < nms * 1000);               
}




这下边的几个函数是在stm32f4xx_it.c里加的

void SysTick_Handler(void)
{
        sysTickUptime++;
        if(sysTickUptime%500==0)
        {
                LED1=~LED1;
        }
}


u32 micros(void)
{
        register uint32_t ms, cycle_cnt;
        do{
                ms = sysTickUptime;
        cycle_cnt = SysTick->VAL;
        }while (ms != sysTickUptime);
    return ((ms * 1000) + (21 * 1000 - cycle_cnt) / 21);
}


u32 millis(void)
{
    return sysTickUptime;
}


我也是参考别人的代码写的,不知道哪里出问题了,定时老是不准,LED等一秒闪好多次,而且用中断进行调试,sysTickUptime的值老是0,不知道怎么回事,ms的值也有问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 23:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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