ESP32 - Gleichstrommotor

Dieses Tutorial zeigt dir, wie man den ESP32 verwendet, um einen Gleichstrommotor mit dem L298N-Motortreiber zu steuern. Im Detail werden wir lernen, wie man die Geschwindigkeit und die Richtung eines Gleichstrommotors steuert. Wir werden lernen, wie man einen einzelnen Gleichstrommotor steuert und anschließend zwei Gleichstrommotoren mit einem einzigen L298N-Motortreiber steuert.

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
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×L298N Motortreiber-Modul
1×5V DC-Motor
1×5V Netzteil für 5V DC-Motor
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 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

Ein Gleichstrommotor enthält zwei Drähte: Minus(schwarz), und Plus(rot)

Gleichstrommotor-Anschlussbelegung

Wie ein Gleichstrommotor funktioniert

Die Richtung und Geschwindigkeit des Gleichstrommotors werden davon bestimmt, wie wir ihm Strom zuführen. Die untenstehenden Bilder zeigen die detaillierte Beziehung zwischen Leistung und Geschwindigkeit/Richtung.

So steuern Sie einen Gleichstrommotor

Beim Einsatz von PWM gilt: Je größer das Tastverhältnis des PWM-Signals, desto schneller dreht sich der Motor.

Wie man die Geschwindigkeit und Richtung eines Gleichstrommotors mit dem ESP32 steuert

Zuerst arbeitet der Gleichstrommotor mit einer hohen Spannung, die den ESP32 beschädigen kann ⇒ Wir können den Gleichstrommotor nicht direkt mit dem ESP32 verbinden. Wir benötigen einen Hardware-Treiber zwischen dem Gleichstrommotor und dem ESP32. Der Treiber übernimmt drei Aufgaben:

  • Schutz des ESP32 vor Hochspannung
  • Vom ESP32 empfangenes Signal, um die Polung der Stromversorgung zu ändern und die Drehrichtung des Motors zu steuern.
  • Die PWM-Signale vom ESP32 (Strom und Spannung) verstärken, um die Drehzahl des Motors zu steuern
ESP32-Steuerung eines Gleichstrommotors

Es gibt viele Motortreiber für Gleichstrommotoren. In diesem Tutorial wird der L298N-Treiber verwendet.

Über den L298N-Treiber

Ein einzelner L298N-Treiber kann zwei Gleichstrommotoren oder einen Schrittmotor steuern. Dieses Tutorial verwendet diesen Treiber, um den Gleichstrommotor zu steuern.

L298N-Treiber-Pinbelegung

Das unten gezeigte Bild zeigt die Pinbelegung des L298N-Treibers.

L298N Treiber-Pinbelegung

Die detaillierte Erklärung zu jedem Pin ist in diesem Arduino - DC motor Tutorial verfügbar.

Ein einzelner L298N-Treiber kann zwei Gleichstrommotoren unabhängig voneinander steuern:

  • Der erste Motor (genannt Motor A) wird über die Pins IN1, IN2, ENA, OUT1, OUT2 gesteuert.
  • Der zweite Motor (genannt Motor B) wird über die Pins IN3, IN4, ENB, OUT3, OUT4 gesteuert.

Wie man die Geschwindigkeit eines Gleichstrommotors mit dem L298N-Treiber steuert

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

  • Den digitalen Ausgangspin des ESP32 mit dem ENA/ENB-Pin des L298N verbinden
  • Ein PWM-Signal an den ENA/ENB-Pin erzeugen, indem die [analogWrite()]-Funktion verwendet wird. Dieses PWM-Signal durchläuft den L298N-Treiber und verstärkt Strom und Spannung, bevor es zum DC-Motor gelangt
analogWrite(PIN_ENA, speed); // Motor A steuern analogWrite(PIN_ENB, speed); // Motor B steuern

Der Wert von speed liegt zwischen 0 und 255. Wenn der Wert 255 beträgt, läuft der Motor mit maximaler Geschwindigkeit. Wenn der Wert 0 ist, stoppt der Motor.

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

Die Drehrichtung des Gleichstrommotors A kann über die Pins IN1 und IN2 gesteuert werden. Die folgende Tabelle zeigt den Zusammenhang zwischen der Drehrichtung des Motors A und dem Signal an den Pins IN1 und IN2.

IN1 pin IN2 pin Direction
HIGH LOW DC Motor A rotates in clockwise direction
LOW HIGH DC Motor A rotates in anticlockwise direction
HIGH HIGH DC Motor A stops
LOW LOW DC Motor A stops

Ebenso ist die untenstehende Tabelle für den DC-Motor B.

IN3 pin IN4 pin Direction
HIGH LOW DC Motor B rotates in clockwise direction
LOW HIGH DC Motor B rotates in anticlockwise direction
HIGH HIGH DC Motor B stops
LOW LOW DC Motor B stops

Lass uns lernen, wie man es programmiert, um es zu steuern. Nehmen wir zum Beispiel den Motor A. Der Motor B ist ähnlich.

  • Den Motor A im Uhrzeigersinn steuern.
digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, LOW);
  • Die Drehrichtung des Motors A gegen den Uhrzeigersinn einstellen.
digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, HIGH);

※ Notiz:

Die Drehrichtung des Gleichstrommotors ist umgekehrt, wenn die Verdrahtung zwischen dem DC-Motor und dem L298N-Treiber in umgekehrter Reihenfolge liegt. In diesem Fall tauschen Sie die Pins OUT1 und OUT2.

Wie man einen Gleichstrommotor stoppt

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

  • Die Geschwindigkeit auf 0 setzen
analogWrite(PIN_ENA, 0);
  • Steuerung der IN1- und IN2-Pins auf denselben niedrigen oder hohen Pegel
digitalWrite(PIN_IN1, HIGH); digitalWrite(PIN_IN2, HIGH);
  • Oder
digitalWrite(PIN_IN1, LOW); digitalWrite(PIN_IN2, LOW);

So steuert man einen Gleichstrommotor mit dem L298N-Treiber.

Verdrahtungsdiagramm

Es gibt drei Jumper auf dem L298N-Modul. Entfernen Sie alle Jumper, bevor Sie die Verkabelung vornehmen.

ESP32 Gleichstrommotor L298N Treiber-Schaltplan

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

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

ESP32-Code

Schauen wir uns den untenstehenden Code an, der der Reihe nach Folgendes tut:

  • Der ESP32 steuert die Drehzahl des Gleichstrommotors zunehmend.
  • Der ESP32 kehrt die Drehrichtung des Gleichstrommotors um.
  • Der ESP32 senkt schrittweise die Drehzahl des Gleichstrommotors.
  • Der ESP32 stoppt den Gleichstrommotor.
/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser 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/esp32/esp32-dc-motor */ #define PIN_IN1 19 // ESP32 pin GPIO19 connected to the IN1 pin L298N #define PIN_IN2 18 // ESP32 pin GPIO18 connected to the IN2 pin L298N #define PIN_ENA 17 // ESP32 pin GPIO17 connected to the EN1 pin L298N // the setup function runs once when you press reset or power the board void setup() { // initialize digital pins as outputs. pinMode(PIN_IN1, OUTPUT); pinMode(PIN_IN2, OUTPUT); pinMode(PIN_ENA, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(PIN_IN1, HIGH); // control the motor's direction in clockwise digitalWrite(PIN_IN2, LOW); // control the motor's direction in clockwise for (int speed = 0; speed <= 255; speed++) { analogWrite(PIN_ENA, speed); // speed up delay(10); } delay(2000); // rotate at maximum speed 2 seconds in clockwise direction // change direction digitalWrite(PIN_IN1, LOW); // control the motor's direction in anti-clockwise digitalWrite(PIN_IN2, HIGH); // control the motor's direction in anti-clockwise delay(2000); // rotate at maximum speed for 2 seconds in anti-clockwise direction for (int speed = 255; speed >= 0; speed--) { analogWrite(PIN_ENA, speed); // speed down delay(10); } delay(2000); // stop motor 2 second }

Schnelle Schritte

  • Wenn dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie wie man die Umgebung für ESP32 in der Arduino IDE einrichtet.
  • Entfernen Sie alle drei Jumper am L298N-Modul.
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  • Kompilieren und laden Sie den Code auf das ESP32-Board, indem Sie in der Arduino IDE auf die Hochladen-Schaltfläche klicken.
  • Beobachten Sie den DC-Motor; Sie werden Folgendes sehen:
    • Der DC-Motor wird beschleunigt und dreht sich während 2 Sekunden mit Höchstgeschwindigkeit.
    • Die Drehrichtung des DC-Motors kehrt sich um.
    • Der DC-Motor dreht sich für 2 Sekunden in der entgegengesetzten Richtung mit Höchstgeschwindigkeit.
    • Der DC-Motor wird abgebremst.
    • Der DC-Motor stoppt für 2 Sekunden.
  • Der obige Vorgang wird unendlich oft wiederholt.

※ Notiz:

Dieses Tutorial erklärt dir, wie du die Drehzahl des Gleichstrommotors relativ steuern kannst. Um die absolute Drehzahl (Umdrehungen pro Sekunde) zu regeln, ist der Einsatz eines PID-Reglers sowie das Feedback eines Encoders erforderlich.

Wie man zwei DC-Motoren 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!