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?
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
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.
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).
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
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
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.
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.
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?
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.
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.
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
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.
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.
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/
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.