Einen Schrittmotor per Arduino ansteuern
Der Schrittmotortreiber L293 DNE in der Praxis
Sollen Schrittmotoren mit dem Arduino angesteuert werden, so muss dazu ein sogenannter Schrittmotortreiber verwendet werden. Eine Variante ist der L293 DNE, wie er beispielsweise von Texas Instruments produziert wird. Seine Funktion ist kein Hexenwerk.
Schrittmotoren dürfen nicht direkt am Arduino betrieben werden, da dieser sonst durch den dafür benötigten, hohen Strom zerstört wird. Vielmehr ist zu diesem Zweck ein Schrittmotortreiber zwischenzuschalten, der den dazu nötigen Strom beispielsweise aus einem externen Netzteil bezieht und zum Schrittmotor weiterleitet. Für diese Aufgabe eignet sich beispielsweise das Modell L293 DNE, wie es von Texas Instruments und anderen Herstellern produziert wird.
Soll mit diesem Baustein, der zwei H-Brücken enthält, eine Schaltung aufgebaut werden, wird dazu üblicherweise zunächst ein sogenanntes Steckbrett genutzt, um die Funktion des ersonnenen Schaltplans zu testen. Sinnvollerweise ist der Schrittmotortreiber dazu zu Sockeln, um seine biegeempfindlichen Beinchen nicht einer unnötigen Belastung auszusetzen. Dazu sind unbedingt hochwertige DIL-Präzisionsfassungen zu verwenden, da die preiswerteren IC-Sockelfassungen mit Federkontakt unter Umständen nicht perfekt in der Lochrasterung Platz finden und somit der elektrische Kontakt zwischen Steckbrett und Motortreiber nicht einwandfrei gegeben ist.
Der Schaltplan zur Ansteuerung eines Schrittmotors mit vier Anschlüssen unter Einsatz des L293 DNE-Schrittmotortreibers könnte wie folgt aussehen:
Das dazu nötige Programm, auch Sketch genannt, kann beispielsweise wie folgt aussehen:
#include <Stepper.h> // Laden der Schrittmotor-Programmbibliothek.
int S_P_U = 200; // Festlegung der Anzahl der Schritte pro Umdrehung.
Stepper MeinMotor(S_P_U, 5,4,3,2); // 2,3,4,5 auch ok. Der Schrittmotor bekommt die Bezeichnung "MeinMotor". Zudem wird angegeben an welchen Arduino-Pins dieser angeschlossen ist und in welcher Reihenfolge diese angesprochen werden.
void setup() //Start des Setup.
{
MeinMotor.setSpeed(10); // Angabe der Geschwindigkeit in Umdrehungen pro Minute.
}
void loop() {
MeinMotor.step(S_P_U); // Der Motor macht 200 Schritte für eine Umdrehung.
delay(100); // 1/10-Sekunde Pause nach der Drehung.
MeinMotor.step(-S_P_U); // Durch das Minuszeichen erfolgen 200 Schritte in die entgegengesetzte Richtung.
delay(100); // erneut 1/10-Sekunde Pause nach der Drehung.
}
Die Angabe der Arduino-Pins richtet sich selbstverständlich an den Schrittmotortreiber L293 DNE, denn über diesen wird ein Schrittmotor mit dem nötigen, stärkeren Strom versorgt, der bis zu 600 mA betragen darf.
Tückische Fehlerquelle:
An dieser Stelle ist der Hinweis angebracht, als externe Stromquelle nicht unbedingt ein regelbares Labornetzteil zu verwenden, da damit bei unsachgemäßer Bedienung schneller als gedacht der für den L293 zulässige Strom überschritten wird und der Baustein zerstört wird.
Besonders ärgerlich ist, dass sich dieser Fehler nicht unbedingt in der Weise zeigt, dass der Schrittmotor nicht mehr arbeitet, sondern unter Umständen noch eine Teilfunktion zeigt. Diese kann sich darin zeigen, dass die Welle des Schrittmotors sich zwar in einer Richtung dreht, nicht jedoch in die Gegenrichtung. Bei Aufruf eines Umkehrbefehls ist lediglich ein nervöses Zittern der Schrittmotorwelle zu beobachten.
Hier hilft dann nur noch, den defekten L293-Schrittmotortreiber gegen ein intaktes Exemplar zu tauschen und fortan ein einfaches, einstellbares Netzteil zu verwenden. Schon ab rund 6 Volt funktionieren viele Schrittmotoren einwandfrei und sind mit dieser Spannung zumindest für Lernzwecke, insbesondere hinsichtlich der Sketch-Programmierung bestens versorgt.
Berechnung der Schritte:
Schrittmotoren haben je nach Bauart ein unterschiedliches Auflösungsvermögen. Viele Modelle, wie auch das hier verwendete Modell, drehen sich pro Schritt um 1,8 Grad weiter. Dies bedeutet, dass 200 Schritte für eine ganze Umdrehung der Schrittmotorwelle nötig sind. Dieser Wert wurde im Sketch in die Ganzzahlvariable ›S_P_U‹ geladen und für die Drehbewegung nach rechts und links verwendet.
Schrittmotor mit sechs Anschlüssen:
Schrittmotoren mit sechs Anschlüssen können im Zusammenhang mit einer L293 DNE-H-Brücke auf die gleiche Weise wie Schrittmotoren mit vier Anschlüssen betrieben werden. Die zusätzlichen, als COM bezeichneten Anschlüsse müssen lediglich mit einer Blindbuchse oder Isolierband abgedeckt werden, damit diese nicht versehentlich einen Kurzschluss verursachen können.
Unter Beachtung, dass die Anschlüsse A, A\, B und B\ mit den passenden L293-Anschlüssen verbunden werden, kann auch das obige Programm für einen Testlauf verwendet werden.
Noch ein Wort zum Sketch und den Anschlüssen am Arduino:
Es stellt sich die Frage, wie man vorgehen muss, um die korrekte Reihenfolge der Pin-Bezeichnung im Befehl ›Stepper MeinMotor(S_P_U, a,b,c,d);‹ anstelle der Buchstaben a,b,c,d einzutragen. Dies ist ganz wesentlich, da falsche Einträge den Schrittmotor nicht korrekt drehen lassen.
Die nachfolgenden Beispiele sind nicht unbedingt in jedem Fall zutreffend, doch wurde die Funktion in einer L293-Umgebung getestet, wo die Modelle sich als zutreffend herausstellten.
Die Ansteuerung beziehungsweise die in das Steuerprogramm einzugebende Logik für verschiedene Schrittmotormodelle stellt sich wie folgt dar:
Projektabschluss:
Egal, welcher Schrittmotor verwendet wird – eine korrekt aufgebaute Schaltung führt dazu, dass unter Nutzung des Beispiel-Sketches die Welle des Schrittmotors eine Umdrehung nach rechts beziehungsweise links ausführt, kurz verweilt, um anschließend eine Drehbewegung in die andere Richtung auszuführen. Mit einem an der Welle angebrachten Papierpfeil lässt sich diese Bewegung sehr schön beobachten.
Damit sind die Grundlagen zur Ansteuerung eines Schrittmotors erarbeitet. Was noch fehlt ist beispielsweise das Abfragen eines Endlagensensors oder der Start beziehungsweise der Stopp des Schrittmotors per Knopfdruck. Auch die Zusammenarbeit mehrerer Schrittmotoren macht Sinn, um beispielsweise einen Plotter oder eine einfache Fräsmaschine zu bauen. Somit sind Schrittmotoren wahre Tausendsassas, mit denen verschiedenste Projekte umgesetzt werden können.