2017-06-15 156 views
0

我正在使用MPU6050與arduino。它讀取的東西,但不是數值!MPU6050似乎沒有給出正確的值,沒有發現i2c設備發生錯誤

1-連接與下面相同。

enter image description here


2-然後我說i2cdev庫從here 和mpu6050庫從here

我把它們複製到C:\ Program Files文件\的Arduino \庫。


3-我試圖DMP6例子和它給隨機字符enter image description here


4-我試圖MPU6050_raw例子。你可以看到它不斷給人相同的字符而不是數值enter image description here

在這裏,我看到這個題目MPU6050 DMP does not work? 並上傳到i2c_scanner設備。它說「沒有發現I2c設備」。爲什麼?

6-我看到另一個話題https://forum.arduino.cc/index.php?topic=404031.0就像我的情況一樣。我也嘗試過那裏的代碼,它看起來很有用,但即使我移動MPU6050,它也會持續提供-1加速度計和陀螺儀值。

+2

閱讀代碼。 (https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/examples/MPU6050_DMP6/MPU6050_DMP6.ino)。它說'Serial.begin(115200);'爲DMP6的例子,所以你也需要你的串行monator在115200波特。 'Serial.begin(38400);'在'MPU6050_raw'中。同時將'AD0'拉到GND以修復其I2C地址。如果仍有疑問,請閱讀https://www.invensense.com/wp-content/uploads/2015/02/MPU-6000-Register-Map1.pdf。 –

+0

是的,你是對的。它現在可以讀取一些值。 –

+0

所以這個問題是通過設置正確的波特率完全解決的? –

回答

0

完整的答案,使這個問題可以被關閉:

  1. 錯誤的波特率串口監視器被選中。以波特率115200波特輸出的草圖MPU6050_DMP6.ino和波特率38400波特的MPU6050_raw.ino,串行監視器被設置爲9600,導致UART接口和產生的垃圾字節失步。
  2. MPU6050上的引腳AD0用於選擇其I2C地址的低位。該引腳應被拉至VCC或拉至GND。在這個例子中,它被懸空/懸空,導致器件沒有穩定的I²C地址。通過將AD0與GND連接來解決這個問題。