MPU-6050轻松获取x y z值教

663 阅读3分钟

你好,几周前我开始做一个时间追踪器项目。其中一个重要的部件是MPU-6050陀螺仪,我需要一个教程来获取x y z值。我找到了很多这方面的教程。 但每当我尝试时,我都有很多问题,特别是漂移问题。漂移意味着读数根本就不稳定。30秒后,一些数值翻了四倍,尽管卡本身是静止的。所以我找到了很多答案,告诉我 "是的,这是一个常见的问题"。但对解决这个问题没有任何帮助。因此,这里有一个完整的MPU60-50教程,从头到尾,我希望在我想使用它的时候能有这个教程。

接线

接线是非常直接的。

  • VCC到5V引脚
  • GND到地
  • SCL到A4针脚
  • SDA到A5引脚
  • INT到2引脚

其他的引脚对于大多数的使用情况是没有用的。如果你对这个芯片感兴趣或者想了解更多,我鼓励你阅读这里的文档:www.invensense.com/products/mo…

MPU 6050 wiring on an arduino UNO board

MPU 6050在arduino UNO板上的布线

#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; width:100%;}/*在你的网站样式表或这个样式块中添加你自己的Mailchimp表单样式覆盖。 我们建议把这个块和前面的CSS链接移到你的HTML文件的头部。*/

订阅更多信息(我保证不会发送垃圾邮件)。

读取x y z值

现在接线工作已经完成,是时候进入实际的软件工作了。为了得到x y z值,我们需要能够读取原始值,有一大堆关于如何做到这一点的教程。但最终它并不那么有用,因为你需要对它进行计算,这些数值才真正有意义。 在挖掘了相当长的一段时间并尝试了各种教程之后,我意识到,虽然从头开始做所有的事情是相当有趣的,但当你想快速建立东西的时候,使用一个比你花了更多时间在这个问题上的人的库往往更好。

另外,这些教程似乎都没有处理你应该计算偏移量和校准这该死的东西的部分。如果你不校准它,你很可能迟早会遇到问题。

MPU6050的tockn库

Github用户tockn创建了这个名为 MPU6050_tockn的很棒的库(如果你能给他留个星)。它几乎为你做了一切。更好的是,它在arduino库管理器中可用。所以下载它特别容易。

Screenshot of the arduino library manager with the MPU-6050_tockn library selected

继续下载这个库(我用的是1.5.2)。 现在加载这个代码。

#include <MPU6050_tockn.h>
#include <Wire.h>

MPU6050 mpu6050(Wire);

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
}

void loop() {
  mpu6050.update();
  Serial.print("angleX : ");
  Serial.print(mpu6050.getAngleX());
  Serial.print("\tangleY : ");
  Serial.print(mpu6050.getAngleY());
  Serial.print("\tangleZ : ");
  Serial.println(mpu6050.getAngleZ());
}

经过几秒钟的加载,你应该得到这个。

Serial monitor with X Y Z data

串行显示器的X Y Z数据

成功了!请记住,你可能仍然会遇到漂移问题,特别是在Z参数上。 另外,一旦你的偏移量被计算出来,请使用 mpu6050.setGyroOffsets(x, y, z); ,而不是每次都计算它们。这将使启动速度更快,并减少你无意中移动偏移量而搞乱计算的机会。

The postMPU-6050轻松获取x y z值教程出现在Martin Lees上。