当前位置:   article > 正文

MPU6050从原始数据得到倾角_mpu6050原始数据换算角度

mpu6050原始数据换算角度

序言:

        在学习姿态解算的时候,DMP的库对我这种小白就像文盲看文言文版的西游记一样,以至于学了几个星期一点进展都没有,甚至连用什么库函数都不知道,而且对IIC函数的适配程度要求很高,以至于要为DMP定制IIC函数。对我来说无疑是的痛苦和折磨,在查阅大量例程时,我发现一种简单无脑的直接从原始数据得到倾角的方法,以防忘记我就马上写了出来,供大家参考,也是为自己日后复习的时候图个方便。

Acce (加速度计):

        原来我一直不能理解加速度计到底是什么,不是做变速运动的物理才有加速度吗,为什么静止不动也有加速度显示。后来通过这个公式画图,我发现在X轴和Y轴的加速度原来是从Z轴的加速度也就是从重力加速度分解来的,并不是本身运动产生的加速度。

        假设将MPU6050放置在一个斜面上,读数显示的Accel.Z就是垂直于斜面向下的力,则Accel.X(或Y)就是平行于斜面向下的力。则tan(A) = Accel.X(或Y) / Accel.Z。

        Accel.X,Accel.Y,Accel.Z 均为读取寄存器读出来的原始数据。

公式:

        因为 tan(A) = Accel.X(或Y) / Accel.Z,

        所以 A=atan( Accel.X(或Y) / Accel.Z )

        X轴的倾角为:atan2(ACC.Y, ACC.Z) * 180 / 3.1415926

        Y轴的倾角为:atan2(ACC.X, ACC.Z) * 180 / 3.1415926

注意对应的Accel.X和Accel.Y不要用反了。

代码:

记得#include <math.h>

  1. Accel_Angle_x = atan2(ACC.Y, ACC.Z) * 180 / PI; // 计算倾角,转换单位为度
  2. Accel_Angle_y = atan2(ACC.X, ACC.Z) * 180 / PI; // 计算倾角,转换单位为度

         显示出来的数据与实际方向相反,如果有需要的话可以取反或者将芯片旋转180°。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/404278
推荐阅读
相关标签
  

闽ICP备14008679号