So steuern Sie die Geschwindigkeit eines DC-Motors mit einem ESP32 und Modul L298N
Die Steuerung von Gleichstrommotoren kann eine unkomplizierte Aufgabe sein, wenn die richtigen Komponenten und das nötige Verständnis vorhanden sind. In diesem Tutorial werden wir untersuchen, wie man zwei Gleichstrommotoren mit dem ESP32-Mikrocontroller und dem L298N-Motortreiber-Modul steuert. Am Ende dieses Leitfadens werden Sie in der Lage sein, die Geschwindigkeit und Richtung Ihrer Motoren basierend auf PWM-Signalen vom ESP32 anzupassen, was vielseitige Anwendungen in der Robotik und Automatisierung ermöglicht.
Das Video, das dieses Tutorial begleitet, bietet eine visuelle Demonstration des gesamten Prozesses, einschließlich Verdrahtung und Programmierung (im Video bei 00:00).
Hardware erklärt
Um die Motorsteuerung zu erreichen, verwenden wir den ESP32 und das L298N-Motortreiber-Modul. Der ESP32 ist ein leistungsstarker Mikrocontroller mit Wi-Fi- und Bluetooth-Funktionen, was ihn ideal für IoT-Projekte macht. Der L298N ist ein H-Brücken-Motortreiber, der es uns ermöglicht, die Richtung und die Geschwindigkeit der Motoren mithilfe von PWM-Signalen zu steuern. Das L298N-Modul verfügt über zwei H-Brückenschaltungen, was bedeutet, dass wir zwei Motoren unabhängig steuern können. Jede H-Brücke ermöglicht die Steuerung der Richtung des Motors (im Uhrzeigersinn oder gegen den Uhrzeigersinn) und der Geschwindigkeit durch Variation des PWM-Signals. Durch das Anschließen der Enable- und Eingabepins des L298N an den ESP32 können wir die Motoren effektiv steuern.
Datenblatt-Details
| Hersteller | STMicroelectronics |
|---|---|
| Teilenummer | L298N |
| Logik/IO-Spannung | 5 V |
| Versorgungsspannung | 5-46 V (VS) |
| Ausgangsstrom (pro Kanal) | 2 A max/Kanal (abs. max) |
| Spitzenstrom (pro Kanal) | 2,5 A |
| PWM-Frequenzrichtlinien | 1 kHz - 15 kHz |
| Eingangssignal-Schwellenwerte | 2,5 V (hoch), 1,5 V (niedrig) |
| Spannungsabfall / RDS(on)/ Sättigung | 1,8 V bei 2 A |
| Thermische Grenzen | 150 °C |
| Paket | 15-poliger Multiwatt |
| Notizen / Varianten | Dual-H-Brücken-Motortreiber |
- Stellen Sie sicher, dass die Spannungsbewertung des Motors mit der Versorgungsspannung des L298N übereinstimmt.
- Verwenden Sie eine angemessene Wärmeableitung für den kontinuierlichen Betrieb bei hohen Strömen.
- Verbinden Sie die Erdungen aller Komponenten, um schwebende Referenzen zu vermeiden.
- Verwenden Sie eine PWM-Frequenz, die für die Anwendung geeignet ist (1-15 kHz).
- Seien Sie vorsichtig mit den maximalen Stromwerten, um eine Überhitzung zu vermeiden.
- Testen Sie die Motorrichtung, bevor Sie die Verkabelung abschließen, um Schäden zu vermeiden.
- Berücksichtigen Sie Entkopplungskondensatoren in der Stromversorgung für Stabilität.
Verkabelungsanleitung

Um den L298N mit dem ESP32 zu verbinden, beginnen Sie damit, die beiden Gleichstrommotoren an die Ausgangsanschlüsse des L298N anzuschließen. Schließen Sie Motor 1 an die Anschlüsse an, die alsOUT1undOUT2, und Motor 2 zuOUT3undOUT4. Die Polarität der Motoren spielt keine Rolle, da der L298N die Richtung steuern wird. Als nächstes schließen Sie Ihre externe Stromversorgung an denVMSundGNDTerminals am L298N. Stellen Sie sicher, dass die Spannung für Ihre Motoren geeignet ist, typischerweise zwischen 5V und 46V. Das5VDas Terminal am L298N kann verwendet werden, um den ESP32 bei Bedarf mit Strom zu versorgen, aber stellen Sie sicher, dass die Stromanforderungen erfüllt sind. Für die Steuerpins verbinden SieENAzu GPIO 19,IN1zu GPIO 18, undIN2zu GPIO 5 für Motor 1. Für Motor 2, anschließenIN3zu GPIO 17,IN4zu GPIO 16, undENBZu GPIO 4. Verbinden Sie schließlich die Masseanschlüsse des ESP32 und L298N miteinander, um einen gemeinsamen Bezugspunkt sicherzustellen.
Codebeispiele & Anleitung
Die folgenden Codebeispiele veranschaulichen, wie man die Motoren mit der L298N-Bibliothek steuern kann, die für den ESP32 entwickelt wurde. Die Bibliothek vereinfacht den Prozess des Sendens von Befehlen an die Motoren. Zuerst wird die erforderliche Bibliothek eingebunden und die Motorparameter werden definiert:
#include
#define ENA 19
#define IN1 18
#define IN2 5
#define IN3 17
#define IN4 16
#define ENB 4
Robojax_L298N_DC_motor robot(IN1, IN2, ENA, CHA, IN3, IN4, ENB, CHB);
In diesem Snippet definieren wir die Steuerpins für beide Motoren. Die Bibliotheksinstanzrobotwird erstellt, die verwendet wird, um die Motoren im gesamten Programm zu steuern. Als Nächstes richten wir die serielle Kommunikation ein und initialisieren die Roboterinstanz in dersetup()Funktion:
void setup() {
Serial.begin(115200);
robot.begin();
}
Dies initialisiert die serielle Kommunikation zur Fehlersuche und bereitet die Motorsteuerungsbibliothek auf den Betrieb vor. Schließlich wird die Hauptsteuerlogik in dieloop()Funktion, bei der wir die Motoren drehen und ihre Geschwindigkeit anpassen können:
void loop() {
robot.rotate(motor1, 80, CW); // run motor1 at 80% speed in CW direction
delay(3000); // wait for 3 seconds
robot.brake(1); // brake motor1
delay(2000); // wait for 2 seconds
}
Dieser Auszug zeigt, wie Motor 1 mit 80% Geschwindigkeit im Uhrzeigersinn für drei Sekunden gedreht wird, bevor er bremst. Der vollständige Code enthält zusätzliche Logik für Motor 2 und unterschiedliche Geschwindigkeiten, die im vollständigen Programm unterhalb des Artikels zu sehen sind.
Demonstration / Was zu erwarten ist
Bei Ausführung sollten die Motoren auf die PWM-Signale reagieren, die vom ESP32 gesendet werden. Sie werden sehen, dass Motor 1 mit 80% Geschwindigkeit im Uhrzeigersinn rotiert, gefolgt von einer Bremsaktion. Das Programm enthält auch Logik, um Geschwindigkeitsvariationen allmählich zu steuern, was getestet werden kann, indem man die Beschleunigung des Motors von 0% auf 100% beobachtet (im Video bei 05:00). Häufige Fallstricke sind unter anderem, dass die Erdungen nicht richtig verbunden sind, was zu unregelmäßigem Verhalten führen kann, und die Überschreitung der Stromwerte des L298N, was zur Überhitzung führen kann. Achten Sie darauf, das Verhalten des Motors zu überwachen und die Parameter nach Bedarf anzupassen.
Video-Zeitstempel
- 00:46 Einleitung
- 04:07 Verdrahtung des ESP32 mit L298N
- 06:10 Vorbereitung der Arduino IDE für die Arbeit mit ESP32-Boards
- 08:15 Arduino-Code erklärt
- 15:00 Demonstration der Einzelmotorsteuerung
- 16:00 Demonstration zur Steuerung von 2 Gleichstrommotoren
- 17:00 Demonstration der Stromversorgung des ESP32 über L298N und externe Stromversorgung
Dinge, die Sie vielleicht brauchen
-
Amazon
-
eBay
Ressourcen & Referenzen
-
Extern
Dateien📁
Arduino-Bibliotheken (zip)
-
robojax_ESP32_L298N_library
robojax_ESP32_L298N_library.zip0.18 MB
Fritzing-Datei
-
ESP32-38Pin_Wide
ESP32-38Pin_Wide.fzpz0.03 MB -
L298N DC motor driver
L298N DC motor driver.fzpz0.11 MB