| Weitere Artikel aus dem Elo-Magazin |
Schrittmotorgesteuerter Miniroboter
Ansteuerung des Miniroboters durch PC und Mikrocontroller
von Hermann Nieder
Kontaktaufnahme mit dem Miniroboter über die Druckerschnittstelle
Ich besitze noch einen 486er-PC, den ich auch noch für meine Projekte verwende. Er war ursprünglich mit zwei seriellen Schnittstellen und einer Druckerschnittstelle ausgestattet. Ich habe in den PC noch eine zusätzliche Druckerschnittstelle eingebaut. Er hat seinen Platz in meinem Hobbyraum, obwohl er nicht mehr modern ist. Für meine Zwecke reicht das aus, was ich mit diesem PC tun kann, nämlich z. B. für meine Elektronik-Projekte kleine Programme in QBasic oder Turbo Pascal erstellen.
Die Übermittlung der Steuerbefehle erfolgt z.B. über eine Interface-Platine wie die oben im Bild dargestellte.
Ganzen Artikel lesen...

Die grundsätzliche Schaltung ist entnommen aus einem Fachbuch von Dieter Bitterle, in dem das Messen, Steuern und Regeln mit dem PC behandelt wird [1]. Ein Daten-Byte von der Druckerschnittstelle wird auf der von mir gestalteten Schaltung auf einer Lochrasterplatine wie im Fachbuch über ein Treiber-IC des Typs 74LS245 an die äußere Schaltung herangeführt. Das zweite IC ist ein 74LS257, das es gestattet, ein Byte von einer äußeren Schaltung einzulesen. Ich habe noch drei Leuchtdioden mit Vorwiderständen zur Signalanzeige vorgesehen und eine Leuchtdiode mit Vorwiderstand zur Betriebsanzeige eingebaut. . Die Spannungsversorgung geschieht mit einem 5V-Spannungsregler. Auf der Eingangsseite befinden sich eine Buchse für ein Steckernetzteil, ein Schalter und eine Sicherung. Eine Diode des Typs 1 N 4003 dient als Verpolungsschutz. Außerdem befinden sich auf der Platine zwei Schiebeschalter, zwei Taster sowie eine 20-polige schmale IC-Fassung. Ihre Pins sind wie die der Schalter, Taster, der Ics, die 5V-Ausgangsseite des Spannungsreglers, der gemeinsame Minuspol von Steckernetzteil und Spannungsregler sowie die Leuchtdioden mit ihren Vorwiderständen jeweils an Lötstifte angeschlossen. Die Verbindung zwischen PC und Interface-Platine erfolgt über eine handelsübliche Druckerleitung. Die Buchse dafür ist oben im Bild rechts zu sehen.
Auch Burkhard Kainka hat ein Fachbuch zum Thema „Messen, Steuern und Regeln mit PC-Schnittstellen" verfasst [2], in dem ähnlich wie im o. a. Fachbuch von D. Bitterle [1] u. a. auch die Pin-Belegungen der einzelnen Schnittstellen, ihre Adressen sowie Programmbeispiele zu ihrer Ansteuerung zu finden sind.
Kann man auch über die serielle Schnittstelle dem Miniroboter mitteilen, was zu tun ist?
Ja, dies ist z. B. mit der hier dargestellten Schaltung auf einer Lochrasterplatine möglich, die ich nach Beschreibungen und Abbildungen in einem Fachbuch von B. Kainka [3] aufgebaut habe. Ein PC sendet über seine serielle Schnittstelle an den Mikrocontroller auf der Platine einzelne Bytes, die dieser an den angeschlossenen Portbaustein 8255 weiterleitet. Man erhält nach den Beschreibungen im Buch einen „parallelen Interface-Bus". Auf diesen kann, wie es in einem Protokoll festgelegt ist, durch Senden der Adresse und des Datums geschrieben werden, während beim Senden der Adresse +128 das Interface das gelesene Datum an den PC übermittelt.
Die Vorgehensweise bei der Programmierung ist im o. a. Fachbuch genau erklärt. Die Baudrate der Übertragung zwischen Mikrocontroller und PC beträgt 19200.
Auf der Platine befindet sich neben der seriellen Schnittstelle des Mikrocontrollers zusätzlich eine Schaltung zur Spannungsversorgung des 8748 und des 8255 mit einem 5V-Spannungsregler mit ähnlichem Aufbau wie im Bild oben. Alle 24 Pins der 3 Ports des 8255 sind mit Lötstiften verbunden. Außerdem sind zum Anschluss weiterer Platinen Lötstifte für den Minuspol der Spannungsquelle (GND, Masse) und den +5V-Ausgang des Spannungsreglers vorgesehen.
Wird zur Steuerung des Miniroboters Port A des 8255 gewählt, sind pro Schrittmotor zwei seiner 8 Portpins mit den Anschlüssen UP und DOWN der Schaltungen zur Schrittmotorsteuerung zu verbinden. Zwei andere Pins werden zum Ein- und Ausschalten des Magnet-Greifers bzw. des Taktgenerators für die Leuchtdiode verwendet. Außerdem wird der Masseanschluss der Platine mit dem Masseanschluss der Schaltungen zur Schrittmotorsteuerung verbunden.
Wie kann man dem Miniroboter Befehle erteilen?
Die Befehle erhält das Robotermodell, indem der PC z. B. über eine Interface-Platine wie die oben abgebildeten einzelne Bytes sendet. Ein Programmbeispiel für die Verwendung der Druckerschnittstelle soll dies verdeutlichen. Die Vorgehensweise ergibt sich aus dem in einem anderen Beitrag bereits dargestellten Schaltplan.
Ist der UP-Pin des 74LS193, der sich auf der Platine mit der Schrittmotorsteuerung befindet, mit Pin2 der Druckerschnittstelle (Bit 0) verbunden, während der DOWN-Pin an ihrem Pin3 (Bit 1) angeschlossen ist, kann der Läufer des angeschlossenen Schrittmotors zur Drehung veranlasst werden, wenn Bit 1 an 1-Signal liegt und Bit 0 abwechselnd 1- und 0-Signal führt, also getaktet wird. Eine Drehrichtungsänderung erreicht man, indem man Bit 0 an 1-Signal legt und Bit 1 taktet.
Das unten folgende Programmbeispiel ist ein einfaches Basic-Programm dazu. Es lässt sich mit entsprechenden Kenntnissen nach Visual Basic, Delphi o. a. übertragen. Unter Windows ist für den Zugriff auf die Schnittstelle eine sogenannte DLL notwendig. Hinweise dazu sind auf den Internetseiten von B. Kainka zu finden [4].
Das Robotermodell soll eine bestimmte Anzahl Schritte in eine vorgegebene Drehrichtung ausführen. Da die Programmierung hier über einfache Basic-Befehle erfolgt, verzichte ich auf nähere Erklärungen dazu.
10 REM Rob01.BAS
20 CLS
30 DRBA = 888: REM Basisadresse ist hier 888
40 REM Ansteuerung eines Schrittmotors
50 REM des Miniroboters
60 OUT DRBA, 0: REM Motor aus
70 INPUT "Anzahl Taktsignale"; T
80 INPUT "Pausenwert"; P
90 INPUT "Richtung 1 Rechtslauf, 2 Linkslauf"; R
100 IF R = 1 THEN GOSUB 140
110 IF R = 2 THEN GOSUB 230
120 OUT 888, 0: REM Motor aus, Blinklicht aus
130 END
140 FOR S = 0 TO T
150 OUT DRBA, 3
160 FOR N = 0 TO P
170 NEXT N
180 OUT DRBA, 2
190 FOR N = 0 TO P
200 NEXT N
210 NEXT S
220 RETURN
230 FOR S = 0 TO T
240 OUT DRBA, 3
250 FOR N = 0 TO P
260 NEXT N
270 OUT DRBA, 1
280 FOR N = 0 TO P
290 NEXT N
300 NEXT S
310 RETURN
Soll z. B. zusätzlich zur Bewegung das Blinklicht (Leuchtdiode) eingeschaltet werden , muss jeweils in den Zeilen 130, 160, 220 und 250 z. B. zum Ausgabewert 128 addiert werden, wenn der Taktgenerator mit dem Bit 7 angesteuert wird.
Die Zeile 130 lautet dann also: 130 OUT DRBA,3+128 bzw. 130 OUT DRBA,131
Programmbeispiele Rob01.BAS, Rob02.BAS und Rob03.BAS downloaden
Ein Mikrocontroller handelt im Auftrag eines PCs als Befehlsübermittler an den Miniroboter und meldet sich dann zurück.
Ich habe das hier abgebildete Entwicklungssystem mit einem 8748 gewählt, da es für die Ansteuerung des Robotermodells genügend Portleitungen besitzt. Es ist in einem Fachbuch von Burkhard Kainka [3] ausführlich beschrieben. Für einen solchen Mikrocontroller gibt es zwar keinen Basic- oder C-Compiler, aber mit dem Buch beschriebenen und auch auf der CD-ROM als Anwendung (DOS-Programm) enthaltenen Makrocompiler lässt sich das kleine System komfortabel programmieren. Zudem kann man den Controller ja auch in Assembler programmieren, wenn man dies möchte. Auch dazu sind Hinweise in dem erwähnten Fachbuch zu finden.
Das Entwicklungssystem kommuniziert mit einem angeschlossenen PC über dessen serielle Schnittstelle.
Dies ist ein einfaches Programmbeispiel, das es möglich macht, vom PC aus den Roboterarm über den Mikrocontroller zu einer Drehung nach links bzw. nach rechts zu veranlassen. Außerdem wird dem Mikrocontroller die Anzahl der bei der Bewegung gewünschten Schritte übermittelt. Dazu kann man nach dem Programmstart das im Programm „MC48" eingebaute Terminal verwenden oder ein geeignetes Windows-Programm, mit dem die einzelnen Bytes übertragen werden können. Der Mikrocontroller soll zudem die Ausführung des Befehls durch das Senden bestimmter Bytes an den PC melden können.
; Rob01.M48
; Ansteuerung eines Schrittmotors des Miniroboters
; Drehung links oder rechts bzw. Arm aufwaerts oder abwaerts bewegen
;Runtimesystem für MC48‑Programme (SYSTEM48.M48)
Procedure WrCOM ;9600 Baud
Inline BA,08,9A,7F,BB,10,EB,0F
Inline 97,67,F6,19,9A,7F,E6,1D
Inline 8A,80,8A,80,BB,0F,EB,1F
Inline EA,11,23,00,23,00,8A,80
Inline BB,01,EB,2B
EndProc
Procedure RdCOM ;9600 Baud
Inline 86,33,97,E6,2E,BA,19,EA
Inline 35,BB,08,97,86,49,00,A7
Inline 2C,67,2C,BA,0F,EA,43,EB
Inline 39,FC,83,00,97,2C,67,2C
Inline BA,0F,EA,50,EB,39,FC
EndProc
Procedure Delay ;A * 1 ms
Inline AD,16,5C,97,E6,57,AE,23
Inline F4,62,23,00,23,00,23,00
Inline 23,00,FE,55,ED,57
EndProc
Procedure Rechts
WrP1 3 ; Gib Wert 3 an Port 1 aus.
delay 10 ; Warte 10 ms. Wert muss an Schrittmotor angepasst werden.
WrP1 2 ; Gib Wert 2 an Port 1 aus.
delay 10 ; Warte 10 ms.
endProc
Procedure Links
WrP1 3
delay 10
WrP1 1
delay 10
EndProc
Procedure Rechtslauf ; Einzelaktionen:
RdCOM ; Eingabewert von PC erwarten
WrMem 1 ; Wert x nach Mem 1 geben
WrCOM ; Wert x zur Kontrolle an PC senden
RdMem 1 ; Wert x von Mem 1 holen
WrCount1 ; x an Zaehler 1 geben
Loop1 Rechts ; Unterprogramm x mal aufrufen
EndProc
Procedure Linkslauf
RdCOM
WrMem 1
WrCOM
RdMem 1
WrCount1
Loop1 Links
EndProc
Procedure Drehen
A 250
WrCOM ; Kontrollwert an PC senden
B 2 ; B mit 2 laden
RdCOM ; Wert von PC erwarten
WrMem 2 ; y nach Mem 2
RdMeM 2 ; y von Mem 2
WrCOM ; y zur Kontrolle an PC senden
RdMem 2 ; y von Mem 2 holen und mit Inhalt von B vergleichen
IFA=B Linkslauf ; wenn Uebereinstimmung, Unterprogramm Linkslauf
B 1 ; andernfalls B mit 1 laden
RdMem 2
IfA=B Rechtslauf ; wenn Werte von A und B uebereinstimmen, Unterprogramm
; Linkslauf, sonst zurueck
EndProc
Begin
StartTimer ; Timer starten
WrP1 0 ; P1
WrP2 0 ; und P2 loeschen
Loop Drehen ; Endlosschleife Drehen aufrufen
End
Programmbeispiele Rob01.M48 und Rob02.M48 downloaden
Auch die ZELLE kann mit dem Miniroboter im Auftrag eines PCs Kontakt aufnehmen.
Ein weiteres Mikrocontrollersystem ist die sogenannte Zelle, die in einem Fachbuch von Burkhard Kainka [5] beschrieben ist einschließlich Schaltplan und HEX-Listing für ein EPROM, geeignet als zum Selbstbau, wenn der Elektronikbastler ein EPROM-Programmiergerät und möglichst auch ein Löschgerät zur Verfügung hat.
So sieht das Original aus...
... und so eine Zelle mit der Original-Platine, jedoch durch Ics des Typs 8243 ergänzt zum Einstecken in ein Bus-System (rechts unten im Bild), in dem die Zelle die von einem PC empfangenen Steuersignale an die über den BUS angeschlossenen Teilnehmer übermittelt.
Zur Programmierung kann neben der Anwendung „Simpel" (DOS-Programm) z. B. die Windows-Software „Zellabor" verwendet werden. Auch „TurboCompact" ist zur Programmierung geeignet. Die beiden genannten Windows-Programme können von einer der Internetseiten von H.J. Berndt [6] heruntergeladen werden.
Hier ist für eine Steuerung des Robotermodells ein einfaches Programmlisting, das mit Zellabor erstellt worden ist.
; Programm Rob01.SIM
; Das Programm steuert einen Schrittmotor des Miniroboters ueber D0 und D1.
; Das Blinklicht(LED) wird waehrend einer Drehung ueber St eingeschaltet.
Prozedur Rechts
AusPort 00111111b ; Anschluss UP = Bit 4, Anschluss DOWN = Bit 5
Warte 10
AusPort 00101111b
Warte 10
ProzedurEnde
Prozedur Links
AusPort 00111111b
Warte 10
AusPort 00011111b
Warte 10
ProzedurEnde
Prozedur Rechtslauf
EinRS232
Merk 1
LiesMerk 1
AusRS232
stan
LiesMerk 1
XnachA
Amal Rechts
staus
Prozedurende
Prozedur Linkslauf
EinRS232
Merk 1
LiesMerk 1
AusRS232
stan
LiesMerk 1
XnachA
Amal Links
staus
Prozedurende
Prozedur Drehen
x 250
AusRs232
y 2 ; Empfangener Wert 2 ‑> Linkslauf
EinRS232
Merk 2
LiesMerk 2
AusRS232
LiesMerk 2
Wennx=y Linkslauf
y 1 ; Empfangener Wert 1 ‑> Rechtslauf
LiesMerk 2
Wennx=y Rechtslauf
Prozedurende
Anfang
Uhrstart
Ausport 00001111b ; Motor aus
immer Drehen ; Endlosschleife
Ende
Programmbeispiel Rob01.SIM downloaden
Gibt es weitere Möglichkeiten, den Miniroboter anzusteuern?
Ja, es gibt solche Möglichkeiten. Die Ausführungen oben können in dem gegebenen Rahmen nur unvollständig alle Möglichkeiten der Programmierung aufzeigen. Keines der im Beitrag angeführten Programmbeispiele ist perfekt und lässt sich folglich verbessern und erweitern und sicher auf einen anderen Mikrocontroller übertragen. Ich möchte Sie als Leserin/ Leser von ELO Das Magazin dazu anregen.
Literatur, Internetseiten:
[1] Dieter Bitterle „Die große Schaltungssammlung Messen, Steuern, Regeln mit dem PC", Franzis-Verlag, 1995
[2] Burkard Kainka „PC-Schnittstellen angewandt", Elektor-Verlag, 1993
[3] Burkhard Kainka „Erfolgreich Messen, Steuern, Regeln mit Mikrocontrollern", Franzis-Verlag, 1996
[4] www.b-kainka.de
[5] Burkhard Kainka „Messen, Steuern, Regeln über die RS232-Schnittstelle", Franzis-Verlag 1997
[6] www.hjberndt.de
Eine weitere empfehlenswerte Internetseite: www.ak-modul-bus.de
















