综合技术
直播中

王琴

7年用户 185经验值
私信 关注
[问答]

请问用MPU6050原始数据去转换角度,Z轴角度数据是怎么回事?

     用原子哥的例程读出了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°,这是芯片设计的问题还是算法设计的问题???

回帖(11)

李泽睿

2019-4-3 12:24:56
看上去,你的这个程序不仅没有滤波,也没有做零偏校准。
一般来说每一个6050都是不一样的,在水平静止状态下,重力加速度的值,与角速度的值,都不是零,所以,要对水平静止状态下的数值进行采样,然后作为零偏校准数据,
再在进行计算时,需要把采样到的数值减去零偏数值才能作为正常的数值使用。
举报

陈博朴

2019-4-3 12:36:25
当z轴是垂直水平面朝上时,感受重力加速度是1g,相对于地面角度自然是90度了。同理x或y轴如果垂直水平面朝上,也会感受到1g的重力加速度,相对水平面也是90度。至于你测试x、y轴朝上不是90度,是误差造成的。因为你无法保证你放置的足够水平,同时传感器的刻度系数并不唯一,是有偏差的。
如何通过测量的重力加速度g转换为角度,只要你牢记1g的重力加速度永远是垂直地面朝上的,而传感器测量的值都是重力在其敏感轴上的分量,你就可以通过画图求的啦。
举报

李林臻

2019-4-3 12:50:05
    大神!!!! 原理有点懂了,但是还是没明白上述计算公式是怎么来的,这个不管了,反正对着数据手册能用就行;关键,按照您这说法,那不能通过加速度计计算Z轴的角度了? 那要怎么计算呢?
举报

李丽

2019-4-3 12:58:07
呼叫原子哥啊!!!  @发烧友
举报

更多回帖

发帖
×
20
完善资料,
赚取积分