Arduino - Gleichstrommotor

In diesem Tutorial lernen wir:

Erforderliche Hardware

1×Arduino Uno R3
1×USB 2.0 Kabel Typ A/B (für USB-A PC)
1×USB 2.0 Kabel Typ C/B (für USB-C PC)
1×L298N Motortreiber-Modul
1×5V DC-Motor
1×5V Netzteil für 5V DC-Motor
1×DC-Stromanschluss
1×Verbindungskabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

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)
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 Gleichstrommotor

Pinbelegung des Gleichstrommotors

DC-Motor hat zwei Drähte:

  • Positiver Draht: normalerweise rot
  • Negativer Draht: normalerweise schwarz
Gleichstrommotor-Pinbelegung

Wie es funktioniert

Wenn Sie einen Gleichstrommotor kaufen, müssen Sie wissen, mit welcher Spannung er betrieben wird. Nehmen wir als Beispiel einen 12-V-Gleichstrommotor.

Wenn Sie den 12-V-Gleichstrommotor mit einer 12-V-Stromquelle betreiben:

  • 12V und GND an den positiven Draht und den negativen Draht, jeweils: der Gleichstrommotor dreht sich mit maximaler Geschwindigkeit im Uhrzeigersinn
  • 12V und GND an den negativen Draht und den positiven Draht, jeweils: der Gleichstrommotor dreht sich mit maximaler Geschwindigkeit gegen den Uhrzeigersinn

Wie oben beschrieben, ändert sich die Drehrichtung, wenn der Pol zwischen zwei Drähten des Gleichstrommotors vertauscht wird. Diese Methode wird verwendet, um die Drehrichtung des Gleichstrommotors zu steuern. Natürlich nicht durch manuelle Änderung, sondern durch Programmierung.

Wenn wir Gleichstrommotoren eine Versorgung unter 12 V geben, dreht sich der Motor zwar, erreicht aber nicht seine Höchstgeschwindigkeit. Das bedeutet, dass wir die Geschwindigkeit des Gleichstrommotors ändern können, indem wir die Spannung der Stromversorgung ändern. Diese Methode wird jedoch in der Praxis nicht verwendet, da es schwierig ist, die Spannung der Stromquelle zu steuern. Stattdessen legen wir die Spannung der Stromquelle fest und regeln die Geschwindigkeit des Gleichstrommotors über ein PWM-Signal. Je größer das PWM-Taktverhältnis ist, desto schneller dreht der Gleichstrommotor.

Wie man einen Gleichstrommotor steuert

So steuern Sie einen Gleichstrommotor mit Arduino

Die Steuerung eines Gleichstrommotors umfasst zwei Faktoren: Geschwindigkeit und Richtung. Der Arduino kann das PWM-Signal erzeugen. Allerdings hat dieses PWM-Signal eine geringe Spannung und einen geringen Strom. Wir können es nicht verwenden, um den Gleichstrommotor zu steuern. Wir müssen einen Hardwaretreiber zwischen dem Arduino und dem Gleichstrommotor verwenden. Der Treiber erledigt zwei Aufgaben:

  • Verstärke das PWM-Signal vom Arduino (Strom und Spannung) → zur Geschwindigkeitsregelung
  • Empfange das Steuersignal vom Arduino, um den Pol des Netzteils umzuschalten → zur Richtungssteuerung
Arduino-Steuerung eines Gleichstrommotors

※ Notiz:

  • Dieses Tutorial kann auf alle Gleichstrommotoren angewendet werden. Ein 12-V-Gleichstrommotor ist nur ein Beispiel.
  • Wenn Sie einen 5-V-Gleichstrommotor steuern, gibt der Arduino-Pin zwar 5 V aus (das Gleiche wie die Versorgungsspannung des Gleichstrommotors), dennoch benötigen Sie einen Treiber zwischen Arduino und Gleichstrommotor, da der Arduino-Pin nicht genügend Strom für den Gleichstrommotor liefert.

Es gibt viele Arten von Chips; Module (z. B. L293D, L298N) können als DC-Motortreiber verwendet werden. In diesem Tutorial verwenden wir den L298N-Treiber.

Über den L298N-Treiber

Der L298N-Treiber kann verwendet werden, um Gleichstrommotoren und Schrittmotoren zu steuern. In diesem Tutorial lernen wir, wie man ihn verwendet, um den Gleichstrommotor zu steuern.

L298N Treiber-Pinbelegung

L298N-Treiber-Pinbelegung

Der L298N-Treiber kann zwei Gleichstrommotoren gleichzeitig unabhängig voneinander steuern, die Motoren A und B genannt werden. Der L298N-Treiber hat 13 Pins:

Die gemeinsamen Pins für beide Motoren:

  • VCC-Pin: versorgt den Motor mit Strom. Es kann zwischen 5 und 35 V liegen.
  • GND-Pin: ist ein gemeinsamer Masseanschluss und muss mit GND (0 V) verbunden werden.
  • 5V-Pin: versorgt das L298N-Modul mit Strom. Er kann vom Arduino mit 5V versorgt werden.

Motor A-Pins (Kanal A):

  • Die ENA-Pins dienen der Steuerung der Geschwindigkeit von Motor A. Entfernt man den Jumper und verbindet diesen Pin mit dem PWM-Eingang, lässt sich die Geschwindigkeit von Motor A steuern.
  • IN1- und IN2-Pins dienen zur Steuerung der Drehrichtung von Motor A. Wenn einer von ihnen HIGH ist und der andere LOW, dreht sich Motor A. Wenn beide Eingänge entweder HIGH oder LOW sind, stoppt Motor A.
  • OUT1- und OUT2-Pins sind mit Motor A verbunden.

Motor-B-Anschlüsse (Kanal B):

  • ENB-Pins: werden verwendet, um die Geschwindigkeit von Motor B zu steuern. Durch Entfernen des Jumpers und das Anschließen dieses Pins an den PWM-Eingang lässt sich die Geschwindigkeit von Motor B steuern.
  • IN3- und IN4-Pins: werden verwendet, um die Drehrichtung von Motor B zu steuern. Wenn einer von ihnen hoch ist und der andere niedrig, dreht sich Motor B. Sind beide Eingänge entweder hoch oder niedrig, stoppt Motor B.
  • OUT3- und OUT4-Pins: sind mit Motor B verbunden.

Wie oben beschrieben, hat der L298N-Treiber zwei Versorgungsspannungen:

  • Für den Gleichstrommotor (VCC- und GND-Pins): von 5 bis 35 V.
  • Für den internen Betrieb des L298N-Moduls (5V- und GND-Pins): von 5 bis 7 V.

Der L298N-Treiber verfügt außerdem über drei Jumper-Steckbrücken für fortgeschrittene Anwendungen oder andere Zwecke. Aus Gründen der Einfachheit entfernen Sie bitte alle Jumper vom L298N-Treiber.

Wir können zwei Gleichstrommotoren unabhängig voneinander gleichzeitig steuern, indem wir einen Arduino und einen L298N-Treiber verwenden. Um jeden Motor zu steuern, benötigen wir nur drei Pins vom Arduino.

※ Notiz:

Der Rest dieses Tutorials steuert einen Gleichstrommotor über Kanal A. Die Steuerung des anderen Gleichstrommotors ist ähnlich.

So steuern Sie die Drehzahl eines Gleichstrommotors über den L298N-Treiber

Es ist einfach, die Geschwindigkeit des Gleichstrommotors zu steuern, indem man ein PWM-Signal an den ENA-Pin des L298N erzeugt. Wir können dies tun, indem:

  • Verbinde einen Arduino-Pin mit dem ENA des L298N
  • Erzeuge ein PWM-Signal am ENA-Pin, indem du die Funktion analogWrite() verwendest. Der L298N-Treiber verstärkt das PWM-Signal auf den Gleichstrommotor
analogWrite(ENA_PIN, speed); // speed ist ein Wert von 0 bis 255

Die Geschwindigkeit liegt zwischen 0 und 255. Wenn die Geschwindigkeit 0 ist, stoppt der Motor. Wenn die Geschwindigkeit 255 ist, dreht sich der Motor mit Höchstgeschwindigkeit.

Wie man die Richtung eines Gleichstrommotors über den L298N-Treiber steuert

Die Drehrichtung des Motors lässt sich steuern, indem man an die Pins IN1 und IN2 HIGH bzw. LOW anlegt. Die folgende Tabelle veranschaulicht, wie man die Drehrichtung in beiden Kanälen steuert.

IN1 pin IN2 pin Direction
LOW LOW Motor A stops
HIGH HIGH Motor A stops
HIGH LOW Motor A spins Clockwise
LOW HIGH Motor A spins Anti-Clockwise
  • Motor A dreht sich im Uhrzeigersinn
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW);
  • Motor A dreht sich gegen den Uhrzeigersinn.
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH);

※ Notiz:

Die Drehrichtung dreht sich um, wenn OUT1- und OUT2-Pin zwei Pins des Gleichstrommotors auf umgekehrte Weise verbinden. Falls dies der Fall ist, muss man lediglich zwischen OUT1- und OUT2-Pin wechseln oder das Steuersignal an IN1- und IN2-Pin im Code ändern.

So stoppen Sie das Drehen eines Gleichstrommotors

Es gibt zwei Möglichkeiten, einen Gleichstrommotor zu stoppen.

  • Stellt die Geschwindigkeit auf 0 ein.
analogWrite(ENA_PIN, 0);
  • Steuert die Pins IN1 und IN2 auf denselben Wert (niedrig oder hoch)
digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW);
  • Oder
digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, HIGH);

Wie man einen Gleichstrommotor mit dem L298N-Treiber steuert.

Verdrahtungsdiagramm

Bevor Sie es verdrahten, entfernen Sie bitte alle drei Jumper auf dem L298N-Modul.

Arduino Gleichstrommotor L298N Treiber-Verdrahtungsdiagramm

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

Arduino-Code

Der unten stehende Code führt Folgendes aus:

  • Gleichstrommotor beschleunigen
  • Richtung ändern
  • Gleichstrommotor verlangsamen
  • Motor stoppen
/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/arduino-dc-motor */ // constants won't change const int ENA_PIN = 9; // the Arduino pin connected to the EN1 pin L298N const int IN1_PIN = 6; // the Arduino pin connected to the IN1 pin L298N const int IN2_PIN = 5; // the Arduino pin connected to the IN2 pin L298N // the setup function runs once when you press reset or power the board void setup() { // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // rotate at maximum speed 1 seconds in in clockwise direction // change direction digitalWrite(IN1_PIN, LOW); // control motor A spins anti-clockwise digitalWrite(IN2_PIN, HIGH); // control motor A spins anti-clockwise delay(1000); // rotate at maximum speed 1 seconds in in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(ENA_PIN, speed); // control the speed delay(10); } delay(1000); // stop motor 1 second }

Schnelle Schritte

  • Entfernen Sie alle drei Jumper am L298N-Modul.
  • Kopieren Sie den obigen 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 Arduino hochzuladen.
  • Sie sehen:
    • Der DC-Motor wird beschleunigt und dreht sich dann eine Sekunde lang mit Höchstgeschwindigkeit.
    • Die Drehrichtung des DC-Motors ändert sich.
    • Der DC-Motor dreht sich eine Sekunde lang mit Höchstgeschwindigkeit in der Gegenrichtung.
    • Der DC-Motor wird abgebremst.
    • Der DC-Motor bleibt eine Sekunde stehen.
    • Der obige Prozess wird wiederholt.

    ※ Notiz:

    In diesem Tutorial lernen wir, wie man die Drehzahl des Gleichstrommotors kontrolliert, die relativ zur maximalen Drehzahl liegt. Um die absolute Drehzahl (Umdrehungen pro Sekunde) zu steuern, benötigen wir einen PID-Regler und einen Encoder. Die Steuerung der absoluten Drehzahl des Gleichstrommotors wird in einem anderen Tutorial behandelt.

Wie man zwei Gleichstrommotoren mit dem L298N-Treiber steuert

(kommt bald)

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!