Zum Hauptinhalt springen

Der Motortreiber L293

Der Motortreiber L293 ist der bekannteste IC zur Motorsteuerung. In ihm befinden sich zwei H-Brücken, wodurch er zwei Motoren unabhängig voneinander ansteuern kann.

Motor driver DRV8833 pinout

Neben den zwei separaten Spannungsversorgungen für die Steuerlogik (Vcc1) und die Motoren (Vcc2), enthält der L293 jeweils zwei Ausgänge (1Y, 2Y und 3Y, 4Y) an denen die Motoren angeschlossen werden, zwei Eingänge (1A, 2A und 3A, 4A) zum Einstellen der Betriebsmodi bzw. der Drehrichtungen, sowie zwei Steuerleitungen (EN1,2 und EN3,4), welche die H-Brücken jeweils an- oder ausschalten und dadurch die Geschwindigkeit des Motors steuern. Das mögliche Betriebsverhalten ist in der Tabelle abgebildet.

Motor 1EN1,21A2A
Rechtslauf101
Linkslauf110
Stopp schnell111
Stopp schnell100
Leerlauf0xx

Hinweis: Mit x ist ein beliebiger Zustand (1 oder 0) gemeint.

In der folgenden Abbildung ist der Anschluss des L293D mit dem Arduino und \textbf{einem} Motor dargestellt. Achten Sie beim Anschließen des L293 auf die korrekte Ausrichtung. Die halbkreisförmige Auskerbung am L293 entspricht dem Halbkreis im abgebildeten IC.

Alle vier Massepins (4, 5, 12, 13) müssen mit der Masse vom Arduino und der Batterie verbunden werden, da sie eine Kühlfunktion für den Chip übernehmen. Der Pin 9 (Vcc1) ist die Spannungsversorgung für die Logik des L293 und wird mit dem 5 Volt Ausgang des Arduinos verbunden. Pin 8 (Vcc2) ist die Spannungsversorgung des Motors und wird mit der Batterie verbunden. Pin 1 (EN12), 2 (1A), 7 (2A) werden mit den digitalen Eingängen des Arduinos verbunden und Pin 3 (1Y), 6 (2Y) direkt mit dem Motor.

Motortreiber DRV8833 mit einem Arduino
/* Unvollständiger Code zum Ansteuern eines Gleichstrommotors */

#define TASTER_1 7 // an Schaltung anpassen
#define TASTER_2 8 // an Schaltung anpassen
#define LED 13 // an Schaltung anpassen
s
// Motoranschlüsse
#define EN12 3 // EN1,2 (enable)
#define MA1 4 // 1A (Betriebsmodus)
#define MA2 5 // 2A (Betriebsmodus)

int statusTaster_1 = HIGH;
int statusTaster_2 = HIGH;

void setup(){
// Taster mit Pull-UP, LED und serielle Schnittstelle konfigurieren
// Pins für den Motortreiber L293 als digitale Ausgänge konfigurieren
}

void loop(){
statusTaster_1 = digitalRead(TASTER_1); // Taster-Pin einlesen
statusTaster_2 = digitalRead(TASTER_1); // Taster-Pin einlesen

/*
WENN Taster_1 gedrückt ist ...
... dann dreht Motor links herum;
WENN Taster_2 gedrückt ist ...
... dann dreht Motor recht herum;
WENN beide Taster gedrückt sind ...
... dann ist der Motor im Freilauf;
WENN kein Taster gedrückt ist ...
... dann hält der Motor schnell an;
*/

}