Arduino Ballbalancierer
Autoren: Niklas Reeker & Marius Erdmann
Betreuer: Prof. Dr.-Ing. Mirek Göbel & Prof. Dr.-Ing. Ulrich Schneider
→ zurück zur Übersicht: WS 22/23: Angewandte Elektrotechnik (BSE)
Einleitung
Im Rahmen des GET-Fachpraktikums ensteht das Projekt Arduino Ballbalancierer. Bei diesem wird ein Ball mithilfe von Steuerungs- und Regelungsalgorithmen in der Mitte einer Wippe ausbalanciert. Auf externe Störeinflüsse soll das mechatronische System reagieren und den Ball schnellstmöglich an seine urspüngliche Position zurückbewegen. Eine RGB-LED zeigt zudem an ob das System betriebsbereit ist.
Anforderungen
ID | Inhalt | Ersteller | Datum | Geprüft von | Datum |
---|---|---|---|---|---|
1 | Entwerfen einer mechanischen Konstruktion, welche als Wippe fungiert. | Marius Erdmann | 13.10.2022 | Niklas Reeker | 14.10.2022 |
2 | Herstellen einer Stromversorgung für Servomotor, Sensor, LED und Arduino. | Marius Erdmann | 13.10.2022 | Niklas Reeker | 14.10.2022 |
3 | Automatisches starten des Arduino Programms bei vorhandener Stromversorgung. | Marius Erdmann | 13.10.2022 | Niklas Reeker | 14.10.2022 |
4 | Die LED soll einen Status anzeigen (System mit Spannung versorgt, System aktiv). | Marius Erdmann | 13.10.2022 | Niklas Reeker | 14.10.2022 |
5 | Der Sensor soll die Entfernung zum Ball korrekt erfassen. | Marius Erdmann | 13.10.2022 | Niklas Reeker | 14.10.2022 |
6 | Der Arduino soll den Servomotor ansteuern. | Marius Erdmann | 13.10.2022 | Niklas Reeker | 14.10.2022 |
7 | Es soll ein passender Regler ausgewählt werden. | Marius Erdmann | 13.10.2022 | Niklas Reeker | 14.10.2022 |
8 | Die gewählte Regelung muss passend parametriert werden. | Marius Erdmann | 13.10.2022 | Niklas Reeker | 14.10.2022 |
9 | Die LED soll eine visuelle Rückmeldung geben, wenn der Ball in der Mitte ist. | Marius Erdmann | 13.10.2022 | Niklas Reeker | 14.10.2022 |
Tabelle 1 zeigt die funktionalen Anforderungen.
Funktionaler Systementwurf/Technischer Systementwurf
Reglerauslegung
Bei der Reglerausöegung wurde nach den in der Vorlesung vorgegebenen Schritten vorgegangen:
1. Regelziel formulieren
Die Regelgröße dist, welche die Entfernung vom Sensor zum Ball angibt, soll möglichst genau mit der Sollentfernung dsoll übereinstimmen. Das heißt, die Regeldifferenz soll möglichst gering sein, sodass der Ball an der Stelle der Sollentfernung durch das System gehalten wird.
2. Regelkreis
-
Abb. 4: Regelkreis [4]
dsoll: optimale Entfernung (Entfernung Sensor zur Mitte der Wippe)
dDiff: Differenz aktuelle Entfernung (r) und Sollentfernung (w)
α: Winkel für den Servomotor
αStör: Störgröße
dmess: gemessene Entfernung
dist: aktuelle Entfernung
3. Verhalten der Regelstrecke ermitteln
-
Abb. 5: Einheitssprung und Sprungantwort [5]
Um das Verhalten der Regelstrecke zu bestimmen wurde ein Einheitssprung durchgeführt. Dazu wurde bei dem Servomotor ein WInkel von 3° eingestellt und die Entfernung des Balls vom Sensor gemessen und aufgezeichnet.
4. Zur Regelstrecke und den Regelzielen passenden Regler bestimmen
-
Abb. 6: Berechnung des Reglers [6]
Mit dem ermittelten Verhalten der Regelstrecke Gs wurde das Gesamtübertragungsverhalten Gw mit einem PDT1 Regler berechnet. Als Ergebnis kam ein Xstat Wert von 1 heraus, welcher uns bescheinigt, dass der gewählte Regler unserer Regelung passt.
5. Regler-Parameter ermitteln
Die Regler-Parameter wurden durch ausprobieren eingestellt. Dabei wurden immer wieder Analysen anhand der in Simulink erzeugten Messwerte vorgenommen.
Komponentenspezifikation
ID | Komponente | Bezeichnung |
---|---|---|
1 | Konstruktion mit Wippe | Eigenbau |
2 | Arduino Uno Rev. 3 | A000073 |
3 | Sharp Entfernungssensor | GP2Y0A21YK0F |
4 | Futaba Servomotor | S3003 |
4 | RGB-LED | LL 5-8000RGB |
Tabelle 2 zeigt die benötigten Komponenten für den Aufbau des Ballbalancierers.
Umsetzung (Hardware)
Wippe
Für die Wippe wurde als Grundplatte eine Multiplex Holzplatte verwendet. Auf diese wurde ein Kantholz festgeschraubt. An dem Kantholz ist auf der Oberseite ein Scharnier angebracht, welches als Verbindung zu dem U-Profil aus Kunststoff dient und dabei die Wippfunktion ermöglicht. Außerdem ist an dem Kantholz der Servomotor mittels einer Halterung befestigt. Auf dem U-Profil auf welchem sich später der Ball bewegen soll befindet sich der Infrarotsensor. Dieser ist über eine Halterung aus Holz an dem U-Profil angebracht. Das Breadboard sowie der Mikrocontroller sind auf der Grundplatte befestigt.
Netzteil
Ein Netzteil wandelt die zugeführte Wechselspannung, die am Eingang anliegt, in die benötigte Gleichspannung um. In diesem Fall versorgt das Netzteil den Ballbalancierer mit einer 5V Gleichspannung.
Arduino Uno
Der Arduino Uno SMD R3 ist ein Mikrocontroller-Board, das auf dem ATmega328 basiert. Es hat 14 digitale Input/Output-Pins (von denen 6 als PWM-Outputs genutzt werden können), 6 analoge Eingänge, einen 16-MHz-Schwingquarz, einen USB-Anschluss, einen Netzstecker, einen ISP-Anschluss und eine Rückstelltaste. Der Arduino steuert das Gesamtsystem und wird von dem Netzteil mit einer 5V Gleichspannung versorgt.[7]
Infrarotsensor (IR)
Der Infrarotsesnsor misst die Entfernung zum Ball mittels Triangulation. Triangulation bedeutet Abstandsmessung durch Winkelberechnung. Der Sensor projiziert einen Laserpunkt auf das Messobjekt. Das dort reflektierte Licht trifft abhängig von der Entfernung unter einem bestimmten Winkel auf ein Empfangselement. Anhand des Winkels kann dann die Entfernung zum Messobjekt bestimmt werden. Die analogen Messwerte sind an der Port A0 mit dem Arduino Uno verbunden.[8]
RGB LED
Eine RGB-LED kann verschiedene Farben ausgeben, indem sie die 3 Grundfarben Rot, Grün und Blau mischt und auch die Intensität ändert. Sie besteht also aus 3 separaten LEDs, Rot, Grün und Blau, die in einem einzigen Gehäuse untergebracht sind. Deshalb gibt es 4 Leitungen, eine Leitung für jede der 3 Farben und eine gemeinsame Kathode oder Anode, abhängig vom RGB-LED-Typ. Um andere Farben zu erzeugen, können Sie die drei Farben in verschiedenen Intensitäten kombinieren. Bei dem Ballbalancierer leuchtet die LED beim einschalten zunächst rot, da das System einige Zeit benötigt um hoch zu fahren. Anschließend leuchtet die LED grün, wenn der Ball in der Mitte der Wippe liegt oder blau wenn dies gerade nicht der Fall ist. [9]
Servomotor
Ein Servomotor ist ein Elektromotor samt seiner Steuerelektronik. Dieser kann durch ein PWM Signal einen bestimmten Winkel ansteuern und so über den Hebel die Wippe bewegen. [10]
Verdrahtungsplan
Nachfolgend ist der Verdrahtungsplan für den Ballbalancierer gezeigt:
-
Abb. 7: Funktionaler Systementwurf/Technischer Systementwurf [11]
Umsetzung (Software)
Die Software für den Ballbalancierer wurde in Matlab Simulink erstellt und getestet. Anschließend wurde das Programm in den Arduino hochgeladen und dort ausgeführt. Nachfolgend werden die einzelnen Softwarekomponenten gezeigt:
Nachfolgend ist das Gesamtsystem des Simulink Modells zu sehen. dieses zeigt alle Ein- und Ausgänge, die am Arduino angeschlossen sind. Hierzu kann ein Arduino Nano, Uno oder Mega verwendet werden. Die Parameter "Wippenmitte" und "Servomitte_Einstellung" sind Einstellparameter, welche angepasst werden können, wenn sich die Wippe beim Start nicht in der Mitte des Servos befindet oder sich die Sensorentfernung verändert hat.
-
Abb. 8: Simulink Modell Gesamtsystem [12]
In dem Gesamtsystem ist das Modell dann in die Einzelkomponenten aufgeteilt. Zu sehen sind die Ein- und Ausgänge des Modells sowie die Modelle des Reglers, des Sensors und der Ansteuerung der RGB LED. Die LED Farbe ergibt sich bei einer RGB LED aus dem Mischungsverhältnis der Farben Rot, Grün und Blau.
-
Abb. 9: Simulink Modell Einzelkomponenten [13]
Das Modell des IR-Sensorelements besteht aus der Sensorkennlinie und einem Filter um das Messsignal zu filtern. Durch einen Medianfilter über 35 Messwerte wurde das Ergebnis der Regelung deutlich verbessert und die Wippe zittert nicht mehr so stark.
-
Abb. 10: Simulink Modell IR-Sensor [14]
Die LED-Steuerung besteht lediglich aus einem kurzen Programmcode, welcher beim Hochfahren des Systems die LED Rot ansteuert und beim Regelbetrieb die LED dem Regelziel entsprechend Grün oder Blau ansteuert. Grün bedeutet dabei das sich der Ball in der Mitte befindet und Blau, dass er nicht in der Wippenmitte ist.
-
Abb. 11: Simulink Modell LED Steuerung [15]
Dies ist der Programmcode, welcher die LED ansteuert.
-
Abb. 12: LED-Steuerung Code [16]
Das Modell des Reglers rechnet zunächst den Abstand des Balls zur Wippenmitte aus und errechnet damit im Regler den Winkel mit dem der Servo angesteuert werden muss. Ein Begrenzer am Ende sorgt dafür das der Servo nicht über einen festgelegten Bereich hinaus fährt.
-
Abb. 13: Simulink Modell PDT1 Regler [17]
Komponententest
Die Komponenten wurden nach erhalt auf äußere Beschädigungen überprüft und anschließend in Simulink angesteuert um die Funktionsfähigkeit der einzelnen Komponenten zu gewährleisten. Die Sensorkennline wurde eingemessen und die eigenen Messwerte in Simulink übertragen, um Messfehlern vorzubeugen. Zusätzlich wurden bei verschiedenen Testläufen regelmäßig die Einzelkomponenten erneut auf ihre Funktion überprüft.
Ergebnis
Der Ballbalancierer erfüllt die oben beschriebenen Anforderungen und regelt den Ball schnell in die Wippenmitte zurück. Die LED zeigt dabei den Status des Gesamtsystems an. In der nachfolgenden Abbildung sieht man in der linken Grafik die Regelung von dem P-Anteil (Gelb) und dem D-Anteil (Blau) über der Zeit in Sekunden. Auf der rechten Seite der Grafik ist die Entfernung des Balles (Gelb), das Gesamtregelverhalten (Orange) sowie das begrenzte Gesamtregelverhalten (blaue Begrenzung) über der Zeit in Sekunden zu sehen. Dies zeigt die schnelle und erfolgreiche Regelung des Balls nach dem anstoßen zurück zur Sollentfernung. Die y-Achse zeigt den Winkel α in Grad oder die Entfernung des Balls in cm an. die x-Achse zeigt die Zeit in Sekunden.
-
Abb. 13: Regelung des Balls nach anstoßen [18]
Legende:
Linke Seite:
Blau: P-Anteil als Winkel α in Grad
Gelb: D-Anteil als Winkel α in Grad
Rechte Seite:
Gelb: Entfernung des Balles in cm
Orange: Gesamtregelverhalten als Winkel α in Grad
Blau: Begrenztes Gesamtregelverhalten als Winkel α in Grad
Zusammenfassung
Lessons Learned
Das Projekt hat uns gelehrt, ein System von der Projektplanung über die Konstruktion und Programmierung bis hin zu den Komponententests und dem Gesamttest zu entwickeln. Die bereits im Grundstudium gelernten Studieninhalte konnten dabei angewendet und die einzelnen Lehrveranstaltung besser verknüpft werden. Als Lessons Learned sind folgende Punkte besonders hervorzuheben:
- Notwendigkeit einer guten Projektplanung
- Anforderungsorientiertes Arbeiten
- Umgang mit Microcontroller (insbesondere mit Simulink), Sensoren und Aktoren sowie dessen Auswahl
- Schaltplanerstellung mit QElektroTech
- Auswahl von Reglern
- Erstellen und einstellen eines Reglers mit Simulink
- Messdaten lesen, deuten und verarbeiten
- Erstellen von Artikeln im Wiki
Projektunterlagen
Projektplan
-
Abb. 14: Projektplan Arduino Ballbalancierer [19]
Projektdurchführung
Nach Erstellung eines Projektplans erfolgt die Auswahl und Beschaffung der Sensoren und Aktoren sowie aller weiteren Bauelemente/Bauteile. Anschließend soll der Aufbau der Konstruktion erfolgen. Nach dem Zusammenbau sollen die elektronischen Einzelkomponenten angeschlossen und getestet werden. Die dafür zu schreibenden Einzelprogramme werden später für das Gesamtprogramm zusammengeführt. Nach dem Einbau aller elektrischen Komponenten in das Gesamtsystem wird der PID-Regler programmiert und parametriert. Zum Schluss wird die Funktionalität des Gesamtsystems überprüft, ein YouTube-Video gedreht und das Projekt auf der Projektmesse vorgestellt.
YouTube Video
Ein Video des fertigen Projektes kann bald hier angeschaut werden.
Literatur
→ zurück zur Übersicht: WS 22/23: Angewandte Elektrotechnik (BSE)
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ https://www.digikey.de/reference-designs/en/open-source-mcu-platforms/open-source-mcu-platforms/2762?utm_adgroup=General&utm_source=google&utm_medium=cpc&utm_campaign=Dynamic%20Search_EN_RLSA_Product_Site%20Visitor&utm_term=&productid=&gclid=EAIaIQobChMIiJ_Mr46Q_AIV7I9oCR3WUgR9EAAYASAAEgJuiPD_BwE, abgerufen am 23.12.2022
- ↑ https://docs.rs-online.com/998e/A700000008623644.pdf, abgerufen am 23.12.2022
- ↑ https://www.reichelt.de/rgb-led-5-mm-bedrahtet-4-pin-rt-gn-bl-8000-mcd-25--led-ll-5-8000rgb-p156358.html, abgerufen am 23.12.2022
- ↑ https://pdf1.alldatasheet.com/datasheet-pdf/view/1221444/ETC1/S3003.html/, abgerufen am 23.12.2022
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument
- ↑ Eigenes Dokument