Forum: Mikrocontroller und Digitale Elektronik Winkelmessung mit Beschleunigungssensor während einer Beschleunigung


von Nikolas S. (dustinthewind)


Lesenswert?

Hallo,

ich würde gerne den Neigungswinkel mit einem Beschleunigungssensor 
(GY-25 Sensor) messen.
Das funktioniert in Ruhelage super aber während eine Beschleunigung 
darauf einwirkt wird der Winkel verfälscht.
Kann mir jemand sagen, ob/wie ich den Winkel bei einer Beschleunigung 
messen kann?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Nikolas S. schrieb:
> Kann mir jemand sagen, ob/wie ich den Winkel bei einer Beschleunigung
> messen kann?
Mit einem Beschleunigungssensor gar nicht.
Auch eine Wasserwaage (die sich ja ebenfalls auf die Erdbeschleunigung 
verlässt) funktioniert bei Bewegung nur ganz schlecht und unzuverlässig.

Jetzt wäre dann auch der geeingete Zeitpunkt, zu sagen, welchen Winkel 
du wie genau messen musst...

: Bearbeitet durch Moderator
von donvido (Gast)


Lesenswert?

Nikolas S. schrieb:
> Kann mir jemand sagen, ob/wie ich den Winkel bei einer Beschleunigung
> messen kann?

Wenn du den Laagewinkel meinst, dann mittels Sensorfusion von Gyroskop 
und Beschleunigungssensor.
Das geht zum Beispiel mit einem Komplementärfilter oder mit einem 
Kalmanfilter.

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


Lesenswert?

Wenn man aus einer zweiten Quelle (z.B. Umdrehung von Rädern) die 
Geschwindigkeit messen kann, kann man aus der Geschwindigkeitsmessung 
die dazu führende Beschleunigung berechnen und diese einrechnen. 
Geschwindigkeiten kann man übrigens auch optisch messen (macht jede 
optische Maus).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Günni schrieb:
> Wenn man aus einer zweiten Quelle (z.B. Umdrehung von Rädern) die
> Geschwindigkeit messen kann, kann man aus der Geschwindigkeitsmessung
> die dazu führende Beschleunigung berechnen und diese einrechnen.
Das wird dann aber bei der ersten Kurve spannend.

> Geschwindigkeiten kann man übrigens auch optisch messen
> (macht jede optische Maus).
Das gibt es aber auch nicht für lau. Oder andersrum: dahinter steckt 
mehr Aufwand als man zuerst denkt. Und es bleibt das grundlegende 
Problem mit den Kurven.

Aber wir wissen ja noch nicht mal, wessen Neigung dort wie schnell und 
genau erfasst werden muss und ob dort Räder und Kurven im Spiel sind...

: Bearbeitet durch Moderator
von Pandur S. (jetztnicht)


Lesenswert?

Zu den Beschleunigungssensoren gehoeren auch noch 
Drehbeschleunigungssensoren, sonst laesst sich nichts rechnen.
Was hier als Kalmanfilter bezeichnet wird, ist eine Matrize, welche 
diese Beschleunigungen miteinander bezieht. Es ist einiges an Mathematik 
dahinter, aber dann selbst erstellbar.

: Bearbeitet durch User
von Günni (Gast)


Lesenswert?

Lothar M. schrieb:
> Das wird dann aber bei der ersten Kurve spannend.

Stimmt, bei der Wegmessung mit Rädern muss man für die 
Geschwindigkeitsberechnung den Mittelwert zwischen beiden Rädern wählen. 
Aus der Differenz und der Spurbreite kann man auch noch den 
zurückgelegten Winkel bzw. den Kurvenradius berechnen und aus diesen 
Werten die Fliehkraft abschätzen. Baut man den Neigungssensor aber so 
ein, dass die Fliehkraft immer in die Z-Achse zeigt, kann man aus der x- 
und der y- Beschleunigung den Neigungswinkel berechen.

Nur wenn man die Einbaulage und die entstehenden Kräfte für die 
unterschiedlichen Situationen darstellt, kann man den Zusammenhang 
zwischen den Einflussgrößen erkennen und den Rechengang für die 
Auswertung festlegen.

Aber das soll hier ja keine Vorlesung für Navigation oder Sensorik 
werden, sondern dem Fragesteller nur die entsprechenden Hinweise geben, 
worauf er achten sollte.

von Udo S. (urschmitt)


Lesenswert?

Günni schrieb:
> Lothar M. schrieb:
>> Das wird dann aber bei der ersten Kurve spannend.
>
> Stimmt, bei der Wegmessung mit Rädern muss man für die
> Geschwindigkeitsberechnung den Mittelwert zwischen beiden Rädern wählen.

Funktioniert prima bei Flugzeugen oder Schiffen.
Und auch bei jeglichen Radfahrzeugen sobald Schlupf auftritt.

Siehe auch:
Lothar M. schrieb:
> Aber wir wissen ja noch nicht mal, wessen Neigung dort wie schnell und
> genau erfasst werden muss und ob dort Räder und Kurven im Spiel sind...


Fakt ist dass man grundsätzlich erst mal nicht zwischen Gravitation und 
Beschleunigung unterscheiden kann. Siehe 
https://de.wikipedia.org/wiki/%C3%84quivalenzprinzip_(Physik)
Wenn der TO Nikolas also einen Neigungswinkel über die Gravitation 
bestimmen will, kann er das nur dann wenn er die Beschleunigung 
möglichst genau herausrechnen kann.
Also braucht er dazu möglichst viele zusätzliche Informationen die er 
geeignet fusionieren muss.
Da wurde ja schon das wesentliche genannt. Solange der TO also nicht 
präziser beschreibt was er machen will ist jegliche weitere Spekulation 
wenig zielführend.

von Udo S. (urschmitt)


Lesenswert?

Ich denke mal das ist ein Nachfolgethread von
Beitrag "Glättung von Messwerten"

von Nikolas S. (dustinthewind)


Lesenswert?

Ich möchte überwachen, um wie viel Grad sich ein Bauteil, dessen 
Position sich ändern kann, neigt.

Ich habe jetzt, einen Komplementärfilter aus Beschleunigung und Gyro, 
wie er auf der folgenden Webseite beschrieben ist, angewandt.

https://howtomechatronics.com/tutorials/arduino/arduino-and-mpu6050-accelerometer-and-gyroscope-tutorial/

Das Problem ist nun, dass sich der Komplementärwinkel um ca. 11°/min 
linear erhöht obwohl sich die Position/Winkel des Bauteils nicht ändert.

Wie kann ich dem entgegenwirken?

von Udo S. (urschmitt)


Lesenswert?

Nikolas S. schrieb:
> Das Problem ist nun, dass sich der Komplementärwinkel um ca. 11°/min
> linear erhöht obwohl sich die Position/Winkel des Bauteils nicht ändert.

Willkommen in der realen Welt.

Wenn man halt eine Beschleunigung zwei mal aufintegrieren muss um zu dem 
gewünschten Wert zu kommen summieren sich die Offsetfehler. Sogar 
quadratisch.

Abhilfe schafft nur eine stabile Referenz wie z.B. das Erdmagnetfeld.

von Bastler_HV (Gast)


Lesenswert?

Drift vom Gyro?  Die driften halt.

Besserer Gyro?

Und wenn nicht mehr Informationen kommen was das soll kann man kaum 
Ratschläge geben.

Zum Beispiel wenn man weiss, das das Objekt sich meistens in Ruhe 
befindet, kann man den Gravitationsvektor filtern um die Gyros-Drift zu 
kompensieren.

von Nikolas S. (dustinthewind)


Angehängte Dateien:

Lesenswert?

Habe zwei Diagramme aufgezeichnet:

1. Das Bauteil in Bewegung

2. Das Bauteil in Ruhe
> Das Problem ist nun, dass sich der Komplementärwinkel um ca. 11°/min
> linear erhöht obwohl sich die Position/Winkel des Bauteils nicht ändert.
Ich muss mich korrigieren... es sind ca. 3°/min

von M. Н. (Gast)


Lesenswert?

Hallo,

wie schon geschrieben geht das nur, wenn du einen Inertialsensor 
(Beschleunigung + Drehrate) nimmst. Bspw. BMI160 von Bosch. Gibt von 
einigen Herstellern (ST, Bosch, Panasonic) eine Auswahl.

Ein Algorithmus zur berechnung der Lage, den ich selbst erfolgreich 
nutze, wäre: https://x-io.co.uk/open-source-imu-and-ahrs-algorithms/
Da gibt es eine C Implementierung, wo die Sensordaten reinkommen und ein 
Quaternion rauskommt. Recht simpel ansich.

Beschleunigungen fängt der recht gut ab. allerdings darf die 
Beschleunigung natürlich nicht zu lange andauern, da man sie sonst nicht 
von der Gravitation unterscheiden kann. Ich nutze das Gnaze für ein 
Flugzeug und eine Drohne. Da klappt der Algorithmus für mich ausreichend 
gut. Es ist aber anzuraten bei billigen Consmer-Chips, das Gyroskop im 
Stillstand Offset zu korrigieren, da die teilweise doch sehr im Wald 
liegen können.

von Günni (Gast)


Lesenswert?

Udo S. schrieb:
> Wenn man halt eine Beschleunigung zwei mal aufintegrieren muss um zu dem
> gewünschten Wert zu kommen summieren sich die Offsetfehler.

Für die Neigungsmessung muss man nichts zweimal aufintegrieren. Das wäre 
nur nötig, wenn man die zurückgelegte Strecke berechnen will. Die 
Gravitation ist eine Beschleunigung. Wenn man die (Erd-)Beschleunigung 
in horizontaler und vertikaler Richtung misst, bekommt man ohne Bewegung 
direkt den Neigungswinkel. Das sollte erst einmal funktionieren. Einen 
Gyro braucht man dazu nicht - im Gegenteil, der kann das Ergebnis 
höchstens verfälschen.
Wird jetzt der Sensor bewegt, so muss die Bewegung nur dann eingerechnet 
werden, wenn sich die Geschwindigkeit oder die Richtung der Bewegung 
ändert. (Nur dann tritt eine zusätzliche Beschleunigung auf, die die 
Messergebnisse beeinflussen.) Wie man jetzt eine Aussage über die 
Änderung der Bewegung erhält, hängt davon ab, was man zur Verfügung hat 
(Radimpulse, Dopplerverschiebung von Signalen gegenüber festen 
Referenzpunkten, ....).

Udo S. schrieb:
> Funktioniert prima bei Flugzeugen oder Schiffen.
Die Neigungsmessung von Schiffen ist wenig sinnvoll. Eine Neigung merkt 
man am Wassereintritt ins Schiff - siehe Titanic. Und bei Flugzeugen ist 
ja selbst Boeing damit überfordert, den Steigungswinkel von Flugzeugen 
sicher zu ermitteln.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Nikolas S. schrieb:
> Ich habe jetzt, einen Komplementärfilter aus Beschleunigung und Gyro,
> wie er auf der folgenden Webseite beschrieben ist, angewandt.
>
> 
https://howtomechatronics.com/tutorials/arduino/arduino-and-mpu6050-accelerometer-and-gyroscope-tutorial/

Ich vermisse in diesem Code das Wesentliche des Komplementärfilters,
nämlich die Filterung.

Beim Komplementärfilter durchläuft das Beschleunigungssignal einen
Tiefpass und das integrierte Gyrosignal einen Hochpass. Erst danach
werden die beiden Signale zusammenaddiert. Im verlinkten Code fehlt die
Filterung komplett, dafür werden die Signale mit unterschiedlichen
Gewichten addiert. Das zeigt, dass der Autor das Prinzip des
Komplementärfilters nicht einmal ansatzweise verstanden hat.

Such dir im Netz eine bessere Beschreibung des Prinzips. Arduino-Seiten
würde ich dabei nicht als erste Referenz nehmen. Auf die Schnelle habe
ich dieses hier gefunden, was schon einen ganz guten Eindruck macht:

  https://gunjanpatel.wordpress.com/2016/07/07/complementary-filter-design/

von donvido (Gast)


Lesenswert?

Udo S. schrieb:
> Willkommen in der realen Welt.

Wenn man keine Ahnung hat...

Bastler_HV schrieb:
> Drift vom Gyro?  Die driften halt.

Dafür ist ja der Komplementärfilter da. Das beste von beiden benutzen 
und das schlechte "wegfiltern". Die Drift dürfte also wenns richtig 
gemacht wird nicht ins Gewicht fallen.

Nikolas S. schrieb:
> Wie kann ich dem entgegenwirken?

versuchs mal mit
1
  gyroAngleX = roll + GyroX * elapsedTime; // deg/s * s = deg
2
  gyroAngleY = pitch + GyroY * elapsedTime;

Yalu X. schrieb:
> Ich vermisse in diesem Code das Wesentliche des Komplementärfilters,
> nämlich die Filterung.

Zeile 79 & 80

von Yalu X. (yalu) (Moderator)


Lesenswert?

donvido schrieb:
> Yalu X. schrieb:
>> Ich vermisse in diesem Code das Wesentliche des Komplementärfilters,
>> nämlich die Filterung.
>
> Zeile 79 & 80

Das ist kein Filter, weil die Rekursion fehlt. Es ist einfach eine
gewichtete Addition der beiden Signale mit deutlicher Übergewichtung
des integrierten Gyrosignals. Entsprechend sieht das Ergebnis aus:

Nikolas S. schrieb:
> Angehängte Dateien:
> ...

Fast genau dasselbe (bescheidene) Ergebnis erhielte man, wenn man den
Beschleunigungssensor wegließe.

von Wolfgang (Gast)


Lesenswert?

Nikolas S. schrieb:
> Kann mir jemand sagen, ob/wie ich den Winkel bei einer Beschleunigung
> messen kann?

Das Problem ist nicht die Winkelmessung sondern deine Referenz.
Wenn du als Referenz die Richtung eines Beschleunigungsvektors wählst, 
ist es doch völlig klar, dass sich eine Beschleunigung auf deinen 
Messwert auswirkt.

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.