Arduino Mini-Segway: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 131: Zeile 131:
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
PID Regler.png|(3) eingestellter PID-Regler
Verarbeitung Ereignise phi.png|sakdjh
Verarbeitung Ereignise phi.png|Verarbeitung des gemessenen Winkels zur Entscheidung der Drehrichtung der DC-Motoren
</gallery><br/>
</gallery><br/>
<gallery widths="250" heights="120" perrow="4">
<gallery widths="250" heights="120" perrow="4">

Version vom 18. Januar 2021, 18:09 Uhr

Prototyp des Segways

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.

Das Bild zeigt den schematischen Aufbau des Arduino Mini-Segways


















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.

Das Bild zeigt den Regelkreis der für die Stabilisierung des Arduino Mini-Segways genutzt werden soll











Komponentenspezifikation

Beschleunigungssensor MPU-6050

[1] Beschleunigungssensor MPU6050

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

Funduino 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.

[2] Pinbelegung der H-Brücke L298N
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

[3] 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

[4] Kippschalter zum ein- und ausschalten

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.

Software


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)