【问题标题】:MPU6050 doesn't seem to give values properly and no i2c devices found error thrownMPU6050 似乎没有正确给出值并且没有发现 i2c 设备抛出错误
【发布时间】:2017-06-15 09:46:52
【问题描述】:

我正在使用 MPU6050 和 arduino。它读取的是一些东西,但不是数值!

1- 连接如下。


2- 然后我添加了来自here 的 i2cdev 库 和来自here的mpu6050库

我将它们复制到 C:\Program Files\Arduino\libraries。


3- 我尝试了 DMP6 示例,它给出了随机字符


4- 我尝试了 MPU6050_raw 示例。你可以看到它不断给出相同的字符而不是数值

5- 在这里,我看到了这个话题MPU6050 DMP does not work? 并将 i2c_scanner 上传到设备。它显示“未找到 I2c 设备”。为什么?

6- 我看到了另一个主题https://forum.arduino.cc/index.php?topic=404031.0,和我的情况一样。我也尝试了那里的代码,它似乎可以工作,但即使我移动 MPU6050,它也会不断为加速度计和陀螺仪值提供 -1。

【问题讨论】:

  • 阅读代码。 (github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/…)。对于 DMP6 示例,它显示 Serial.begin(115200);,因此您也需要 115200 波特的串行监视器。和Serial.begin(38400);MPU6050_raw。还将AD0 拉至GND 以修复其I2C 地址。如果仍有疑问,请阅读invensense.com/wp-content/uploads/2015/02/…
  • 是的,你是对的。它现在可以读取一些值。
  • 那么这个问题通过设置正确的波特率完全解决了吗?
  • 设置波特率并将AD0拉到GND解决了。

标签: arduino mpu6050


【解决方案1】:

完整的答案,这样这个问题就可以结束了:

  1. 在串行监视器中选择了错误的波特率。草图MPU6050_DMP6.ino 以 115200 波特的波特率输出,MPU6050_raw.ino 以 38400 波特的波特率输出,但串行监视器设置为 9600,导致 UART 接口不同步并产生垃圾字节。
  2. MPU6050 上的AD0 引脚用于选择其I2C 地址的低位。该引脚应上拉至 VCC 或下拉至 GND。然而,在此示例中,它处于未连接/浮动状态,这导致设备没有稳定的固定 I²C 地址。此问题已通过将 AD0 与 GND 连接得到解决。

【讨论】:

    猜你喜欢
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多