Arduino Nano ESP32 - 28BYJ-48-Schrittmotor ULN2003-Treiber

In diesem Tutorial werden wir die folgenden Themen behandeln:

Arduino Nano ESP32 ULN2003 28BYJ-48 Schrittmotor

Schrittmotoren zeichnen sich durch eine präzise Positionssteuerung aus, da sie eine komplette Umdrehung in diskrete "Schritte" unterteilen. Diese Motoren finden Anwendung in einer Vielzahl von Geräten, einschließlich Druckern, 3D-Druckern, CNC-Maschinen und industriellen Automatisierungssystemen.

Eine erschwingliche Methode, Einblick in Schrittmotoren zu gewinnen, besteht darin, mit 28BYJ-48-Schrittmotoren zu experimentieren. In der Regel werden diese Motoren mit Treiberplatinen geliefert, die auf dem ULN2003 basieren, wodurch ihre Nutzung erheblich vereinfacht wird.

Erforderliche Hardware

1×Arduino Nano ESP32
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×28BYJ-48 stepper motor + ULN2003 Driver Module
1×5V Netzteil
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

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 den 28BYJ-48-Schrittmotor

Laut dem Datenblatt bewegt sich der 28BYJ-48-Motor im Vollschrittbetrieb in 11,25-Grad-Schritten, was zu 32 Schritten pro vollständiger Umdrehung führt (wie berechnet: 360°/11,25° = 32).

Darüber hinaus verfügt der Motor über ein 1/64-Untersetzungsgetriebe, wodurch seine Schrittzahl effektiv auf 32 × 64 erhöht wird und sich daraus 2048 Schritte pro Umdrehung ergeben. Jeder dieser 2048 Schritte entspricht einer Umdrehung von 360°/2048, was ungefähr 0,1758 Grad pro Schritt ergibt.

Schlussfolgerung: Wenn der Motor 2048 Schritte macht (im Vollschrittmodus), dreht sich der Motor um eine Umdrehung.

Pinbelegung

Der 28BYJ-48-Schrittmotor verfügt über 5 Pins. Wir müssen uns nicht im Detail um diese Pins kümmern. Wir schließen ihn einfach an den Anschluss des ULN2003-Motortreibers an.

28BYJ-48-Schrittmotor

Über das ULN2003-Schrittmotortreiber-Modul

Der ULN2003 zeichnet sich als weit verbreitetes Motortreiber-Modul für Schrittmotoren aus. Zu den wichtigsten Merkmalen des Moduls gehören:

  • Vier LEDs, die aufleuchten, um die Aktivität der vier Steuereingänge anzuzeigen und damit den aktuellen Schrittzustand des Motors widerzuspiegeln. Diese LEDs dienen nicht nur einem praktischen Zweck, sondern verleihen dem Schaltvorgang auch ein optisches Element.
  • Ein ON/OFF-Jumper ist in das Modul integriert und ermöglicht die Trennung der Stromversorgung des angeschlossenen Schrittmotors. Dieses Merkmal bietet eine bequeme Möglichkeit, die Stromversorgung des Motors zu steuern und ermöglicht so eine effiziente Energieverwaltung.

ULN2003 Pinbelegung

ULN2003-Schrittmotor-Treiber Pinbelegung

ULN2003-Modul enthält 6 Pins und einen weiblichen Stecker:

  • IN1-Pin: Wird verwendet, um den Motor anzusteuern. Verbinden Sie ihn mit einem Ausgangspin am Arduino Nano ESP32.
  • IN2-Pin: Wird verwendet, um den Motor anzusteuern. Verbinden Sie ihn mit einem Ausgangspin am Arduino Nano ESP32.
  • IN3-Pin: Wird verwendet, um den Motor anzusteuern. Verbinden Sie ihn mit einem Ausgangspin am Arduino Nano ESP32.
  • IN4-Pin: Wird verwendet, um den Motor anzusteuern. Verbinden Sie ihn mit einem Ausgangspin am Arduino Nano ESP32.
  • GND-Pin: Ist ein gemeinsamer Masseanschluss. Er muss sowohl mit dem GND des Arduino Nano ESP32 als auch mit dem GND der externen Stromversorgung verbunden werden.
  • VDD-Pin: Versorgt den Motor mit Strom. Verbinden Sie ihn mit der externen Stromversorgung.
  • Motoranschluss: Hier wird der Motor angeschlossen.

※ Notiz:

Wenn es darum geht, Schrittmotoren mit Strom zu versorgen, ist es wichtig, diese Richtlinien zu beachten:

  • Stellen Sie sicher, dass die Spannung des externen Netzteils den Spannungsanforderungen des Schrittmotors entspricht. Zum Beispiel, wenn Ihr Schrittmotor mit 12 V DC betrieben wird, ist es entscheidend, ein 12-V-Netzteil zu verwenden. Im Fall des 28BYJ-48-Schrittmotors, der mit 5 V DC funktioniert, ist es zwingend erforderlich, ein 5-V-Netzteil zu verwenden.
  • Es ist wichtig zu beachten, dass selbst wenn ein Schrittmotor dafür ausgelegt ist, mit einer 5-V-Stromversorgung betrieben zu werden, VERBINDEN Sie den VDD-Pin NICHT mit dem 5-V-Pin des Arduino Nano ESP32. Stattdessen verbinden Sie den VDD-Pin mit einer externen 5-V-Stromquelle. Diese Vorsichtsmaßnahme ist entscheidend, da Schrittmotoren eine beträchtliche Leistungsaufnahme haben können, die die Leistungsfähigkeit der Stromversorgung des ESP32 übersteigen könnte und dadurch zu Problemen oder Schäden führen könnte.

Verdrahtungsdiagramm

Arduino Nano ESP32 Schrittmotor ULN2003-Treiber Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Bitte beachten Sie, dass wir uns nicht um die Drahtfarbe des Schrittmotors kümmern müssen. Wir müssen lediglich den männlichen Stecker (am 28BYJ-48-Schrittmotor) in den weiblichen Stecker (am ULN2003-Treiber) stecken.

Wie man programmiert, um einen Schrittmotor zu steuern

Wenn es um die Steuerung eines Schrittmotors geht, gibt es drei Hauptmethoden:

  • Vollschritt
  • Halbschritt
  • Mikroschritt

Für grundlegende Anwendungen ist die Vollschritt-Methode oft ausreichend. Allerdings werden im letzten Teil dieses Tutorials detaillierte Erklärungen zu allen drei Methoden bereitgestellt. Es ist erwähnenswert, dass die Programmierung für diese Methoden komplex sein kann. Die gute Nachricht ist, dass es viele Bibliotheken gibt, die diese Komplexität für uns handhaben. Alles, was wir tun müssen, ist, die passende Bibliothek zu verwenden, wodurch die Steuerung von Schrittmotoren in unseren Projekten vereinfacht wird.

Die Arduino-IDE enthält eine integrierte Stepper-Bibliothek, aber wir raten davon ab, sie aus den folgenden Gründen zu verwenden:

  • Blockierende Natur: Diese Bibliothek arbeitet blockierend, was bedeutet, dass sie die Ressourcen des ESP32 monopolisiert und verhindert, dass er andere Aufgaben ausführt, während der Schrittmotor gesteuert wird.
  • Begrenzte Funktionalität: Die eingebaute Stepper-Bibliothek bietet möglicherweise nicht alle Funktionen und Merkmale, die Sie für Ihr Projekt benötigen.

Stattdessen empfehlen wir die Verwendung der AccelStepper-Bibliothek. Diese Bibliothek bietet mehrere Vorteile, darunter:

  • Beschleunigung und Abbremsung: Es unterstützt eine sanfte Beschleunigung und Abbremsung, wodurch eine präzisere Steuerung möglich ist.
  • Vollschritt- und Halbschrittbetrieb: Sie können zwischen Vollschritt- und Halbschrittbetriebsmodi für Ihren Schrittmotor wählen.
  • Mehrere Schrittmotoren gleichzeitig: AccelStepper ermöglicht die Steuerung mehrerer Schrittmotoren gleichzeitig, wobei jeder Schrittmotor unabhängig voneinander und zeitgleich bewegt wird.

Es ist jedoch wichtig zu beachten, dass die Bibliothek einen Nachteil hat: Sie unterstützt keinen Mikroschrittbetrieb.

Arduino Nano ESP32-Code

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 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/arduino-nano-esp32/arduino-nano-esp32-28byj-48-stepper-motor-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // The Arduino Nano ESP32 pin entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper(AccelStepper::FULL4WIRE, D11, D9, D10, D8); void setup() { Serial.begin(9600); stepper.setMaxSpeed(1000.0); // set the maximum speed stepper.setAcceleration(50.0); // set acceleration stepper.setSpeed(200); // set initial speed stepper.setCurrentPosition(0); // set position stepper.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper.distanceToGo() == 0) stepper.moveTo(-stepper.currentPosition()); stepper.run(); // MUST be called in loop() function Serial.print(F("Current Position: ")); Serial.println(stepper.currentPosition()); }

Schnelle Schritte

Um mit dem Arduino Nano ESP32 zu beginnen, befolgen Sie diese Schritte:

  • Wenn Sie neu beim Arduino Nano ESP32 sind, lesen Sie das Tutorial zu wie man die Umgebung für Arduino Nano ESP32 in der Arduino IDE einrichtet.
  • Schließen Sie die Komponenten gemäß dem bereitgestellten Diagramm an.
  • Schließen Sie das Arduino Nano ESP32-Board mit einem USB-Kabel an Ihren Computer 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 Library 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 den Install-Button, um die AccelStepper-Bibliothek zu installieren.
Arduino Nano ESP32 AccelStepper-Bibliothek
  • Kopiere den obigen Code und öffne ihn mit der Arduino IDE
  • Klicke auf die Schaltfläche Upload in der Arduino IDE, um den Code auf das Arduino Nano ESP32 hochzuladen
  • Sieh dir den Motor an, der sich dreht. Er sollte:
    • Eine Umdrehung im Uhrzeigersinn drehen, und dann
    • Zwei Umdrehungen gegen den Uhrzeigersinn drehen, und dann
    • Zwei Umdrehungen im Uhrzeigersinn drehen.

    Dieser Prozess wird unendlich oft wiederholt.

    • Siehe das Ergebnis im seriellen Monitor

Wie man mehrere 28BYJ-48-Schrittmotoren steuert

Lernen wir, wie man zwei Schrittmotoren gleichzeitig unabhängig voneinander steuert.

Verdrahtungsdiagramm für zwei 28BYJ-48-Schrittmotoren

Arduino Nano ESP32 zwei Schrittmotoren ULN2003-Treiber Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Arduino Nano ESP32 Code für zwei 28BYJ-48-Schrittmotoren

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 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/arduino-nano-esp32/arduino-nano-esp32-28byj-48-stepper-motor-uln2003-driver */ // Include the AccelStepper Library #include <AccelStepper.h> // define step constant #define FULLSTEP 4 #define STEP_PER_REVOLUTION 2048 // this value is from datasheet // The Arduino Nano ESP32 pin entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper_1(FULLSTEP, D11, D9, D10, D8); AccelStepper stepper_2(FULLSTEP, D7, D5, D6, D4); void setup() { Serial.begin(9600); stepper_1.setMaxSpeed(1000.0); // set the maximum speed stepper_1.setAcceleration(50.0); // set acceleration stepper_1.setSpeed(200); // set initial speed stepper_1.setCurrentPosition(0); // set position stepper_1.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution stepper_2.setMaxSpeed(1000.0); // set the maximum speed stepper_2.setAcceleration(50.0); // set acceleration stepper_2.setSpeed(200); // set initial speed stepper_2.setCurrentPosition(0); // set position stepper_2.moveTo(STEP_PER_REVOLUTION); // set target position: 64 steps <=> one revolution } void loop() { // change direction once the motor reaches target position if (stepper_1.distanceToGo() == 0) stepper_1.moveTo(-stepper_1.currentPosition()); if (stepper_2.distanceToGo() == 0) stepper_2.moveTo(-stepper_2.currentPosition()); stepper_1.run(); // MUST be called in loop() function stepper_2.run(); // MUST be called in loop() function Serial.print(F("stepper_1# current position: ")); Serial.println(stepper_1.currentPosition()); Serial.print(F("stepper_2# current position: ")); Serial.println(stepper_2.currentPosition()); }

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