Arduino Ballbalancierer

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen


Abb. 1: Aufbau des Ballbalancierers [1]

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

Tabelle 1: Testbare 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

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

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

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

Tabelle 2: Liste aller Komponenten
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:

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.


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.


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.


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.

Dies ist der Programmcode, welcher die LED ansteuert.

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.

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.

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

Projektdaten

Dem ZIP-Archiv Ballbalancierer sowie dem SVN Ordner[1] können die relevanten Projektunterlagen entnommen werden.

Projektplan

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 hier angeschaut werden.

Literatur


→ zurück zur Übersicht: WS 22/23: Angewandte Elektrotechnik (BSE)