Hallo Zusammen,
ich will mich ja schon seit Jahren mit Stepper Motoren beschäftigen. Jetzt bin ich endlich dazu gekommen und habe das erste Projekt soweit, dass die Software einigermaßen fertig ist.
Mit den genialen MobaTools von Franz-Peter (@MicroBahner) und noch einigen anderen Arduino Bibliotheken habe ich eine Steuerung für eine Drehscheibe erstellt.
Vielen Dank an alle die solche tollen Bibliotheken schreiben und kostenlos zur Verfügung stellen.
Basis für das Programm ist eine 3D gedruckte Scheibe von https://www.thingiverse.com/thing:1837520
Diese Drehscheibe hat aufgrund der mechanischen Toleranzen ein entsetzlich großes Spiel. Die Scheibe lässt sich am Rand um 10mm verdrehen und läuft extrem unruhig. Aber es ist ein tolles frei verfügbares Projekt und darum habe ich mir vorgenommen, dass ich dieses Teil mit einem Arduino ansteuern will.
Wenn es mir gelingt, dass diese Drehscheibe automatisch zu steuern ist, dann kann das Programm jede andere Drehscheibe bedienen.
Und es sieht schon ganz Gut aus. Jetzt erst mal ein paar Bilder (Mit freundlicher Genehmigung aus diesem Thread: viewtopic.php?t=140471&start=401&sd=a).
Angefangen hat es auf dem Stummi Treffen in Böblingen. Dort wurde Frank (@fbstr) diese Scheibe vorgestellt:
Sie ist für diesen 1.5 € Schrittmotor gedacht:
Das hat mir genau so gut gefallen wie Frank. Dummerweise habe ich gefragt ob mir jemand so eine Scheibe drucken kann. Wenn ich gewusst hätte wie viel Zeit mich diese Frage gekostet hat ;-(
Hier ein paar Details zum Aufbau der Bühne und der Scheibe:
Es ist einfach schön.
Mit etwas Farbe wirkt sie gleich viel besser:
Hier zeigt Frank dass sie sich tatsächlich mit dem Spielzeugsteppermotor dreht:
Dazu muss eine Leiterbahn im Stepper unterbrochen werden und das rote Kabel wird auch nicht verwendet:
Dieses Bild gefällt mir besonders Gut:
(Mit einem Klick auf das Bild könnt Ihr es vergrößern)
Details:
Die Steuerung der Drehscheibe basiert auf einem Arduino Nano. Dabei war es eine große Herausforderung all die Features die ich mir überlegt hatte in den kleinen Prozessor zu quetschen:
- Manuelle Steuerung per Poti:
Die Scheibe kann sehr schön über ein Poti mit Mittelstellung wie man es vom Balance Regler eines Verstärkers kennt gesteuert werden. In der Mittleren Position steht der Motor und wenn man den Regler nach links dreht, dann dreht sie sich in diese Richtung. Die Bewegt sich schneller je weiter man das Poti verdreht. Frank wollte sich mit dieser Funktionalität schon Zufrieden geben. Aber das geht natürlich nicht… - Automatische Steuerung per Drehschalter:
Viel komfortabler ist es mit einem Drehschalter. Diesen dreht man einfach um die gewünschte Anzahl von Schritten in die entsprechende Richtung und die Scheibe wird Automatisch zu dem Entsprechenden Gleis gedreht. - Kürzester Weg:
Das Programm berechnet automatisch immer den kürzesten Weg von der aktuellen Position zur Zielposition. Das klingt trivial, hat mich aber auch einige graue Haare gekostet, weil sich die Scheibe mehrfach drehen kann. Die Position 30° ist genau gleich wie 390° und auch das gleiche wie -330°: - Display:
Zur Visualisierung der Position und für ein Menü hat die Steuerung noch ein OLED Display bekommen. Momentan unterstützt das Programm drei verschiedene Displays:
0,87" I2C 128x32 OLED SSD1316 (https://de.aliexpress.com/item/4000182887362.html)
0.91" I2C 128x32 OLED SSD1306 (https://de.aliexpress.com/item/4001028654247.html)
0,96" I2C 128X64 OLED SSD1306 (https://de.aliexpress.com/item/32643950109.html) - Steuerung per DCC:
Natürlich muss das Teil auch über eine Zentrale steuerbar sein. Dazu kann man zunächst das DCC Protokoll verwenden. Später sollen Selectrix und der Märklin CAN Bus hinzukommen. Jede Position kann über ein eigenes DCC Kommando angefahren werden. Zusätzlich gibt es zurzeit 30 weitere Befehle mit denen Funktionen wie das Reversieren der Scheibe, das Licht im Häuschen oder aber auch Sound Dateien abgerufen werden können. Damit kommen wir zum nächsten Punkt. - Sound:
Bei einer richtigen Drehscheibe müssen die Arbeiter gewarnt werden, wenn sich die Scheibe in Bewegung setzt. Dazu ertönt ein Horn. Mit einem Soundmodul für 1.21 € und ein paar Zeilen Code ist auch das machbar. Tatsächlich hat mich dieser Teil mindestens 10 Stunden gekostet, weil die Bibliothek dafür den Arduino während der Wiedergabe komplett lahmgelegt haben und außerdem unendlich viel Speicher verbraucht haben. Jetzt dauert das starten eines Sounds nur noch 42us und kostet 190 Byte. Momentan können 8 verschiedene WAV-Dateien per DCC oder Automatisch abgerufen werden. - Licht:
Zur akustischen Warnung gehört auch eine optische Warnung. Darum habe ich eine Funktion zum ansteuern einer LED hinzugefügt. Diese kann, wenn sich die Scheibe dreht Blinken oder doppelt blitzen.
Über einen zweiten Ausgang des Arduinos kann man die Beleuchtung im Führerhaus per DCC steuern. - Relais:
Die Zweileiterfahrer haben ja immer das Problem, dass die Polarität der Schienen zueinander passen muss damit die Räder keinen Kurzschluss erzeugen. Dafür habe ich im Programm eine entsprechende Steuerung eingebaut. Bei dieser kann man für jedes Gleis individuell bestimmen welche Polarität die Schienen auf der Bühne haben sollen. Üblicherweise reicht es, wenn man die eine Hälfte der Schienen mit der einen Polarität ansteuert und die andere mit der Anderen. Bei Franks Bahnpark Augsburg reicht das aber nicht, weil hier die Gleisabgänge so dicht beieinander liegen, dass sich die benachbarten Schienen überkreuzen: viewtopic.php?f=170&t=140471&start=58&sd=a - Rückmeldung an die Zentrale:
Am liebsten hätte ich noch ein S88 Rückmeldemodul in die Software gepackt. Aber das wird nicht klappen, weil bereits alle beiden Interrupt fähigen Eingänge belegt sind und weil der Speicher dazu vermutlich nicht ausreicht. Darum habe ich nur einen Ausgang vorgesehen welcher über einen Optokoppler ein S88 Modul ansteuern kann. - Schrittgenerierung:
Die MobaTools unterstützen verschiedene Arten zur Generierung der Signale für einen Schrittmotor. In diesem Projekt wird dafür ein fertiges Stepper Modul verwendet. Das kann ein „A4988“ Modul für 50 Cent in China oder das bessere „TMC2100“ Modul verwendet werden. Letzteres steuert den Schrittmotor viel besser an so dass man diesen gar nicht mehr hört. Bei dem Spielzeugmotor ist das unwichtig. Diesen hört man nicht. Wenn aber ein Richtiger Stepper verwendet wird, dann sollte man die paar Euros investieren. Dummerweise habe ich anscheinend die Letzen Platinen in China gekauft. Ich werde demnächst mal den Nachfolger „TMC2130 V1.0“ testen.
Beide Platinen haben den Großen Vorteil, dass sie auch Große Schrittmotoren Ansteuern können. Sie Regeln den Strom des Motors über eine integrierte Elektronik. Dadurch können sie mit einer größeren Spannung betrieben werden. Das ist bei hohen Schrittgeschwindigkeiten unbedingt notwendig. Der kleine 5V Stepper sollte mit mindestens 14V Betrieben werden damit das Magnetfeld bei großen Drehzahlen schnell genug Aufgebaut wird. - Kalibrierung:
Das Programm muss wissen wo sich die Drehscheibe befindet und wie viele Schritte es zu welchem Port sind. Dazu wird der Hallsensor „TLE4905L“ verwendet. Alternativ könnte man auch eine Gabellichtschranke verwenden. Anfangs hatte ich es mit einer billigen Reflexlichtschranke probiert. Aber das hat nicht richtig funktioniert. Die Positionsrückmeldung war sehr ungenau und außerdem hat das Signal stark geprellt. Vielleicht geht es auch mit einem Reed Kontakt.
Wichtig ist, dass dieses Signal sehr genau ist denn darauf bezieht sich die Positionierung der Scheiben. Beim ersten Start ermittelt das Programm die Anzahl der Schritte für eine Volle Umdrehung und das Spiel der Zahnräder. Dazu dreht es die Scheibe ein paarmal hin und her. Auf diese Weise kann es mit jeder beliebigen Übersetzung verwendet werden.
Die Positionen der Gleise werden zunächst automatisch gerechnet. Meistens ist das aber wegen mechanischer Toleranzen nicht ganz genau. Darum kann man die exakte Position jedes Gleises speichern indem man es einmal manuell von beiden Richtungen her Anfährt. Dadurch funktioniert auch die Positionierung bei der 3D gedruckten Scheibe erstaunlich genau. Momentan werden aber noch manchmal ein paar Schritte verloren. Das muss ich noch mal untersuchen. Und den Motorstrom und die Geschwindigkeitskennlinie entsprechend anpassen. - Parametrierbarkeit:
Das Programm soll auf allen möglichen Anlagen eingesetzt werden können. Darum habe ich sehr viele Parameter vergeben über die man das Verhalten an die eigenen Bedürfnisse anpassen kann. Momentan stehen 110 solcher Parameter zur Verfügung.
Ausblick:
Noch ist nicht alles was ich mir gedacht habe umgesetzt. Es fehlt noch folgendes:
- Platine:
Demnächst möchte ich eine richtige Platine für das ganze machen. Diese soll möglichst einfach zu bestücken sein so dass sie jeder selber löten kann. Wenn Ihr noch Ideen habt was ich auf dieser Schaltung noch berücksichtigen kann dann sagt Bescheid. - Segmentscheibe / Schiebebühne / Zug Lift:
Das Programm sollte auch für andere Projekte auf der Modelanlage eingesetzt werden können bei dehnen es um das exakte Anfahren bestimmter Positionen geht. Dabei kann man zwei verschiedene Arten Unterscheiden. Eine Drehscheibe oder ein Paternoster ist eine Anlage bei der es eine Endlose Drehung möglich ist.
Bei einer Segmentscheibe, einer Schiebebühne oder einem Zug Lift gibt es einen Mechanischen Anschlag auf beiden Seiten. Darum muss die Nullpunkterkennung angepasst werden. Eine Position kann nicht wie bei einer Drehscheibe von zwei Seiten her Angefahren werden. Das muss im Programm deaktiviert werden. - Automatisches Diagnosen:
Ich möchte noch einige Erweiterungen in das Programm einbauen mit dem man Fehler finden kann. Ein Punkt ist das Automatische Erfassen von verlorenen Schritten. - Rekalibrierung:
Die Schrittmotoransteuerung verwendet Sogenannte Microsteps. Ein Schritt wird dabei in 16 Zwischenschritte unterteilt. Das hat den Vorteil, dass sich die Bühne viel feiner Positionieren lässt. Ich muss mir noch eine Methode einfallen lassen wie man diese Microsteps beim wiedereinschalten der Versorgungsspannung zum Treiber schicken kann. Problematisch dabei ist das Magnetische Verhalten bei Größeren Schrittmotoren. Diese drehen sich aufgrund der eingebauten Permanentmagnete nach dem Abschalten der Versorgung ein Stückchen vor oder zurück. Bei einem kleinen Stepper und einer entsprechenden Übersetzung merkt man das nicht. - Selectrix und CAN:
Die Scheibe soll später auch mit Selectrix und dem Märklin CAN ansteuerbar sein. Das sollte aber kein Problem sein. Darum werde ich das später angehen. Erst mal muss die Platine entwickelt und in China gefertigt werden. - Tests:
Das Programm muss mit den Verschiedenen Hardware Kombinationen getestet werden. Dazu brauche ich Eure Unterstützung. - Irgendwann wird das Programm in die Excel Tools der MobaLedLib integriert so dass man es genau so komfortabel und ohne Programmierkenntnisse anpassen und zum Arduino schicken kann. Die Drehscheibe wird aber nicht über den LED Bus angesteuert werden.
=> Darum steht das MobaLedLib im Titel (Und Außerdem ist es ja inzwischen so was wie ein Markenname) - …
Jetzt seid Ihr dran:
Was fällt Euch noch zum Thema Drehscheibe ein ?
Was muss unbedingt noch rein ?
Hardi