Schrittmotor-Controller
Dies ist ein Software-Projekt des Autors, der einen typischen 2-Phasen-Schrittmotor für eine Punkt-zu-Punkt-Steuerungsaufgabe eingesetzt hatte. Als Steuerungshardware wurde ein preisgünstiger Standard-Arduino mit 16 Megahertz Taktrate verwendet. Dieser wird im folgenden als “Slave” bezeichnet. Die Steuer-Software für den Slave erlaubt eine Höchstgeschwindigkeit des Schrittmotors von 9990 Winkel-Inkrementen pro Sekunde.
Vereinfacht ausgedrückt besteht die Aufgabe darin, eine frei parametrierbare Strecke von Drehwinkel-Inkrementen in kürzestmöglicher Zeit abzufahren und punktgenau im Ziel anzukommen. Dabei ist dem bestehenden Trägheitsverhalten des Schrittmotors Rechnung zu tragen.
Dazu ist erforderlich, dass folgende Verfahr-Parameter vorgegeben werden können:
- Wegstrecke in Voll-Schritten bzw. Bruchteilen
- Start- bzw. Stopp-Geschwindigkeit in Winkel-Inkrementen pro Sekunde
- Beschleunigungs- bzw. Bremsrampen-Länge in Winkel-Inkrementen
- Plateau-Geschwindigkeit in Winkel-Inkrementen pro Sekunde
Ferner wurde folgendes Betriebsverhalten implementiert:
- Weiches Anhalten des Motors an jedem Punkt der unvollendeten Verfahr-Strecke ohne Schrittverlust
- Hartes Stoppen mit unvermeidlichem Schrittverlust
- Abfragen des erreichten Verfahrwegs durch übergeordneten Steuerungsrechner
- Einlesen des momentanen Zustands des Schrittmotorcontrollers
- Endlosfahren als Antriebsfunktion entsprechend vorgegebener Parameter mit Beschleunigungs- bzw. Bremsrampe
Als Vorlage zur Implementierung des realisierten Befehlssatzes für meinen Stepper-Controller, der bei mir hardware-mäßig auf dem Arduino-NANO (China-Clone mit CH340 serieller Schnittstelle) basiert, wurde auf eine kommerzielle Steuerung von SGS-Thomson zurückgegriffen, nämlich vom Typ SGS-THOMSON GS-C200S STEPPER MOTOR CONTROL AND DRIVE SYSTEM FAMILY. https://manualmachine.com/sgsthomsonmicroelectronics/gsdc200s/3889773-datasheet
Deren Produktion ist mittlerweile eingestellt. Mit dieser Schrittmotorsteuerung, die neben einem Slave-Betrieb auch für einen Stand-Alone-Betrieb vorgesehen ist, hatte ich in meiner beruflichen Industrie-Zeit gute Erfahrungen gemacht. Damit lässt sich ein durchdachtes Master-Slave-Prinzip implementieren: Der Master erzeugt die Fahrbefehle, übergibt sie seriell an den Slave, und dieser fährt die Fahraufträge ab. Der genannte Stand-Alone-Betrieb wurde von mir nicht implementiert, weswegen hier nicht darauf eingegangen wird.
![]() |
---|
Master-Slave-Betrieb |
Hier das Datenblatt des SGS-THOMSON GS-C200S, der als “INTELLIGENT STEPPER MOTOR CONTROLLER” bezeichnet wird: https://manualmachine.com/sgsthomsonmicroelectronics/gsc200s/3889778-datasheet
Der Stepper-Controller SGS-THOMSOM GS-C200S wurde um einen firmeneigenen Motortreiber-Modul ergänzt und im Format “Eurocard, 100mm * 160mm” über einen Zeitraum von etlichen Jahren produziert.
Als Master zur Steuerung des Slaves verwende ich einen Arduino UNO (China-Clone mit CH340 serieller Schnittstelle). An vier digitale Eingänge des Masters sind jeweils eine Drucktaste angeschlossen, im Schaltbild “T0” bis “T3” genannt. Auf diese Weise können einfachstmöglich vier programmierte Funktionalitäten per Tastendruck abgerufen werden.
In meiner hier veröffentlichten Master-Software sind diesen Tasten zwei zu demonstrierende, beispielhafte Funktionalitäten zugeordnet.
- T0: Periodisches Fahren des Slaves von Position null nach Position 10000 (Inkremente) und zurück, durch wiederholten Tastendruck im Toggle-Mode ausgelöst.
- T1: Schrittmotor als Antriebselement. Tastengesteuertes Drehen des Motors mit weichen Übergängen zum Stillstand, ebenfalls im Toggle-Mode.
Hinweis: ein “Homing” bzw. “Referenzpunkt-Fahren”, um in Form einer Initialisierungsphase eine definierte Referenz-Position des Schrittmotors anzufahren, auf die sich alle folgenden Fahr-Aktivitäten beziehen, wurde nicht implementiert. Sie kann aber anhand des vorhandenen Befehlssatzes vom Anwender auf der Masterseite individuell nachgebildet werden.
Eine weitergehende Beschreibung obiger Software-Funktionalität befindet sich im Kommentarteil des Quell-Codes, der hier heruntergeladen werden kann: Sourcecode Stepper-Controller Master.
Ein PDF-Dokument mit einer detaillierten Beschreibung, wie die Slave-Software ihre Aufgaben erfüllt, steht hier zum Download. Darin ist auch das Schaltbild der obengenannten Master-Slave Konfiguration enthalten.
Hier der Sourcecode für den Stepper-Controller Slave.
Wenn Ihnen die Funktionalität des reichlich kommentierten Source-Slave-Codes als privater Interessent gefällt, freue ich mich über eine kleine Spende im einstelligen Bereich auf mein privates paypal-Konto (bitte als Zahlung an Freunde).
Für einen kommerziellen Interessenten könnte meine Software gemäß bestehender Anforderungen weiterentwickelt werden. Nehmen Sie dazu bitte Kontakt auf.
Hinweis zur Software: Da diese ohne Gegenleistung abgegeben wird, verbleiben alle Rechte bei mir als Urheber. Eine Funktionsgarantie besteht nicht. Für evtl. Schäden, die aus der Benutzung dieser Software entstehen, wird keine Verantwortung noch Haftung übernommen
Hier ein Video, das die Demonstration der Master-Software zum Inhalt hat. Youtube-Video folgt in Kürze
Um die Kompatibilität des Ansteuerverhaltens meines Arduino-Masters in Bezug auf einen originalen THOMSON-Slave zu 100% sicherzustellen, wurde der Arduino-Slave durch einen originalen SGS-THOMSON GS-DC200 “INTELLIGENT STEPPER MOTOR CONTROLLER” ersetzt. Da es sich um eine Variante innerhalb der Familie “SGS-THOMSON Stepper-Motor-Controller handelt”, wurde genau ein einziger Fahrbefehl auf der Masterseite, nämlich der P-Befehl, an diesen Typ “GS-DC200” angepasst. Damit erwies sich der Probelauf als völlig identisch, so dass das Ergebnis der Prüfung auf Kompatibilität erfolgreich war.
Hier ein Bild der obengenannten Arduino-Master-THOMSON-Slave-Zusammenschaltung.
![]() |
---|
Master-Slave-Betrieb mit THOMSON GS-DC200 “STEPPER MOTOR CONTROLLER” |
Der vormals defekt gewordene und daher ausgelötete Motor-Treiber auf der THOMSON-Leiterkarte wurde durch einen externen Treiber mit größenmäßig angepasstem Zweiphasen-Getriebe-Schrittmotor ersetzt. Da die THOMSON-Schrittmotor-Controller Signal-Pegel gemäß dem seriellen Standard RS232 benötigen, wurde ein solcher Pegel-Wandler an die Datenleitungen RX, TX des Arduino Masters angeschlossen.