Forum: Mikrocontroller und Digitale Elektronik MPU6050 Z-Achse Keine Werte


von Andreas S. (newpiccer)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Problem mit dem MPU6050:
Ich bekomme perfekte Werte für die X- und die Y-Achse, wenn ich den 
Sensor in die eine oder andere Richtung kippe. Wenn ich aber den Sensor 
auf der Tischebene drehe, also um die Z-Achse, verändert sich der Wert 
dafür nicht.
Auch finde ich erstaunlich, das der Offsetwert der Z-Achse 4 ist, ich 
aber, wenn ich von dem Messwert den Ofsetwert abziehe, immer noch 60 im 
LCD habe.
Ist das normal? Kann ich mit dem Sensor garnicht die horizontale Drehung 
messen? Aber wofür ist dann die Z-Achse?
Das Programm hängt an.

Vielen Dank für eure Antworten

Andreas

von Gerd (Gast)


Lesenswert?

Du liest auch das Accelerometer, also den Beschleunigungssensor, aus.
Was du möchtest ist das Gyroskop, also die Änderung des Drehwinkels
um die jeweilige Drehachse.
Der Offset ist die Erdbeschleunigung, die auf den Sensor Wirkt
(Erdanziehungskraft).
Kippe den Sensor mal, dann ändert sich auch dein Z-Wert.

von Basti B. (basti195) Benutzerseite


Lesenswert?

Demnach sind auch deine Aktuellen Werte falsch.
Die Werte des Gyros müssten in unbewegtem zustand alle ~0 betragen.

von Andreas (Gast)


Lesenswert?

Hallo Gerd,

ja das mit dem Accelerometer hat mich auch irritiert. Ich bekomme damit 
aber proportional zur Neigung des Sensors Werte zwischen 0 und 64 bzw. 
-64 heraus, bei drehen um +-90°. Also genau das, was ich brauche. 
Benutze ich das Gyroskop bekomme ich Werte die wahrscheinlich 
proportional zur Beschleunigung sind. Ich habe mir das DB nochmal 
angesehen, ob ich in den Defines eine falsche Adresse angegeben habe, 
aber die ACCEL_OUTs beginnen mit 0x3B.
Und wenn ich den Sensor kippe verändern sich erwartungsgemäß die Werte 
für die X- bzw. Y-Achse, da ich ja um diese drehe. Ich würde erwarten, 
dass wenn ich den Sensor auf der Tischplatte drehe, dass sich dann der 
Wert für die Z-Achse ändert. Ist das denn nicht richtig?

Bis dahin
Andreas

von Joe (Gast)


Lesenswert?

Wenn du den Sensor gegenüber der z-Achse neigst, dann verändern sich die 
Acc-Werte.

Während des Neigens zeigt der Gyro die Neigungsgeschwindigkeit um die x- 
oder y-Achse an.

von Joe (Gast)


Lesenswert?

Wenn du den Sensor um die z-Achse drehst, dann zeigt nur der z-Gyro eine 
Rotation an.

von Andreas (Gast)


Lesenswert?

Hallo Sebastian,

die aktuellen Werte sind voll korrekt. Der Offset für die x- und y-Achse 
liegt bei +-1 bis 2. Der Offset für die Z-Achse beträgt 4. Ich habe die 
Offsets nur von den Messwerten abgezogen, um bei horizontaler Lage den 
Wert 0 zu erhalten, was bei x und y auch so ist. Aber wenn ich von z den 
Offset von 4 abziehe bleiben immer noch 60 übrig, die mir angezeigt 
werden.
Die Werte sind auch gut reproduzierbar: Egal wie ich den Sensor bewege, 
sobald er wieder auf dem Tisch steht, werden wieder zwei Nullen und für 
z 60 angezeigt. Also kein Drift oder so etwas.
Das mit der Z-Achse bleibt mir weiter ein Rätsel.

Bis denne
Andreas

von Karl H. (kbuchegg)


Lesenswert?

Andreas schrieb:
> Hallo Gerd,
>
> ja das mit dem Accelerometer hat mich auch irritiert. Ich bekomme damit
> aber proportional zur Neigung des Sensors Werte zwischen 0 und 64 bzw.
> -64 heraus, bei drehen um +-90°. Also genau das, was ich brauche.
> Benutze ich das Gyroskop bekomme ich Werte die wahrscheinlich
> proportional zur Beschleunigung sind. Ich habe mir das DB nochmal
> angesehen, ob ich in den Defines eine falsche Adresse angegeben habe,
> aber die ACCEL_OUTs beginnen mit 0x3B.
> Und wenn ich den Sensor kippe verändern sich erwartungsgemäß die Werte
> für die X- bzw. Y-Achse, da ich ja um diese drehe. Ich würde erwarten,
> dass wenn ich den Sensor auf der Tischplatte drehe, dass sich dann der
> Wert für die Z-Achse ändert. Ist das denn nicht richtig?

Stell dir ein Lot vor. Also ein Gewicht an einer Schnur, die an einem 
Brett festgeschraubt ist.
Am oberen Aufhängepunkt der Schnur, also am Brett befestigst du einen 
Winkelmesser.
Am Winkelmesser kannst du ablesen, in welchem Winkel das Brett steht, 
wenn du das Brett neigst, indem du abliest, durch welchen Strich am 
Winkelmesser die Schnur durchgeht.

Dein Accelerometer ist dem nicht ganz unähnlich. Nur dass es dir nicht 
den WInkel direkt liefert, sondern dir sagt um wieviel die Schnur 
jeweils in X bzw. Y Richtung ausgelenkt wurde. Ob das jetzt deswegen 
ist, weil das Brett geneigt ist oder ob das deswegen ist, weil du das 
Brett mit dem Senkblei im Auto montiert hast und losgefahren ist, kann 
das Senkblei und auch das Accelermoter nicht festellen.
Aber eines ist sicher, wenn du das Brett einfach drehst (um die 
Z-Achse), ohne es dabei zu kippen, ändert das genau gar nichts an der 
AUslenkung des Senkbleis. Das hängt weiter einfach nur senkrecht nach 
unten wie ein nasser Sack.

Und ja. Der Zahlenwert in der Z-Achse (bei waagrechter Lage uns 
sonstigem Stillstand) ist die Erdbeschleunigung.

von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz schrieb:

> Und ja. Der Zahlenwert in der Z-Achse (bei waagrechter Lage uns
> sonstigem Stillstand) ist die Erdbeschleunigung.


Dein Accelerometer liefert dir also keines wegs die Rotation, 
bestenfalls noch indirekt, sondern wo aus seiner Sicht 'unten' ist. 
Wobei sich unten als die Überlagerung deiner gewollten Beschleunigung 
und der Gravitation ergibt. Auf einem Round-Up würde dir ein derartiger 
Beschleunigungssensor also immer anzeigen, in welcher Richtung das 
Gitter ist, auf dem du magisch klebst (zumindest fast).

http://de.wikipedia.org/wiki/Round-up

von Andreas (Gast)


Lesenswert?

Hallo Joe,
du hast Recht, aber das finde ich schade! Weil wozu brauche ich dann bei 
ACCEL eine Z-Achse, wenn ich die Beschleunigungen selbst integrieren 
muss. Ich hatte gehofft mit dem MPU einfacher die Drehung um die Z-Achse 
messen zu können, so wie ich ja auch die x- und y-Achse genau angezeigt 
bekomme.

Bis denne

Andreas

von Joe (Gast)


Lesenswert?

Welchen Wert möchtest du denn genau wissen?

von Andreas (Gast)


Lesenswert?

Hallo Karl Heinz,

vielen Dank für deine Erklärung. Ich hatte wohl zu viel von dem Sensor 
erwartet.

Bis dahin

Andreas

von Joe (Gast)


Lesenswert?

Willst du den Neigungswinkel (ACC) in ° wissen oder die 
Neigungsgeschwindigkeit (Gyro) in °/s

von Andreas (Gast)


Lesenswert?

Hallo Joe,

ich möchte gerne eine Relation zwischen Drehwert des Sensors und dem 
tatsächlichen Drehwinkel. So wie ich ihn ja bei x und y bekomme. Ich 
hatte gehofft, bei einem Fahrroboter auf die Radencoder verzichten zu 
können.

Bis dahin

Andreas

von Karl H. (kbuchegg)


Lesenswert?

Andreas schrieb:
> Hallo Karl Heinz,
>
> vielen Dank für deine Erklärung. Ich hatte wohl zu viel von dem Sensor
> erwartet.
>

Wie eigentlich die meisten, die da blauäugig reingehen.

Ein Beschleunigungsmesser, genauer: derartige Beschleunigungsmesser sind 
eigentlich Kraftmesser. Eine kleine Probenmasse ist durch Federn in den 
3 Raumachsen aufgehängt, und es wird gemessen, welche Kraft in jeder der 
3 Raumrichtungen aufgebracht werden muss, damit die Probenmasse in der 
Mitte im Kreuzungspunkt bleibt.
(andere Betrachtungsweise)

Und ja. Rein Konzeptionell kann dein Beschleunigungsmesser eine von dir 
hervorgerufene Beschleunigung nicht von der Erdbeschleunigung 
unterscheiden. Dein Beschleunigungsmesser würde dir nur dann in allen 3 
Raumachsen eine glatte 0 anzeigen, wenn er fern jeder Masse irgendwo im 
freien Raum schwebt, auf der ISS die Erde umkreist oder sich im freien 
Fall befindet.


Beschleunigungsmesser: misst in welche Richtung die Nettokraft angreift.
Gyroskop: misst die Verdrehung zu einer Bezugsachse, da ein Kreisel 
(=Gyro) seine Achse im Raum beibehält. Hat der erst mal eine fixe 
Bezugsachse, dann kann er messen wie weit er sich in Bezug auf diese 
Bezugsachse verdreht hat.

Ein Gyro ist unabhängig von Beschleunigungen, dafür driftet er.
Ein Beschleunigungssensor driftet nicht (zumindest sollte er es nicht), 
dafür kann er die Gravitation nicht ausblenden. Bzw. umgekehrt kann ein 
Beschleunigungssensor nicht sagen, wo unten ist, wenn gleichzeitig auch 
noch Beschleunigungen durch die Bewegung vorliegen.
Erst die Kombination aus beidem, zusammen mit heftiger Filterung, 
ermöglicht es, die tatsächliche Lage im Raum zu ermitteln.

von Andreas (Gast)


Lesenswert?

Hallo Karl Heinz,

vielen Dank nochmal. Muss ich also doch die Encoder bemühen, geht ja 
auch, das andere hätte ich eleganter gefunden. Und immerhin kann ich ja 
jetzt die Neigung meines Robos messen.

Bis dahin

Andreas

von Joe (Gast)


Lesenswert?

Du willst also eine horizontale Drehung gegenüber einer vorherigen 
Richtung messen, so wie ich dich jetzt verstanden habe.

Also eine Drehung um die z-Achse. Das ist ok und lässt sich auch machen.

Dazu benötigst du den z-Gyro. Seine Werte müssen neben der Eichung dann 
integriert werden.

Mit dem uC liest man dafür in der Regel in sehr kurzen Abständen den 
z-Gyro aus. Diese Werte müssen nach Abzug eines Offsetwertes dann 
addiert werden.

Das wars.

Die Eichung in der Praxis:
Lies den Gyro alle 10ms aus. Subtrahiere jeweils den Offsetwert und 
addiere alles auf. Wenn keine Bewegung erfolgt, muss diese Summe null 
bleiben!!
Drehe den Gyro (z.B. in einer Sekunde) um 90°.
Dein Eichfaktor ist nun die 90/Summe.

Aus deiner späteren Summe erhältst du damit immer den aktuellen 
Drehwinkel.

Eine tiefe eingestellte Grenzfrequenz des internen Tiefpasses (5Hz oder 
10Hz) ist dabei sinnvoll.

Joe

von Andreas (Gast)


Lesenswert?

Hallo Joe,

vielen Dank für deine Erklärung. Werde ich mal ausprobieren. Ich würde 
mich freuen, wenn Du mir noch mitteilst welche Register für die 
Einstellung der Grenzfrequenz zuständig sind.

Bis dahin

Andreas

von Joe (Gast)


Lesenswert?

Register 26 (dezimal)   'Register 26 DLPF_CFG (digital lowpass filter) 
Configuration
Setzen auf: &B00000101  'Bits 0..2 = 011 (3) - ACC:44Hz, 4.9ms; 
Gyro:42Hz, 4.8ms

Tabelle mit Grenzfrequenzen ACC und Gyro
   'wert Hz  Hz
   '0    260 256
   '1    184 188
   '2     94  98
   '3     44  42
   '4     21  20
   '5     10  10
   '6      5   5
   '7     RESERVED

von Joe (Gast)


Lesenswert?

&B00000101  'Bits 0..2 = 011

Links habe ich auf 5 gesetzt, rechts habe ich noch den Wert 3 angegeben.

von Joe (Gast)


Angehängte Dateien:

Lesenswert?

Siehe Seite 13

von Andreas (Gast)


Lesenswert?

Hallo Joe,

vielen herzlichen Dank. DB habe ich schon, aber ich habe es nicht 
gefunden. Muss man ja auch wissen, dass das unter CONFIG ist. Oder nicht 
so blind wie ich.

Bis dahin

Andreas

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.