中级会员
- 积分
- 497
- 金钱
- 497
- 注册时间
- 2016-3-16
- 在线时间
- 201 小时
|
27金钱
用原子哥的例程读出了MPU6050原始的的数据,然后用这个原始数据去转换角度。用加速度计的数据换算角度:①首先得到ACCX、ACCY、ACCZ(即XYZ三个轴的加速度);②Angle_X=atan(ACCX/sqrt(ACCY*ACCY+ACCZ*ACCZ)); Angle_Y=atan(ACCXY/sqrt(ACCX*ACCX+ACCZ*ACCZ)); Angle_Z=atan(ACCZ/sqrt(ACCX*ACCX+ACCY*ACCY));
然后没滤波 没做任何处理,想看看数据大概对不对,用串口直接输出数据;看到X,Y轴的角度偏差都不大,但是Z轴的数据根本就是错误的,按照数据手册,Z轴为芯片朝上那个轴,本菜鸟把MPU6050平放,X,Y的数据都接近0°,Z轴竟然90°????这是芯片设计的问题吗?看到网上有人说Z轴加速度计算角度不能再按照XY直接用反正切求了,但是具体没说明白,网上找很久也没这方面的资料。
而且还有一点疑惑,把模块X,Y轴的角度摆成90°,基本上最大只输出82-85°的样子,到达不了90°,这是芯片设计的问题还是算法设计的问题???
|
最佳答案
查看完整内容[请看2#楼]
看上去,你的这个程序不仅没有滤波,也没有做零偏校准。
一般来说每一个6050都是不一样的,在水平静止状态下,重力加速度的值,与角速度的值,都不是零,所以,要对水平静止状态下的数值进行采样,然后作为零偏校准数据,
再在进行计算时,需要把采样到的数值减去零偏数值才能作为正常的数值使用。
|