Mit der integrierten Schaltung MPU-6050 (3-Achsen Beschleunigungs- und Lagesensor) kann man die Lage und Bewegung von
Gegenständen feststellen und messen. Zusätzlich ist es möglich, die aktuelle Temperatur zu ermitteln. Die dazu notwendigen Sensoren sind
direkt in dem Chip untergebracht. Die Daten werden von einem Analog-Digital-Wandler mit einer Auflösung von 16-Bit pro Kanal ausgegeben.
Bei Anbindung an Arduino wird der I2C-Bus als Schnittstelle verwendet.
MPU-6050
Modul GY-521
Die Beschleunigungs- und Lagesensoren (IMU-Sensoren) werden sehr oft eingesetzt. Besonders bekannte Anwendungsbereiche sind z.B.
Smartphones oder diverse Spielkonsolen. Immer öfter kommen sie in Bewegung-Messgeräten aus dem Fitnessbereich.
Der MPU-6050 liefert insgesamt sieben Werte (Rohdaten), die in einem Programm ausgewertet werden können. In dem folgenden Versuch wird
nur ein Wert verwendet. Mit seiner Hilfe konstruieren wir einen einfachen Autopiloten, dessen Aufgabe darin besteht, eine Flugzeugimitation in
horizontale Lage zu halten. Zum Einsatz kommt hier das Modul GY-521, auf dem der Sensor MPU-6050 untergebracht ist.
Schrittmotor 28BYJ mit Treiber
Für die Lagekorrekturen des Flugzeugs ist ein Schrittmotor (28BYJ-48) mit dem Treiber ULN2003 zuständig. Stellt der Sensor,
der auf dem Flugzeug angebracht ist, eine Abweichung von der waagerechten Lage fest, wird das Flugzeugheck mithilfe des Motors entsprechend
rauf- oder runterbewegt. Die Bewegung erfolgt solange, bis das Flugzeug die horizontale Lage wieder erreicht hat.
Flugzeug Imitation. In der Mitte das Modul mit dem Sensor MPU-6050
Als Störfaktor, der die üblichen Luftturbulenzen erzeugt, wird ein zweiter Schrittmotor eingesetzt. Er wird mit zwei
Tastern manuell gesteuert und ist für die Bewegung des vorderen Teils des Flugzeugs zuständig. Die Aufgabe der Schaltung ist es, die durch
Turbulenzen (Motor Nr. 1) verursachte Lageänderungen des Flugzeugs festzustellen und entsprechend zu korrigieren
(Motor Nr. 2)
Der Schaltplan
Schaltplan
Die Testschaltung
Autopilot Testschaltung
Die komplette Versuchsanordnung
Die komplette Versuchsanordnung
Das Programm
Für den einfachen Versuch werden nicht alle Daten benötigt, die der MPU-6050-Sensor liefern kann. Für uns sind nur die Werte,
die sich auf die Lage des Sensors in der Y-Richtung beziehen, relevant. Anhand dieser Daten kann man den Neigungswinkel errechnen und
bei Bedarf entsprechend reagieren. In diesem Beispiel soll das Flugzeug möglichst stets waagerecht gehalten werden.
Mit zwei Schaltern werden Luftturbulenzen imitiert und das Flugzeug aus dem Gleichgewicht gebracht. Der Sensor muss diese
Unregelmäßigkeiten erkennen und das Flugzeug wieder in horizontale Lage bringen.
Die empfangenen Daten weisen große Sprünge auf, einige Ausreiser sind auch dabei. Bevor man die Daten auswertet, wäre es empfehlenswert,
eine gute Methode für ihre Stabilisierung auszusuchen. Hier wird lediglich ein Mittelwert aus den letzten 10 Werten errechnet. Die
Werte kann man als eine Kurve auf dem IDE-Plotter beobachten. So sieht ungefähr der Verlauf bei diesem Versuch aus:
Serieller Plotter
Die Reaktion auf Wertänderung wird hier mit einfachem Kleiner-Größer-Vergleich realisiert. Für die Ansteuerung der Schrittmotoren
stehen mehrere Bibliotheken zur Verfügung. Hier werden die Treiber ohne „fremde Hilfe“ direkt mit jeweils vier Ausgängen
angesprochen.
// *******************************************************************************
// Autopilot
// mit Lage- und Beschleunigungssensor MPU-6050
// Arduino Mega2560, IDE 1.8.13
// *******************************************************************************