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:

Das Tutorial ist auf alle Arten von bipolaren Schrittmotoren mit vier Drähten anwendbar. Es wird einen NEMA-17-Schrittmotor als Beispiel verwenden.

Arduino Nano Schrittmotor L298N-Treiber

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

Erforderliche Hardware

1×Official Arduino Nano
1×Alternativ: DIYables ATMEGA328P Nano Development Board
1×USB-A-zu-Mini-B-Kabel
1×Stepper Motor Nema 17
1×L298N Motortreiber-Modul
1×12V 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 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
Pinbelegung eines bipolaren Schrittmotors

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

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

Verdrahtungsdiagramm für Arduino Nano Schrittmotor L298N-Treiber

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:

Farbzuordnung der Spulen eines Schrittmotors

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:

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

stepper.setAcceleration(50.0); // Beschleunigung/Verzögerung einstellen stepper.setSpeed(200); // Zielgeschwindigkeit einstellen

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.
/* * 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-stepper-motor */ #include <AccelStepper.h> #define DEG_PER_STEP 1.8 #define STEP_PER_REVOLUTION (360 / DEG_PER_STEP) AccelStepper stepper(AccelStepper::FULL4WIRE, A3, A2, A1, A0); 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

  • 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.
Arduino Nano AccelStepper-Bibliothek
  • 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.
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!