So steuern Sie die Geschwindigkeit eines DC-Motors mit einem ESP32 und Modul L298N

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.

ESP32_L298N_DC_haupt

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

L298N Motorsteuerungsmodul
L298N Motorsteuerungsmodul

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

ESP32_L298N_wiring

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

Bilder

L298N Motorsteuerungsmodul
L298N Motorsteuerungsmodul
ESP32_L298N_DC_main
ESP32_L298N_DC_main
ESP32_L298N_wiring
ESP32_L298N_wiring
278-Library Example for L298N Module to control DC motors
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Dateien📁

Arduino-Bibliotheken (zip)

Fritzing-Datei