2015-03-31 79 views
0

我一直試圖用Arduino Nano v3.0來使用MPU-6050(特別是GY-521),但當我嘗試使用MPU-6050 VCC和GND連接到Arduino上的數字引腳。用Arduino數字引腳爲MPU-6050供電

當我將VCC和GND連接到Arduino上的5V或3V3和GND時,我能夠從陀螺儀/加速計讀取讀數。當我將它們連接到數字引腳時,我可以讀取數據,但它們全部爲零,即使傳感器發生抖動,數值仍保持爲零。我在設置中使用的數字引腳的代碼如下:

pinMode(powerpin, OUTPUT); 
pinMode(groundpin, OUTPUT); 
digitalWrite(powerpin, HIGH); 
digitalWrite(groundpin, LOW); 

當我開機加速計,ADXL377,具有相同的引腳,我得到的讀數沒有問題。這是否可以通過數字引腳傳輸的電流量有問題?似乎Nano上的數字引腳可以吐出最大40mA電流,而MPU-6050只需要3mA電流,所以我認爲電流不是問題。任何幫助都會很棒。

+0

您可以並且應該將MPU GND連接到Arduino GND。你不需要用數字引腳來做,你呢?我認爲我的想法是用數字引腳「電源引腳」將其打開/關閉,這沒關係,但GND引腳可能無法正常工作。 – eventHandler 2015-03-31 20:45:12

+1

另外,如果您錯誤地設置了'groundpin = HIGH'和'powerpin = LOW',則您將向MPU提供'-5V',這可能有風險。 – eventHandler 2015-03-31 20:46:53

回答

0

我有同樣的問題,這是爲什麼它是一個問題。首先將LOW連接到GND是一個不錯的主意。 另一件事:當您設置引腳爲高電平通過:

pinMode(powerpin, OUTPUT); 
digitalWrite(powerpin, HIGH); 

它會在一段時間後變高,所以你應該把之間的一些延遲:

pinMode(powerpin, OUTPUT); 
digitalWrite(powerpin, HIGH); 

delay(10); 

Wire.begin(); 
Wire.beginTransmission(0x68); 
Wire.write(0x6B); // PWR_MGMT_1 register 
Wire.write(0);  // set to zero (wakes up the MPU-6050) 
Wire.endTransmission(true); 

所以,你需要得到權力和然後喚醒設備。 AB型。 10ms是一個很好的價值。

之後,你可以閱讀正常(如果你不經常閱讀,最好的辦法是睡覺設備)。

+0

謝謝!這固定了一切!從來不知道它需要Arduino啓動。 – yoshi 2015-04-05 14:30:43