Arduino - Steuert den Schrittmotor mit dem L298N-Treiber
In diesem Tutorial werden wir lernen:
- 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 Richtung des Schrittmotors steuert
Die Anleitung kann auf jeden bipolaren Schrittmotor (4 Drähte) angewendet werden. Die Anleitung verwendet einen NEMA-17-Schrittmotor als Beispiel.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables STEM V3 Starter-Kit (Arduino enthalten) | |
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über den Schrittmotor
Es gibt zwei gängige Typen von Schrittmotoren:
- bipolar: Dieser Motortyp hat 4 Drähte
- unipolar: Dieser Motortyp hat 5 Drähte oder 6 Drähte.
Für einen 6-drahtigen unipolaren Schrittmotor können wir vier der sechs Drähte verwenden und ihn als bipolaren Schrittmotor steuern.
Für einen 5-Draht-Unipolar-Schrittmotor siehe Arduino - Ansteuerung des 28BYJ-48-Schrittmotors mit ULN2003-Treiber
Dieses Tutorial konzentriert sich nur auf den bipolaren Schrittmotor.
Pinbelegung des bipolaren Schrittmotors
Die Pinbelegung eines bipolaren Schrittmotors umfasst vier Pins. Je nach Hersteller haben die Pins des Motors verschiedene Bezeichnungen. Die untenstehende Tabelle zeigt einige gängige Pin-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 Reihenfolge der Pins, die Bezeichnungen der Drähte und die Drahtfarben können je nach Hersteller variieren. Sie müssen das Datenblatt oder das Handbuch lesen, um die Zuordnung zwischen Drahtfarbe und Pin-Bezeichnung zu sehen. Das obige Bild zeigt außerdem die Spezifikation zweier unterschiedlicher Motoren mit unterschiedlichen Drahtbezeichnungen und Drahtfarben.
Schritte pro Umdrehung
Die Spezifikation des Motors gibt den Grad pro Schritt an (nennen wir DEG_PER_STEP). Je nach Steuerungsmethode wird die Schrittanzahl 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, wenn das Datenblatt des Motors 1,8 Grad 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 Arduino steuert
Arduino kann Signale erzeugen, um den Schrittmotor zu steuern. Allerdings reichen die Signale vom Arduino nicht aus, um die vom Schrittmotor benötigte Spannung und/oder den benötigten Strom bereitzustellen. Daher benötigen wir einen Hardware-Treiber zwischen dem Arduino und dem Schrittmotor. Der Treiber erledigt zwei Aufgaben:
- Verstärke die Steuersignale vom Arduino (Strom und Spannung)
- Schütze den Arduino vor hohen Strömen und Spannungen, die zur Versorgung des Schrittmotors verwendet werden
Es gibt viele Arten von Hardware-Treibern, die zur Steuerung von Schrittmotoren verwendet werden können. Der L298N-Treiber ist einer der am weitesten verbreiteten Hardware-Treiber zur Steuerung von Schrittmotoren.
Ü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 zur Steuerung des Schrittmotors verwendet.
L298N Treiber-Pinbelegung

L298N-Treiber hat 11 Pins und drei Jumper:
- VCC-Pin: versorgt den Motor mit Strom. Er kann 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 vom Arduino mit 5V versorgt werden.
- IN1, IN2, IN3, IN4-Pins: sind mit den Pins des Arduino verbunden, um das Steuersignal zum Ansteuern des Schrittmotors zu empfangen.
- OUT1, OUT2, OUT3, OUT4-Pins: sind mit dem Schrittmotor verbunden.
- ENA- und 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 an Ort und Stelle belassen, stammt die Stromversorgung für das L298N-Modul aus dem VCC; wir müssen nichts an den 5V-Pin anschließen. Entfernen wir den 5V-EN-Jumper, muss das L298N-Modul über einen 5V-Pin mit Strom versorgt werden.
Wie oben beschrieben verfügt der L298N-Treiber über zwei Eingangsspannungen:
- Einer für den Schrittmotor (VCC- und GND-Pins): von 5 bis 35 V.
- Einer für den internen Betrieb des L298N-Moduls (5V- und GND-Pins): von 5 bis 7 V. Wenn der 5V-EN-Jumper belassen wird, müssen wir diesen Pin nicht mit irgendetwas verbinden.
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
※ Notiz:
- Bitte belassen Sie alle drei Jumper am L298N-Modul an Ort und Stelle (falls die Stromversorgung des Motors ≤ 12 V beträgt)
- Die Reihenfolge der Pins bei Schrittmotoren kann zwischen Herstellern variieren. Bitte prüfen Sie die untenstehende Tabelle auf die korrekte Verkabelung.
Verdrahtungstabelle zwischen Arduino und L298N-Treiber
Arduino pins | L298N pins |
---|---|
7 | IN1 |
6 | IN2 |
5 | IN3 |
4 | IN4 |
Verdrahtungstabelle zwischen dem L298N-Treiber und dem Schrittmotor
Wichtig! Bitte machen Sie sich keine Gedanken über die Drahtreihenfolge des Schrittmotors auf dem oben gezeigten Verdrahtungsdiagramm. Es ist nur ein Beispiel. Die Reihenfolge der Pins bei Schrittmotoren kann zwischen Herstellern variieren. Stellen Sie sicher, dass Ihre Verkabelung 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 diese Unterlagen die Zuordnung zwischen der Farbe der Pins und den Namen der Pins angeben. Zum Beispiel liefert dieser Schrittmotor die Zuordnung wie im folgenden Bild:

Basierend auf dieser Zuordnung wird die Verdrahtungstabelle zu:
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 aufgeführten 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 für die Verkabelung. Wenn wir sie jedoch vertauschen, kann sich die Drehrichtung der Motoren ändern (von Uhrzeigersinn zu Gegenuhrzeigersinn und umgekehrt).
Wie man einen Schrittmotor mit einem L298N-Treiber steuert.
Die Steuerung eines Schrittmotors ist keine einfache Aufgabe, insbesondere wenn wir ihn in einer nicht-blockierenden Weise steuern möchten. Glücklicherweise wird die Steuerung des Schrittmotors dank der AccelStepper Bibliothek zum Kinderspiel.
Die Arduino IDE hat auch eine integrierte Stepper-Bibliothek. Allerdings empfehlen wir Ihnen nicht, diese Bibliothek zu verwenden, weil:
- Die Bibliothek stellt die blockierende Funktion bereit. Das bedeutet, dass sie Arduino daran hindert, andere Aufgaben auszuführen, während sie den Schrittmotor steuert.
- Sie verfügt nicht über ausreichende Funktionen.
Stattdessen empfehlen wir Ihnen, die AccelStepper-Bibliothek zu verwenden. Diese Bibliothek unterstützt:
- Beschleunigung
- Verzögerung.
- Vollschritt- und Halbschrittbetrieb.
- Mehrere Schrittmotoren gleichzeitig, mit unabhängiger, gleichzeitiger Schrittfolge an jedem Motor.
- Nachteil: Mikroschrittbetrieb wird nicht unterstützt
Wie man die Position des Schrittmotors über den L298N-Treiber steuert
Wir können den Schrittmotor verwenden, um die gewünschte Position zu erreichen:
※ Notiz:
Die stepper.moveTo()-Funktion ist nicht blockierend. Das ist ein großer Vorteil der Bibliothek. Allerdings müssen wir bei der Verwendung dieser Funktion darauf achten:
- 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.
- Verwenden Sie während der Motorbewegung NICHT die Serial.print() und Serial.println()-Funktionen. Diese Funktionen verlangsamen den Schrittmotor.
So steuern Sie die Geschwindigkeit eines Schrittmotors über den L298N-Treiber
Wir können nicht nur die Geschwindigkeit, sondern auch die Beschleunigung und die Verlangsamung durch den Einsatz einiger einfacher Funktionen steuern.
So steuern Sie die Richtung eines Schrittmotors über den L298N-Treiber
Wenn Sie die Verdrahtung wie oben durchführen, dreht sich der Motor in:
- Uhrzeigersinn: wenn wir den Motor von einer Position zu einer höheren Position steuern (Positionsanstieg)
- Gegen den Uhrzeigersinn: wenn wir den Motor von einer Position zu einer niedrigeren Position steuern (Positionsabnahme)
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, kann die Erhöhung der Position gegen den Uhrzeigersinn erfolgen, wenn Sie OUT1 mit OUT2 vertauschen oder OUT3 mit OUT4 vertauschen, und die Verringerung der Position kann im Uhrzeigersinn erfolgen.
Wie man einen Schrittmotor stoppt
- Der Schrittmotor wird automatisch gestoppt, nachdem die gewünschte Position erreicht wurde.
- Der Schrittmotor kann jederzeit sofort gestoppt werden, indem die Funktion stepper.stop() verwendet wird.
Arduino-Code - Schrittmotor-Code
Der folgende Code macht Folgendes:
- Drehen Sie den Motor eine Umdrehung im Uhrzeigersinn.
- Stoppen Sie den Motor fünf Sekunden lang.
- Drehen Sie den Motor eine Umdrehung gegen den Uhrzeigersinn.
- Stoppen Sie den Motor fünf Sekunden lang.
- Dieser Prozess wird immer wiederholt.
Schnelle Schritte
- Navigieren Sie zum Bibliotheken-Symbol in der linken Leiste der Arduino-IDE.
- Suchen Sie “AccelStepper”, und finden Sie dann die AccelStepper-Bibliothek von Mike McCauley
- Klicken Sie auf die Installieren-Schaltfläche, um die AccelStepper-Bibliothek zu installieren.

- Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
- Klicken Sie in der Arduino IDE auf die Schaltfläche Hochladen, um den Code auf den Arduino hochzuladen
- Sie sehen:
- Der Schrittmotor dreht eine Umdrehung im Uhrzeigersinn
- Der Schrittmotor bleibt 5 Sekunden lang stehen
- Der Schrittmotor dreht eine Umdrehung gegen den Uhrzeigersinn
- Der Schrittmotor bleibt 5 Sekunden lang stehen
- Der obige Ablauf wird wiederholt.
- Siehe das Ergebnis im Serial Monitor
Code-Erklärung
Lies die zeilenweise Erläuterung 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.