Diese Schaltung wurde ursprünglich
zur Ansteuerung von 4-Phasen-
Schrittmotors entwickelt, die durch
Ausbau aus ausgemusterten
Diskettenlaufwerken sehr preiswert zur
Verfügung stehen. Das Interface selbst
kostet auch nicht viel, da es überwie-
gend aus Standard-Bauteilen besteht.
Die Steuersoftware für den PC wurde
mit Delphi entwickelt und unterstützt
eine Reihe von Basisbefehlen, wie die
Definition von Drehrichtung zurückzule-
gender Schrittanzahl.
Schritt für Schritt
Schrittmotore sind Gleichstrommotore,
bei denen sich die Drehung der Achse
bekanntlich recht genau durch eine
Anzahl von definierten Schritten steu-
ern läßt. Das erfordert aber eine etwas
aufwendigere Ansteuerelektronik und
im Falle der Steuerung durch einen
Rechner eine entsprechende
Software. Da es unterschiedliche Arten
von Schrittmotoren gibt, ist das
Interface meist auf eine bestimmte
Ausführung zugeschnitten. In unserem
Fall sind das sogenannte unipolare
Motoren mit vier Phasen. Diese
Ausführung weist Wicklungen mit
Mittelanzapfungen auf, so daß sich
das Magnetfeld ohne Änderung der
Stromrichtung umpolen läßt. Bild 1
zeigt den prinzipiellen Aufbau eines
solchen Motors mit der Schaltung der
Wicklungen. Die vier Wicklungen wer-
den durch eine Impulsfolge (siehe
auch Bild 2) nacheinander aktiviert,
wodurch sich die Motorachse (der
Rotor) zu drehen beginnt. Die
Drehrichtung hängt von der
Reihenfolge ab, in der die Wicklungen
gepulst werden. Die
Drehgeschwindigkeit hingegen hängt
von der Frequenz ab, mit der die
Impulse aufeinander folgen. Der
Schrittmotor ist daher ein Motor, bei
dem Drehrichtung und
Geschwindigkeit digital eingestellt
werden können. Wenn sich die
Impulse überlappen, ist der Motor nie
außer Kontrolle - eine separate
Motorbremse ist daher überflüssig.
Der Wicklungswiderstand und damit
Wicklungsstrom und Wicklungsspan-
nung sind je nach Ausführung des
Motors sehr unterschiedlich. Um auch
unterschiedliche Motoren betreiben zu
können, wurde für die Ausgangsstufe
der Schaltung eine Darlingtontransistor
TIP112 verwendet, der Ströme bis 1 A
X-14 - 5/99 Elektor
EXTRA
———————————————————— PC-P
LUS
Dieser Beitrag stellt ein Schrittmotor-Steuer-Interface
für den direkten Anschluß an die serielle Schnittstelle
des PCs vor. Die Lösung ist insofern ungewöhnlich, als
daß für das Interface ein I
2
C-Baustein verwendet
wird, wobei der PC selbst über die serielle Schnittstelle
das I
2
C-Protokoll unterstützt. Die Software läuft unter
Windows 95/98.
Entwurf: Z. Otten
M
A1
A2
B1
B2
990027 - 11
I
2
C-
Schrittmotorsteuerung
Unipolare Schrittmotore digital gesteuert
Bild 1. Prinzipschema des Aufbaus eines unipolaren Schrittmotors.
problemlos schaltet. Auch der Motor-
spannungsbereich ist mit 5 bis 25 Volt
recht groß und für alle gängigen Moto-
ren ausreichend. Die vollständige
Schaltung der Schrittmotorsteuerung ist
in Bild 3 zu sehen.
Einfache Ansteuerung
Da die Ansteuerung der Transistoren
mit einem relativ einfachen, sich wie-
derholenden Impulsmuster erfolgt,
kann der Logikteil der
Ansteuerschaltung mit nur drei ICs
auch recht einfach gehalten werden.
IC2 ist ein Binärzähler vom Typ
74HC(T)193, der mit dem von IC1
(PCF8574) gelieferten Takt angesteuert
wird. Eine ansteigende Flanke an Pin 5
(aufwärts) erhöht den Zählerstand um
1, eine ebensolche Flanke an Pin 4
(abwärts) verringert den Zählerstand
um 1. Die Ausgänge Qa (Pin 3) und Qb
(Pin 2) zählen von eins bis vier und lie-
fern damit die Basis für die vier Phasen
der Motorsteuerung. Der nachge-
schaltete 74HC(T)155 ist ein 2-nach-4-
Dekoder. Abhängig vom binären Kode
am Eingang ist immer ein Ausgang
Low. Daraus müssen jetzt die Signale
für die Ansteuerung der vier
Transistoren abgeleitet werden. In Bild
4 ist gezeichnet, wie mit Hilfe von vier
NAND-Gattern die gewünschten
Steuersignale A, B, C und D erzeugt
werden. Mit den High-Pegeln von den
NAND-Ausgängen werden die
Transistoren aufgesteuert, so daß
Strom über die angeschlossene
Motorwicklung fließt.
Für IC2 und IC3 können LS-, HC- oder
HCT-Typen verwendet werden. Für IC4
sollten nur HC- oder HCT-Ausführungen
verwendet werden, da mit LS-TTL nicht
genug Basisstrom für die Transistoren
zur Verfügung steht.
Die I
2
C-Schaltung ist etwas unkonven-
tionell ausgelegt. Mittelpunkt ist IC1,
ein PCF8574. Dieses Philips-IC gibt es
auch in einer anderen Version als
PCF8574A. Der Unterschied liegt in der
Basisadresse, die beim einen $0H und
beim anderen 70H ist.
Das Taktsignal liefert der PC bei der
Ausführung des Programms an der
TxD-Leitung der seriellen Schnittstelle.
Die bidirektionale Kommunikation, wie
sie auf der SDA-Leitung zu finden ist,
wird mit Hilfe der Signale CTS und DTR
der seriellen Schnittstelle abgewickelt.
Die serielle Schnittstelle bietet sich
dafür besonders an, weil sie gut in
Entwicklungsumgebungen wie Visual
Basic und Delphi eingebunden ist.
Die Widerstände R4 und R5 sorgen
zusammen mit D1 und D2 für die
Begrenzung der RS232-
Signalspannungen auf TTL-Niveau.
CTS und DTR liegen miteinander ver-
knüpft am SDA-Eingang von IC1,
während TxD mit SCL verbunden ist.
Mit Hilfe der Jumper Jp1 bis JP3 läßt
sich die Basisadresse von IC1 selek-
tieren. Damit können maximal acht
Interfaces an dem I
2
C-Bus parallel
betrieben werden. Theoretisch ste-
hen daher 2 x 8 x 8 = 128 I/O-
Leitungen (parallele Anschlüsse) zur
Verfügung. Für unsere Anwendung
genügt aber erst einmal ein
Controller, von dem auch nur drei
Anschlüsse verwendet werden. P0
steuert eine LED an, P1 und P2 steu-
PC-P
LUS
———————————————————
Elektor
EXTRA
X-15 - 5/99
Bild 2. Das Impulsdiagramm illustriert die Ansteuerung des Schrittmotors.
Bild 3. Schaltplan des Schrittmotor-Interfaces mit I
2
C-Schnittstelle.
B2
A2
B1
A1
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
992027-12
t
K1
1
2
3
4
5
6
7
8
9
R5
6k8
R4
6k8
D1
5V1
D2
5V1
R1
330
Ω
R2
330
Ω
JP2
JP1
JP3
D3
R3
220
Ω
74HCT155
X / Y
IC3
13
EN
14
15
EN
10
11
12
2
1
&
7
6
5
4
0
1
2
3
1
α
β
α
α
α
α
3
2
&
9
0
1
2
3
β
β
β
β
IC1
8574
INT
SCL
SDA
PCF
10
11
12
15
14
13
P0
P1
P2
P3
P4
P5
P6
P7
A2
A1
A0
16
4
5
6
1
2
3
7
9
8
74HCT193
1CT=15
2CT=0
IC2
G1
G2
10
3D
C3
15
11
14
12
13
2+
1–
1
5
6
2
R
7
3
9
4
1
2
3
IC4a
&
13
12
11
IC4d
&
4
5
6
IC4b
&
10
9
8
IC4c
&
R6
820
Ω
R7
820
Ω
R8
820
Ω
R9
820
Ω
T1
T2
T3
T4
IC2
16
8
IC3
16
8
IC4
14
7
IC4 = 74HCT00
5V
5V
TxD
CTS
DTR
GND
1
0
1
0
1
0
5V
12V
A1
B1
A2
B2
(A)
A1
B1
A2
B2
992027 - 13
M1
M
ern die Laufrichtung des Motors.
Die Betriebsspannung der Schaltung
beträgt 5 V bei einer Stromaufnahme
von etwa 90 mA. Die Spannung am
Motor selbst hängt vom verwendeten
Motor ab. Besondere Anforderungen
werden an die Motor-Stromversorgung
nicht gestellt. Wenn der benötigte
Strom nicht bekannt ist, kann man den
Widerstand der Motorwicklungen aus-
messen und den Strom bei gegebener
Betriebsspannung berechnen.
Bits und Bytes
Die Software für das Interface wurde
mit Delphi 3.0 entwickelt und läuft
unter Windows 95/98. Die verwendete
Pascal-Unit kann aber auch für andere
(zum Beispiel selbst entwickelte)
Programme verwendet werden. Die
Unit enthält die Routinen zur Erzeugung
der Signale konform zum I
2
C-Protokoll
und zum Schreiben und Lesen nach
IC1. Auf der Diskette steht auch eine
Unit zur Verfügung, die sich unter DOS
verwenden läßt. Die Ausgänge P0 bis
P7 können direkt mit einem 8-bit-Wort
angesteuert werden. Wir der Ausgang
P1 nacheinander Low und High
gesteuert, bewegt sich die
Motorachse um einen Schritt nach
links. Ebenso verhält es sich bei P2 für
die andere Drehrichtung.
Wie bereits erwähnt, bestimmt die
Impulsfrequenz die Drehgeschwindig-
keit. Die maximal mögliche Impulsfre-
quenz hängt im Prinzip von der Rechen-
geschwindigkeit des PCs ab. Um diesen
Effekt zu eliminieren, wird in der Soft-
ware eine Motorkonstante definiert. Der
Wert dieser Konstante muß so gewählt
werden, daß sich eine für die
gewünschte Drehzahl ausreichende
Impulsfrequenz ergibt.
In Bild 5 sieht man, wie sich das
Programm (VPLS1.EXE) für den
Anwender darstellt. Der linke Teil des
Fenster bezieht sich auf die
Kommunikation mit dem I
2
C-Interface,
der rechte Teil auf den Motor. Nach
dem Aktivieren von ”Testl2C” muß die
LED geschaltet werden. Der Status der
Ein-/Ausgänge P0 bis P7 wird in einem
Fenster angezeigt, dafür wir der
Binärinhalt des Statusbytes von IC1
verwendet. Im gleichen Fenster kann
man auch die erwähnte
Motorkonstante einstellen. Mit zwei
Buttons kann man die in einem zuge-
ordneten Fenster eingetragene
Schrittanzahl ausführen. Ein Zähler
zeigt die momentane Stellung des
Motors anhand der Anzahl der ausge-
führten Schritte an.
Da Schrittmotore meist als Teil eines
größeren Systems verwendet werden,
ist es wichtig, daß man die
Steuersoftware in die übergeordnete
Systemsoftware einbinden und nach
Bedarf anpassen kann. Auf der
Diskette (EPS 996014-1) ist deshalb
auch der Quellkode verfügbar.
(992027e)
X-16 - 5/99 Elektor
EXTRA
———————————————————— PC-P
LUS
992027-14
t
1
3
2
1
4
3
2
1
4
3
1
2
3
4
2
3
4
&
&
&
&
1
2
4
5
10
9
13
A
B
C
D
A
B
C
D
12
1 + 4
1 + 4
2 + 1
2 + 1
3 + 2
3 + 2
4 + 3
4 + 3
Bild 4. Die Signale des 2-nach4-Umsetzers werden mit den NAND-Gattern so verknüpft,
daß die Transistoren der Strangtreiber direkt angesteuert werden können.
Bild 5. Die Windows-Benutzeroberfläche des Programms, das einschließlich Quellkode
verfügbar ist.