Forum: Mikrocontroller und Digitale Elektronik Mpu 6050 - Längsbeschleunigung liefert Drehwinkel


von Markus K. (markus-muenchen)


Lesenswert?

Habe einen MPU 6050 der nur einen Winkel misst. Incl. Kalman Filter usw.

In Ruhe funktioniert das prächtig. Beim Testen auf dem Fahrrad 
(Längsneigung soll gemessen werden) stelle ich fest dass der Winkel auch 
dann Auslenkung anzeigt wenn der Sensor nur linear beschleunigt wird, 
also Fahrrad vor und zurück schieben. Sobald die Beschleunigung / 
Bewegung in Längsrichtung weg ist, geht auch der Winkelausschlag zurück 
bzw. passt wieder zur aktuellen Lage im Raum.

Ich vermute mal das hängt damit zusammen dass der Einbau nicht ganz 
horizontal bzw. in Längsachse ist und korrigiert werden muss - 
rechnerisch ...

Beitrag #7002773 wurde von einem Moderator gelöscht.
von Wolfgang (Gast)


Lesenswert?

Markus K. schrieb:
> Habe einen MPU 6050 der nur einen Winkel misst. Incl. Kalman Filter usw.

Wie soll er das machen?
In dem MPU6050 ist kein Winkelsensor vorhanden. Alles was er tun kann, 
ist Beschleunigungen zu messen. Der Sensor kann nicht unterscheiden, ob 
es sich um die Erdbeschleunigung oder eine Beschleunigung des Fahrrades 
handelt.
Für die Berechnung des Winkels werden der Beschleunigungsvektor in 
Längsrichtung und der lotrecht dazu stehende verrechnet.
Natürlich führt eine Beschleunigung des Fahrrades zu einer 
Längskomponente, die dann für den Sensor genauso wie ein bergauf 
fahrendes Rad aussieht, nur der Betrag des Vektors ist größer als der 
des reinen Schwerevektors. Aber das interessiert die Winkelberechnung 
nicht.

Beitrag #7002799 wurde von einem Moderator gelöscht.
von Markus K. (markus-muenchen)


Lesenswert?

Pepe T. schrieb im Beitrag #7002773:
> Was macht denn der genau?

Filtern

von Markus K. (markus-muenchen)


Lesenswert?

Wolfgang schrieb:
> In dem MPU6050 ist kein Winkelsensor vorhanden

klar doch. Drehbeschleunigung halt. Integrieren du musst !!

von A. Z. (donvido)


Lesenswert?

Markus K. schrieb:
> Drehbeschleunigung

Nope. Ein (MEMS-)Gyroskop misst die Winkelgeschwindigkeit,
und zwar über die Zentrifugalbeschleunigung .

von Wolfgang (Gast)


Lesenswert?

Pepe T. schrieb im Beitrag #7002799:
> Doch, da sind 3 gyros drin.

Das sind auch Beschleunigungssensoren, nur anders angeordnet.

von Jan K. (jan_k)


Lesenswert?

Uiuii viel gefährliches Halbwissen hier. Gyros sind keine 
Beschleunigungssensoren!
Was dein Problem angeht, so ist das leider leicht erklärbar. Gyros 
rauschen und geben die Winkelgeschwindigkeit an. Um auf den Winkel zu 
kommen musst du integrieren.  Dafür braucht man aber einen Startwert. 
Den liefert die Schwerkraft und damit die Beschleunigungssensor. Weil 
eine rauschende Quelle, die integriert wird auch noch driftet, wird der 
Winkel von der Schwerkraft dauerhaft mit reingemixt. Das macht das 
Kalman Filter. Und wenn du dich bewegst wirkt mehr Beschleunigung als 
nur die Schwerkraft, daher der Winkelfehler.

Ist nicht dauerhaft lösbar. Für kurze Zeiträume kannst du den gyro höher 
Gewichten, aber auf beliebig lange Zeit geht es physikalisch nicht ohne 
Zusatz Information wie Radgeschwindigkeit oder GPS

Beitrag #7003228 wurde von einem Moderator gelöscht.
von Wolfgang (Gast)


Lesenswert?

Jan K. schrieb:
> Uiuii viel gefährliches Halbwissen hier. Gyros sind keine
> Beschleunigungssensoren!

Dann mal Butter bei die Fische. Es wäre gut, wenn du dein Vollwissen 
teilen könntest: Auf welchem physikalischen Grundprinzip funktionieren 
den deiner Ansicht nach die Drehratensensoren eines MPU6050 (Quelle)?

Ein MEMS Gyro misst meist die Kraft, die durch Scheinkräfte im 
mitbewegten Koordinatensystem auftreten (Zentripetalkraft). Das kann 
z.B. über die Kopplung von MEMS-Schwingern oder über die 
Kapazitätsbrücke eines federnd aufgehängten Massenelements passieren.
IMHO sitzt in einem MPU6050 jedenfalls kein Laser-Kreise, der 
zugegebenermaßen andere Effekte nutzt.

Beitrag #7003286 wurde von einem Moderator gelöscht.
von Jan K. (jan_k)


Lesenswert?

Pepe T. schrieb im Beitrag #7003228:
> Jan K. schrieb:
>> Und wenn du dich bewegst wirkt mehr Beschleunigung als
>> nur die Schwerkraft, daher der Winkelfehler.
>
> Nur wenn das sehr schlecht eingestellt ist. D.h. acc filter viel zu
> kurz.
> Oder wenn jemand vergessen hat den gefilterten acc vektor zu rotieren.

Der Fehler kann grundsätzlich unbeschränkt wachsen. Egal wie du das 
Filter einstellst. Es ist physikalisch nicht möglich, zwischen 
Zusatzbeschleunigung und Gravitation zu unterscheiden. Es mag sein, dass 
bestimmte Filter Einstellungen für bestimmte Applikationen in einem 
bestimmten Winkelbereich akzeptabel funktionieren, aber es ist 
unmöglich, über einen beliebig langen Zeitraum ohne Zusatzinformationen 
eine akkurate Orientierung aus 6-dof Sensoren zu berechnen. Insbesondere 
nicht die Längsneigung aka Straßen Steigung.
Dass der Sensor vermutlich nicht kalibriert ist, macht die Sache nicht 
besser ;)

Wolfgang schrieb:
> Dann mal Butter bei die Fische. Es wäre gut, wenn du dein Vollwissen
> teilen könntest: Auf welchem physikalischen Grundprinzip funktionieren
> den deiner Ansicht nach die Drehratensensoren eines MPU6050 (Quelle)?
>

Das konkrete Prinzip ist natürlich IP vom Hersteller.

> Ein MEMS Gyro misst meist die Kraft, die durch Scheinkräfte im
> mitbewegten Koordinatensystem auftreten (Zentripetalkraft). Das kann
> z.B. über die Kopplung von MEMS-Schwingern oder über die
> Kapazitätsbrücke eines federnd aufgehängten Massenelements passieren.
> IMHO sitzt in einem MPU6050 jedenfalls kein Laser-Kreise, der
> zugegebenermaßen andere Effekte nutzt.

Mit den Scheinkräften hast du Recht. Nur wird meistens nicht 
Zentripetal-, sondern Corioliskraft als Messprinzip verwendet. Ja, es 
ist MEMS und es sind auch Masseelemente, aber das Konzept ist dennoch 
komplizierter, da die Kämme aktiv angeregt werden, siehe z.B. 
https://en.wikipedia.org/wiki/Vibrating_structure_gyroscope

Von mir aus stimme ich dir aber zu, grundsätzlich sind es gefederte 
Masseelemente, die meistens kapazitiv ausgelesen werden und eine Kraft 
messen.

Ich wollte mit meiner Aussage primär sagen, dass die Ausgangsmessgrößen 
der genannten Sensoren fundamental unterschiedlich sind. Gyro messen 
differenzielle Größen aka Geschwindigkeiten, Beschleunigungssensoren 
eben nicht. Das hat Konsequenzen in der Filterung.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Pepe T. schrieb im Beitrag #7003286:
> woher hast du das denn?

Keine Referenz, aber anschaulich erklärt:
https://youtu.be/ti4HEgd4Fgo?t=145

Beitrag #7003329 wurde von einem Moderator gelöscht.
von Wolfgang (Gast)


Lesenswert?

Pepe T. schrieb im Beitrag #7003329:
> Praktisch ist das durchaus möglich. Eine beschleunigung eines autos von
> 0 auf 100 ist ein zeitlich begrenztes event. Ebenso eine bodenwelle.
> Oder eine rakete. Ein entsprechend langes filter kann das glätten.

Das setzt aber voraus, dass das Filter passend zu den 
Systemeigenschaften parametriert ist. Das Zeitfenster für das Glätten 
muss dann so groß sein, dass Beschleunigungs- und Bremsphase beide drin 
liegt - sonst bleibt ein Bias.
Die superschlaue Antwort von Markus auf deine Frage hilft da natürlich 
wenig weiter.

Markus K. schrieb:
> ...
> Filtern

von Jan K. (jan_k)


Lesenswert?

Hast du das praktisch schon mal gemacht? Ich arbeite tagtäglich auf der 
Arbeit mit IMUs und glaub' mir, Komplementärfilter werden aus guten 
Gründen nicht in kommerziellen IMUs benutzt. Und auch Kalmanfilter sind 
nicht in der Lage, zwischen niederfrequenten Zusatzbeschleunigungen und 
Orientierungsänderungen zu unterscheiden.

Jetzt ist natürlich hier auch die Frage nach der Genauigkeit noch nicht 
gestellt worden, ich befinde mich da eher im Bereich < 0.5°. Was möchte 
der OP? Und vor allem: Wie schnell möchte der OP seinen Winkel haben? 
Natürlich kann man alles totfiltern...

Beitrag #7003369 wurde von einem Moderator gelöscht.
von Günni (Gast)


Lesenswert?

Generell lässt sich ein Winkel (eine Steigung oder Neigung) am besten 
mit einem (idealerweise 2-achsigen) Beschleunigungsmesser messen. 
Überlagerte Linearbeschleunigungen lassen sich dabei nicht von der 
Neigungsinformation trennen und müssen deshalb herausgerechnet werden. 
Filter schaffen das höchstens bei kurzzeitigen Beschleunigungen, machen 
dann aber die Neigungsmessung "träge". Eine technisch saubere Lösung 
ist, die Geschwindigkeit über einen anderen Sensor (beim Rad über die 
Raddrehung) zu messen und über die Geschwindigkeitsänderung die 
Beschleunigung zu ermitteln und diese dann zum Herausrechnen des 
Beschleunigungsanteils zu verwenden.

Drehratensensoren (Gyros) messen zwar die Drehrate und (über 
Integration) den zurückgelegten Winkel. Dabei muss aber der 
Anfangswinkel bekannt sein oder eingegeben werden. Allerdings haben 
Drehratensensoren eine Drift und so kann man sich schon nach relativ 
kurzer Zeit auf den Winkel nicht mehr verlassen.

Magnetfeldsensoren können zumindest theoretisch auch die Achse des 
Sensors im Raum messen. Aber das Erdfeld wird oft durch 
Störungseinflüsse (in der Erde verbuddelte Leitungen, Rohre oder - bei 
Brücken - Träger) so gestört, dass diese Information ohne Verwendung 
zusätzlicher Sensorinformationen kaum nutzbar ist.

von Jester (Gast)


Lesenswert?

Jan K. schrieb:
> Pepe T. schrieb:
>> Jan K. schrieb:
>>> Und wenn du dich bewegst wirkt mehr Beschleunigung als
>>> nur die Schwerkraft, daher der Winkelfehler.
>>
>> Nur wenn das sehr schlecht eingestellt ist. D.h. acc filter viel zu
>> kurz.
>> Oder wenn jemand vergessen hat den gefilterten acc vektor zu rotieren.
>
> Der Fehler kann grundsätzlich unbeschränkt wachsen. Egal wie du das
> Filter einstellst. Es ist physikalisch nicht möglich, zwischen
> Zusatzbeschleunigung und Gravitation zu unterscheiden. Es mag sein, dass
> bestimmte Filter Einstellungen für bestimmte Applikationen in einem
> bestimmten Winkelbereich akzeptabel funktionieren, aber es ist
> unmöglich, über einen beliebig langen Zeitraum ohne Zusatzinformationen
> eine akkurate Orientierung aus 6-dof Sensoren zu berechnen. Insbesondere
> nicht die Längsneigung aka Straßen Steigung.


Soweit war zumindest mir das schon immer klar...

Aber - sollte das nicht irgendwie an's Fahrrad dran getüddelt werden? 
Und wozu war das gleich nochmals gedacht? Um zu sehen, wann der Buckel 
zu steil wird und ob man sich schon die Blöse geben kann, auf 
Schieb-Betreib umzustellen?

Beitrag #7005478 wurde von einem Moderator gelöscht.
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.