Arduino Mini-Segway: Unterschied zwischen den Versionen
Zeile 130: | Zeile 130: | ||
Simulink Modell Hauptsicht.png|(1) Simulink Model | Simulink Modell Hauptsicht.png|(1) Simulink Model | ||
Messung Gyro.png|(2) Messung und Umrechnung der Werte des Beschleunigungssensors | Messung Gyro.png|(2) Messung und Umrechnung der Werte des Beschleunigungssensors | ||
PID Regler.png|(3) eingestellter PID-Regler | |||
</gallery> | </gallery> | ||
Version vom 18. Januar 2021, 18:04 Uhr
Autoren: Manfred Listner, Patricio Emiliano Hernandez Murga
Betreuer: Prof. Schneider
→ zurück zur Übersicht: WS 20/21: Fachpraktikum Elektrotechnik (MTR)
Einleitung
Dieser Artikel beschreibt die Erstellung eines Arduino gesteuerten Mini-Segways. Das Projekt wird als Teil des GET-Fachpraktikums im fünften Fachsemester im Studiengang Mechatronik durchgeführt. Das Mini-Segway soll über zwei Motoren und einen Lagesensor stabilisiert werden. Die Stabilisierung erfolgt über eine Regelschleife. Die Regelung selbst übernimmt dabei eine PID-Regelung. Der Lagesensor dient hierbei als Messeinrichtung und ermittelt die Winkelabweichungen. Durch die gemessenen Winkelabweichungen wird durch die PID-Regelung die Beschleunigung an den Motoren gesteuert, sodass sich das Mini-Segway von selbst stabilisiert.
Anforderungen
Allgemein
Das Mini-Segway muss dazu in der Lage sein, Winkeländerungen zu erkennen, um diesen entgegen wirken zu können. Bei Änderungen der Lage des Schwerpunktes, z.B. durch hinzufügen von Gewichten, muss das Mini-Segway sich automatisch stabilisieren können.
Elektronik und Steuerung
Die Prüfung des Winkels soll über ein Gyroskop erfolgen. Die Änderung des Winkels wird anschließend vom Arduino Mikrocontroller ausgewertet. Durch eine Regelschleife sollen dann die beiden Motoren über den Mikrocontroller angesteuert werden, sodass sich das Mini-Segway wieder ausbalanciert. Zur Ausgabe von Daten soll zusätzlich ein LCD-Display angeschlossen werden.
Funktionaler Systementwurf/Technischer Systementwurf
Das Arduino Mini-Segway verfügt über einen Segway-Körper an dem ein Gyroskop montiert sein soll.
Zusätzlich sollen zwei DC-Motoren die Räder
unter dem Segway-Körper antreiben, sodass der Körper in vertikaler Position stabilisiert werden kann.
Der Regelkreis erhält als Eingabe einen Sollwinkel welcher vom Regler verarbeitet wird. Der Motor fungiert als Steller und wirkt eine Kraft auf das System "Segway" aus. Als Messeinrichtung dient ein Gyroskop. Dieser Sensor führt den gemessenen Winkel an den Regler zurück, sodass die vorhandene Winkelabweichung bestimmt und dem Regler erneut zugeführt werden kann.
Komponentenspezifikation
Beschleunigungssensor MPU-6050
Der Beschleunigungssensor MPU-6050 ist ein Sensor der die Beschleunigung um die x-, y- und z-Achse ermittelt. Die Kommunikation mit dem Mikrocontroller erfolgt über eine I2C Schnittstelle. Dafür sind die Anschlüsse SDA und SCL zuständig. Über diese Schnittstelle können die ermittelten Daten des Sensors ausgelesen und weiterverarbeitet werden. Die Anschlüsse VCC und GND sorgen für die Spannungsversorgung des Sensors mit entweder 3,3 V oder 5 V Spannung.
DC-Motoren
Zur Bewegung des Arduino Mini-Segways werden zwei DC-Motoren verwendet. Die Motoren verfügen jeweils über eine Spule durch die ein Magnetfeld erzeugt wird. Je nach Polung an den Eingängen des Motors kann so eine Drehung im, oder gegen den Uhrzeigersinn erzeugt werden. Diese Rotation wird daraufhin über ein Getriebe an die Räder übertragen.
H-Brücke L298N
Um die Motoren über das Arduino Board steuern zu können, wird die H-Brücke L298N benötigt. Das Bauteil ist in der Lage zwei DC-Motoren mit einer Spannung von bis zu 46 V zu versorgen. Für die verwendeten Motoren sind allerdings lediglich 9 V notwendig. Über die Anschlüsse 1, 2, wird ein erster und über die Anschlüsse 13 und 14 ein zweiter Gleichstrommotor angeschlossen. Gleichzeitig wird über die über die selben Anschlüsse die Drehrichtung der Motoren bestimmt. Dies geschieht in Abhängigkeit zu den digitalen Pins 8 - 11. Durch unterschiedliche Kombinationen aus "LOW" und "HIGH" drehen die Motoren entweder Vor- oder Rückwärts. Durch die Anschlüsse 7 und 12 können die Gleichstrommotoren durch eine PWM gesteuert werden. Über die Anschlüsse 4 und 5 wird die H-Brücke selbst mit Spannung versorgt. Darüber hinaus besteht die Möglichkeit über Anschluss 6 einen Mikrocontroller mit 5 V zu versorgen.
Anschlussnummer | Funktion |
---|---|
1 |
Anschluss für den Gleichstrommotor 1 "+" |
2 |
Anschluss für den Gleichstrommotor 1 "-" |
4 |
Eingang für die Spannungsversorgung der H-Brücke |
5 |
Eingang für GND |
6 |
5 V Ausgang |
7 |
Pin zur Steuerung von Gleichstrommotor 1 über PWM |
8, 9 |
Steuerung von Gleichstrommotor 1 |
10, 11 |
Steuerung von Gleichstrommotor 2 |
12 |
Pin zur Steuerung Gleichstrommotor 2 über PWM |
13 |
Anschluss für den Gleichstrommotor 2 "+" |
14 |
Anschluss für den Gleichstrommotor 2 "-" |
Arduino Mega 2560
Der Arduino Mega ist ein Mikrocontroller auf Basis des ATmega2560-Mikrocontrollers vom Hersteller Arduino. Das Board verfügt über 54 digitale Ein- oder Ausgänge von denen 15 als PWM-Ausgänge verwendet werden können. Zusätzlich verfügt der Mikrocontroller über 16 analoge Pins, 4 serielle Anschlüsse und einen USB-Anschluss um die Datenverbindung mit einem Rechner zu gewährleisten.
Kippschlater
Um das Arduino Mini-Segway ein- und ausschalten zu können, wird ein Kippschalter verwendet. Dieser wird direkt in die Leitung zur Stromversorgung des Systems eingesetzt. Durch betätigen des Kippschalters wird so die Spannungsversorgung entweder unterbrochen, oder erfolgen.
Verwendete Software
Für das ganze Projekt wird Simulink und die Simulink-Erweiterung, Stateflow. Denn bei Simulink ist es möglich, die Parameter des Programms während seiner Ausführung durch die Funktion " Monitor and Tune" zu verändern. Dies ist sehr hilfreich, wenn ein Regler im System benötigt wird.
Simulink
Bei Simulink wird die Bibliothek "Simulink Support Package for Arduino Hardware" benutzt, welche ermöglicht durch Blöcke von Simulink die Pins von Arduino anzusteuern und einzustellen. Simulink ermöglicht die modellbasierte Programmierung. Diese passt dann sehr gut zu unserem Projekt, da dadurch Signale schnell verarbeitet und dargestellt werden können. Das Projekt benötigt auch ein PID-Regler, welches durch die Funktion "Monitor and Tune" von Simulink während der Programmausführung anpasst werden kann. Dadurch kann viel Zeit bei der Anpassung der Parameter KP, KD und KI gespart werden.
Stateflow
Stateflow ermöglicht ein System durch Zustandsautomaten zu betreiben. Unser System benutzt Zustandsautomaten, da die Motoren unterschiedliche Kombinationen digitaler Signale für die Wahl der Antriebsrichtung benötigen.
Umsetzung (HW/SW)
Hardware
Als Grundgerüst für das Arduino Mini-Segway wird das "Zwei Ebenen Chassis mit 2-Motoren - Smart Car" [5] des Herstellers Funduino verwendet. Durch die zentrierte Positionierung der Motoren und Räder unterhalb der ersten Ebene eignet sich das Set gut als Rahmen für das Mini-Segway. Auf der unteren Ebene wird der Beschleunigungssensor MPU6050 montiert. Die H-Brücke zur Steuerung der DC-Motoren befindet sich auf der Unterseite der zweiten Ebene. Der Mikrocontroller, Arduino Mega 2560, wird auf der Oberseite der zweiten Ebene angebracht um ein leichtes bedienen des Mikrocontrollers zu ermöglichen.
Um eine Kommunikation zwischen Arduino Mikrocontroller und Beschleunigungssensor MPU5060 zu gewährleisten werden dazu die SDA und SCL Anschlüsse der beiden Bauteile miteinander verbunden. Vom Mikrocontroller ausgehend werden ebenfalls die Digitalen Pins 2 und 3 mit den PWM-fähigen Anschlüssen der H-Brücke verbunden. Dadurch können die DC-Motoren präzise angesteuert werden. Zusätzlich werden die Pins 8 - 11 vom Mikrocontroller mit den Anschlüssen 8 - 11 der H-Brücke verbunden. Diese Verbindungen ermöglichen die Steuerung der Drehrichtungen an den DC-Motoren.
Unter Zuhilfenahme eines Netzteils mit Transformator wird die H-Brücke mit Spannung versorgt. Der Arduino Mega bezieht die benötigte Versorgungsspannung ebenfalls von der H-Brücke, da diese durch Anschluss 6 über einen 5 V Ausgang verfügt.
Das Mini-Segway wird zum Schluss in ein Gehäuse aus Karton Eingehaust um die Bauteile vor äußeren Einflüssen zu schützen.
-
Draufsicht des Mini-Segways
-
Vorderansicht des Mini-Segways
-
Ansicht auf MPU5060 & H-Brücke
Software
-
(1) Simulink Model
-
(2) Messung und Umrechnung der Werte des Beschleunigungssensors
-
(3) eingestellter PID-Regler
Komponententest
Bevor die einzelnen Bauteile im eingebetteten System in Betrieb genommen werden, werden zunächst alle Bauteile auf ihre Funktionsfähigkeit überprüft.
H-Brücke L298N
Prüfung auf Funktionalität
Durch eine Versorgungsspannung von 12 V wird an den Anschlüssen geprüft, wie viel Spannung an den Anschlüssen abgegeben wird. Die Tests ergeben, dass bei eine Eingangsspannung von 12 V ungefähr 9 V an den Ausgängen für die DC-Motoren abgegeben werden. Für die verwendeten DC-Motoren eignet sich diese Spannung, ohne die DC-Motoren im Betrieb bei voller Belastung zu beschädigen.
Im darauffolgenden Test wird überprüft, ob die Anschlüsse für die PWM-Steuerung funktionsfähig sind. Um dies zu überprüfen wird ein Motor an die Ausgänge der H-Brücke angeschlossen und eine PWM von 0 - 255 in zehner Schritten an das Modul gesendet. Dieser Test ergibt, dass die H-Brücke in der Lage ist, die Leistung an den DC-Motoren durch ein PWM-Signal zu steuern.
DC-Motoren
Prüfung auf Funktionalität
Durch die Tests der H-Brücke ist festzustellen, dass die Motoren erst bei einem PWM-Signal von etwa 50 reagieren. Durch die Implementierung eines PID-Regler ist dieser Effekt allerdings zu vernachlässigen, da der PID-Regler die Steuerung übernimmt.
Beschleunigungssensor MPU6050
Prüfung auf Funktionalität
Durch den Block des MPU6050 aus der Simulink-Bibliothek "Simulink Support Package for Arduino Hardware/Sensors" wird die Funktionalität des Beschleunigungssensors überprüft. Es kann festgestellt werden, dass der verwendete Sensor sehr sensibel ist und auf kleinste Änderungen reagiert.
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
Projektplan
Projektdurchführung
YouTube Video
Weblinks
Literatur
→ zurück zur Übersicht: WS 20/21: Fachpraktikum Elektrotechnik (MTR)