Vorab: Vielen Dank an an den Verfasser dieses Blogeintrags. Ohne diesen Blogeintrag würde ich heute noch rätseln, warum sich mein Schrittmotor so komisch bewegt.
Die Situation war so, dass ich für ein Weihnachtsprojekt ein Knusperhausmodell gebaut habe. Was ich neben Musik und Beleuchtung haben wollte, waren vor dem Haus fahrende Rentiere. Für die Umsetzung der Rentiere dachte ich an die Zahnriementriebe, die sonst für 3D-Drucker verwendet werden. Angetrieben sollte dieser Zahnriemen über einen Schrittmotor, damit die Rentiere immer an der gleichen Stelle stehen bleiben und ich keine zusätzlichen Sensoren verbauen musste.
Damit kam ich dann auf folgende Teile, die ich „brauchte“:
- NodeMCU 32-S
- Schrittmotor 28BYJ-48
- Schrittmotor Treiberplatine (ULN2003)
- 12V Netzteil
- Kabel



Die Treiberplatine habe ich mit 12V durch das Netzteil befeuert, was sonst für LED Strips gedacht war. Bei der verkabelung mit dem ESP-32 ergab sich das Problem, dass der Schrittmotor sich bei unterschiedlichen Geschwindigkeiten unterschiedlich gut bewegt hat. Bei einer Geschwindigkeit bewegte er sich ca. 90° im Uhrzeigersinn, dann 45° gegen den Uhrzeigersinn und dann nochmal 180° zurück. Für mich war der erste Reflex zu sagen, dass der Motor kaputt ist, oder das einfach billiger China mist. Da es mein erster Berührungspunkt mit Schrittmotoren war, konnte ich mir einfach keinen Reim darauf machen.
Mehrere Tage später und einige Stunden Rechercheaufwand haben mit auf diese Seite gebracht. Dort wird detailiert erklärt, dass es sich bei dem Beispiel, was viele mit der <stepper.h> Bibliothek zitieren um einen Zahlendreher bei der Pinbelegung handelt. Wenn man die Pinbelegung wie in dem Artikel beschrieben wie folgt ändert, klappt das ganze dann auch wie es soll.
const int stepsPerRevolution = 2048;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
myStepper.setSpeed(15);
Was mich bei der ganzen Sache allerdings noch gewundert hat war, dass der Schrittmotor sehr heiß wird (ca. 60°C). Das scheint wohl ein generelles Problem der Schrittmotoren zu sein. Für meine nächsten Tests in der Richtung werde ich wohl die Spannungsversorgung abklemmen, wenn der Motor sich nicht drehen sollte. Ich werde das ganze aber nochmal separat testen. Ich war am Ende auf jeden Fall sehr froh, den Motor doch sauber ans Laufen gebracht zu haben.