Winkelberechnung von Beschleunigungssensor und Gyro kombinieren
Die positiven Eigenschaften der beiden vorher beschriebenen Winkelbestimmungen werden nun kombiniert. Da die
mit dem Gyro berechneten Winkel nicht rauschen und hochfrequent sehr schnell sind werden diese hauptsächlich
verwendet (höher gewichtet).
Um den Drift der Gyro-Winkel wieder auf 0 zu führen werden die Winkel des Beschleunigungssensors
verwendet.
Winkel = (alterWinkel + Winkeländerung) × 90% + Beschleunigungswinkel × 10%
float dt = (millis() - millisAlt) / 1000.00;
millisAlt = millis();
rollWinkel = (rollWinkel + wX * dt) * 0.9 + accRollWinkel * 0.1;
nickWinkel = (nickWinkel - wY * dt) * 0.9 + accNickWinkel * 0.1;
Im Bild oben sehen wir, wie die Winkelberechnung der Lageänderung sehr schnell folgt (durch die hohe Gewichtung der Gyrowerte). Weiter rechts im Bild bringen wir wieder unsere Vibrationen auf das Bauteil und sehen nur kleine Ausschläge bzw. ein akzeptables Rauschniveau. Der dadurch verlorene 0-Punkt wird im Bild ganz rechts (die ansteigende blaue Linie) wieder zurückgeführt (durch die kleinere aber stetige Gewichtung der mit dem Beschleunigungssensor errechneten Winkel)
Soweit zur Lageermittlung im Raum und der Berechnung der eulerschen Nick- und Rollwinkel. Im nächsten Abschnitt widmen wir uns den letzten 3-Achsen des 9-Achsen Sensors - also dem Magnetsensor - und berechnen damit den letzten Eulerwinkel. Den Gierwinkel bzw. die Ausrichtung zur Nordachse.