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