步驟1:構建
對于構建,我使用Arduino Pro-Micro克隆,因為它緊湊。我希望有一個小的單元可以合并到其他項目中。
接線簡單:
MPU9150 VCC-Arduino VCC
MPU9150 GND-Arduino GND
MPU9150 I2C SCL-Arduino I2C SCL(Pro Micro是2號引腳)
MPU9150 I2C SCL-Arduino I2C SDA(Pro Micro是3號引腳)
MPU9150 AD0-Arduino GND
MPU9150 INT-Arduino引腳7(Pro Micro的中斷4)
步驟2:代碼
要使用IMU,請安裝兩個附加的庫(復制到Arduino庫文件夾)。運行MPU6050_DMP6.ino文件,并將代碼上傳到您的Arduino。要查看該演示,請運行處理茶壺示例(位于庫 MPU6050 Examples MPU6050_DMP6 Processing MPUTeapot中)。
我照顧的另一個問題是正常運行期間的斷電:斷開MPU-9150的電源,然后重新連接。代碼將重新初始化設備并繼續輸出數據。
步驟3:其他資源
我附加了MPU-9250寄存器映射文件。了解代碼的作用很有用。
這些庫來自Jeff Rowberg github:https://github.com/jrowberg/i2cdevlib
他還是一個支持論壇:http://www.i2cdevlib.com/forums
我希望將來將此內容擴展。
第4步:問題
此模塊遇到了一些問題。
許多論壇提到的一個問題是數據凍結。出于某些未知原因,該模塊會在一段時間后停止輸出數據。我認為我通過查看代碼并解決了進入要處理FIFO的部分的一些條件來解決此問題。比較中斷寄存器時也有一個錯誤-代碼中的數據就緒指示錯誤。
另一個問題是FIFO滿錯誤,有很多經驗。我想我也通過不僅在收到中斷時也要在FIFO不為空時處理FIFO來解決此問題。
我使用了5V器件Arduino Pro Micro作為MPU-9150是3.3V器件。但這實際上不是問題。首先,MPU-9150具有將5V轉換為3.3V的LDO(穩壓器)。其次,I2C通信上拉在MPU-9150上。當Arduino想要通信時,它將線拉低(接地)。數據傳輸完成后,Arduino放開了線路,MPU-9150將其再次拉高,因此5V永遠不會進入設備。
另一個神秘的問題是,在一段時間后設備收到了FIFO滿消息。正在運行。但是,當我斷開所有電源并再次重新連接時,問題仍然存在。它僅在我按下Arduino上的復位鍵后才停止(這里要提到的一件事是,只有在復位后Arduino Pro Micro才會在正常加電時才加載引導加載程序。8秒鐘后它將加載您的草圖)。我不知道啟動引導程序后為什么解決了這個問題。
我還做了另一處更改,并將一個串行轉USB轉換器連接到Arduino Pro Micro的RX/TX引腳上(USB Pro Micro的端口是虛擬設備,而不是真實的串行端口)。通過使用Serial1.begin而不是Serlal.begin來完成。經過最后的更改后,我看到了改進,甚至一個小時后數據也沒有凍結。
我尚未解決的唯一問題是,一段時間后,設備開始像旋轉一樣開始輸出瘋狂。我不確定是因為我將設備保持太長時間的靜態狀態還是由于其他故障導致的。
責任編輯:wv
-
Arduino
+關注
關注
188文章
6471瀏覽量
187243 -
MPU-9150
+關注
關注
1文章
3瀏覽量
9990
發布評論請先 登錄
相關推薦
評論