ESP32 Tutorial 15/55 - DC-Motorregelung mit ESP32 L293D | SunFounder's ESP32 IoT Lernkit

ESP32 Tutorial 15/55 - DC-Motorregelung mit ESP32 L293D | SunFounder's ESP32 IoT Lernkit

ESP32 Tutorial 15/55 - DC-Motor-Geschwindigkeitsregelung mit ESP32 L293D | SunFounder's ESP32 IoT-Lernkit

Die Steuerung eines Gleichstrommotors mit einem ESP32 kann einschüchternd wirken, ist jedoch mit den richtigen Komponenten und einem angemessenen Verständnis gut machbar. In diesem Tutorial werden wir ein Projekt erstellen, das es uns ermöglicht, die Geschwindigkeit und Richtung eines Gleichstrommotors mit dem L293D-Motortreiber zu steuern. Am Ende werden Sie einen funktionierenden Aufbau haben, der den Motor vorwärts und rückwärts drehen kann, während Sie seine Geschwindigkeit anpassen. Für einen visuellen Bezug sollten Sie sich das Video bei (im Video bei 00:00) ansehen.

ESP32-15_L293D_Motor_Schema

Hardware erklärt

Die Hauptkomponenten dieses Projekts sind der ESP32-Mikrocontroller und der L293D-Motortreiber. Der ESP32 ist ein leistungsstarker Mikrocontroller mit integrierten Wi-Fi- und Bluetooth-Funktionen, wodurch er für IoT-Anwendungen geeignet ist. Er kann verschiedene Hardwarekomponenten, einschließlich Motoren, über seine GPIO-Pins steuern. Der L293D ist ein dualer H-Brücken-Motortreiber, der es ermöglicht, die Richtung und Geschwindigkeit von zwei Gleichstrommotoren zu steuern. Jede H-Brücke kann einen Motor in beide Richtungen antreiben, indem die Polarität der an den Motorklemmen angelegten Spannung umgekehrt wird. Zusätzlich kann der L293D einen Strom von bis zu 600 mA pro Kanal verarbeiten, was ihn für kleine bis mittelgroße Motoren geeignet macht.

L293D-Motorsteuer-IC

Datenblattdetails

Hersteller Texas Instruments
Teilenummer L293D
Logik/IO-Spannung 2,5 - 7 V
Versorgungsspannung 4,5 - 36 V
Ausgangsstrom (pro Kanal) 600 mA (typ.)
Spitzenstrom (pro Kanal) 1,2 A (max)
PWM-Frequenzrichtlinien 20 kHz (typ.)
Eingangslogikschwellen 0,8 V (hoch), 2,0 V (niedrig)
Spannungsabfall / RDS(on)/ Sättigung 1,5 V (max)
Thermische Grenzwerte 150 °C (max)
Paket 16-DIP
Hinweise / Varianten Vierfach-Halb-H-Fahrer

  • Stellen Sie eine ordnungsgemäße Wärmeableitung für Hochstromanwendungen sicher.
  • Entkoppeln Sie die Stromversorgung mit Kondensatoren, um Spannungsspitzen zu verhindern.
  • Seien Sie vorsichtig mit der Verkabelung, um eine umgekehrte Polarität zu vermeiden.
  • Verwenden Sie PWM zur Geschwindigkeitsregelung, um Überhitzung zu vermeiden.
  • Überprüfen Sie die Nennspannung des Motors, um Schäden zu verhindern.

Verdrahtungsanweisungen

ESP32-15_L293D_motor_wiring

Um den ESP32 und den L293D-Motortreiber zu verdrahten, beginnen Sie mit dem Anschließen der Stromversorgung. Verbinden Sie Pin 16 des L293D mit dem positiven Terminal Ihrer Stromversorgung und Pin 4 mit dem Ground. Anschließend schließen Sie den Motor an: einen Anschluss an Pin 3 und den anderen an Pin 6 des L293D. Für Steuersignale verbinden Sie den GPIO-Pin 13 des ESP32 mit Pin 2 des L293D und den GPIO-Pin 14 mit Pin 7. Stellen Sie schließlich sicher, dass Sie den Ground des ESP32 mit dem Ground des L293D verbinden, um einen gemeinsamen Referenzpunkt zu gewährleisten. Wenn das Video alternative Verdrahtungen erwähnt (im Video um 05:00), stellen Sie sicher, dass Sie die spezifischen Änderungen beachten, die gezeigt werden.

Codebeispiele und Anleitung

Der Code zur Steuerung des Motors besteht darin, die Pins für den Motor zu definieren und ihre Modi einzustellen. Hier ist ein Auszug aus der Setup-Funktion:

#define motor1A 13
#define motor2A 14

void setup() {
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

In diesem Abschnitt definieren wir die Motorsteuerpins als Konstanten und setzen sie im Setup als Ausgänge. Dies ist entscheidend, da es die Pins auf die Steuerung des Motors vorbereitet. Die Loop-Funktion ist der Ort, an dem das Verhalten des Motors gesteuert wird. Hier ist ein wichtiger Teil der Loop:

void loop() {
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, HIGH);    
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(3000);
}

Dieser Code dreht den Motor für 2 Sekunden in eine Richtung, kehrt dann die Richtung für weitere 2 Sekunden um und stoppt schließlich den Motor für 3 Sekunden. Diese Schleife wird unendlich oft wiederholt und ermöglicht eine kontinuierliche Steuerung. Für detailliertere Einblicke und den vollständigen Code verweist bitte auf das vollständige Programm, das unter dem Artikel geladen wird.

Demonstration / Was zu erwarten ist

Nachdem Sie den Code erfolgreich verdrahtet und hochgeladen haben, sollten Sie sehen, wie sich der Motor für 2 Sekunden in eine Richtung dreht, die Richtung für weitere 2 Sekunden ändert und dann für 3 Sekunden stoppt. Wenn der Motor nicht wie erwartet reagiert, überprüfen Sie häufige Fallstricke wie falsche Polarität oder inkorrekte Pinverbindungen (im Video bei 08:00). Dieses Setup bietet eine einfache Möglichkeit, die Geschwindigkeit und Richtung eines Gleichstrommotors mit dem ESP32 und L293D zu steuern.

Video-Zeiten

  • 00:00 Start
  • 2:01 Einführung in den Gleichstrommotor
  • 6:14 L293D Motorsteuerung
  • 9:17 Projektunterlagen.
  • 11:04 Verkabelung Erklärt
  • 14:41 Arduino-Motorsteuerung mit ESP32
  • 17:10 Auswahl der Arduino-Ports für das ESP32-Board
  • 18:52 Projektdemonstration
  • 22:08 Motor Geschwindigkeitsregelung mit ESP32
  • 26:22 Geschwindigkeitsregelungs-Demo
  • 28:01 Geschwindigkeits- und Richtungsregelung Arduino-Code
  • 29:05 Demonstration von Geschwindigkeit und Richtung

Bilder

L293D-Motor-Driver-IC
L293D-Motor-Driver-IC
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_wiring
ESP32-15_L293D_motor_wiring
814-ESP32 Tutorial 15/55- Arduino code for L293D motor control
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Dateien📁

Datenblatt (pdf)