Forum: Mikrocontroller und Digitale Elektronik Gyrochip MPU6050 startet nicht korrekt


von Frank E. (Firma: Q3) (qualidat)


Angehängte Dateien:

Lesenswert?

In einem Projekt verwende ich einen Gyrochip vom Typ MPU6050 zusammen 
mit einem Wemos D1 Mini (ESP8266) unter der Arduino-IDE. Bei gefühlt 
jedem 3. Turn-Around kommt der MPU6050 nicht "in die Hufe", d.h. ich 
erhalte aus der Begin-Methode einen Rückgabewert von 4. Auch das 
mehrfache Wiederholen der Begin-Methode in einem While-Loop bringt nix, 
es hilft nur das stromlos Machen für mehrere Sekunden, oftmals auch das 
nicht beim ersten Mal.

Wenn es dannn einmal läuft, läuft es stunden- oder tagelang, es muss 
also ein spzielles Start- bzw. Init-Problem sein.

Ich verwende die folgende Lib:

https://github.com/rfetick/MPU6050_light

Pullup-Widerstände von 4k habe ich auch schon ausprobiert, ohne 
Änderung.

Hat jemand eine Idee, wie das Problem zu lösen wäre? Danke für Tips.

von Harald (Gast)


Lesenswert?

Meine Methode wäre Oszilloskop und Logic Analyzer. Mit dem Oszi schauen, 
wie es um die Signalqualität bestellt ist. Mit dem LA schauen, ob alles 
konform zum Datenblatt abläuft.

von N. M. (mani)


Lesenswert?

Der Rückgabewert von MPU6050::begin wird ja durch den ersten writeData 
Zugriff bestimmt.
Der wiederum von wire->endTransmission.
Sprich du müsstest dir Mal anschauen was der genaue Returnwert ist und 
dann Mal hier schauen:

https://www.arduino.cc/en/Reference/WireEndTransmission

Hast du einen Logic Analyzer?
Wie sieht der Aufbau aus?
Was für Pullups hast du genau ausprobiert?
Wie lange ist das I2C Kabel?
Wie sieht die Versorgungsspannung aus?

Edit:
Überlesen dass du
>Rückgabewert von 4

geschrieben hattest --> Other Error.
Entweder schauen was das bedeutet, oder wie oben beschrieben Mal die 
Signale/Daten anschauen.

: Bearbeitet durch User
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Details später, soviel vorab: Es ist ein Aufbau auf dem Steckbrett, 
dutzende Male auf- und abgebaut, Kabellängen um die 4cm. Pullups: 
4k-Winderstände nach Plus 5V und 3,3V (macht keinen Unterschied). 
Signale am Oszi sehen "sauber" aus, also quasi ideale Rechteckform ...

von N. M. (mani)


Lesenswert?

Frank E. schrieb:
> Aufbau auf dem Steckbrett
Schließ den Sensor Mal direkt an. Spannung UND Daten. Nur um das 
Steckbrett auszuschließen.

Frank E. schrieb:
> 4k-Winderstände nach Plus 5V und 3,3V (macht keinen Unterschied).

5V war dann halt gegen die Spezifikation des Sensors.
Wenn du nur die Datenleitungen nach 5V gepullt hast verstößt du gegen:
1
Voltage Level (CLKIN, AUX_DA, AD0, FSYNC, INT, 
2
SCL, SDA) -0.5V to VDD + 0.5V
Wenn du VDD UND die Datenleitungen auf 5V gelegt hast, dann gegen die 
Versorgungsspannungsvorgaben:
1
VDD POWER SUPPLY
2
Operating Voltages 2.375 3.46 V

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

ich habe einen Lochrasteraufbau mit diesem Sensor, allerdings an ATmega 
in C und ich hatte selten einen I2C-Bus-Teilnehmer, der so gut läuft, 
wie dieser. Die weitere Ausbaustufe sendet die Daten über einen RFM69 zu 
einer anderen Schaltung mit Empfänger und Display. Die Schaltung läuft 
mit 5V und 3,3V.

mfG

von Bauform B. (bauformb)


Lesenswert?

N. M. schrieb:
> Wie sieht die Versorgungsspannung aus?

Im Datenblatt gibt es ein eigenes Kapitel "Recommended Power-on 
Procedure". Danach muss die Spannung in weniger als 3ms auf 90% 
ansteigen, und noch dazu "VDD and VLOGIC must be monotonic ramps". Der 
Chip scheint etwas sensibel zu sein.

Dann braucht die interne PLL 10ms und der DMP ist sicherlich auch nicht 
gleich voll da. Diese Wartezeit wird im anderen Zusammenhang erwähnt 
(Setting this bit should be performed immediately after waiting for the 
time specified by the “Start-Up Time for Register Read/Write” in Section 
6.3.), aber ich finde die Spec nicht.

TLDR: evt. muss man nach dem Einschalten einfach eine halbe Sekunde 
warten.

Beitrag #6737653 wurde vom Autor gelöscht.
von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Bauform B. schrieb:

> TLDR: evt. muss man nach dem Einschalten einfach eine halbe Sekunde
> warten.

Nach dem Einschalten warten ... klingt plausibel. Bisher warte ich nur 
nach begin() einige Zeit. Probiere ich ...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

So, das Problem ist gelöst.

Ursache war wohl tatsächlich die ungenügende Steilheit der 
Betriebspannung beim Einschalten. Ein Redesign der Schaltung hat doch 
noch einen Pin am ESP8266 freigespielt (für die SoftSerial zum GPS-Chip 
wird nur RX benötigt, TX ist somit frei).

Das MPU6050-Breakout wird nun direkt aus einem Pin des ESP8266 mit 
Betriebsspannung versorgt. Es gibt nun einen Loop, der abhängig vom 
begin()-Rückgabewert ist und auch Vcc nochmal aus- und wieder 
einschaltet.

Bei zahllosen Turn-Arrounds während der restlichen Programmierung 
gestern und heute wurde der Loop nur in seltenen Fällen zweimal 
durchlaufen, jedenfalls kam es bei der MPU6050 zu keinem dauerhaften 
Hänger mehr ...

Zusätzliche Pullups sind übrigens nicht notwendig, eine genaue 
Betrachtung der Breakout-Platine ergab, dass da bereits 5k gegen Vcc 
drauf sind.

: Bearbeitet durch User
von Christian S. (roehrenvorheizer)


Lesenswert?

Frank E. schrieb:
> Wenn es dannn einmal läuft, läuft es stunden- oder tagelang, es muss
> also ein spzielles Start- bzw. Init-Problem sein.

Frank E. schrieb:
> Ursache war wohl tatsächlich die ungenügende Steilheit der
> Betriebspannung beim Einschalten

Frank E. schrieb:
> Details später, soviel vorab: Es ist ein Aufbau auf dem Steckbrett,
> dutzende Male auf- und abgebaut, Kabellängen um die 4cm.

Der Steckbrettaufbau als Universalverdächtiger war also nicht schuld, 
sondern die heimtückische zu langesame Aufwärtsrampe der zugeführten 
Betriebsspannung, welche durch sorgfältige Analyse als Ursache erkannt 
werden konnte.


mfg

von Markus (Gast)


Lesenswert?

Ich hatte ein ähnliches Problem mit dem Teil.
Der IC verträgt einfach normalen/langsamen Anlauf der Versorgung einfach 
nicht... Es muss wirklich schnell sein...

Apropo, ich nehme an, dass es um ein Hobby-Projekt da geht.
Wenn nicht und es um professionale Design geht, nun aufpassen.
MPU-6050 wurde abgekündigt schon.

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.