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

Dieses Tutorial zeigt Ihnen, wie Sie den Arduino Nano verwenden, um den 28BYJ-48-Schrittmotor mit dem ULN2003-Treiber zu steuern. Im Detail werden wir Folgendes lernen:

Arduino Nano ULN2003 28BYJ-48 Schrittmotor

Erforderliche Hardware

1×Official Arduino Nano
1×Alternativ: DIYables ATMEGA328P Nano Development Board
1×USB-A-zu-Mini-B-Kabel
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

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

Schrittmotoren eignen sich hervorragend zur Positionsregelung. Sie unterteilen eine vollständige Umdrehung in eine Anzahl gleicher Schritte. Diese Motoren werden in vielen Geräten eingesetzt, z. B. in Druckern, 3D-Druckern, CNC-Maschinen und in der industriellen Automatisierung.

Eine der kostengünstigen Methoden, um Kenntnisse über Schrittmotoren zu erlangen, besteht darin, 28BYJ-48-Schrittmotoren zu verwenden. Diese werden typischerweise mit einer ULN2003-basierten Treiberplatine geliefert, was sie unglaublich einfach zu bedienen macht.

Wie im Datenblatt angegeben, arbeitet der 28BYJ-48-Motor im Vollschrittbetrieb, wobei jeder Schritt einer 11,25°-Drehung entspricht. Daher gibt es 32 Schritte pro Umdrehung (360°/11,25° = 32).

Außerdem verfügt der Motor über ein 1:64-Untersetzungsgetriebe. Dies entspricht 32 × 64 = 2048 Schritten. Jeder Schritt entspricht 360°/2048 = 0,1758°.

Schlussfolgerung: Wenn der Motor im Vollschrittmodus betrieben wird, benötigt er 2048 Schritte, um eine vollständige Umdrehung zu erreichen.

Der 28BYJ-48-Schrittmotor mit ULN2003-Treiber-Pinbelegung

Der 28BYJ-48-Schrittmotor hat 5 Pins. Es ist nicht nötig, sich um die Spezifikationen dieser Pins zu kümmern; sie müssen einfach an den ULN2003-Motor-Treiberstecker angeschlossen werden.

28BYJ-48-Schrittmotor

Über den ULN2003-Schrittmotortreiber

Der ULN2003 ist ein weit verbreitetes Motortreiber-Modul für Schrittmotoren.

  • Es verfügt über vier LEDs, die die Aktivität der vier Steuereingänge demonstrieren und so einen großartigen visuellen Effekt erzeugen, wenn der Motor Schritte macht.
  • Zusätzlich verfügt es über eine Ein/Aus-Brücke, um die Stromzufuhr zum Schrittmotor zu trennen.

ULN2003 Pinbelegung

ULN2003 Schrittmotor-Treiber Pinbelegung

Das ULN2003-Modul hat 6 Pins und eine weibliche Buchse:

  • IN1-Pin: Dieser Pin wird verwendet, um den Motor zu steuern. Er sollte mit einem Ausgangspin auf dem Arduino Nano-Board verbunden werden.
  • IN2-Pin: Dieser Pin wird verwendet, um den Motor zu steuern. Er sollte mit einem Ausgangspin auf dem Arduino Nano-Board verbunden werden.
  • IN3-Pin: Dieser Pin wird verwendet, um den Motor zu steuern. Er sollte mit einem Ausgangspin auf dem Arduino Nano-Board verbunden werden.
  • IN4-Pin: Dieser Pin wird verwendet, um den Motor zu steuern. Er sollte mit einem Ausgangspin auf dem Arduino Nano-Board verbunden werden.
  • GND-Pin: Dies ist der gemeinsame Massepin. Er muss sowohl mit dem Masse-Anschluss des Arduino Nano-Boards als auch mit dem Masse-Anschluss des externen Netzteils verbunden werden.
  • VDD-Pin: Dieser Pin versorgt den Motor mit Strom. Er sollte mit dem externen Netzteil verbunden werden.
  • Motoranschluss: Hier wird der Motor eingesteckt.

※ Notiz:

  • Die Spannung der externen Stromversorgung sollte der Spannung des Schrittmotors entsprechen. Zum Beispiel: Wenn ein Schrittmotor mit 12 V DC arbeitet, müssen wir eine 12-V-Stromversorgung verwenden. Im Fall des Schrittmotors 28BYJ-48 arbeitet er mit 5 V DC, daher verwenden wir eine 5-V-Stromversorgung.
  • Allerdings, selbst wenn der Schrittmotor eine 5-V-Stromversorgung benötigt, verbinden Sie NICHT den VDD-Pin mit dem 5-V-Pin des Arduino Nano. Stattdessen schließen Sie ihn an eine externe 5-V-Stromversorgung an, da der Schrittmotor zu viel Leistung zieht.

Verdrahtungsdiagramm

Arduino Nano Schrittmotor ULN2003-Treiber Verdrahtungsdiagramm

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

Es ist nicht notwendig, auf die Farbe der Kabel am Schrittmotor zu achten. Alles, was erforderlich ist, besteht darin, den männlichen Stecker am 28BYJ-48-Schrittmotor mit dem weiblichen Stecker am ULN2003-Treiber zu verbinden.

Wie man programmiert, um einen Schrittmotor zu steuern

Es gibt drei Möglichkeiten, einen Schrittmotor zu steuern:

  • Vollschritt
  • Halbschritt
  • Mikroschritt

Für grundlegende Anwendungen können wir den Vollschritt-Ansatz verwenden. Die Einzelheiten der drei Methoden werden im abschließenden Abschnitt dieses Tutorials erläutert. Die Programmierung dieser Techniken kann komplex sein. Glücklicherweise gibt es viele Bibliotheken, die die Arbeit bereits für uns erledigt haben, sodass wir sie einfach nutzen können.

Die Arduino IDE verfügt über eine integrierte Stepper-Bibliothek. Allerdings empfehlen wir nicht, diese Bibliothek zu verwenden, da:

  • Es ist eine blockierende Bibliothek, was bedeutet, dass sie den Arduino Nano daran hindert, während der Ansteuerung des Schrittmotors andere Aufgaben auszuführen.
  • Sie bietet nicht genügend Funktionen.

Stattdessen empfehlen wir Ihnen, die AccelStepper Bibliothek zu verwenden. Diese Bibliothek bietet:

  • Beschleunigung
  • Verlangsamung
  • Vollschritt- und Halbschrittbetrieb
  • Mehrere gleichzeitig betriebene Schrittmotoren, mit unabhängiger, gleichzeitiger Schrittfolge bei jedem Motor
  • Nachteil: Keine Mikroschrittsteuerung

Arduino Nano Code

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano-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 // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper(FULLSTEP, 11, 9, 10, 8); 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

  • Klicken Sie auf das Bibliotheken-Symbol in der linken Seitenleiste der Arduino-IDE.
  • Suchen Sie nach „AccelStepper“, und finden Sie anschließend die von Mike McCauley erstellte AccelStepper-Bibliothek.
  • Klicken Sie auf die Schaltfläche Installieren, um die AccelStepper-Bibliothek hinzuzufügen.
Arduino Nano AccelStepper-Bibliothek
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino-IDE.
  • Klicken Sie auf die Hochladen-Schaltfläche in der Arduino-IDE, um den Code auf den Arduino Nano hochzuladen.
  • Sie sollten dann sehen, wie der Motor rotiert. Er sollte eine Umdrehung im Uhrzeigersinn durchführen, gefolgt von zwei Umdrehungen gegen den Uhrzeigersinn, und dann zwei Umdrehungen im Uhrzeigersinn.

Das Verfahren wird kontinuierlich durchgeführt.

  • Schau dir die Ausgabe im Serial Monitor an.
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Wie man mehrere 28BYJ-48-Schrittmotoren steuert

Lassen Sie uns herausfinden, wie man zwei Schrittmotoren getrennt und doch gleichzeitig steuert.

Schaltplan für zwei 28BYJ-48-Schrittmotoren

Arduino Nano zwei Schrittmotoren ULN2003-Treiber 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.

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

/* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano-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 // Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence AccelStepper stepper_1(FULLSTEP, 11, 9, 10, 8); AccelStepper stepper_2(FULLSTEP, 7, 5, 6, 4); 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()); }

Zusätzliches Wissen

1. Schrittmotor vibriert während der Bewegung

Seien Sie NICHT besorgt, wenn der Schrittmotor während der Bewegung wackelt. Dies ist eine Eigenschaft des Schrittmotors. Wir können die Vibration durch die Mikroschrittsteuerung verringern.

Darüber hinaus kann der Schrittmotor, wenn diese Funktion richtig genutzt wird, Musik erzeugen, als wäre er ein Musikinstrument. Ein Beispiel dafür finden Sie hier auf Hackster.io.

2. Methode zur Steuerung von Schrittmotoren

  • Vollschritt: Die Bewegungseinheit ist ein Schritt, der dem im Datenblatt oder Handbuch des Schrittmotors angegebenen Gradwert entspricht.
  • Halbschritt: Teilt jeden Vollschritt in zwei kleinere Schritte auf. Die Bewegungseinheit ist die Hälfte des Vollschritts. Diese Methode ermöglicht dem Motor eine doppelte Auflösung.
  • Mikroschritt: Teilt jeden Vollschritt in viele kleinere Schritte auf. Die Bewegungseinheit ist ein Bruchteil des Vollschritts. Der Bruchteil kann 1/4, 1/8, 1/16, 1/32 oder sogar noch größer sein. Diese Methode ermöglicht dem Motor eine höhere Auflösung. Sie sorgt außerdem dafür, dass der Motor bei niedrigen Geschwindigkeiten gleichmäßiger läuft. Je größer der Nenner, desto höher die Auflösung und desto sanfter die Bewegung.

Wenn das Datenblatt des Motors 1,8° pro Schritt angibt:

  • Vollschritt: Der Motor bewegt sich in Schritten von 1,8 Grad pro Schritt, was zu 200 Schritten pro Umdrehung führt.
  • Halbschritt: Der Motor bewegt sich in Schritten von 0,9 Grad pro Schritt, was zu 400 Schritten pro Umdrehung führt.
  • Mikroschritt: Der Motor bewegt sich in Inkrementen von 0,45, 0,225, 0,1125, 0,05625 Grad pro Schritt, was zu 800, 1600, 3200, 6400... Schritten pro Umdrehung führt.

Die im obigen Code verwendete Steuerungsmethode war der Vollschrittansatz.

3. Resonanzproblem

Dies ist für fortgeschrittene Anwender. Anfänger brauchen sich nicht damit zu befassen. Es tritt in einem Geschwindigkeitsbereich auf, in dem die Schrittfrequenz der Eigenfrequenz des Motors entspricht. Es kann zu einer deutlichen Veränderung des vom Motor erzeugten Geräuschs sowie zu einer Zunahme der Vibration kommen. In praktischen Anwendungen sollten Entwickler dies berücksichtigen.

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!