LP_STEP Schrittmotorsteuerung
Gerhard Jüngling, HTL Wien 4, Sommer 2000
Was ist LP_STEP
LP_STEP ist ein Modell für den Informatik-Unterricht, bei dem mit
der parallelen Schnittstelle eines PC ein Schrittmotor gesteuert werden
kann.

Die Schüler sollen mit Hilfe der LP_BOX und den zugehörigen
Bibliotheken
.... die Funktion von Schrittmotoren kennen lernen.
.... das Zusammenwirken von Hard- und Software verstehen.
.... einfache Steuerungsaufgaben selbstständig lösen
können.
.... eigene Unterprogramme für die Ansteuerung von Hardware
mittels
PC entwickeln können.
Mit LP_STEP können die Schüler bereits im AINF-Unterricht
(Angewandte Informatik) die softwaretechnische Lösung einfacher
berufsspezifischer
Aufgabenstellungen kennenlernen und üben.
Voraussetzungen
Grundlegende Funktion von Schrittmotoren
Programmierkenntnisse in C bzw. C++
Verwendung von Unterprogrammen, Parameterübergabe
Kenntnisse der modularen Programmierung (PRJ, makefile)
Boolsche Operationen und Datentypen (signed/unsigned, char, int, ...)
Hardware
LP_STEP benötigt eine zusätzliche Spannungsversorgung (5V=
bzw.
12V=), da die Ausgangstreiber der parallelen Schnittstelle nicht in der
Lage sind, die erforderliche Ausgangsleistung bereitzustellen.
Die parallele Schnittstelle wird im Standard-Modus betrieben.
Direkter Hardware-Zugriff muss vom Betriebssystem möglich sein
(Windows NT!).
Literatur und Internet-Ressourcen
Informationen über Schrittmotoren:
LP_STEP.LIB
In der Bibliothek LP_STEP.LIB befinden sich Unterprogramme zur
Ansteuerung
der Schrittmotoren.
Header-Datei: LP_STEP.H
Quellcode: LP_STEP.CPP
Ein einfaches Demoprogramm (STEPPER.CPP)
zeigt die Verwendung einiger Bibliotheks-Funktionen.
Aufgaben für C, C++
Diverse "Rotationen"
Schreiben Sie ein Programm, das den Motor genau um 90 / 180 / 360 Grad
drehen läßt.
.... das den Motor bei Tastendruck 90 Grad nach rechts und 45 Grad
nach
links laufen läßt.
.... das bei gedrückter "R"-Taste den Motor langsam nach rechts
laufen läßt und bei "L" nach links.
.... das ein manuelles Positionieren mit den Tasten R und L
ermöglicht.
Je länger die Tasten gedrückt sind, desto schneller soll sich
der Motor drehen. (Vgl. die Zeiteinstellung bei einem Radiowecker: Je
länger
man drückt, desto schneller beginnen die Zahlen zu laufen.)
Grundlagenaufgaben
Schreiben Sie ohne lps_home() eine eigene Homing-Routing für den
Schrittmotor.
Sie müssen dazu selbst den Indikator mit lps_status abfragen.
Schreiben Sie unter Verwendung der Funktion lps_control() ein
Programm,
bei dem sich der Motor 360 Grad im Vollschrittmodus/Halbschrittmodus
dreht.
Entwickeln Sie ein Unterprogramm lp_position, mit dem nach dem
Homing
eine beliebige absolute Position angefahren wird.
Schreiben Sie ein Programm bei dem eine Umdrehung genau 10 Sekunden
dauert. Implementieren Sie dazu eine kleine "Kalibrierungsroutine".
Beschreibung der Funktionen in
LP_STEP.LIB
(Unvollständig!)
Die Funktionen geben nichts am Bildschirm aus und koennen daher
universell
verwendet werden. Falls ein Fehler aufgetreten ist, kann dies anhand
der
Rueckgabewerte festgestellt werden.
int lps_init(int lptport, unsigned int steps)
Initialisiert die Ein-Ausgaberoutinen und alle Variablen.
Diese Funktion muss aufgerufen werden, da sonst alle anderen Funktionen
eine Fehlermeldung zurueckgeben!
Aufrufparameter:
int lptport: 1,2 oder 3 steht fuer LPT1, LPT2 oder
LPT3
unsigned int steps: Anzahl der Schritte für
eine volle Umdrehung des Schrittmotors
Rueckgabewert (int): Fehlernummer (0...kein Fehler)
char *lps_info()
Liefert Informationen ueber die LP_FUNC Bibliothek
Aufrufparameter: ---
Rueckgabewert (char *): Zeiger auf einen Infostring
char *lps_version()
Liefert Informationen ueber die Version der LP_FUNC Bibliothek
Aufrufparameter: ---
Rueckgabewert (char *): Zeiger auf einen Versionsstring
char *lps_errmsg(int status)
Liefert die zu einer Fehlernummer gehörende Fehlermeldung
Aufrufparameter:
int status: Fehlernummer
Rueckgabewert (char *): Zeiger auf einen Fehlermeldungstext
int lps_home()
Aktuelle Position wird als 0-Position gesetzt.
int lps_speed(float speed)
Stellt die Geschwindigkeit in Schritten pro Sekunde ein.
Rueckgabewert (int): Fehlercode
int lps_absolute(long abspos)
Steuert eine Absolutposition an.
int lps_relativ(long relativpos)
Steuert eine Relativposition an.
int lps_status()
Liefert eine Statusinformation.
© Gerhard
Juengling, HTL Wien 4, Sommer 2000