Arduino-Code und Video: L293D DC-Motorsteuerung (ohne Geschwindigkeitsregelung)

Arduino-Code und Video: L293D DC-Motorsteuerung (ohne Geschwindigkeitsregelung)

In diesem Tutorial erfahren Sie, wie Sie den Motorcontroller L293D mit einem Arduino verwenden, um einen Gleichstrommotor zu steuern. Der L293D ermöglicht es, den Motor sowohl im Uhrzeigersinn als auch gegen den Uhrzeigersinn zu drehen. Wenn Sie dieser Anleitung folgen, lernen Sie, wie Sie die Komponenten verdrahten und den Arduino programmieren, um die gewünschte Motorsteuerung zu erreichen.

In diesem Projekt verwenden wir den L293D-Motortreiber, um einen einzelnen Gleichstrommotor zu steuern. Der Motor kann die Richtung anhand der im Arduino-Code gegebenen Befehle wechseln. Für ein klareres Verständnis des Aufbaus und des Codes ist es hilfreich, das dazugehörige Video anzusehen (im Video bei 00:00).

Hardware erklärt

L293D ist ein integrierter Schaltkreis, der zum Ansteuern von Motoren entwickelt wurde. Er kann zwei Gleichstrommotoren gleichzeitig oder einen Schrittmotor steuern. Der Chip verwendet eine H-Brücken-Konfiguration, um die Drehrichtung zu kontrollieren, indem die Polarität der an den Motor angelegten Spannung umgeschaltet wird. Diese Flexibilität macht ihn zu einer ausgezeichneten Wahl für Robotik- und Automatisierungsprojekte.

Zusätzlich zum L293D werden wir ein Arduino-Board verwenden, um Steuersignale an den Motortreiber zu senden. Das Arduino erzeugt die notwendigen Logikpegel, um den Motor zu aktivieren und seine Drehrichtung zu bestimmen. Für den Aufbau werden außerdem ein Gleichstrommotor und eine Stromversorgung benötigt, wobei die Stromversorgung mit den Spannungsanforderungen des Motors kompatibel sein muss.

Details zum Datenblatt

Hersteller Texas Instruments
Teilenummer L293D
Logik-/I/O-Spannung 5 V
Versorgungsspannung 4,5 - 36 V
Ausgangsstrom (pro Kanal) 600 mA
Spitzenstrom (pro Kanal) 1.2 A
Hinweise zur PWM-Frequenz 20 kHz
Eingangslogik-Schwellenwerte 2,5 V (typ.)
Spannungsabfall / RDS(on) / Sättigung 1,5 V (max.)
Thermische Grenzwerte 150 °C (max.)
Paket 16-poliges DIP
Notizen / Varianten Kann zwei Motoren steuern.

  • Stellen Sie sicher, dass die Versorgungsspannung 36 V nicht überschreitet.
  • Sorgen Sie für eine geeignete Wärmeableitung, wenn Sie in der Nähe des maximalen Stroms arbeiten.
  • Verbinden Sie stets die Masse des Arduino mit der des Motortreibers.
  • Überprüfen Sie die Verkabelung, um Verpolungen zu vermeiden.
  • Verwenden Sie PWM-Signale, um die Geschwindigkeit zu steuern, falls dies in zukünftigen Projekten erforderlich ist.

Verdrahtungsanleitung

Arduino wiring for L293D motor driver with battery
Arduino wiring for L293D motor driver with battery
Arduino wiring for L293D motor driver
Arduino wiring for L293D motor driver

Um den L293D-Motortreiber an den Arduino anzuschließen, beginnen Sie damit, Versorgungsspannung und Masse zu verbinden. Verbinden Sie Pin 4 und Pin 5 des L293D mit der Masse. Dann verbinden Sie Pin 1 (Vcc1) mit dem 5 V-Ausgang des Arduino. Für Vcc2 (Pin 8) verbinden Sie ihn mit einer externen Stromversorgung und stellen Sie sicher, dass diese der Motorspannungsspezifikation entspricht.

Als Nächstes verbinden Sie den Enable-Pin (Pin 1) mit Pin 8 am Arduino, um die Stromversorgung des Motors zu steuern. Für die Motorsteuer-Eingänge verbinden Sie Pin 2 (1A) des L293D mit Pin 2 am Arduino und Pin 7 (2A) mit Pin 7 am Arduino. Schließlich verbinden Sie die Motorklemmen mit Pin 3 (1Y) und Pin 6 (2Y) am L293D.

L293D Steckbrett-Pin 1
L293D Steckbrett-Pin 1
L293D_Steckbrettverdrahtung_bb

Codebeispiele und Schritt-für-Schritt-Anleitung

Der folgende Code initialisiert die Pins und richtet die Motorsteuerung ein. Die verwendeten Bezeichner umfassenP1Afür den ersten Steuerpin des Motors undEN12Für den Enable-Pin. Die Setup-Funktion konfiguriert die Pins als Ausgänge.

void setup() {
  Serial.begin(9600); // setup Serial Monitor to display information
  pinMode(P1A, OUTPUT); // define pin as OUTPUT for P1A
  pinMode(P2A, OUTPUT); // define pin as OUTPUT for P2A
  pinMode(EN12, OUTPUT); // define pin as OUTPUT for 1,2EN enable
}

In der Loop-Funktion wird der Motor angewiesen, sich in beide Richtungen zu drehen, mit Verzögerungen dazwischen. Der Zustand des Motors wird im seriellen Monitor mithilfe vonSerial.println.

void loop() {
  Serial.println("Rotating CW");
  digitalWrite(EN12, HIGH); // Enable 1A and 2A 
  digitalWrite(P1A, HIGH); // send HIGH signal to P1A
  digitalWrite(P2A, LOW); // send LOW signal to P2A
  delay(3000); // motor runs for 3 seconds
  digitalWrite(EN12, LOW); // Disable 1A and 2A
}

Dieser Auszug zeigt, wie man die Drehrichtung des Motors durch Ändern der an ihn gesendeten Logikpegel steuert.P1AundP2A. Der Motor läuft 3 Sekunden, bevor er anhält und die Richtung wechselt.

So werden L293D-Halbbrücken-Treiber verwendet:

L293D als Halbbrücke CW
L293D als Halbbrücke CW
L293D als Halbbrücke gegen den Uhrzeigersinn
L293D als Halbbrücke gegen den Uhrzeigersinn (CCW)

Demonstration / Was Sie erwartet

Wenn die Einrichtung abgeschlossen ist und der Code hochgeladen wurde, sollten Sie beobachten, dass der Motor für 3 Sekunden in eine Richtung dreht, für 2 Sekunden stoppt und dann für weitere 3 Sekunden in die entgegengesetzte Richtung dreht. Der Zustand des Motors wird im seriellen Monitor ausgegeben, wodurch die Aktionen bestätigt werden (im Video bei 12:00).

Häufige Fallstricke sind sicherzustellen, dass dem Motor die richtige Spannung zugeführt wird, und zu überprüfen, dass die Motoranschlüsse korrekt sind. Reagiert der Motor nicht, kontrollieren Sie noch einmal die Verkabelung und die Anschlüsse der Stromversorgung.

Video-Zeitstempel

  • 00:00- Einleitung
  • 02:30- Erläuterung der Verkabelung
  • 05:00Code-Durchgang
  • 10:00- Demonstration der Motorsteuerung

Bilder

L293D breadboard pin 1
L293D breadboard pin 1
L293D_breadboard_wiring_bb
L293D_breadboard_wiring_bb
L293D as halft bridge CCW
L293D as halft bridge CCW
L293D as halft bridge CW
L293D as halft bridge CW
Arduino wiring for L293D motor driver with battery
Arduino wiring for L293D motor driver with battery
Arduino wiring for L293D motor driver
Arduino wiring for L293D motor driver
79-Arduino code L293 DC motor driver (Advanced).
Sprache: C++
80-Arduino code: L293 DC motor driver (Advanced)
Sprache: C++
Kopiert!

Dinge, die Sie vielleicht brauchen

Ressourcen & Referenzen

Noch keine Ressourcen vorhanden.

Dateien📁

Keine Dateien verfügbar.