Forum: Mikrocontroller und Digitale Elektronik Problem mit MPU6050


von Trollo (Gast)


Lesenswert?

Hallo,

ich habe neulich einen MPU6050 Sensor erworben und ausprobiert. Jedoch 
gelingt es mir aber gar nicht erst eine I2C-Verbindung herzustellen.
Dazu sei gesagt, dass ich in totaler geistiger Umnachtung auf meinem 
Board die Pins VCC und GND zu Beginn vertauscht habe, so dass ich den 
MPU6050 kurze Zeit verpolt angeschlossen hatte. Da ich es gar nicht erst 
schaffe eine Verbindung mit dem Sensor aufzubauen stellt sich mir jetzt 
die Frage ob ich den Sensor zerstört habe oder ich mir einfach nur Mist 
zusammenprogrammiert habe.
Ich benutze die I2C Bibliothek von Fleury und in der Funktion
1
i2c_start()
 bleibt mein Programm immer an folgender Stelle hängen
1
while (!(TWCR & (1 << TWINT)))
Was ist eure Meinung dazu?

von Trollo (Gast)


Lesenswert?

Dazu muss ich noch anmerken, dass es sich bei dem gegebenen 
Codeausschnitt um die erste Schleife dieser Art handelt, also jende die 
prüft ob das START Signal gesendet wurde.

von Wolfgang (Gast)


Lesenswert?

Trollo schrieb:
> Was ist eure Meinung dazu?

Verpolen mögen solche Bausteine auf gar nicht. Dieser Betriebszustand 
ist auch weit außerhalb jeglicher Datenblattspezifikationen, so dass der 
Chip sich in einem beliebigen, auch halbkaputten Zustand befinden kann. 
Und ob es an deinem Programm liegen kann - who knows.
Hier kennt nichtmal irgend jemand dein Programm.

Du könntest aber mal die Ruhepegel der Busleitungen nachmessen.

von Frank (Gast)


Lesenswert?

Nennt man sich Trollo wenn man eine ernsthafte Antwort möchte?

Ansonsten sei gesagt, Oszi oder LA dran und messen ob die Adresse vom 
Master richtig anliegt und ob wirklich kein ACK zurück kommt.

Standard Frage, sind die Pullups dran?

von Trollo (Gast)


Lesenswert?

Ich benutze dieses kleine Board, worauf der Chip schon verlötet war:
http://www.amazon.de/SODIAL-MPU-6050-Achsen-Gyroskop-Beschleunigungsmesser-Modul-Arduino/dp/B00K67X810/ref=sr_1_2?ie=UTF8&qid=1428352062&sr=8-2&keywords=mpu6050
Laut Datenblatt ist darauf schon ein 5V zu 3,3V LDO verbaut und pullups 
auf 3,3V an SDA und SCL gehängt.
Jetzt habe ich den Ruhepegel auf den beiden Leitungen gemessen und kam 
in beiden Fällen auf 0,5V. Gemessen habe ich mit einem einfachen 
Voltmeter. Ein Oszilloskop habe ich leider nicht zu Hand.
Wenn die 0,5V stimmen spricht es eigentlich dafür, dass ich das 
Sensorboard zerstört habe.

Frank schrieb:
> Nennt man sich Trollo wenn man eine ernsthafte Antwort möchte?

Mit fiel nichts besseres ein, nachdem ich den Sensor verpolt hatte...

von Wolfgang (Gast)


Lesenswert?

Frank schrieb:
> Ansonsten sei gesagt, Oszi oder LA dran und messen ob die Adresse vom
> Master richtig anliegt

Erstmal im Programm gucken, ob überhaupt die richtige Adresse an 
i2c_start() übergeben wird ;-)

Da gibt es viel Verwirrung mit I2C-Adresse (7-Bit) und erstem 
übertragenen Byte bestehend aus der 7Bit-Adresse und dem 
Datenrichtungsbit.

von Trollo (Gast)


Lesenswert?

Die Adresse des MPU6050 ist 0x68, zum schreiben benutze ich dann also 
0xD0 als Adresse. Eine Frage habe ich jedoch noch, was ist ein LA?

von Wolfgang (Gast)


Lesenswert?

Trollo schrieb:
> Wenn die 0,5V stimmen spricht es eigentlich dafür, dass ich das
> Sensorboard zerstört habe.

Das sieht ich gut aus. Wenn du das GY-521 Board von der Busleitung 
trennst, müßte durch die Pull-Ups der Pegel vernünftig hoch gehen.

Trollo schrieb:
> Die Adresse des MPU6050 ist 0x68, zum schreiben benutze ich dann also
> 0xD0 als Adresse.

AD0 hast du dann sicher passend verschaltet?

> Eine Frage habe ich jedoch noch, was ist ein LA?
LA wie Logic Analysator

von Markus (Gast)


Lesenswert?

Trollo schrieb:
> Die Adresse des MPU6050 ist 0x68, zum schreiben benutze ich dann
> also
> 0xD0 als Adresse. Eine Frage habe ich jedoch noch, was ist ein LA?

Dann muss aber der Adresspin am MPU entsprechend gepinnt sein! Ansonsten 
ist es eine andere Adresse (mir schon passiert)

von Trollo (Gast)


Lesenswert?

AD0 muss laut allen Quellen unangetastet bleiben damit der MPU6050 die 
Adresse 0x68 hat. Auch wenn die Busleitungen getrennt sind, sind nur 
0,5V auf den beiden Datenpins. Also ist ziemlich sicher etwas an dem 
Sensorboard kaputt gegangen.

von Markus (Gast)


Lesenswert?

Trollo schrieb:
> AD0 muss laut allen Quellen unangetastet bleiben damit der MPU6050

Laut Datenblatt soll er GND oder VCC sein und nicht "unangetastet"! Aber 
ich vermute sehr stark das der Hersteller keine Ahnung hat und besser 
mal das Netz hätte fragen sollen beim erstellen des Datenblatts!

von Trollo (Gast)


Lesenswert?

Laut Threadersteller wird nicht ein blanker MPU6050 sondern das GY-521 
Board verwendet. Ein kurzer Blick in den Schaltplan dieses Boards zeigt 
uns, dass AD0 auf diesem Board schon auf GND gezogen wird. Aber der 
Hersteller des Boards hat sicher keine Ahnung und hätte dich fragen 
sollen bei dem erstellen des Schaltplans!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.