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