Anschrift eMail
SchrittMOtorSTeuerung SMOST
Wer hat nicht dem ein oder anderen Schrittmotor mit mehr oder weniger Erfolg Drehbewegungen zu entlocken versucht. Dabei ist die Schrittmotor-Endstufe das kleinere Problem, es scheitert oft an einer geeigneten Ansteuerung. Die hier vorgestellte Schrittmotor-Karte "SMOST" als Erweiterung zum 80C166-Controller-Board kann bis zu vier 2-Phasen-Schrittmotoren gleichzeitig steuern.
Mit der entsprechenden Software liefert das Controller-Board alle erforderlichen Impulse und reagiert auf Informationen von Tastern, Sensoren, Schnittstellen, usw.

Andere Schrittmotor-Karten mit Takt- und Richtungs-Eingang können ebenfalls angesteuert werden.
 

Blockschaltbild SMOST-Board
Technische Daten SMOST-Board
4 Schrittmotor-Endstufen mit jeweils
  • 2 bipolare Ausgangspaare, max. 0,5 A Phasenstrom
  • Strombegrenzung in 3 Stufen oder über Potentiometer
  • Cut-Off-Time 35 Sek, Stromabsenkung bei Stillstand
  • Voll- und Halbschritt, Schritte über GAL veränderbar
  • LED-Anzeigen für Takt und Richtung
  • 12 x Optokoppler-Eingänge (26-pol. Pfosten)
  • 4 x Nullpunktsensor, 8 x Positionssensor
  • 2 x Serielle Schnittstelle (14-pol. Pfosten)
  • 1 x PC-Anschluß (9600 Baud, 8 Bit, 1 Stop)
  • 1 x Reserve (Monitor-Programm)
  • 4 x Ein-/Ausgänge, +5V, GND (14-pol. Pfosten) Reserve
  • 10 x Taster für manuelle Steuerung, 1 Reset-Taster
  • 4 LED-Anzeigen für Betriebzustand
  • 4-poliger Dip-Schalter für Programm-Einstellungen
  • Versorgung 12 - 40 V Gleichspannung, ca. 2 A
  • Step-Down Wandler für 5 V Versorgung, max. 1 A

Erforderliche Bestückung auf dem 80C166-Board:
64 kB RAM, EPROM mit SMOST-Software, EEPROM.
Die 80C166-Pinbelegung für SMOST ist in Tabelle 6.
 
Schrittmotor-Begriffe und -Funktionen
Zum besseren Verständnis sollten zuerst einige prinzipielle Begriffe und Funktionen des Schrittmotors und seiner Ansteuerung geklärt werden.
 
Ein Takt alleine bewegt noch keinen Schrittmotor. Jeder Schrittmotor benötigt eine Elektronik, die aus dem Takt einen Ablauf mit entsprechenden Strömen und Stromrichtungen (Polaritäten) generiert. Betrachten wir als Beispiel einen Schrittmotor mit zwei um 90 Grad versetzte Polwicklungen (Phasen). Werden die Phasen bestromt, entsteht ein Magnetfeld. Der Rotor bewegt sich mit seinem Magnetpolpaar in eine Position, wo zwischen Rotor und Phase der Luftspalt am kleinsten und der Magnetfluß am größten ist (zur Erinnerung: ungleiche Pole ziehen sich an, gleiche stoßen sich ab). Durch Ändern der Bestromungsrichtung kann der Rotor vier verschiedene Positionen einnehmen. Polaritätsänderungen führen in einer bestimmten Reihenfolge zu einer Drehbewegung.
Nach jedem Takt müssen sich die Polaritäten ändern. Die Rotorpositionen sind in den Abbildungen dargestellt:
Bei der ersten Methode wird nur eine Phase bestromt (1 - 4):
Tabelle 1
Rechts-Drehung Links-Drehung
TaktPhase 1
Pol./Strom
Phase 2
Pol./Strom
  TaktPhase 1
Pol./Strom
Phase 2
Pol./Strom
1 0 1 X 0   1 0 1 X 0
2X001 2X011
311X0 311X0
4X011 4X001
Eine zweite Methode ist das Bestromen beider Phasen (1 - 4):
Tabelle 2
Rechts-Drehung Links-Drehung
TaktPhase 1
Pol./Strom
Phase 2
Pol./Strom
  TaktPhase 1
Pol./Strom
Phase 2
Pol./Strom
1 0 1 0 1   1 0 1 0 1
21101 20111
31111 31111
40111 41101
Ein Schrittmotor mit nur 4 Positionen liefert keine saubere Drehung; es sind mehr Rotorpositionen notwendig. Kombiniert man die beiden Vollschritt-Methoden, erhält man die Halbschritt-Steuerung (A - H).
Tabelle 3
Rechts-Drehung Links-Drehung
TaktPhase 1
Pol./Strom
Phase 2
Pol./Strom
  TaktPhase 1
Pol./Strom
Phase 2
Pol./Strom
A 0 1 X 0   A 0 1 X 0
B0101 B0101
CX001 CX011
D1101 D0111
E11X0 E11X0
F1111 F1111
GX011 GX001
H0111 H1101
Der Verlauf von der Start-/Stopfrequenz über die Beschleunigungsphase bis zur Hochgeschwindigkeitsphase sieht wie eine ansteigende Rampe aus und wird auch so bezeichnet. Das Anhalten des Schrittmotors erfolgt mit einer abfallenden Rampe, da der Rotor bei Abschalten der Taktfrequenz wegen seiner Masse unkontrolliert weiterlaufen würde. Informationen über die genaue Position gingen verloren.
Im Halbschritt-Betrieb besteht eine Sequenz aus 8 Takten. Auch hiermit wird der Beispiel-Motor noch "ruckeln", besonders bei kleinen Drehzahlen. Eine weitere Verbesserung ist möglich, indem die Bestromung nicht ein- und ausgeschaltet, sondern stufenweise gesenkt bzw. erhöht wird. Durch diesen Mikroschritt-Betrieb entstehen ruhige Drehbewegungen. Für einen Schrittmotor mit nur 4 Rotorpositionen ist diese Lösung allerdings nicht praktikabel; die Leistung, also das Drehmoment, nimmt stark ab und die Positionier-Genauigkeit geht verloren.
Durch mehr Polwicklungen und Rotor-Magnetpolpaare erhält man mehr Rotorpositionen. Im Allgemeinen besitzen Schrittmotoren viele Polwicklungen, die als 2 und mehr Phasen ausgeführt sind, teilweise mit Mittelanzapfung. Auf den Rotoren befinden sich mehrere Magnetpolpaare entweder auf einem Anker, der wie ein sehr breites Zahnrad ausgebildet ist, oder auf einer Scheibe. Die Anzahl der Motor-Winkelschritte kann durch langsames Drehen von Hand ermittelt werden. Es ist ein mehr oder weniger starkes "Einrasten" zu spüren.
In alten Festplattenlaufwerken befinden sich für die präzise Kopfpositionierung Schrittmotoren mit 200 und mehr (mechanischen) Winkelschritten. Dazu 3 Berechnungen:
  - Schrittwinkel = 360 Grad / 200 Winkelschritte = 1,8 Grad
  - Vollschritt = 200 Winkelschritte x 4 Takte = 800 Takte
  - Halbschritt = 200 Winkelschritte x 8 Takte = 1600 Takte
Da ein Schrittmotor mit 2 Phasen und 1 Magnetpolpaar im Halbschritt 8 Takte pro Umdrehung benötigt und der Festplatten-Schrittmotor 1600 Takte, erhalten wir über die Taktfrequenz keine Aussage zur Drehzahl, jedoch einen Anhaltspunkt für die Positioniergenauigkeit.
Ist eine hohe Drehzahl gefordert, sollte ein Schrittmotor mit gröberen Winkelschritten eingesetzt werden.
Bei Einschalten einer Taktfrequenz von 10.000 Hz dreht sich ein Schrittmotor nicht. Der Rotor ist zu träge, um dem schnell rotierenden Stator-Magnetfeld zu folgen. Mit einer sogenannten Start-/Stopfrequenz, die je nach Schrittmotor und Belastung zwischen 50 und 2.000 Hz liegt, ist ein sicherer Anlauf gewährleistet. Nach dem Start kann die Taktfrequenz erhöht werden. Diese Erhöhung bestimmt die Beschleunigung des Motors und darf beliebig langsam, jedoch nicht beliebig schnell erfolgen; der Schrittmotor steigt sonst aus. Ein Überschreiten der maximalen Taktfrequenz bzw. Drehzahl führt ebenfalls zum sofortigen Stillstand.
 
SMOST Software
Wie bereits angedeutet, werden alle Takte und Richtungs-Signale auf dem 80C166-Board mit der Software erzeugt. Jeder Takt wird in einem 32-Bit-Zähler registriert und kann als "Aktuelle Position" abgefragt oder verändert werden. Nach einer Nullpunktsuche wird dieser Wert auf Null gesetzt. Bei dem Kommando "Go" erstellt der Controller aus den Parametern "Untere Frequenz", "Obere Frequenz" und "Beschleunigung" eine Rampentabelle.
Die Takte werden mit diesen Werten für die steigende Rampe bis zur Hochgeschwindigkeitsphase ausgegeben. Ist der Dauerlaufmodus eingeschaltet, erfolgt die weitere Taktausgabe mit dem Parameter "Obere Frequenz". Bei einem "Halt"-Kommando wird die Rampentabelle in umgekehrter Reihenfolge für die fallende Flanke bis zum Stillstand abgearbeitet.
Ist der Positionier-Modus eingeschaltet, wird in der Tabelle zusätzlich die Differenz zwischen Aktueller Position und End-Position berücksichtigt sowie die Schrittzahl für die Hochgeschwindigkeitsphase ermittelt. Werden für die beiden Rampen mehr Schritte benötigt, als für die Differenz von Aktueller Position und End-Position erforderlich wären, kann die Hochgeschwindigkeitsphase nicht erreicht werden. Da nach dem Start alle erforderlichen Taktfrequenzen und Schritte berechnet sind, dürfen alle Parameter (ausgenommen der Dauerlauf- oder Positionier-Modus) verändert werden. Ein laufender Schrittmotor kann nur mit dem Kommando "Halt" vorzeitig angehalten werden.
Nach einem "Go" kann sogar unmittelbar das Kommando "Nullpunkt suchen" gegeben werden; nach Erreichen der End-Position sucht der Schrittmotor dann sofort seinen Nullpunkt.
Interessant ist noch der Parameter "Zwischen-Position". Immer wenn die Aktuelle Position gleich diesem Wert ist, sendet das Programm eine Meldung (z1...z4) über die serielle Schnittstelle. Dieser Parameter kann zu jeder Zeit und beliebig oft geändert werden. Eine Meldung wird auch gesendet, wenn Endposition (e1...e4) oder Nullpunkt (n1...n4) erreicht sind, bei Verlassen des Nullpunkts (v1...v4) oder bei Aktivieren der 8 Sensor-Eingänge (s1...s8).
Das Kommando "Nullpunkt suchen" führt nur dann zu einer Suche, wenn ein Nullpunkt-Sensor vorhanden ist und der Paramter "Ja, mit Nullpunktsensor" gesetzt ist. Bei "Kein Nullpunktsensor" wird nur die Aktuelle Position auf Null gesetzt und die Meldung (n1...n4) ausgegeben.
Alle Kommandos und Meldungen sind in Tabelle 5 aufgelistet.
SMOST Kommunikation
Die Kommunikation mit SMOST erfolgt über die serielle Schnittstelle mit 9600 Baud / 8 Bit / 1 Stopbit / No Parity. Mit einem PC-Terminal-Programm (ASCII-Übertragung) ist eine Steuerung und Abfrage von SMOST möglich. Für komplexe Schrittmotor-Abläufe ist jedoch ein Programm erforderlich, das Kommandos erzeugt und Meldungen auswertet.
SMOST empfängt alle Kommandos als Buchstabe oder ganzes Wort ohne Ziffern und Sonderzeichen. Zwischen Groß- und Kleinschreibung wird nicht unterschieden:
M1 / m2 / M 3 / m 4 / Motor 2
Mehrere Kommandos in einer Zeile sind zulässig; sie müssen durch Komma oder Doppelpunkt getrennt sein:
m1, t500 / M1, T500 / M1:T500:M2:T800 / Motor 1, Taktfrequenz 500
Nach einem Semikolon dürfen bis zum Zeilen-Ende Kommentare hinzugefügt werden:
M1,T500 ; Taktfrequenz 500 Hz für Motor
Alle Kommandos und Meldungen sind in der folgenden Tabelle zusammengefaßt.
SMOST Kommandos und Meldungen
  Kommando Parameter Beschreibung
?Hilfe-Hilfe abfragen
A* Aktuelle Position±2.147.483.648Aktuelle Position setzen / abfragen
B* Beschleunigung5 - 1.000Motor-Beschleunigung setzen / abfragen (Takte pro ms)
CCopy Data-Daten von Speicher in EEPROM kopieren
DDauerlauf-Modus0 / 1 - 4 / 9Dauerlauf-Modus ein (Positionier-Modus aus)
E* End-Position±2.147.483.648End-Position setzen / abfragen
eMeldung1 - 4Meldung "End-Position erreicht"
FFahrt Slow0 / 1 - 4 / 9Fahrt mit Takt-Frequenz (Slow) in angewählter Richtung
GGo0 / 1 - 4 / 9Motor starten / End-Position anfahren
HHalt0 / 1 - 4 / 9Motor anhalten
IInfo-Informationen abfragen (Status mit vorangestelltem Semikolon)
JJa, mit Nullpunkt0 / 1 - 4 / 9Nullpunkt-Sensor anfahren und akt. Position auf 0 setzen
KKein Nullpunkt0 / 1 - 4 / 9Kein Nullpunkt-Sensor; aktuelle Position direkt auf 0 setzen
LLinkslauf0 / 1 - 4 / 9Linkslauf bei Fahrten mit Takt-Frequenz (Slow)
MMotor aktuell *1 - 4Motor-Nr. für nachfolgende Kommandos setzen / abfragen
NNullpunkt suchen0 / 1 - 4 / 9Nullpunkt suchen mit Takt-Frequenz
nMeldung1 - 4Meldung "Nullpunkt erreicht"
O* Obere Frequenz50 - 20.000 HzObere Frequenz (Fast) setzen / abfragen
PPositionier-Modus0 / 1 - 4 / 9Positionier-Modus ein (Dauerlauf-Modus aus)
qMeldung0 - 9Quittierung (q0) und Fehlermeldungen (q1-q9)
RRechtslauf0 / 1 - 4 / 9Rechtslauf bei Fahrten mit Takt-Frequenz (Slow)
SStatus- / 0 / 1 - 4 / 9Status abfragen: M1,T500,U1000,O10000,B500,....
sMeldung1 - 8Meldung "Sensor erreicht"
T* Takt-Frequenz50 - 5.000 HzTakt-Frequenz (Slow) setzen / abfragen
U* Untere Frequenz50 - 5.000 HzUntere Frequenz (Start/Stop) setzen / abfragen
VVersions-Nr.-Versions-Nummer des Programms abfragen
vMeldung1 - 4Meldung "Verlassen des Nullpunkts"
WWiederholen0 / 1 - 4 / 9Wiederholen letzte Schrittzahl in letzter Richtung
XWiederh. umgekehrt0 / 1 - 4 / 9Wiederholen letzte Schrittzahl in umgekehrter Richtung
Z* Zwischen-Position±2.147.483.648Zwischen-Position setzen / abfragen
zMeldung1 - 4Meldung "Zwischen-Position erreicht"
*Zulässige Werte:0= aktueller Motor (mit M1 - M4 vorher gesetzt)
  1 - 4= angegebener Motor
  9= alle Motoren
  -= Zustand abfragen
SMOST Pinbelegung 80C166 Board
Funktion Bezeichnung Pin   Pin Bezeichnung Funktion
+5V Versorgung +5V 1bc 1   2 1a +5V +5V Versorgung
Ausg.SIO 2 TxD MonP3.8 / TXD12bc3  42aP1.12Ausg.SIO 2 RTS
Eing.SIO 2 RxD MonP3.9 / RXD13bc5  63aP2.12/CC12IOEing.SIO 2 CTS
GNDSIO 2GND4bc7  84aGNDGNDSIO 1
Ausg.SIO 1 TxD ProgP3.10 / TXD05bc9  105aP1.11Ausg.SIO 1 RTS
Eing.SIO 1 RxD ProgP3.11 / RXD06bc11  126aP2.11/CC11IOEing.SIO 1 CTS
+5VSeriell+5V7bc13  147aGNDGNDSeriell
Ein/Ausg.Seriell DataP1.108bc15  168aP2.10/CC10IOEin/Ausg.Seriell Clock
Eing.unbenutztNMI#9bc17  189aRSTIN#Eing.Reset-Taster
Ausg.4P3.15 / CLK10bc19  2010aP2.13/BREQ#Ausg.1
Ausg.2P2.14/HLDA#11bc21  2211aP2.15/HOLD#Ausg.3
Eing.Dip-Switch Bit 4P3.7 / T2IN12bc23  2412aP3.6 / T3INEing.Dip-Switch Bit 3
Eing.Dip-Switch Bit 2P3.5 / T4IN13bc25  2613aP3.4 / T3EUDEing.Dip-Switch Bit 1
Ausg.unbenutztP3.3 / T3OUT14bc27  2814aP3.2 / CAPINEing.Pos.-Sensor 7
Ausg.unbenutztP3.1 / T6OUT15bc29  3015aP3.0 / T0INEing.Pos.-Sensor 8
Eing.Taster 10 (Prog.)P2.9 / CC9IO16bc31  3216aP2.8 / CC8IOEing.Taster 9 (Shift)
Eing.Taster 8 (1)P2.7 / CC7IO17bc33  3417aP2.6 / CC6IOEing.Taster 7 (2)
Eing.Taster 6 (3)P2.5 / CC5IO18bc35  3618aP2.4 / CC4IOEing.Taster 5 (4)
Eing.Taster 4 (5)P2.3 / CC3IO19bc37  3819aP2.2 / CC2IOEing.Taster 3 (6)
Eing.Taster 2 (7)P2.1 / CC1IO20bc39  4020aP2.0 / CC0IOEing.Taster 1 (8)
Eing.Nullpunkt SM-1P5.0 / AN021bc41  4221aP5.1 / AN1Eing.Nullpunkt SM-2
Eing.Nullpunkt SM-3P5.2 / AN222bc43  4422aP5.3 / AN3Eing.Nullpunkt SM-4
Eing.Pos.-Sensor 1P5.4 / AN423bc45  4623aP5.5 / AN5Eing.Pos.-Sensor 2
Eing.Pos.-Sensor 3P5.6 / AN624bc47  4824aP5.7 / AN7Eing.Pos.-Sensor 4
Eing.Pos.-Sensor 5P5.8 / AN825bc49  5025aP5.9 / AN9Eing.Pos.-Sensor 6
GNDAnalog ReferenzVAGND26bc51  5226aVAREF+5VAnalog Referenz
Ausg.LED Prog.P1.927bc53  5427aP1.8Ausg.LED Shift
Ausg.Richtung SM-4P1.728bc55  5628aP1.6Ausg.Takt SM-4
Ausg.Richtung SM-3P1.529bc57  5829aP1.4Ausg.Takt SM-3
Ausg.Richtung SM-2P1.330bc59  6030aP1.2Ausg.Takt SM-2
Ausg.Richtung SM-1P1.131bc61  6231aP1.0Ausg.Takt SM-1
GNDVersorgungGND32bc63  6432aGNDGNDVersorgung