Arduino Nano ESP32 - Schrittmotor
In diesem Tutorial lernen wir, wie man den Arduino Nano ESP32 verwendet, um den Schrittmotor zu steuern:
- Wie man den L298N-Treiber verwendet, um einen bipolaren Schrittmotor zu steuern
- Wie man die Position des Schrittmotors steuert
- Wie man die Geschwindigkeit des Schrittmotors steuert
- Wie man die Drehrichtung des Schrittmotors steuert
Die Anleitung kann auf jeden bipolaren Schrittmotor (4 Drähte) angewendet werden. Die Anleitung verwendet als Beispiel einen NEMA-17-Schrittmotor.

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: Diese Motoren haben 4 Drähte.
- Unipolar: Unipolare Motoren können entweder 5 oder 6 Drähte haben. Im Fall eines 6-drahtigen unipolaren Schrittmotors können Sie effektiv vier von den sechs Drähten verwenden, um ihn zu steuern, als wäre er ein bipolarer Schrittmotor.
Wenn Sie sich speziell für einen 5-Draht-Unipolar-Schrittmotor interessieren, können Sie auf das Tutorial mit dem Titel Arduino Nano ESP32 - Steuerung des 28BYJ-48-Schrittmotors mit ULN2003-Treiber verweisen.
Dieses Tutorial widmet sich jedoch ausschließlich bipolaren Schrittmotoren.
Pinbelegung eines bipolaren Schrittmotors
Ein bipolarer Schrittmotor hat vier Anschlüsse, und diese Anschlüsse können je nach Hersteller unterschiedlich benannt sein. Nachfolgend finden Sie eine Tabelle mit einigen gängigen Anschlussbezeichnungen:
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 Anordnung der Pins, die Bezeichnungen der Drähte und die Farben der Drähte können von einem Hersteller zum anderen variieren. Um zu verstehen, wie die Drahtfarben den Pin-Bezeichnungen entsprechen, ist es wichtig, das vom Hersteller bereitgestellte Datenblatt oder Benutzerhandbuch zu konsultieren. Das obige Bild veranschaulicht die Spezifikationen zweier unterschiedlicher Motoren, die jeweils ihre eigenen Bezeichnungs- und Drahtfarbenkonventionen haben.
Schritte pro Umdrehung
Die Spezifikation des Motors gibt den Grad pro Schritt an (nennen wir ihn DEG_PER_STEP). Je nach Regelungsmethode wird die Schrittzahl pro Umdrehung (nennen wir STEP_PER_REVOLUTION) gemäß der folgenden Tabelle berechnet:
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, falls das Datenblatt des Motors 1,8° pro Schritt angibt:
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)° |
So steuern Sie einen Schrittmotor mit dem Arduino Nano ESP32
Der Arduino Nano ESP32 kann Signale erzeugen, um den Schrittmotor zu steuern, doch diese Signale könnten nicht die erforderliche Spannung und Stromstärke aufweisen, die der Schrittmotor benötigt. Daher wird ein Zwischen-Hardwaretreiber benötigt, um die Lücke zwischen dem Arduino Nano ESP32 und dem Schrittmotor zu überbrücken. Dieser Treiber erfüllt zwei Hauptfunktionen:
- Verstärkung der Steuersignale: Es erhöht den Strom und die Spannung der Steuersignale, die vom ESP32 ausgehen, und sorgt dafür, dass sie den Anforderungen des Schrittmotors entsprechen.
- Schutz des ESP32: Gleichzeitig schützt es den Arduino Nano ESP32 vor den höheren Strom- und Spannungspegeln, die zum Betrieb des Schrittmotors verwendet werden, und verhindert potenzielle Schäden.
Für die Steuerung von Schrittmotoren stehen verschiedene Hardware-Treiber zur Verfügung, und eine häufig verwendete Option ist der L298N-Treiber.
Über den L298N-Treiber
Ein einzelner L298N-Treiber kann verwendet werden, um zwei Gleichstrommotoren oder einen Schrittmotor zu steuern. In diesem Tutorial lernen wir, wie man ihn verwendet, um den Schrittmotor zu steuern.
L298N Treiber-Pinbelegung

Der L298N-Treiber hat 11 Pins und drei Jumper:
- VCC-Pin: versorgt den Motor mit Strom. Es kann irgendwo zwischen 5 und 35 V liegen.
- GND-Pin: ist ein gemeinsamer Massepin und muss mit GND (0 V) verbunden werden.
- 5V-Pin: versorgt das L298N-Modul mit Strom. Es kann durch 5 V vom Arduino Nano ESP32 versorgt werden.
- IN1, IN2, IN3, IN4-Pins: sind mit Pins des ESP32 verbunden, um das Steuersignal zu empfangen, mit dem der Schrittmotor gesteuert wird.
- OUT1, OUT2, OUT3, OUT4-Pins: sind mit dem Schrittmotor verbunden.
- ENA, ENB-Jumper: werden verwendet, um den Schrittmotor zu aktivieren. Sie müssen beide Jumper (ENA und ENB) an Ort und Stelle belassen.
- 5V-EN-Jumper: Wenn wir den 5V-EN-Jumper belassen, wird die Stromversorgung für das L298N-Modul aus dem VCC bezogen; wir müssen nichts an den 5V-Pin anschließen. Entfernen wir den 5V-EN-Jumper, müssen wir das L298N-Modul über einen 5V-Pin mit Strom versorgen.
Wie oben beschrieben verfügt der L298N-Treiber über zwei Eingangsspannungen:
- Eine Versorgung für den Schrittmotor (VCC- und GND-Pins): von 5 bis 35 V.
- Eine Versorgung für den internen Betrieb des L298N-Moduls (5V- und GND-Pins): von 5 bis 7 V. Wenn der 5V-EN-Jumper belassen wird, muss dieser Pin nicht mit irgendetwas verbunden werden.
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
※ Notiz:
- Bitte belassen Sie alle drei Jumper auf dem L298N-Modul an Ort und Stelle (falls die Stromversorgung des Motors ≤ 12 V).
- Die Reihenfolge der Pins bei Schrittmotoren kann von Hersteller zu Hersteller variieren. Bitte prüfen Sie die untenstehende Tabelle auf die korrekte Verkabelung.
Verdrahtungstabelle zwischen Arduino Nano ESP32 und L298N-Motortreiber
Arduino Nano ESP32 pins | L298N pins |
---|---|
D5 | IN1 |
D4 | IN2 |
D3 | IN3 |
D2 | IN4 |
Verdrahtungstabelle zwischen L298N-Treiber und Schrittmotor
Wichtig!: Bitte kümmern Sie sich nicht um die Drahtreihenfolge des Schrittmotors im obigen Verdrahtungsdiagramm. Es ist nur ein Beispiel. Die Reihenfolge der Pins bei Schrittmotoren kann zwischen Herstellern variieren. Stellen Sie sicher, dass Ihre Verdrahtung der untenstehenden Tabelle folgt.
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 Spezifikationen oder das Handbuch des Schrittmotors zu prüfen. Stellen Sie sicher, dass sie die Zuordnung zwischen der Pinfarbe und der Bezeichnung angeben. Zum Beispiel bietet dieses Schrittmotor die Zuordnung wie im untenstehenden Bild gezeigt.

Basierend auf dieser Zuordnung sieht die Verdrahtungstabelle folgendermaßen aus:
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 allen oben genannten Verdrahtungstabellen zwischen dem Schrittmotor und dem L298N-Treiber können wir OUT1 mit OUT2 sowie OUT3 mit OUT4 vertauschen. Daher gibt es mehr Möglichkeiten, die Verdrahtung vorzunehmen. Wenn wir sie jedoch vertauschen, kann sich die Drehrichtung der Motoren ändern (im Uhrzeigersinn bzw. im Gegenuhrzeigersinn).
So steuern Sie einen Schrittmotor mit einem L298N-Treiber.
Die Steuerung eines Schrittmotors ist keine einfache Aufgabe, insbesondere wenn man ihn nicht blockierend steuern möchte. Glücklicherweise wird dank der AccelStepper-Bibliothek die Steuerung des Schrittmotors zu einem Kinderspiel.
Der Arduino IDE verfügt auch über eine integrierte Stepper-Bibliothek. Allerdings empfehlen wir nicht, diese Bibliothek zu verwenden, weil:
- Die Bibliothek bietet die blockierende Funktion.
- Das bedeutet, dass es den Arduino Nano ESP32 daran hindert, andere Arbeiten auszuführen, während es den Schrittmotor steuert.
- Es verfügt nicht über ausreichende Funktionen.
Stattdessen empfehlen wir Ihnen, die AccelStepper-Bibliothek zu verwenden. Diese Bibliothek unterstützt:
- Beschleunigung
- Verlangsamung.
- Vollschritt- und Halbschrittbetrieb.
- Mehrere gleichzeitig betriebene Schrittmotoren, jeweils mit unabhängiger, gleichzeitiger Schrittbewegung.
- Nachteil: Mikroschrittbetrieb wird nicht unterstützt
So steuern Sie die Position des Schrittmotors über den L298N-Treiber
Wir können den Schrittmotor in die gewünschte Position bewegen, indem wir Folgendes verwenden:
※ Notiz:
Die Funktion stepper.moveTo() ist nicht blockierend. Das ist ein großer Vorteil der Bibliothek. Allerdings müssen wir bei der Verwendung dieser Funktion aufmerksam sein:
- Rufen Sie 'stepper.run()' so häufig wie möglich auf. Es sollte in der void loop() Funktion aufgerufen werden.
- Verwenden Sie während der Motorbewegung NICHT die delay() Funktion.
- Sie sollten während der Motorbewegung NICHT die Funktionen Serial.print() und Serial.println() verwenden. Diese Funktionen verlangsamen den Schrittmotor.
Wie man die Geschwindigkeit des Schrittmotors über den L298N-Treiber steuert
Wir können nicht nur die Geschwindigkeit, sondern auch die Beschleunigung und Abbremsung durch einige einfache Funktionen steuern.
Wie man die Richtung des Schrittmotors über den L298N-Treiber steuert
Wenn Sie die Verkabelung wie oben vornehmen, dreht sich der Motor in:
- Uhrzeigersinn: wenn wir den Motor von einer Position zu einer höheren Position steuern (Positionsinkrement)
- Gegen den Uhrzeigersinn: wenn wir den Motor von einer Position zu einer niedrigeren Position steuern (Positionsdekrement)
Zum Beispiel:
- Wenn die aktuelle Position 100 beträgt und wir den Motor auf 200 steuern, dreht sich der Motor im Uhrzeigersinn
- Wenn die aktuelle Position -200 beträgt und wir den Motor auf -100 steuern, dreht sich der Motor im Uhrzeigersinn
- Wenn die aktuelle Position 200 beträgt und wir den Motor auf 100 steuern, dreht sich der Motor gegen den Uhrzeigersinn
- Wenn die aktuelle Position -100 beträgt und wir den Motor auf -200 steuern, dreht sich der Motor gegen den Uhrzeigersinn
※ Notiz:
Wie bereits erwähnt, falls Sie OUT1 mit OUT2 vertauschen oder OUT3 mit OUT4, kann die Erhöhung der Position gegen den Uhrzeigersinn erfolgen und die Verringerung der Position im Uhrzeigersinn erfolgen.
Wie man einen Schrittmotor stoppt
- Der Schrittmotor stoppt automatisch, nachdem die gewünschte Position erreicht wurde.
- Der Schrittmotor kann jederzeit durch Aufruf der Funktion stepper.stop() sofort gestoppt werden.
Arduino Nano ESP32-Code – Schrittmotor-Code
Der unten stehende Code führt Folgendes aus:
- Drehe den Motor um eine Umdrehung im Uhrzeigersinn.
- Stoppe den Motor 5 Sekunden lang.
- Drehe den Motor um eine Umdrehung gegen den Uhrzeigersinn zurück.
- Stoppe den Motor 5 Sekunden lang.
- Dieser Prozess wird immer wiederholt.
Schnelle Schritte
Um mit dem Arduino Nano ESP32 zu beginnen, befolgen Sie diese Schritte:
- Wenn Sie neu bei Arduino Nano ESP32 sind, lesen Sie das Tutorial wie man die Entwicklungsumgebung für Arduino Nano ESP32 in der Arduino IDE einrichtet.
- Verdrahten Sie die Komponenten gemäß dem bereitgestellten Diagramm.
- Schließen Sie das Arduino Nano ESP32-Board mit Ihrem Computer über ein USB-Kabel an.
- Öffnen Sie die Arduino IDE auf Ihrem Computer.
- Wählen Sie das Arduino Nano ESP32-Board und den entsprechenden COM-Port aus.
- Öffnen Sie den Bibliotheks-Manager, indem Sie auf das Library Manager-Symbol in der linken Navigationsleiste der Arduino IDE klicken
- Suchen Sie “AccelStepper”, und finden Sie dann die AccelStepper-Bibliothek von Mike McCauley
- Klicken Sie auf die Install-Schaltfläche, um die AccelStepper-Bibliothek zu installieren.

- Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
- Klicken Sie auf die Schaltfläche Hochladen in der Arduino IDE, um den Code auf den Arduino Nano ESP32 hochzuladen.
- Sie werden Folgendes sehen:
- Der Schrittmotor dreht sich eine Umdrehung im Uhrzeigersinn
- Der Schrittmotor stoppt für 5 Sekunden
- Der Schrittmotor dreht sich eine Umdrehung gegen den Uhrzeigersinn
- Der Schrittmotor stoppt für 5 Sekunden
- Der oben beschriebene Prozess wird wiederholt ausgeführt.
- Siehe das Ergebnis im Serial Monitor
Code-Erklärung
Lies die zeilenweise Erklärung in den Kommentarzeilen des Quellcodes!
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.