5V-Schrittmotor 28BYJ-48 mit Treiberplatine ULN2003 für Arduino ansteuern

In diesem Beitrag zeige ich dir wie du mit Arduino einen Schrittmotor ansteuern kannst. Damit ergeben sich vielfältige Anwendungsmöglichkeiten.

Meine Empfehlung

Ein Schrittmotor unterscheidet sich von einem normalen DC-Motor dadurch, dass seine volle Rotation in mehrere Schritte unterteilt wird, daher auch der Name Schrittmotor. Auf diese Weise lassen sich präzise Bewegungen ausführen.

Hier ein paar technische Details zum 28BYJ-48

Die Getriebeübersetzung von unserem 28BYJ-48 Schrittmotor beträgt 1/64. Damit ergibt sich ein Schrittwinkel von 5.625 x 1/64.

Der Motor verfügt über vier Spulen, die unipoloar beschaltet sind und mit 5V DC betrieben werden. Das Drehmoment liegt bei >34.3mN*m (120Hz).

Der 28BYJ-48 ist ein günstiger Schrittmotor und wird meistens mit einer ULN2003A Treiberplatine betrieben, für die sogar eine Bibliothek für Arduino existiert.

Die ULN2003A Treiberplatine

Da wir den Schrittmotor nicht direkt an das Arduino Board anschließen können, da die Pins dafür zu wenig Strom liefern und allgemein für größere Lasten nicht ausgelegt sind, benötigen wir eine Treiberplatine, die wir dem Schrittmotor vorschalten müssen.

Die Treiberplatine von Elegoo sieht wie folgt aus:

Quelle: elegoo.com

Wichtig: Es ist empfehlenswert die Treiberplatine an eine externe Spannungsquelle anzuschließen um Schäden am Arduino Board zu vermeiden!

Im folgenden Bild ist die komplette Verkabelung zu sehen. Die Spannungsversorgung erfolgt über ein separates Stromversorgungsmodul (links am Breadboard).

Quelle: elegoo.com

Pin-Belegung

Die vier Eingänge der Treiberplatine mit den Beschriftungen IN1 – IN4 sind in dieser Reihenfolge an die digitalen Arduino Pins 8-11 anzuschließen (Achtung: In der Grafik oben sind die Pins in umgekehrter Reihenfolge angeschlossen, dies ist zwar auch möglich, aber dann muss die Reihenfolge im Quellcode angepasst werden).

VCC und GND der Treiberplatine wird wie oben empfohlen an das externe Stromversorgungsmodul angeschlossen.

Der GND vom Arduino Board wird ebenfalls an das externe Stromversorgungsmodul angeschlossen, somit liegen beide Platinen an der gleichen Masseleitung.

Meine Empfehlung

Ein Beispiel-Code

In diesem Beispiel-Code nutzen wir die Arduino Stepper Bibliothek, dies macht unseren Code schlanker und lesbarer.

In der Konstante STEPS legen wir zuerst die Anzahl der Schritte pro Umdrehung fest. Dieser Wert kann je nach Schrittmotor abweichen und muss aus dem Datenblatt entnommen oder berechnet werden.

Danach erzeugen wir ein Objekt der Klasse Stepper und rufen gleich den Konstruktor auf. Der Konstruktor sorgt für die Initialisierung, wir übergeben Konstante STEPS sowie die Anschluss-Pins für die Treiberplatine.

In der Funktion loop() legen wir nun die Geschwindigkeit auf eine Umdrehung pro Minute fest. Danach soll der Schrittmotor 2038 Schritte machen. Danach warten wir 1s und setzen die Geschwindigkeit nun auf sechs Umdrehungen pro Minute fest. Dieses mal soll der Motor in umgekehrter Richtung laufen, mit der gleichen Anzahl an Schritten wie vorher auch.

2 Kommentare

  1. Vielen Dank. Was sich mir leider aber auch hier genauso wenig erschließt wie auf anderen Seiten ist die Frage, warum die Pins nicht in aufsteigender Zahl stehen wie auch hier:
    In Zeile 4 steht:
    „Stepper stepper(STEPS, 8, 10, 9, 11);“
    Ich hätte erwartet, daß es heißen müsste „Stepper stepper(STEPS, 8, 9, 10, 11);“ was auch in manchen Anleitungen so oder ähnlich erfolgt. Was ist also warum richtig?

    1. Hallo,

      tut mir leid für die späte Antwort.

      Nach der Dokumentation https://www.arduino.cc/en/Reference/StepperConstructor lautet der Aufruf des Konstruktors Stepper(steps, pin1, pin2, pin3, pin4). Also müsste die Reihenfolge 8,9,10,11 lauten, da hast du vollkommen Recht. Ich habe dies im Quellcode korrigiert.

      Wichtig ist dass die Anschlüsse auf der Treiberplatine IN1 – IN4 in dieser Reihenfolge an die digitalen Arduino Pins 8-11 angeschlossen werden, damit es passt.

      Leider habe ich jetzt keine Möglichkeit dies zu überprüfen.

      Gruß
      Andreas

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.