Analog zum inversen Pendel mit Linearführung geht es hier um das Balancieren eines Pendels in der senkrechten Lage. Das Pendel befindet sich am Ende eines rotierenden Arms. Über die Drehbewegung des Arms wird die Ausgleichsbewegung erzeugt. Dieser
Aufbau des Pendels ist sehr beliebt und mechanisch einfacher zu realisieren, da die Linearführung mit dem Zahnriemenantrieb entfällt. Auf YouTube findet man unter den Suchworten rotary inverted pendulum oder Furuta Pendulum diverse Aufbauvarianten z.B.
http://build-its-inprogress.blogspot.de/search/label/Pendulum
https://www.youtube.com/watch?v=pbvmbebFZoY
Als elektronische Steuerung wird ein Arduino Megaboard benutzt. Ein paar Grundkenntnisse in
der Programmierung des Arduino werden vorausgesetzt. Die
Kosten der Einzelteile liegen in Summe je nach Aufbauvariante bei 70€ ...130 €. Als Antrieb für den Rotor wird ein NEMA 17 Schrittmotor mit Microsteppsteuerung verwendet. Wer ein größeres Modell bauen möchte, sollte besser einen NEMA 23 Motor einsetzen. Der Pendelwinkel wird mit einem Winkelgeber (Fabrikat Omron E6B2-CWZ6C , 2000 Impulse je Umdrehung) erfasst. Der Winkel vom Rotorarm kann direkt über die Anzahl der Schritte des Schrittmotors berechnet werden, so dass ein weiterer Encoder entfällt. Alternativ könnte ein 12V DC Motor mit hoher Untersetzung (30 rpm...60 rpm) als Antrieb für den Rotorarm zum Einsatz kommen. Beim Aufbau wurden folgende Prämissen gesetzt:
-
es werden keine Spezialmaschinen wie CNC-Fräse, Drehbank oder 3D-Drucker benötigt,
-
der mechanische Aufbau ist einfach und stabil und setzt keine Spezialkenntnisse voraus,
-
alle verwendeten Teile sind handelsüblich und können über das Internet bestellt werden
-
für den PID Controller, den Schrittmotor und die Auswertung der Encodersignale werden fertige Arduino Bibliotheken genutzt (GitHub)
Der mechanische Aufbau
Das Grundgerüst besteht aus einer Aluminiumplatte 270x200x2.5mm. Auf der Platte werden mittig zwei ALU Profile 30x30x300mm 30 B-Typ Nut 8 senkrecht befestigt. Diese werden oben mit einem Profil (100x30x30mm) quer verbunden. Am Querverbinder ist der Motorhalter befestigt. Auf der Motorwelle wird ein 60mm Zahnrad befestigt, dass als Befestigung für den Rotorarm dient. Alternativ kann die in der Tabelle aufgeführte Winwill® 1Pc 5mm Flanschkupplung benutzt werden (bei NEMA 23 Schrittmotor 6,25mm Bohrung!) Der Rotor besteht aus einem ALU Profilstab 200x20x20mm. Am Ende des Rotors wird mit einem NEMA 17 Motorwinkel der Winkelgeber befestigt. Die Entfernung zwischen Motorwelle und Winkelgeber sollte ca. 100mm betragen, d.h. der 200mm Rotorstab wird etwa mittig an der Motorwelle befestigt. Auf der Welle des Winkelgebers ist mittels Kupplungsstutzen der Pendelstab verschraubt (maker beam profil 10x10x300mm oder 10x10x200mm).

|

|
Grundgerüst mit Motorhalterung
|
Laboraufbau des inversen Pendels
|

|

|
Encoder mit Pendelstab
|
Rotorstab mit 60mm Zahnrad als Kupplungl
|
Dateien
Stromlaufplan mit Schrittmotor und Mircostepdriver LM542

Bilder und Links zu den Einzelteilen

Quimat Nema 17
Schrittmotor
|

SainSmart CNC-Mikroschrittschrittmotor Treiber 2M542
|

NEMA 17 Schrittmotor Halterung
|

OMRON Rotary
Encoder E6B2-CWZ6C 2000P/R 5V-24V
|

Schaltnetzteil 24V 6,5A ; MeanWell, RS-150-24
|

Maker Beam ALU Profil 10x10x300 als Pendelstab
|

Zahnrad 40 Zähne als Pendelgewicht
|

Zahnrad 60 Zähne als Kupplung
|

Winwill® 1Pc 6mm Starre
Flanschkupplung Motorführung Wellenkoppler Motoranschluss
|
|

MagiDeal Aluminium Schrittmotor Flexible Wellenkupplung
|
Inbetriebnahme des Pendels
Nach dem Laden des Programms und einschalten der 24V Stromversorgung für den Schrittmotor, muss das Pendel absolut ruhig und senkrecht nach unten hängen. Jetzt wird kurz die rote Resettaste auf dem Arduino Bord betätigt. Damit wird der Encodercounter mit dem Referenzwert -4000 geladen (eine volle Umdrehung sind 8000 Impulse, da die Endcoderbilbliothek die 2000 Impulse vervierfacht (Auswertung der steigenden und fallenden Signalflanken).
Danach bringt man das Pendel im Uhrzeigersinn in die aufrechte Position. Der Regler beginnt zu arbeiten und sollte das Pendel jetzt aufrecht halten. Sollte der Rotararm stets in die falsche Richtung steuern, müssen die Schrittmotoranschlüsse am Drivermodul getauscht werden. Weiterhin müssen die PI Reglerparameter Kp und Ki abgeglichen werden (leicht absenken oder erhöhen). Der Rotor sollte um einen kleinen Drehhwinkel von +/- 15 Grad hin- und herschwingen. Eventuell muss die Grundplatte des Pendels waagerecht ausgerichtet werden, falls das Pendel immer nach einer bestimmten Seite hin abdriftet. Zur Kontrolle der Reglerausgabe wird der serielle Plotter in der Arduino Box am PC geöffnet. Das Signal sollte innerhalb von +/- 40 verbleiben (siehe Graphik). Ist der Kp Wert zu hoch eingestellt, schwingt sich der Regler auf und die Stellgröße schwankt innerhalb der Grenzen von +/- 180.

Kp und Ki sind korrekt eingestellt

Kp und Ki sind zu hoch gewählt, das Pendel schaukelt sich langsam auf
Aufbauvariante II mit 12 V DC Motor
An Stelle des Schrittmotors kann ein DC Motor mit entsprechender Drehzahl- untersetzung (60rpm ... 30rpm = rotation per minute) gewählt werden. Diese Motoren gibt es in zahlreicher Ausfertigung. Im Beispiel wurde ein Modell 12V/50 rpm benutzt. In der untenstehenden Tabelle ist ein passender Befestigungswinkel gezeigt. Als Treiberplatine für den Motor wurde die H-Brücke IBT_2 verwendet zusammen mit einem 12 V Schaltnetzteil (dieses kann gleichzeitig den Arduino speisen - siehe Stromlaufplan.).
Gegenüber dem Schrittmotor (mit Micosteppsteuerung) ergibt sich ein unruhiger Lauf, da das Motorgetriebe ein zu großes Spiel aufweist. Dieses Spiel führt zu einer Totzeit in der Regelstrecke. Die Stellgröße baut sich unnötig groß auf, so dass die Ausgleichsbewegung stets ruckartig stattfindet. Der Motor versucht gegenzusteuern aber die Bewegung (Gegenkraft) kommt erst verspätet am Rotorarm an. Mit Hilfe einer Vorsteuerung könnte man versuchen die Totzeit zu kompensieren. Andereseits demonstriert dieser Aufbau ein Problem das in der Praxis häufig in Regelkreisen auftritt (z.B. Heizungsregler). An Stelle des Encoders mit 2000 p/r genügt auch das preiswerte Modell HN38-06-600N mit 600 Impulsen je Umdrehung. Zusammen mit dem DC Motor ist dieser Pendelaufbau dann für ca. 70€ deutlich preiswerter als die Schrittmotor-variante.
Programmcode: PID_rotDC.ino
Stromlaufplan mit 12V DC Motor

Stückliste für den Antrieb

37mm DC Getriebemotor Montagehalterung
|

12V DC Motor 50rpm
|

H-Brücke IBT_2
|

230V AC - 12V DC Schaltnetzeil
|

Inkrementaler Drehgeber 600 p/r
(Modell HN38-06-600N 8,30€ bei ebay)
|
|
|