从MPU-9250获取方向/方向

时间:2018-10-14 18:55:47

标签: arduino accelerometer gyroscope magnetometer

我正在尝试从MPU-9250传感器获得方向,该传感器包含使用Arduino的陀螺仪,加速度计和磁力计。

对于我的产品,我需要从设备上获取卷和标题。我已经想出了如何获取卷。使用Boulderflight MPU-9250库,我可以使用以下方法确定滚动位置:

roll = 180 * atan(accY/sqrt(accX*accX + accZ*accZ))/M_PI;

我在某个地方找到了此计算,它似乎运行良好,我不得不承认我实际上并不知道它是如何工作的。

对于我发现的标题:

  if (magY > 0) { heading = 90 - atan(magX/magY)*(180/M_PI); }
  else if (magY < 0) { heading = 270 - atan(magX/magY)*(180/M_PI); }
  else if (magY == 0 && magX < 0) { heading = 180; }
  else if (magY == 0 && magX > 0) { heading = 0; }

乍一看,这似乎可行,但是只要您“滚动”设备并保持航​​向不变,航向的值就随处可见。

有人使用陀螺仪,加速度计或磁力计(在C ++中,使用Arduino)确定航向吗?

2 个答案:

答案 0 :(得分:0)

看看https://github.com/kriswiner/MPU9250
具体来说,MPU9250BasicAHRS.ino在Arduino上具有滚转,俯仰和偏航的计算。

答案 1 :(得分:0)

对于可能仍然觉得有用的人来说,不良的输出是由于在代码中使用Sleep()而引起的。显然,这弄乱了测量结果。我用它们来制作LED图案。我想第二件事是将millis()if语句结合使用以重现Sleep()