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:

Die Anleitung gilt für alle Arten von bipolaren Schrittmotoren mit vier Drähten. Als Beispiel wird ein NEMA-17-Schrittmotor verwendet.

ESP8266 NodeMCU Schrittmotor L298N Treiber

Wenn Sie einen anderen Typ von Schrittmotor steuern möchten, schauen Sie sich bitte dieses ESP8266 - 28BYJ-48 Schrittmotor Tutorial an.

Erforderliche Hardware

1×ESP8266 NodeMCU
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Stepper Motor Nema 17
1×L298N Motortreiber-Modul
1×12V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Ü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
Pinbelegung eines bipolaren Schrittmotors

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

Pinbelegung des L298N-Treibers

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

ESP8266 NodeMCU-Schrittmotor-L298N-Treiber-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:

Farbcodierung der Spulen eines Schrittmotors

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.

stepper.moveTo(desiredPosition); // Bewege den Motor um eine Umdrehung

※ 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.

stepper.setAcceleration(50.0); // Beschleunigung/Verzögerung einstellen stepper.setSpeed(200); // gewünschte Geschwindigkeit einstellen

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
/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-stepper-motor */ #include <AccelStepper.h> #define DEG_PER_STEP 1.8 #define STEP_PER_REVOLUTION (360 / DEG_PER_STEP) AccelStepper stepper(AccelStepper::FULL4WIRE, D1, D2, D5, D6); long moveToPosition = STEP_PER_REVOLUTION; void setup() { Serial.begin(9600); stepper.setAcceleration(200.0); // set acceleration stepper.setSpeed(200); // set initial speed stepper.setCurrentPosition(0); // set position to 0 stepper.moveTo(STEP_PER_REVOLUTION); // move motor one revolution, in clockwise direction Serial.println("Motor moving in clockwise direction"); } void loop() { if (stepper.distanceToGo() == 0) { Serial.println("Motor is stopped"); delay(5000); // stop 5 seconds stepper.setCurrentPosition(0); // reset position to 0 moveToPosition = -1 * moveToPosition; // reverse direction stepper.moveTo(moveToPosition); // move motor one revolution if (stepper.distanceToGo() > 0) Serial.println("Motor moving in clockwise direction"); else if (stepper.distanceToGo() < 0) Serial.println("Motor moving in anticlockwise direction"); } // Serial.print(F("position: ")); // Serial.println(stepper.currentPosition()); stepper.run(); // MUST be called as frequently as possible }

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.
ESP8266 NodeMCU AccelStepper-Bibliothek

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.

COM6
Send
Motor moving in clockwise direction Motor is stopped Motor moving in anticlockwise direction Motor is stopped Motor moving in clockwise direction Motor is stopped Motor moving in anticlockwise direction Motor is stopped Motor moving in clockwise direction Motor is stopped Motor moving in anticlockwise direction Motor is stopped
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!