Motorsteuerung eines Schrittmotors (Stepper Motor)

Stepper-Motor-Steuerung

Um einen Schrittmotor zu steuern benötigt man eine H-Bridge. Hier der LD293D. Auch, wenn die Schaltung recht komplex aussieht, ist das Prinzip relativ einfach. Die Ausgänge das Arduino-Boards werden durch die vier Schaltstufen der H-Bridge verstärkt und an den Stepper-Motor geschickt.

Die Arduino-Software kommt mit der Stepper-Library. Das Beispiel MotorKnob (File>Examples>Stepper>MotorKnob) zeigt, wie sie benutzt wird.

H-Bridge mit externer Stromversorgung

Bipolarer Stepper mit H-Bridge und externer Stromversorgung

Ein unipolarer Steppermotor wird übrigens ganz ähnlich angeschlossen und es kann auch der selbe Code verwendet werden:

Unipolarer Stepper auf dem Breadboard

Ein unipolarer Steppermotor auf dem Breadboard. Die gelben Anschlüsse sind die gemeinsamen Verbindungen des jeweils roten und schwarzen Magnetanschlusses.

35 Comments

  1. Stefan*

    Hallo Willi,

    da hast Du natürlich recht. Geändert und eingefügt. Vielen Dank dafür!

    Liebe Grüße

    Stefan*

  2. Axel

    Hallo Stefan,
    ich nehme mal diese Seite hier um auch von mir ein Lob an dich zu bringen, wirklich sehr gelungene Page, sehr Informativ, es macht auch mir riesigen Spaß hier alles nach zu lesen und zu bauen.
    Bitte weiter so!

    LG
    Axel

  3. Florian

    Erreicht der Schrittmotor dann seine volle Leistung? Das Arduino kann schließlich nur 40 mA pro Pin liefern, die meisten Schrittmotoren benötigen jedoch deutlich mehr, in meinem Fall 1,2 A.
    Meine Alternative wäre gewesen über ein MOSFET die V+ Leitung der externen Stormversorgung freizuschalten und GND von Arduino und Netzteil zu verbinden.

    Gruß
    Florian

  4. @Florian: Du hast schon recht. Das ist natürlich total vom Motor abgängig. Ich habe im unteren Teil des Artikels noch ein Bild von einem Schaltplan mit Netzteil. Das sollte mehr Strom liefern. (Bei dem Regler allerdings nur 500mA)

  5. Florian

    Sprich wenn ich das Netzteil wie von dir gezeichnet anschließe, ich benutze eine SN75441ONE H-Bridge, bekommt der Motor mehr Leistung?

  6. @Florian: Genau. Dann kommt der Strom durch Pin 8 von der H-Bridge. Die Arduino-Pins werden nur zum Schalten verwendet. Haftung übernehme ich natürlich trotzdem nicht :)

  7. Jan-Philipp

    Ist es eigentlich möglich, diese Schrittmotorsteuerung mit einer Powerpointpräsentation anzuregen. Z.B. Über Visual Basic?

  8. Daniel

    Hy alle,

    ich brauch dringend hilfe bekomm den befehl nicht hin.

    Ausgangssituation: 1 stepper, 1 usb
    Programmablauf:

    USB = 5 Volt —> Step +100 —> Stepper stopp & warten auf USB = 0 Volt

    wenn USB = 0 Volt —> Step -100 —> Stepper stopp & warten auf USB 5 Volt

    und weiter loopen!

    das mit dem stepper vor und zurück per usb high oder low funktioniert soweit nur bleibt mein stepper nicht stehen und wartet auf das high oder low signal vom usb?!?!?!

    ich bin bisschen überfordert hab erst vor ner woche mit C angefangen…

    vielen dank für die hilfe

    Greez Daniel

  9. Dirk

    Hallo Stefan,

    tolle Seite!
    Ich bin absoluter newbe was Arduino und Programieren angeht.
    Deshalb die Frage:
    Ich habe einen Arduino Uno, ein Motorshield Rev3, einen Schrittmotor und einen Poti.
    Jetzt würde ich gerne die Geschwindigkeit des Motors mit dem Poti Vorwärts und Rückwärts laufen lassen.
    Eine externe 12V Stromquelle habe ich bis jetzt am Motorshield angeschlossen. Brauche ich trotz shield noch eine hbridge? Und kann die Stromquelle weiterhin am shield bleiben, oder muss ich da etwas besonderes mit dem Ground beachten?
    Bin da leider etwas unsicher, und möchte den Arduino ja auch nicht beschädigen.

    Danke schon mal im Vorraus…
    Dirk

  10. Hi Dirk,

    also das Motorshield (Gute Wahl im Übrigen) ist die H-Bridge. Du brauchst also keine weitere für den Motor. Der Ground vom externen Netzteil ist auch schon über das Shield mit Arduino verbunden. Ist also alles ganz einfach – musst du nichts weiter beachten und beschrieben ist alles hier: http://arduino.cc/en/Main/ArduinoMotorShieldR3

    Liebe Grüße

    Stefan“

  11. Dirk

    Klasse, Danke Stefan!
    Werde mich dann mal an die Sache rantrauen. ;-)

    Grüße
    Dirk

  12. Pascal

    Hallo,

    Ich versuche folgendes projekt zu verwirklichen. Und zwar möchte ich ein Solarpanel nach der Sonne über einen schrittmotor ausrichten. Das ganze soll über fotowiderstände funktionieren. Da ich noch nicht arg mit der Materie vertraut bin ist meine frage wie ich den Stepper der über ein Motor shield ansteuer über die fotowiderstände. Könnte mir da jemand bei helfen?

  13. René

    Kleiner Hinweis für Interessierte:
    „Um einen Schrittmotor zu steuern…“ exakt hier ist auch die grösste Limitierung! Diese Stepper lib erlaubt genau EINEN Stepper zu steuern, aber nicht 2 oder mehr gleichzeitig, da die step() Funktion eine Block-Funktion ist. Man kann also immer nur einen Motor noch dem anderen steuern, nicht 2 oder mehr gleichzeitg…

  14. Kirito

    Hallo,

    ich hätte da mal ein oder zwei probleme ich benutze einen Monipolaren Schrittmotor.
    In dem oben stehenden program sind in Stepper stepper(STEPS, 8, 9, 10, 11); 4 pins angegeben, der monipolare schrittmotor bedient sich aber nur 2 pins (bei mir 10 und 11)wie genau wirken sich die anderen beiden pins aus? außerdem möchte ich den schrittmotor nicht über einen potenziometer, sondern über einen festen ablauf steuern. ich habe also „val – previous“ durch eine schrittzahl ersetzt. das sollte doch auch funktionieren oder?. wenn ich as programm uploade (ich habe auch schon versucht die beiden anderen Pins heraus zu löschen.) fängt der schrittmotor an zu vibrieren, statt sich zu drehen.
    ich hoffe ihr könnt mir helfen. Danke!

  15. Wade

    Hallo Stefan,

    ich habe ein ähnliches Problem, wie Kirito es beschrieben hat. Ich bin mir aber ziemlich sicher, dass ich einen Schrittmotor habe (Sanyo 103-547-52500). Laut Herstellerangaben, kann der Schrittmotor uni- und bipolar betrieben werden.
    Ich habe es jetzt mal mit der bipolaren Steuerung versucht und dabei deinen Schaltplan mit externer Spannungsquelle verwendet.
    Starte ich MotorKnob vibriert mein Schrittmotor allerdings nur, bzw bewegt sich nur vor und zurück.
    Woran könnte das liegen?
    Und eine weitere Frage, die aber vermutlich nichts mit meinem Problem zu tun hat:
    Müsste die externe Spannungsquelle nicht auf beiden Seiten des L293D angeschlossen werden?

  16. Wade

    Achso,

    was ich noch erwähnen wollte. Mein Schrittmotor hat eine Nennspannung von 2,2V (Stangstrom 0,7A, Widerstand 3,5 Ohm).
    Das L293D hat an den Anschlüssen für die Spule allerdings 3,8V (im Ruhezustand).
    1. Wie kann ich die Spannung senken?
    2. Habe ich dadurch evt. den Schrittmotor schon beschädigt?

    Gruß
    Wade

  17. Wade

    Hinweis:
    Ich habe inzwischen auch die Schaltung für unipolare Schrittmotoren ausprobiert (allerdings mit dem L293D IC) und der Motor zuckt immer noch lediglich vor und zurück und ich weiß nicht, woran das liegen könnte.

    Gruß
    Wade

  18. Wade

    Mea Culpa.
    Der Fehler saß leider vor dem Arduino.
    Hatte die Anschlüsse an den Magneten vertauscht.

  19. julian

    hallo ,
    ich und mein Freund erhielten von unserem Lehrer den Auftrag ein kleines Auto zu bauen und es mit Hilfe von Arduino so zu programieren das es möglichst nah an eine Wand fährt ohne diese zu berühren.
    Da ich und mein Freund von all dem Programmiern keine Ahnung haben hoffen wir nun durch eure Hilfe Tipps zu erhalten wie wir das durch das programmiern schaffen können

  20. julian

    was ich noch ergänzen sollte ist das uns dafür ein Motor-Shield ,ein Motor (3-12V), eine Batterie (7.2V) und ein Ping-Sensor zur Verfügung stehen.
    Vielen Dank im voraus:)

  21. Hermann Müller

    Hallo,

    die oben abgebildete Schaltung mit L293 ohne und mit externer Spannungsversorgung funktioniert in meinem Nachbau grundsätzlich mit dem Beispielsketch MotorKnob, in dem ich die Schrittzahl angepasst habe. Allerdings drehen die angeschlossenen (unterschiedlichen) Stepper alle nur 5 Umdrehungen und bleiben dann mit zuckendem Motor stehen. Schrittzahl und Geschwindigkeit habe ich testweise verändert. Für den Poti habe ich einen 2k und einen 10 k ausprobiert. Das Ergebnis ist immer dasselbe.

  22. Zu der obrigen Frage: nach meinen Experimenten scheint folgende Verkabelung hinzuhauen:
    A (Black) -> OUT 1
    ~A (Green) -> OUT 2
    B (Red) -> OUT 4
    ~B (Blue) -> OUT 3

  23. Ich habe einen recht kräftigen Steppermotor für 3V mit 3A. Das wären also 9Watt Leistungsaufnahme. Rein vom Gefühl her war mir das ein bisschen viel für diese H-Bridge. Ein Blick in das Datenblat zeigt: dieser Schaltkreis ist nur für eine Motorspannung zwischen 4,5 und 36 Volt verwendbar.

    Damit ist auch teilweise die obige Frage beantwortet, ob ein Schrittmotor mit einer Nennspannung von 2,2 Volt mit dieser Schaltung betrieben werden kann. Im Prinzip also nicht, aber vielleicht besteht die Möglichkeit (wenn der Motor 6 Anschlussdrähte hat) dessen Spulen seriell und den Motor dann als bipolaren Motor zu verwenden. Somit würden benötigte Spannung wenigstens auf 4,4 Volt klettern. Für einen Dauerbetrieb ist das allerdings nicht geeignet.

  24. Rainer Amon

    Hallo Stefan,
    kann ich mit oben genannter Steuerung einen Schrittmotor stufenlos steuern?
    Ich kenne mich mit Arduinos und Schrittmotoren bis dato gar nicht aus.
    Deine Seite ist sehr interessant und übersichtlich aufgebaut. Vielen Dank dafür!

  25. Hans wurst

    Das ist nicht sooo unteresaant und ehher dumm und unnötig aber es gibt immer menschen die daran spaß haben ne?!

  26. Marc Morscheit

    Guten Tag, das hier ist eine tolle Seite…

    Ich habe ein Problem ich benötige eine Schrittmotorsteuerung mit Endschalter und Geschwindigkeitsregelung über Poti. Habe schon einiges versucht, nur bin ich leider nicht zu dem Ergebnis gekommen das ich erreichen möchte.
    Wenn mir einer einen Schaltplan inkl. Materialliste und den passenden Code zusenden könnte wäre das echt super. Ich würde Ihn auch für seine mühe entlohnen.
    Mit freundlichen Grüßen
    Marc

  27. Patrick Ludwig

    Hallo Stefan (falls du das noch liest),

    müßte bei Bild 2 und 3 nicht Pin 16 des ICs an der externen Spannung, statt an 5V hängen?

  28. Patrick Ludwig

    Kommentar hier drüber bitte ignorieren. Hatte das irgendwie so in Erinnerung, dass der IP Symetrisch ist und die Versorgung über Enable läuft.

  29. Patrick Ludwig

    Lag vermutlich daran, dass bei der Google Bildersuche nach „293d“ das erste Bild 12V auf 8 und 16 hat. O_O

Schreibe einen Kommentar

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