Balance Bot: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 49: | Zeile 49: | ||
# M3 x 5mm Schrauben zur Befestigung der Motoren und der Leiterplatte an das Grundgestell | # M3 x 5mm Schrauben zur Befestigung der Motoren und der Leiterplatte an das Grundgestell | ||
# Kabelbinder zur Befestigung des Gewichtes/Akkus an das Grundgestell | # Kabelbinder zur Befestigung des Gewichtes/Akkus an das Grundgestell | ||
# Anti-Rutschmatte-Streifen als Reifen | |||
===Elektrische Komponenten=== | ===Elektrische Komponenten=== | ||
# 2x Nema-17 Schrittmotoren (17HS4023) als Antrieb für den BalanceBot | # 2x Nema-17 Schrittmotoren (17HS4023) als Antrieb für den BalanceBot | ||
Zeile 99: | Zeile 100: | ||
:<math> VREF = \frac{Nennstrom}{2} </math> | :<math> VREF = \frac{Nennstrom}{2} </math> | ||
Die Referenzspannung wurde also auf 0,5V eingestellt. | Die Referenzspannung wurde also auf 0,5V eingestellt. | ||
<br> | |||
Die Einstellung des PID-Reglers stellte die wichtigste Einstellung im Quellcode da. Um den Regler einzustellen, wurden zuerst der I- und der D-Anteil auf 0 gesetzt, um den P-Anteil einzustellen. Dazu wurde zuerst ein geringer P-Wert (geringe Verstärkung) von 1,5 gewählt, das Programm auf den Arduino geladen und anschließend das Verhalten beobachtet und beurteilt. Anhand des Balancierverhaltens und dem Verhalten beim Ändern der Eingangsgröße, konnte dann darauf geschlossen werden, ob der Wert zu hoch (System schwingt) oder zu niedrig (Regelgröße zu klein, hohe Regelabweichung) ist, um ihn anzupassen. Nach Erprobung, hat sich ein P-Anteil von 2 als geeignet erwiesen. Als nächstes musste der D-Anteil, der den bleibenden Regelfehler des P-Anteils ausgleichen soll eingestellt werden. Hier wurde mit einem hohen Wert begonnen, was einem trägen System entspricht. Zur Erprobung wurde auch hier vorgegangen wie beim P-Anteil, und der Wert für den D-Anteil wurde immer weiter verringert um die "Aggressivität" des Reglers passend einzustellen. An dieser Stelle balanciert der Balance Bot schon sehr gut. Um die Annäherung an den Sollwert noch zu verbessern, kann hier die Näherung an einen geeigneten D-Anteil vorgenommen werden. | |||
==Ergebnis== | ==Ergebnis== | ||
Das Projekt wurde wie geplant umgesetzt und beendet. Die geplante Anforderung wird erfüllt und der Balance Bot funktioniert zuverlässig. Bei der Energieversorgung wurde aus Kostengründen auf einen Akku verzichtet und auf ein vorhandenes Netzteil zurückgegriffen, was die Funktion nicht beeinträchtigt. Die Materialbeschaffung war problemlos, da bei den mechanischen Bauteilen auf vorhandene Ressourcen zurückgegriffen werden konnte. Bei den elektronischen Bauteilen war die Beschaffung ebenfalls leicht, da weit verbreitete Standardkomponenten verwendet wurden, welche bei verschiedenen Online-Versandhändlern vorrätig sind. Als Erweiterung wären zusätzlich noch eine Fernsteuerung, Akkubetrieb und evtl. eine Änderung der Regler Anteile über Taster, eine App o.ä. denkbar. | |||
==Zusammenfassung== | ==Zusammenfassung== |
Version vom 8. Januar 2022, 17:35 Uhr
Autoren: Moritz Kühnrich & Daniel Klassen
Betreuer: Prof. Göbel
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik
Einleitung
Das „BalanceBot“-Projekt wurde im Rahmen des GET-Fachpraktikums im 5.Fachsemester des Studienganges Mechatronik absolviert. Die Grundlagen und Kenntnisse aus verschiedenen Vorlesungen, besonders aus Mess- und Regelungstechnik und anderen Praktika, die bereits absolviert wurden, sollen dabei eingesetzt und vertieft werden. Außerdem stehen die Planung, das eigenständige Durchführen und die Dokumentation eines selbst ausgewählten Projektes im Vordergrund, sodass nach Abschluss des Projektes ein Entwicklungsprozess durchlaufen wurde. Der BalanceBot vereint, passend zum Studiengang Mechatronik, Mechanik, Elektronik und Informatik in einem Projekt und wird im Folgenden erläutert.
Der BalanceBot ist ein kleiner zweirädriger Roboter, der das Ziel hat mithilfe der eingebauten elektronischen Bauteile, durch die Ansteuerung der zwei Motoren, die jeweils ein Rad antreiben, im Gleichgewicht zu bleiben und gerade auf der Stelle zu stehen.
Anforderungen
Nach dem Anschalten des BalanceBot, soll der Roboter auf der Stelle stehen bzw. balancieren ohne zu kippen, indem die Räder in die entsprechende Richtung angetrieben werden. Nach Einwirkung äußerer Kraft durch leichtes anstoßen des Roboters, soll dieser wieder in die Ausgangslage zurückkehren und weiter auf der Stelle das Gleichgewicht halten.
Funktionaler Systementwurf/Technischer Systementwurf
Nach der Ideenfindung wurde mit einer ersten Skizze begonnen, um grob abzuschätzen mit welchem Verfahren die mechanischen und elektronischen Bauteile gefertigt und angeordnet werden. Die elektronischen Bauteile sollen bei voller technischer Funktion im Design versteckt sein. Als Trägheit, die den Roboter aus dem Gleichgewicht bringen soll, sind entweder ein Akku, der gleichzeitig Energie für den Roboter bereitstellt, denkbar, oder (bei Netzbetrieb) eine andere Art von Gewicht.
-
Erste Skizze
-
Erster Systementwurf
Komponentenspezifikation
Mechanische Komponenten
- Zwei selbstgestaltete Felgen (3D-Druck, ca. 110g PLA)
- Selbstgestaltetes Grundgestell (3D-Druck, ca. 70g PLA)
- M3 x 5mm Schrauben zur Befestigung der Motoren und der Leiterplatte an das Grundgestell
- Kabelbinder zur Befestigung des Gewichtes/Akkus an das Grundgestell
- Anti-Rutschmatte-Streifen als Reifen
Elektrische Komponenten
- 2x Nema-17 Schrittmotoren (17HS4023) als Antrieb für den BalanceBot
- 5cm x 7cm Leiterplatte als Träger für die elektrische Schaltung
- 2x DRV-8825 Stepper Treiber als Ansteuerung für die beiden Motoren
- MPU-6050 Gyro-Sensor zur Messung des Neigungswinkels und der Gierrate des Roboters
- Arduino Nano Mikrocontroller
- 100 µF Kondensator als Bauteilschutz
- 12V/1A Netzteil
Umsetzung (HW/SW)
Generell wichtig bei der Umsetzung der Bauteile war, vorhandene Materialien zu verwenden und diese so zu verarbeiten, dass diese möglichst über das Projekt hinaus wiederverwendet werden können. Im folgenden wird auf die Umsetzung eingegangen.
Hardware
Da zwei 3D-Drucker zur Verfügung stehen, wurden die mechanischen Bauteile mit diesen gefertigt. Durch das Verfahren ist ein großer Gestaltungsfreiraum gegeben, der bei der Konstruktion in SolidWorks voll ausgenutzt wurde. Das Design der Felgen erfolgte selbständig in Anlehnung an das ikonische Design der "MAE Crown Jewel"-Felge. Bei der Konstruktion des Grundgestells und der Felgen mussten die Maße des zuvor gewählten Motors berücksichtigt werden, um passende Anschraubpunkte am Grundgestell und Wellenaufnahmen an den Felgen zu realisieren. Bei der Konstruktion des Grundgestells wurde zusätzlich an der Unterseite eine Aufnahme für die Leiterplatte, auf der sich die elektrischen Bauteile befinden realisiert. Um fehlerhafte Drucke, aufgrund von nicht berücksichtigten Maßen zu vermeiden, wurden die einzelnen Bauteile in SolidWorks zu einer Baugruppe zusammengefügt. Entsprechende Modelle z.B. für die Motoren wurden aus dem Internet bezogen, sodass sichergestellt werden konnte, dass die Bauteile passen werden. Die CAD-Modelle wurden anschließend in einer Slicer-Software für den Druck vorbereitet. Nach Eintreffen aller bestellten Komponenten und einer Druckzeit von insgesamt etwa 20 Stunden konnte mit dem mechanischen Aufbau begonnen werden. Dazu musste zuerst das angefallene Supportmaterial von den gedruckten Teilen entfernt werden. Die Motoren sind mit jeweils vier M3 x 5mm Schrauben am Grundgestell befestigt. Die Felgen wurden mit einer Schraubzwinge auf die Motorwelle gepresst, sodass keine Möglichkeit von Schlupf an der Welle besteht.
-
CAD-Modell Felge
-
CAD-Modell Grundgestell
-
Seitenansicht
Versorgt wird der Roboter mit einem 12V/1A Netzteil, um genügend Energie für die Motoren bereitstellen zu können. Die Elektrischen Bauteile sind auf einer Leiterplatte angebracht. Um diese wiederverwenden zu können, sind diese nicht direkt auf der Platine verlötet, sondern stattdessen Steckkontakte. In diese sind die Bauteile eingesteckt, um sie wiederverwenden, oder bei Bauteilversagen leicht austauschen zu können. Nach Erstellung des Schaltplanes wurden die Steckkontakte für elektrischen Komponenten auf der Leiterplatte verlötet.
-
Schaltplan BalanceBot
-
Fertige Leiterplatte im eingebautem Zustand
-
Heckansicht
Software
Bei der Erstellung der Software wurde sich an vorhandenem Quellcode orientiert. In diesem wird zur Regelung des Neigungswinkels ein PID-Regler für die Arduino IDE verwendet. Die Regelung funktioniert gemäß folgendem Regelkreis.
Da der Balance Bot keine Fernsteuerung und als Energiequelle keinen Akku besitzt, mussten die entsprechenden Stellen im Code angepasst werden. Beim Einschalten des Roboters wird die aktuelle Neigung als Referenz gespeichert. Das Kalibrieren wird durch schnelles Blinken der LED auf dem Arduino Nano signalisiert. Das heißt, dass der Roboter beim Anschalten gerade gehalten werden muss, bis die Kalibrierung abgeschlossen ist.
Komponententest
Die mechanischen Komponenten wie die Felgen und das Grundgestell wurden bereits in der Planungsphase in SolidWorks auf Maßhaltigkeit überprüft, sodass diese bei der Umsetzung gut passten. Die elektrischen Bauteile wurden Stück für Stück durch den Aufbau von Testschaltungen in Kombination mit Testprogrammen auf ihre Funktion überprüft. In diesem Rahmen musste die Strombegrenzung für die Motoren an den DRV-8825 Motortreibernd eingestellt werden. Um mit dem Motor hohe Schrittraten erreichen zu können, wie es bei dem BalanceBot bei einer hohen Regelabweichung der Fall sein kann, ist die Versorgung des Motors typischerweise deutlich höher als es ohne Strombegrenzung zulässig wäre. Die Motoren haben einen Nennstrom von max. 1A pro Phase, der nicht überschritten werden darf. Um den Strom zu begrenzen muss am Treiber, über eine Einstellschraube auf diesem, eine Referenzspannung eingestellt werden. Dazu wird die Spannung zwischen dem "REF"-Pin (Messwiderstand 0,1 Ohm) und GND gemessen. Die Stromgrenze verhält sich zur Referenzspannung wie folgt:
Die Referenzspannung wurde also auf 0,5V eingestellt.
Die Einstellung des PID-Reglers stellte die wichtigste Einstellung im Quellcode da. Um den Regler einzustellen, wurden zuerst der I- und der D-Anteil auf 0 gesetzt, um den P-Anteil einzustellen. Dazu wurde zuerst ein geringer P-Wert (geringe Verstärkung) von 1,5 gewählt, das Programm auf den Arduino geladen und anschließend das Verhalten beobachtet und beurteilt. Anhand des Balancierverhaltens und dem Verhalten beim Ändern der Eingangsgröße, konnte dann darauf geschlossen werden, ob der Wert zu hoch (System schwingt) oder zu niedrig (Regelgröße zu klein, hohe Regelabweichung) ist, um ihn anzupassen. Nach Erprobung, hat sich ein P-Anteil von 2 als geeignet erwiesen. Als nächstes musste der D-Anteil, der den bleibenden Regelfehler des P-Anteils ausgleichen soll eingestellt werden. Hier wurde mit einem hohen Wert begonnen, was einem trägen System entspricht. Zur Erprobung wurde auch hier vorgegangen wie beim P-Anteil, und der Wert für den D-Anteil wurde immer weiter verringert um die "Aggressivität" des Reglers passend einzustellen. An dieser Stelle balanciert der Balance Bot schon sehr gut. Um die Annäherung an den Sollwert noch zu verbessern, kann hier die Näherung an einen geeigneten D-Anteil vorgenommen werden.
Ergebnis
Das Projekt wurde wie geplant umgesetzt und beendet. Die geplante Anforderung wird erfüllt und der Balance Bot funktioniert zuverlässig. Bei der Energieversorgung wurde aus Kostengründen auf einen Akku verzichtet und auf ein vorhandenes Netzteil zurückgegriffen, was die Funktion nicht beeinträchtigt. Die Materialbeschaffung war problemlos, da bei den mechanischen Bauteilen auf vorhandene Ressourcen zurückgegriffen werden konnte. Bei den elektronischen Bauteilen war die Beschaffung ebenfalls leicht, da weit verbreitete Standardkomponenten verwendet wurden, welche bei verschiedenen Online-Versandhändlern vorrätig sind. Als Erweiterung wären zusätzlich noch eine Fernsteuerung, Akkubetrieb und evtl. eine Änderung der Regler Anteile über Taster, eine App o.ä. denkbar.