Servoantriebe

 

Natürlich sollen sich auf einer Modellbahnlage nicht nur die Züge bewegen. Auch andere bewegte Objekte steigern die Attraktivität einer solchen Anlage sehr. Aus diesem Grund habe ich vor geraumer Zeit anlässlich einer Elektronik-Bestellung ein paar sehr preiswerte Servoantriebe mit bestellt.

 

Die Wahl ist hierbei auf den Typ SG90 gefallen. Dieser Typ benötigt eine Betriebsspannung von 5 V, die bei mir auf der Anlage ja quasi ein Standard ist. Der Servo hat einen Stellbereich von 180° und eine Stellkraft von beachtlichen 10 N, womit man im Rahmen einer MOBA eigentlich alles was man will bewegen kann. Außerdem sind die Antriebe mit den Abmessungen 12x24x23 mm sehr kompakt. Zum Zubehör zählen auch noch verschiedene Servohörner, so dass ich für einen späteren Einsatz bestens gerüstet war.

 

Klar, auch diese Antriebe sollen über den Raspberry angesprochen und betrieben werden. Die richtige Verwendung der nur drei Anschlussleitung (5V, Masse, PWM-Signal) ist schnell herausgefunden, auch wenn die Kabel nicht bei allen Herstellern in Farbe und Anordnung einheitlich sind.

 

Nur ganz kurz: PWM steht für „Puls-Weiten-Modulation“. Positioniert (also die Einstellung der gewünschten Winkelstellung) wird der Servo, in dem für eine Zeitspanne von 1 bis 2 ms auf der PWM-Leitung eine 5 V Spannung angelegt wird. Die genaue Länge dieses Impulses legt dann fest in welche Position sich der Servo dreht (Grafik aus oben genannter Quelle entnommen).

Zum Glück zählt zu den Standard-Modulen der Programmiersprache Python beim Raspberry eine Möglichkeit, auf einzelnen GPIO-Pins ein entsprechendes PWM-Signal auszugeben. Mehr hierzu in der genannten Quelle. Pro Servoantrieb wird also lediglich ein freier GPIO-Pin benötigt.

 

Nun musste ich nur noch, in Abhängigkeit von der konkreten Nutzung des Antriebes, festlegen, in welchem Winkelbereich der Antrieb sich bewegen soll. So ist z.B. bei den Lokschuppentoren auszuprobieren, bei welcher Stellung des Servos das entsprechende Tor auf bzw. zu ist.

 

Damit eine schöne fließende Drehbewegung zu Stande kommt, bewege ich den Servo nicht zwischen diesen beiden Endstellungen in einem Schritt, sondern unterteile den Winkelbereich, der konkret benötigt wird, in mehrere gleich lange Teilschritte. Diese Teilschritte lasse ich dann den Raspberry z.B. mit jeweils 500ms Pause nacheinander ausführen. Hier muss man ein wenig probieren, bis einem der Bewegungsablauf gefällt.

 

Bei der Bewegung des Bekohlungskrans kommt ebenfalls einer dieser Servo-Antriebe zu Einsatz. Der Vorteil ist hier, dass gar kein Servohorn benötigt wird, da ich den drehbaren Teils des Krans direkt auf die Servo-Achse montieren konnte und so die Mechanik äußerst simpel ist.

 

Wie an anderen Stellen auf meiner Anlage auch: Über den Raspberry werden zu den ausgeführten Bewegungen authentische Geräusche (z. B. Knarren und Quietschen der Tore, Zufallen der Tore usw.) zeitlich stimmig ausgegeben.

 

Auf dem Display des RaspPi2 werden zur Bedienung der Lokschuppentore und des Bekohlungskrans entsprechende Bedien-Button eingerichtet. Die farbliche Hinterlegung dieser Button zeigt die jeweilige Position der Antriebe.

 

Da die eigentliche Ansteuerung der Servo-Antriebe vom Raspberry PiZero ausgeführt findet auch hier zwischen den Raspberries eine Kommunikation via UDP statt. Eine Beschreibung zu dieser Technik habe ich bereits in Abschnitt Kommunikation gegeben.