Schrittmotorsteuerung mit DOS und Turbopascal

Motivation

zurück
ende
weiter

Vor ein paar Jahren bekam ich zum Geburtstag von einem begnadeten Modellbauer eine selbst gebaute Portalfräse mit Schrittmotorantrieb geschenkt. Als Schrittmotoren waren drei bipolare Motoren mit geringer Leistungsaufnahme verbaut. Für diese Motoren bietet die Firma Conrad Elektronik (siehe /4/) preisgünstige fertige 3-Achsen-Ansteuerungen an (SMC800 Artikel-Nr.: 967599-62 und SMC1500 Artikel-Nr.: 967785 - 62 ). Diesen Steuerung liegt eine genaue Beschreibung und ein Demonstrationsprogramme in Pascal und C als Basis für die eigene Programmerstellung bei. Will man aber damit seine eigene Ansteuerung verwirklichen, wird es problematisch. Das Programm ist ziemlich monolithisch und unübersichtlich geschrieben. Was man zur Motorsteuerung braucht und warum, ist mühevoll zu erkennen. Natürlich bietet Conrad Elektronik auch die fertige Software zur Schrittmotorsteuerung an – aber ich wollte mich selbst damit beschäftigen.

Darum und in Erinnerung an eine Zeit, wo ich noch davon träumte, mit einem Computer mehr zu machen, als auf immer leistungsfähigeren Rechnern immer noch leistungshungrigere Betriebssysteme zu installieren und am Laufen zu halten, nahm ich mir vor, das Ansteuerprogramm so zu gestalten, dass ein einfaches und leicht zu änderndes Modulares 'Experimentalprogramm' entsteht und mit meiner Fräse zu experimentieren.

anfang

Wahl der Hard- und Software

zurück
ende
weiter

Aufbauend auf die Tatsache, dass für anspruchsvolle NCP 1995 noch PC Systeme mit 25 MHz, 4 bis 8 MB Speicher und 200 MB Harddisk gefordert wurden (siehe /1/), war es für mich klar, zurück zu den Wurzeln zu gehen und unter DOS (eigentlich ist meist MS-DOS gemeint, aber es gibt es auch andere Hersteller wie IBM; siehe auch: FreeDos)zu arbeiten. Dadurch kehrt die Freude am Computer und Programmieren wieder zurück – und die Kindheitsträume: Da ist man plötzlich in der Welt des kleinen Taschengelds: Eine DOS-Maschine, die den notwendigen 'damaligen Spitzenforderungen' genügt, bekommt man heute geschenkt oder erhält sogar noch Geld für die 'Entsorgung'. Programmieren kann man mit Turbo-Pascal 5 (TP5.5 siehe /3/) – das ist gratis und frei – oder mit Free-Pascal. Die so erstellten Programme sind klein und schnell. Und der permanente Update-Wahnsinn wegen Security und neuer nicht benötigten Features hat ein Ende. Natürlich ist für die Programmerstellung und die Dokumentation ein System mit grafischer Oberfläche (Windows oder LINUX) angenehm – aber nicht notwendig.

anfang

Architektur

zurück
ende
weiter

Für die Programmerstellung habe ich mich, für TP 5.5 entschieden, da es noch die angenehmen Port-Befehle zur Hardwareadressierung enthält. In Free-Pascal fehlen dies Befehle. Dort müsste man sie als Assemblerunterprogramme einbringen. Die Programmstruktur nimmt auf solche Umbauten dadurch Rücksicht, dass diese Programmteile in eigene Module ausgelagert sind. Sie können so leicht ausgetauscht werden.

Bei der Programmgestaltung wurde auf Objektorientierung verzichtet – es wurde strikt strukturiert gearbeitet. Der Grund ist, dass die Objektorientierung mit ihrer Kapselung und Vererbungsstruktur Programmänderungen nur dann leicht ermöglicht, wenn diese Änderungen eine Erweiterung des bestehenden Programmaufbaus (Generalisierungen oder Spezialisierungen der Klassen) sind – nicht jedoch, wenn sich der Aufbau selbst ändert. Diese Einschränkung aber widerspricht der Absicht, ein Experimental-Programm zu haben, mit dem man leicht Ansteuerkonzepte erproben kann.

Generell ein Wort zur Programmgestaltung: Mit einem objektorientierten Ansatz zu starten, ist für ein Programm mit dem man noch spielen will nur für sehr erfahrenen Programmierer empfehlenswert. Der Grund ist: Die Vererbung kann bei Änderungen in Programmteilen Auswirkungen zeigen, die man nicht erwartet hat – und: hat man sich zu Beginn für ein ungünstiges Objektmodell entschieden – ist entweder das ganze Programm ein Murks oder die Umstellung auf ein geändertes Modell sehr mühsam.

Der strukturieret, modulbasierte Ansatz ist da wesentlich leichter zu handhaben und zu testen.

Programmübersicht: Programmarchitektur

anfang

Der Motor

zurück
ende
weiter

Für die Erklärung der Steuerung von Schrittmotoren reicht das Modell eines 2 Phasen Permanentmagnet-Schrittmotor. Dieser ist im einfachsten Fall ein Gehäuse mit 4 Polen welche die Phasenspulen tragen und einem Permanentmagnet als Rotor. Dadurch, dass der Rotor ein Permanentmagnet ist, steht er in Ruhestellung unter einem der Pole mit einem gewissen restlichen Haltemoment (das spürt man, wenn man den Motor an der Achse dreht). Wird nun der Motor mit Strom beaufschlagt, entsteht an den Statorpolen durch die Polwicklungen (Phasen) ebenfalls ein Magnetfeld. Der Rotor wird nun zum Pol mit der dem Rotor entgegengesetzter Magnetisierung gezogen. Beaufschlagt man nun danach den nächste Pol (die nächste Phase) mit Strom derart, dass dieser nun den Rotor anzieht, dreht sich der Rotor um einen Schritt weiter. Werden nun die Phasen zyklisch der Reihe nach bestromt, dreht der Rotor und der Motor läuft. (Für genauere Erklärung und Darstellung der unterschiedlichen Schrittmotoren und Ansteuerungsarten siehe /2/ oder sonstige Literatur über Schrittmotoren). Die einfachste Art um eine Motor mit Strom zu beaufschlagen ist es, eine Spule einzuschalten und wieder abzuschalten und mit der nächste Spule dann das Gleiche zu machen und so weiter. Man fährt also im Vollschrittbetrieb, der Anker springt dabei von einem Pol zum nächsten. Eine zweite Möglichkeit ist, kurz nach dem Einschalten der ersten Phase auch die zweite einzuschalten. Man erreicht damit, dass der Anker auch zwischen 2 Polen stabil stehen bleiben kann – der Motor läuft dann im Halbschrittbetrieb.

Prinzipdarstellung der Ströme:
Phasenströme

Im Halbschritt sollte man den Phasenstrom bei Beaufschlagung beider Phasen gleichzeitig absenken, da das Haltemoment zwischen den Phasen bei voller Strombeaufschlagung größer ist als unter den Polen – der Motor läuft ohne Stromabsenkung unruhig.
Für die zeitliche Überwachung sorgt der Timer-Baustein im PC der über DOS-Kommandos angesprochen wird (siehe /7/).

anfang

Die Bedienoberfäche

zurück
ende
weiter

Die Bedineoberfäche ist im Prinzip die Texteingabeschnittstelle der DOS-Command-Line. Zwecks besserer Lesbarkeit ist die Daten-Ein-Ausgabe aber maskenähnlich gestaltet.

Programm - User - Interface:
img/User-Interface Anzeige der Kommandos

Die vollständige Beschreibung als PDF-Datei ist verfügbar:
Programmbeschreibung, Architekturbild

Das vollständige Programm in als Zip-Datei verfügbar:
TP5-Quellcode

anfang

Verwendete Literatur und Verweise:

zurück

/1/ Grundlagen der NC-Programmiertechnik
Benkler, Helmut: Grundlagen der NC-Programmiertechnik. Carl Hanser Verlag, ISBN 3-446-17434-6
/2/ Mit Schrittmotoren steuern, regeln und antreiben
Schörlin, Felix: Mit Schrittmotoren steuern, regeln und antreiben. Franzis-Verlag, ISBN 3-7723-6723-2
/3/ Turbopascal
http://www.webplain.de/turbopascal/downloads.php
/4/ Conrad-Elektronik
http://www.conrad.com/
/5/ Chip Spezial
Chip Spezial: TurboPascal Nr 16 1990, ISBN 3-8023-1072-1
/6/ Borland Pascal 7. Programmierung
Georgiadis Kirikaos: Borland Pascal 7. Programmierung. IWT Verlag GmbH, ISBN 3-88322-432-4
/7/ Wikipedia: Timerbeschreibung
http://en.wikipedia.org/wiki/Intel_8253
anfang