Zum Hauptinhalt springen

Der integrierte Motortreiber DRV8833

Der integrierte Schaltkreis DRV8833 von Texas Instruments ist ein moderner Motortreiber mit geringer Verlustleistung und einem maximalen Laststrom von 1,5 A im Dauerbetrieb.

Motor driver DRV8833 pinout

Im Wesentlichen integriert der DRV8833 zwei H-Brücken zur Steuerung von Gleichstrommotoren. Anstatt jedoch jeden einzelnen der insgesamt 8 Schalter für die zwei H-Brücken ansteuern zu müssen, werden für jede H-Brücke nur jeweils zwei Steuereingänge (IN1, IN2 und IN3, IN4) verwendet, um die entsprechenden Betriebsmoden einzustellen.

Eigenschaften

  • Zwei H-Brücken zum Ansteuern von zwei Gleichstrommotoren.
  • Betriebsspannung: 2,7 V bis 10,8 V
  • Lastrom: 1,5 A bei Dauerlast und 2 A bei kurzzeitiger Spitzenlast
  • Automatische Abschaltfunktion bei zu großen Lastströmen, Kurzschluss, zu geringer Betriebsspannung oder beim Überschreiten der Maximaltemperatur.

Betriebsmoden

Die Funktionen der einzelnen Pins zum Steuern des Motors sind in der folgenden Tabelle zusammengefasst (für den Motor 2 sind die Pins IN3 und IN4 zu verwenden):

Motorfunktion (Motor 1)IN1IN2
Freilauf00
Motorbremse11
Vorwärts10
Rückwärts01

Beispiel (Motor mit Taster)

Im folgenden einfachen Beispiel soll ein Motor durch einen Taster gesteuert werden. Der verwendete Taster wird mit dem eingebauten Pull-Up-Widerstand des Arduinos am Pin A1 angeschlossen (ein analoger Eingang kann immer auch als digitaler Eingang verwendet werden). Der Eingänge IN1 und IN2 des Motortreiber DRV8833 werden mit dem Pin 5 und Pin 6 des Arduinos verbunden. Der Motor selbst wird wie in der Abbildung dargestellt mit den Ausgängen OUT1 und OUT2 des Motortreibers verbunden.

Der Motortreiber wird mit einer separaten Spannungsversorgung (z.B. ein 9V Block oder 4x AA Batterien) betrieben werden, wobei der Minuspol der Batterien mit der Masse (GND) vom Arduino und dem Motortreiber DRV8833 verbunden wird.

Motortreiber DRV8833 mit einem Arduino
danger

Der Motortreiber darf nicht an den 5V Ausgang des Arduinos angeschlossen werden.

Code (Betriebsmoden)

// Einfaches Beispiel zum Ansteuern des DRV8833
// ____________________________________
// in1 in2 Motorfunktion
// ------------------------------------
// 1 0 Vorwärts
// 0 1 Rückwärts
// 1 1 Bremse
// 0 0 Freilauf
// ____________________________________

#define pinTaster1 A1
const int in1 = 5; // Steuer-Pins für den drv8833
const int in2 = 6;

void setup() {
Serial.begin(115200);

pinMode(in1, OUTPUT); // DRV8833
pinMode(in2, OUTPUT);
pinMode(pinTaster1, INPUT_PULLUP); // Eingang mit einem internen Pullup-Widerstand
}

void loop() {
int statusTaster1 = digitalRead(pinTaster1);

if (statusTaster1){ // wenn statusTaster1 == 1
digitalWrite(in1, LOW); //
digitalWrite(in2, LOW); //
Serial.println("IN1,2: 0,0 (Freilauf)");
}
else {
digitalWrite(in1, LOW); //
digitalWrite(in2, HIGH);
Serial.println("IN1,2: 0,1 (Vorwärts)");
}
}

Die Geschwindigkeit mit PWM-Signalen steuern

Die oben dargestellten Betriebsmoden lassen sich durch 2 weiter Betriebsmoden für die Geschwindigkeitssteuerung ergänzen. Dies wird durch die Verwendung von PWM-Signalen realisiert.

Motorfunktion (Motor 1)IN1IN2
VorwärtsPWM0
Rückwärts0PWM

Codeauszug (Geschwindigkeitssteuerung)

// unvollständiges Programmbeispiel zur Geschwindikeitssteuerung

int motorSpeed = 150; // Werte von 0 ... 255 (PWM Signal)

// dreht den Motor mit reduzierter Geschwindigkeit in eine Richtung
digitalWrite(in1, LOW);
analogWrite (in2, motorSpeed);

delay(1000);

// dreht den Motor mit reduzierter Geschwindigkeit in die andere Richtung
analogWrite(in1, motorSpeed);
digitalWrite (in2, LOW);
Aufgaben
  1. Erweitern Sie das obige Beispiel so, dass ein Motor mit zwei Tastern gesteuert werden kann:

    • Ist der Taster 1 gedrückt, dreht der Motor vorwärts.
    • Ist der Taster 2 gedrückt, dreht der Motor rückwärts.
    • Ist kein Taster gedrückt, ist der Motor im Freilauf.
    • Sind beide Taster gedrückt, ist die Motorbremse aktiv.

    Schreiben Sie für diese Aufgabe die folgenden Funktionen selber: dreheMotorLinks(), dreheMotorRechts(),stoppeMotorBremse(), stoppeMotorFreilauf.

  2. Die Schaltung der Aufgabe 1 soll um zwei verschiedenfarbige LEDs erweitert werden. welche anzeigen, ob sich der Motor im Links- oder Rechtslauf befindet.

  3. Nun soll die Geschwindigkeit des Motor schrittweise mit den beiden Tastern gesteuert werden:

    • Mit dem einem Taster wird die Geschwindigkeit erhöht, mit dem anderen reduziert.
    • Sind beide Taster gedrückt, stoppt der Motor mit der Motorbremse. Notieren Sie sich, ab welchem PWM Wert der Motor anfängt zu drehen und wann er wieder stoppt.