ESP8266 - Schrittmotor
Dieses Tutorial erklärt dir, wie du den ESP8266 verwendest, um einen Schrittmotor mit dem L298N-Treiber zu steuern. Im Detail werden wir lernen:
- Wie man den ESP8266 und den L298N-Treiber verwendet, um einen bipolaren Schrittmotor zu steuern
- Wie man den ESP8266 programmiert, um die Position des Schrittmotors zu steuern
- Wie man den ESP8266 programmiert, um die Geschwindigkeit des Schrittmotors zu steuern
- Wie man den ESP8266 programmiert, um die Drehrichtung des Schrittmotors zu steuern
Die Anleitung gilt für alle Arten von bipolaren Schrittmotoren mit vier Drähten. Als Beispiel wird ein NEMA-17-Schrittmotor verwendet.

Wenn Sie einen anderen Typ von Schrittmotor steuern möchten, schauen Sie sich bitte dieses ESP8266 - 28BYJ-48 Schrittmotor Tutorial an.
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Schrittmotor
Es gibt zwei gängige Typen von Schrittmotoren:
- bipolar: Dieser Motor hat 4 Kabel
- unipolar: Dieser Motor hat entweder 5 oder 6 Kabel
Für einen 6-Draht-Unipolar-Schrittmotor können wir vier der sechs Drähte verwenden und ihn so steuern, als wäre er ein bipolarer Schrittmotor.
Für 5-Draht-unipolare Schrittmotoren siehe ESP8266 - Steuerung eines 28BYJ-48-Schrittmotors mit ULN2003-Treiber.
Der Schwerpunkt dieses Tutorials liegt ausschließlich auf dem bipolaren Schrittmotor.
Bipolarer Schrittmotor-Pinbelegung
Die Pinbelegung des bipolaren Schrittmotors hat vier Pins. Verschiedene Hersteller verwenden unterschiedliche Bezeichnungen für die Pins des Motors. In der folgenden Tabelle sind einige der gängigsten Bezeichnungen für Pins aufgeführt:
PIN NO | Naming 1 | Naming 2 | Naming 3 |
---|---|---|---|
1 | A+ | A | A |
2 | A- | A | C |
3 | B+ | B | B |
4 | B- | B | D |

Die Reihenfolge der Pins, die Kennzeichnung der Drähte und die Farben der Drähte können von Hersteller zu Hersteller variieren. Es ist notwendig, das Datenblatt oder die Bedienungsanleitung zu lesen, um die Zuordnung zwischen Drahtfarbe und Pin-Bezeichnung zu verstehen. Das oben gezeigte Bild zeigt außerdem die Details zweier unterschiedlicher Motoren mit abweichender Drahtkennzeichnung und unterschiedlichen Drahtfarben.
Schritte pro Umdrehung
Die Spezifikation des Motors gibt DEG_PER_STEP an. Je nach Art der Steuerung kann STEP_PER_REVOLUTION anhand der untenstehenden Tabelle bestimmt werden:
Control method | Steps per Revolution | Real degree per step |
---|---|---|
Full-step | STEP_PER_REVOLUTION = 360 / DEG_PER_STEP | DEG_PER_STEP |
Half-step | STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * 2 | DEG_PER_STEP / 2 |
Micro-step (1/n) | STEP_PER_REVOLUTION = (360 / DEG_PER_STEP) * n | DEG_PER_STEP / n |
Zum Beispiel, wenn das Datenblatt des Motors angibt, dass er 1,8° pro Schritt hat:
Control method | Steps per Revolution | Real degree per step |
---|---|---|
Full-step | 200 steps/revolution | 1.8° |
Half-step | 400 steps/revolution | 0.9° |
Micro-step (1/n) | (200 * n) steps/revolution | (1.8 / n)° |
Wie man einen Schrittmotor mit dem ESP8266 steuert
Der ESP8266 kann Signale erzeugen, um den Schrittmotor zu betreiben. Allerdings reichen die Signale des ESP8266 nicht aus, um die benötigte Spannung und/oder den benötigten Strom zu liefern, den der Schrittmotor benötigt. Deshalb ist zwischen dem ESP8266 und dem Schrittmotor ein Hardwaretreiber erforderlich. Dieser Treiber hat zwei Funktionen:
- Erhöhe die Steuersignale vom ESP8266 (Strom und Spannung)
- Schirme den ESP8266 gegen den hohen Strom und die hohe Spannung ab, die zur Versorgung des Schrittmotors verwendet werden
Es gibt verschiedene Arten von Hardwaretreibern, die zur Steuerung von Schrittmotoren verwendet werden können. Einer der am häufigsten verwendeten Hardwaretreiber zur Steuerung von Schrittmotoren ist der L298N-Treiber.
Über den L298N-Treiber
Ein L298N-Treiber kann verwendet werden, um zwei DC-Motoren oder einen Schrittmotor zu steuern. Dieses Tutorial zeigt, wie man ihn verwendet, um den Schrittmotor zu steuern.
L298N Treiber-Pinbelegung

Der L298N-Treiber hat 11 Pins und drei Jumper:
- VCC-Pin: Dies versorgt den Motor mit Strom und kann zwischen 5 und 35 V liegen.
- GND-Pin: Dies ist ein gemeinsamer Masseanschluss und muss mit GND (0 V) verbunden werden.
- 5V-Pin: Dieser versorgt das L298N-Modul mit Strom und kann vom ESP8266 mit 5V versorgt werden.
- IN1, IN2, IN3, IN4-Pins: Diese sind mit den Pins des ESP8266 verbunden, um das Steuersignal zu empfangen, das den Schrittmotor steuert.
- OUT1, OUT2, OUT3, OUT4-Pins: Diese sind mit dem Schrittmotor verbunden.
- ENA- und ENB-Jumper: Diese dienen dazu, den Schrittmotor zu aktivieren, und sowohl die ENA- als auch die ENB-Jumper müssen an Ort und Stelle bleiben.
- 5V-EN-Jumper: Wenn dieser an Ort und Stelle bleibt, wird die Stromversorgung für das L298N-Modul aus VCC bezogen und am 5V-Pin muss nichts angeschlossen werden. Falls er entfernt wird, muss dem L298N-Modul über einen 5V-Pin Strom zugeführt werden.
Der L298N-Treiber hat zwei Eingangsspannungen:
- Eine Versorgung für den Schrittmotor (VCC- und GND-Pins): von 5 bis 35 Volt.
- Eine Versorgung für den internen Betrieb des L298N-Moduls (5V- und GND-Pins): von 5 bis 7 Volt. Wenn der 5V-EN-Jumper in der Stellung belassen wird, ist diese Versorgung nicht erforderlich.
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.
※ Notiz:
- Lassen Sie die drei Jumper am L298N-Modul an Ort und Stelle, wenn die Versorgungsspannung des Motors 12 V oder weniger beträgt.
- Die Anordnung der Pins bei Schrittmotoren kann sich je nach Hersteller unterscheiden. Verwenden Sie die untenstehende Tabelle, um die korrekte Verdrahtung sicherzustellen.
Verdrahtungstabelle zwischen ESP8266 und L298N-Treiber
ESP8266 pins | L298N pins |
---|---|
7 | IN1 |
6 | IN2 |
5 | IN3 |
4 | IN4 |
Verdrahtungstabelle zwischen L298N-Treiber und Schrittmotor
Wichtig!: Beachten Sie nicht die Reihenfolge der Drähte am Schrittmotor auf dem Verdrahtungsdiagramm. Es ist nur eine Abbildung. Die Anordnung der Pins bei Schrittmotoren kann je nach Hersteller variieren. Stellen Sie sicher, dass Ihre Verkabelung der untenstehenden Tabelle entspricht.
L298N pins | Stepper motor pins | Or | Or |
---|---|---|---|
OUT1 | A+ | A | A |
OUT2 | A- | A | C |
OUT3 | B+ | B | B |
OUT4 | B- | B | D |
Bevor Sie einen Schrittmotor kaufen, empfehlen wir Ihnen, das Datenblatt, die Spezifikation oder das Handbuch des Schrittmotors zu prüfen. Stellen Sie sicher, dass es die Zuordnung zwischen der Farbe der Pins und deren Bezeichnungen enthält. Zum Beispiel liefert dieser Schrittmotor die Zuordnung, wie im folgenden Bild zu sehen ist:

Unter Verwendung der Zuordnung ist die Verdrahtungstabelle:
L298N pins | stepper motor pins | wire color |
---|---|---|
OUT1 | A | black wire |
OUT2 | C | green wire |
OUT3 | B | red wire |
OUT4 | D | blue wire |
※ Notiz:
In den oben dargestellten Verdrahtungstabellen können OUT1 und OUT2 sowie OUT3 und OUT4 vertauscht werden. Dadurch erhöht sich die Anzahl der möglichen Verdrahtungskonfigurationen. Dies kann jedoch auch dazu führen, dass sich die Drehrichtung des Motors ändert (vom Uhrzeigersinn zum Gegenuhrzeigersinn oder umgekehrt).
Wie man einen Schrittmotor mit einem L298N-Treiber steuert.
Die Steuerung eines Schrittmotors kann eine Herausforderung darstellen, insbesondere wenn wir dies ohne Unterbrechung tun müssen. Glücklicherweise macht die AccelStepper Bibliothek das ganz einfach.
Die Arduino-IDE enthält eine integrierte Stepper-Bibliothek. Wir empfehlen jedoch nicht, diese Bibliothek zu verwenden, da:
- Es enthält eine blockierende Funktion, die verhindert, dass der ESP8266 während der Steuerung des Schrittmotors andere Aufgaben ausführt.
- Es fehlen ausreichende Funktionen.
Stattdessen empfehlen wir, die AccelStepper-Bibliothek zu verwenden. Diese Bibliothek bietet:
- Beschleunigung
- Verlangsamung
- Vollschritt- und Halbschrittantrieb
- Die Fähigkeit, mehrere Schrittmotoren gleichzeitig zu steuern, wobei jeder Schrittmotor unabhängig bewegt werden kann
- Nachteil: Unterstützt keinen Mikroschrittbetrieb
So steuern Sie die Position des Schrittmotors über den L298N-Treiber
Wir können die gewünschte Position des Schrittmotors durch Folgendes erreichen: 1. Die aktuelle Position als Referenzpunkt festlegen. 2. Den Referenzpunkt als aktuelle Position festlegen.
※ Notiz:
Die Funktion stepper.moveTo() ist nicht blockierend, was ein großer Vorteil der Bibliothek ist. Allerdings muss man beim Verwenden vorsichtig sein:
- Stellen Sie sicher, dass 'stepper.run()' so oft wie möglich aufgerufen wird, vorzugsweise innerhalb der void loop()-Funktion.
- Vermeiden Sie die Verwendung der delay()-Funktion, während der Motor in Bewegung ist.
- Verwenden Sie während des Betriebs des Motors keine Serial.print() oder Serial.println()-Funktionen, da dies die Bewegung verlangsamt.
Wie man die Drehzahl eines Schrittmotors über den L298N-Treiber steuert
Wir können sowohl die Geschwindigkeit als auch die Beschleunigung bzw. Verzögerung durch die Nutzung einiger weniger einfacher Funktionen steuern.
Wie man die Drehrichtung eines Schrittmotors über den L298N-Treiber steuert
Wenn Sie den Motor wie angegeben anschließen, dreht er sich in eine Richtung:
- Uhrzeigersinn-Richtung: wenn der Motor von einer niedrigeren Position zu einer höheren Position bewegt wird (Positionsanstieg)
- Gegen den Uhrzeigersinn-Richtung: wenn der Motor von einer höheren Position zu einer niedrigeren Position verschoben wird (Positionsrückgang)
- Wenn die aktuelle Position 100 beträgt und wir den Motor auf 200 einstellen, dreht er sich im Uhrzeigersinn.
- Wenn die aktuelle Position -200 beträgt und der Motor auf -100 eingestellt wird, dreht er sich im Uhrzeigersinn.
- Wenn die aktuelle Position 200 beträgt und der Motor auf 100 eingestellt wird, dreht er sich gegen den Uhrzeigersinn.
- Wenn die aktuelle Position -100 beträgt und der Motor auf -200 eingestellt wird, dreht er sich gegen den Uhrzeigersinn.
※ Notiz:
Wie bereits erwähnt, kann die Zunahme der Position gegen den Uhrzeigersinn erfolgen, wenn Sie OUT1 mit OUT2 vertauschen oder OUT3 mit OUT4, und die Abnahme der Position kann im Uhrzeigersinn erfolgen.
Wie man einen Schrittmotor stoppt
- Der Schrittmotor kommt zum Stillstand, wenn er die gewünschte Position erreicht.
- Wenn ein sofortiger Stopp gewünscht wird, kann die Funktion stepper.stop() verwendet werden.
ESP8266-Code – Schrittmotor-Code
Der folgende Code:
- Lässt den Motor eine Umdrehung im Uhrzeigersinn drehen
- Pausiert den Motor für 5 Sekunden
- Lässt den Motor eine Umdrehung gegen den Uhrzeigersinn drehen
- Stoppt den Motor für 5 Sekunden
- Wiederholt diesen Prozess kontinuierlich
Schnelle Schritte
Um mit dem ESP8266 in der Arduino-IDE zu beginnen, befolgen Sie diese Schritte:
- Sehen Sie sich das Tutorial zur Einrichtung der ESP8266-Umgebung in der Arduino-IDE an, falls dies Ihr erster Einsatz mit ESP8266 ist.
- Verbinden Sie die Komponenten wie im Diagramm gezeigt.
- Schließen Sie das ESP8266-Board über ein USB-Kabel an Ihren Computer an.
- Öffnen Sie die Arduino-IDE auf Ihrem Computer.
- Wählen Sie das richtige ESP8266-Board, z. B. NodeMCU 1.0 (ESP-12E Module), und den entsprechenden COM-Port.
- Klicken Sie auf das Symbol Bibliotheken in der linken Leiste der Arduino-IDE.
- Suchen Sie nach “AccelStepper”, und finden Sie dann die von Mike McCauley erstellte AccelStepper-Bibliothek.
- Klicken Sie auf die Installieren-Schaltfläche, um die AccelStepper-Bibliothek zu installieren.

Kopieren Sie den Code und öffnen Sie ihn mit der Arduino-IDE.
Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code auf den ESP8266 hochzuladen.
Sie werden feststellen, dass der Schrittmotor eine Umdrehung im Uhrzeigersinn ausführt, für 5 Sekunden pausiert, dann eine Umdrehung gegen den Uhrzeigersinn dreht und erneut für 5 Sekunden pausiert. Dieser Prozess wird kontinuierlich wiederholt.
Überprüfen Sie die Ergebnisse im seriellen Monitor.
Code-Erklärung
Schau dir die Zeile-für-Zeile-Erklärung an, die in den Kommentaren des Quellcodes enthalten ist.
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.