Arduino Nano - Schrittmotor
Dieses Tutorial zeigt Ihnen, wie Sie den Arduino Nano verwenden, um einen Schrittmotor mit dem L298N-Treiber zu steuern. Im Detail werden wir lernen:
- Wie man Arduino Nano und den L298N-Treiber verwendet, um einen bipolaren Schrittmotor zu steuern
- Wie man den Arduino Nano programmiert, um die Position des Schrittmotors zu steuern
- Wie man den Arduino Nano programmiert, um die Geschwindigkeit des Schrittmotors zu steuern
- Wie man den Arduino Nano programmiert, um die Richtung des Schrittmotors zu steuern
Das Tutorial ist auf alle Arten von bipolaren Schrittmotoren mit vier Drähten anwendbar. Es wird einen NEMA-17-Schrittmotor als Beispiel verwenden.

Wenn Sie einen anderen Typ von Schrittmotor steuern möchten, schauen Sie sich bitte dieses Tutorial an: Arduino Nano - 28BYJ-48 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: Dieser Motor hat 4 Drähte
- unipolar: Dieser Motor hat entweder 5 oder 6 Drähte
Bei einem sechsdrahtigen unipolaren Schrittmotor können wir vier der sechs Drähte verwenden und ihn so steuern, als wäre er ein bipolarer Schrittmotor.
Für einen 5-drahtigen unipolaren Schrittmotor schauen Sie sich das Tutorial Arduino Nano - Steuerung des 28BYJ-48-Schrittmotors mit ULN2003-Treiber für weitere Informationen an.
Der Schwerpunkt dieses Tutorials liegt ausschließlich auf dem bipolaren Schrittmotor.
Pinbelegung des bipolaren Schrittmotors
Der bipolare Schrittmotor hat vier Anschlüsse, und die Bezeichnungen dieser Anschlüsse variieren je nach Hersteller. Die folgende Tabelle enthält einige der am häufigsten verwendeten Bezeichnungen:
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 den Kabeln zugewiesenen Bezeichnungen, und die Farben der Drähte können je nach Hersteller variieren. Sie müssen das Datenblatt oder das Handbuch überprüfen, um herauszufinden, wie die Drahtfarbe dem Pin-Namen entspricht. Das obige Bild zeigt außerdem die Spezifikationen von zwei unterschiedlichen Motoren mit unterschiedlichen Drahtkennzeichnungen und -farben.
Schritte pro Umdrehung
Die Spezifikation des Motors gibt den DEG_PER_STEP-Wert an. Je nach Steuerungstechnik kann STEP_PER_REVOLUTION aus der folgenden Tabelle ermittelt 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 eine Messung von 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)° |
Wie man einen Schrittmotor mit dem Arduino Nano steuert
Der Arduino Nano kann Signale erzeugen, um den Schrittmotor zu steuern, jedoch verfügen diese Signale nicht über die ausreichende Spannung und/oder den erforderlichen Strom, den der Schrittmotor benötigt. Daher wird zwischen dem Arduino Nano und dem Schrittmotor ein Hardwaretreiber benötigt. Dieser Treiber hat zwei Funktionen:
- Um die Steuersignale des Arduino Nano in Bezug auf Strom und Spannung zu verstärken
- Um den Arduino Nano vor dem hohen Strom und der hohen Spannung zu schützen, die zum Betrieb des Schrittmotors verwendet werden
Es gibt viele verschiedene Arten von Hardware-Treibern, die zur Steuerung von Schrittmotoren verwendet werden können. Zu den beliebtesten Hardware-Treibern zur Steuerung von Schrittmotoren gehört der L298N-Treiber.
Über den L298N-Treiber
Ein L298N-Treiber kann verwendet werden, um zwei Gleichstrommotoren oder einen Schrittmotor zu steuern. Dieses Tutorial zeigt dir, 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: Dies versorgt das L298N-Modul mit Strom und kann durch 5V vom Arduino Nano bereitgestellt werden.
- IN1, IN2, IN3, IN4-Pins: Diese sind mit den Pins des Arduino verbunden, um das Steuersignal zu empfangen, mit dem der Schrittmotor gesteuert wird.
- OUT1, OUT2, OUT3, OUT4-Pins: Diese sind mit dem Schrittmotor verbunden.
- ENA, ENB-Jumper: Diese dienen dazu, den Schrittmotor zu aktivieren, und sowohl die ENA- als auch ENB-Jumper müssen vorhanden sein.
- 5V-EN Jumper: Wenn dieser Jumper in Position bleibt, bezieht das L298N-Modul seine Stromversorgung aus VCC und am 5V-Pin muss nichts angeschlossen werden. Wenn er entfernt wird, muss das L298N-Modul über einen 5V-Pin mit Strom versorgt werden.
Der L298N-Treiber hat zwei Eingangsspannungen:
- Eine für den Schrittmotor (VCC- und GND-Pins): Spannungsbereich von 5 bis 35 V.
- Eine für den internen Betrieb des L298N-Moduls (5V- und GND-Pins): Spannungsbereich von 5 bis 7 V. Falls der 5V-EN-Jumper belassen wird, ist keine Verbindung zu diesem Pin erforderlich.
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Siehe Der beste Weg, den Arduino Nano und andere Komponenten mit Strom zu versorgen.
※ Notiz:
- Behalten Sie die drei Jumper am L298N-Modul in ihrer aktuellen Position, wenn die Stromversorgung des Motors 12 V oder weniger beträgt.
- Die Pin-Belegung von Schrittmotoren kann zwischen Herstellern variieren. Bitte beachten Sie die untenstehende Tabelle für die korrekte Verdrahtung.
Verdrahtungstabelle zwischen Arduino Nano und L298N-Treiber
Arduino Nano pins | L298N pins |
---|---|
7 | IN1 |
6 | IN2 |
5 | IN3 |
4 | IN4 |
Verdrahtungstabelle zwischen L298N-Treiber und Schrittmotor
Wichtig!: Achten Sie nicht auf die Reihenfolge der Drähte im Schrittmotor im Diagramm oben. Es ist nur eine Abbildung. Die Anordnung der Pins an 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, empfiehlt es sich, das Datenblatt, die Spezifikation oder das Handbuch des Schrittmotors zu prüfen. Stellen Sie sicher, dass die Informationen die Zuordnung zwischen der Farbe des Pins und seinem Namen enthalten. Zum Beispiel liefert dieser Schrittmotor die Zuordnung, wie im folgenden Bild zu sehen ist:

Unter Verwendung der Zuordnung ergibt sich 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 allen oben gezeigten Verdrahtungstabellen zwischen dem Schrittmotor und dem L298N-Treiber ist es möglich, OUT1 mit OUT2 zu vertauschen und OUT3 mit OUT4. Dadurch ergeben sich mehr Möglichkeiten für die Verkabelung. Dennoch kann, wenn der Tausch vorgenommen wird, die Drehrichtung der Motoren verändert werden (von im Uhrzeigersinn zu gegen den Uhrzeigersinn und umgekehrt).
Wie man einen Schrittmotor mit einem L298N-Treiber steuert.
Die Steuerung eines Schrittmotors kann eine herausfordernde Aufgabe sein, insbesondere wenn wir dies ohne Blockierung tun müssen. Glücklicherweise macht die AccelStepper Bibliothek es kinderleicht.
Die Arduino IDE enthält eine integrierte [Stepper]-Bibliothek. Dennoch empfehlen wir nicht, diese Bibliothek zu verwenden, aus den folgenden Gründen:
- Die Bibliothek bietet eine blockierende Funktion. Dies bedeutet, dass der Arduino Nano daran gehindert wird, andere Aufgaben auszuführen, während er den Schrittmotor steuert.
- Die Bibliothek verfügt nicht über ausreichende Funktionen.
Stattdessen empfehlen wir die Verwendung der AccelStepper-Bibliothek. Diese Bibliothek bietet:
- Beschleunigung
- Verzögerung
- Vollschritt- und Halbschrittbetrieb
- Die Fähigkeit, mehrere Schrittmotoren gleichzeitig zu steuern, wobei jeder Motor unabhängig zeitgleich angesteuert wird
- Nachteil: Bietet KEINE Mikroschrittsteuerung.
So steuern Sie die Position eines Schrittmotors über den L298N-Treiber
Wir können unser Ziel erreichen, den Schrittmotor in die gewünschte Position zu bewegen, indem wir Folgendes verwenden:
※ Notiz:
Die Funktion stepper.moveTo() ist nicht-blockierend, was ein großer Vorteil der Bibliothek ist. Allerdings gibt es beim Verwenden dieser Funktion einige Punkte, auf die man achten sollte:
- Stellen Sie sicher, dass Sie 'stepper.run()' so oft wie möglich aufrufen, vorzugsweise in der [void loop()]-Funktion.
- Vermeiden Sie die Verwendung der delay()-Funktion, während der Motor in Bewegung ist.
- Verwenden Sie während des Motorbetriebs nicht die Funktionen [Serial.print()] und [Serial.println()], da diese den Schrittmotor verlangsamen.
Wie man die Geschwindigkeit eines Schrittmotors über den L298N-Treiber steuert
Wir können nicht nur die Geschwindigkeit, sondern auch die Beschleunigung und die Verlangsamung durch den Einsatz einiger grundlegender Funktionen regulieren.
Wie man die Richtung eines Schrittmotors über den L298N-Treiber steuert
Wenn Sie den Motor wie angegeben verdrahten, dreht er sich in:
- Uhrzeigersinn: wenn der Motor von einer unteren Position zu einer höheren Position gesteuert wird (Positionsanstieg)
- Gegen den Uhrzeigersinn: wenn der Motor von einer höheren Position zu einer niedrigeren Position gesteuert wird (Positionsabstieg)
Beispiele:
- Wenn die aktuelle Position 100 beträgt und der Motor auf 200 ausgerichtet wird, dreht er sich im Uhrzeigersinn.
- Wenn die aktuelle Position -200 beträgt und der Motor auf -100 gesteuert wird, dreht er sich im Uhrzeigersinn.
- Wenn die aktuelle Position 200 beträgt und der Motor auf 100 geregelt 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, wenn Sie OUT1 mit OUT2 austauschen oder OUT3 mit OUT4, könnte die Zunahme der Position gegen den Uhrzeigersinn erfolgen und die Abnahme der Position im Uhrzeigersinn.
Wie man einen Schrittmotor stoppt
- Der Schrittmotor wird anhalten, sobald er die gewünschte Position erreicht hat.
- Es ist außerdem möglich, ihn sofort zum Stillstand zu bringen, indem man die Funktion stepper.stop() verwendet.
Arduino Nano 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.
- Hält den Motor für 5 Sekunden an.
- Wiederholt den Vorgang immer wieder.
Schnelle Schritte
- Klicken Sie auf das Bibliotheken-Symbol in der linken Seitenleiste der Arduino-IDE.
- Suchen Sie nach “AccelStepper” und finden Sie die von Mike McCauley erstellte AccelStepper-Bibliothek.
- Drücken Sie die Installieren-Schaltfläche, um die Installation der AccelStepper-Bibliothek abzuschließen.

- Kopieren Sie den Code und öffnen Sie ihn in der Arduino-IDE.
- Klicken Sie auf die Upload-Schaltfläche, um den Code auf den Arduino Nano hochzuladen.
- Der Schrittmotor dreht sich eine Umdrehung im Uhrzeigersinn, pausiert 5 Sekunden, dreht sich eine Umdrehung entgegen dem Uhrzeigersinn zurück, pausiert 5 Sekunden und wiederholt diesen Vorgang.
- Überprüfen Sie das Ergebnis im Serial 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.