Startseite>I<+>2<+>C-Workshop Teil 29: Motor ansteuern mit dem DRV8830
Aus Raspberry Pi Geek 02/2020

I<+>2<+>C-Workshop Teil 29: Motor ansteuern mit dem DRV8830

© Mariusz Blach, 123RF

Startet die Motoren!

Martin Mohr

Es genügt ein kleiner DRV8830-Baustein, um einen Gleichstrommotor nach Belieben anzusteuern.

Beim DRV8830 handelt es sich um einen H-Brücken-Treiber für Motoren mit geringer Leistung. Eine genaue Erklärung, worum es sich bei einer H-Brücke handelt, zeigt der Kasten “Brückentechnologie”. Der DRV8830 arbeitet bei einer Spannung von 2,75 bis 6,8 Volt, der maximale Ausgangsstrom beträgt ein Ampere. Um Beschädigungen zu vermeiden, integrieren die Ausgänge Freilaufdioden. Ihre Funktion zeigt der Kasten “Freilaufdiode”.

Brückentechnologie

Bei einer H-Brücke (Abbildung 1) handelt es sich um eine elektronische Schaltung zum Ansteuern von Gleichstromelektromotoren, die sich drehen, sobald Strom durch sie fließt. Die Drehrichtung hängt von der Stromrichtung ab. Die Bauteile sind in Form eines großen H angeordnet.

Es gibt für eine H-Brücke vier sinnvolle Schaltzustände. Im ersten Zustand sperren alle Transistoren. Der Motor bleibt dadurch spannungsfrei und dreht frei. Im nächsten sinnvollen Zustand stehen die Transistoren T3 und T4 auf “leitend”. Dieser Zustand schaltet die Anschlüsse des Motors kurz, der Motor bremst. Testen Sie es, indem Sie den Motor von Hand drehen: In gebremstem Zustand geht das spürbar schwerer als im spannungsfreien Zustand.

Nun geht es darum, den Motor in Bewegung zu versetzen. Wenn T1 und T3 leiten, während T2 und T4 sperren, dreht sich der Motor in die eine Richtung. Leiten hingegen T2 und T4, während T1 und T3 sperren, dreht er sich in die andere Richtung. Wir bleiben bei der Formulierung absichtlich so unscharf, weil fast allen kleinen Motoren eine Beschriftung fehlt und man immer erst einmal ausprobieren muss, wie herum sie sich bei einer bestimmten Polung drehen.

Abbildung 1: Der Aufbau einer H-Br&uuml;cke mit Freilaufdioden. Je nach Schaltung l&auml;uft der Motor in die eine oder andere Richtung oder bremst ab.

Abbildung 1: Der Aufbau einer H-Brücke mit Freilaufdioden. Je nach Schaltung läuft der Motor in die eine oder andere Richtung oder bremst ab.

Freilaufdiode

Um zu verstehen, was eine Freilaufdiode genau tut, müssen wir etwas ausholen. Das Grundproblem: Spulen aller Art (Induktivitäten) wollen den elektrischen Stromfluss konstant halten. Beim Einschalten und solange der Strom konstant fließt, stellt das kein Problem dar. Beim Abschalten des Stromkreises versucht die Spule trotzdem, den Stromfluss für eine gewisse Zeit aufrechtzuerhalten. Da der Widerstand im Stromkreis durch das Abschalten theoretisch ins Unendliche steigt, steigt auch die Spannung an der Spule sprunghaft an, theoretisch ebenfalls bis ins Unendliche. Praktisch findet sich immer ein Weg, um diese Spannung abzubauen. Dummerweise führt dieser Weg oft durch die Sperrschicht eines Halbleiters, die die Spannung durchschlägt und sie dadurch zerstört. Um das zu verhindern, kommen in elektronischen Schaltungen Freilaufdioden zum Einsatz. Man baut sie in Sperrrichtung parallel zur Induktivität ein, um Überspannungen abzubauen und den Halbleitern das Leben zu retten. Man darf dabei nicht vergessen, dass auch Elektromotoren und Magnetventile Spulen enthalten. Sobald ein Transistor eine Last schaltet, sollte man ihm eine Freilaufdiode spendieren. Selbst wenn keine induktiven Lasten geschaltet werden, schadet diese zusätzliche Diode nicht.

Der DRV8830 kommt in einem recht kleinen HVSSOP-Gehäuse mit einer Kantenlänge von lediglich 3 mal 3 Millimetern – zu klein, um es manuell zu löten. Zum Experimentieren bestellen Sie deshalb besser ein fertig aufgebautes Modul direkt in China [1]. Es meldet sich am I2C-Bus unter der Adresse 0x64h.

Der IC verfügt über zwei Eingänge, mit denen sich bis zu neun verschiedene I2C-Bus-Adressen auswählen lassen. Jeder der zwei Eingänge nimmt drei Zustände an: Betriebsspannung, Masse und offen. Details zur Beschaltung der Adresseingänge wie auch die möglichen Adressen finden Sie im Datenblatt [2] auf Seite 12. Optional ändern Sie die Adresse des Moduls mit Lötbrücken.

Intern besitzt der DRV8830 zwei Steuerregister, die wir im Weiteren genauer beschreiben. Um den Motor unterschiedlich schnell drehen zu lassen, verwendet der Treiber die PWM-Modulation, die der Kasten “Pulsweiten” beschreibt.

Pulsweiten

PWM steht für Pulsweitenmodulation, die ein Rechtecksignal mit konstanter Frequenz erzeugt. Es variiert lediglich das Verhältnis zwischen Puls- und Pausenzeiten. Das erlaubt es, die zugeführte Leistung, die bei einem Verbraucher ankommt, genau zu steuern. Dieses Verfahren kommt zum Einsatz, um die Transistorendstufen nicht zu überlasten. Eine Transistorendstufe erzeugt im gesperrten und vollständig leitenden Zustand kaum Verlustleistung, womit sie entsprechend keine überschüssige Energie in Abwärme verwandelt. Stellt man einen Arbeitspunkt ein, der einer bestimmten Leistung entspricht, würde man im ungünstigsten Fall fast die Hälfte der aufgenommenen Leistung als Verlustleistung produzieren. Alte Netzteile mit linearer Regelung arbeiten auf diese Weise. Moderne Schaltnetzteile verwenden ein PWM-ähnliches Verfahren und kommen so auf einen Wirkungsgrad über 90 Prozent. Oft findet man am Ausgang einer PWM-Stufe einen Tiefpassfilter, der wieder eine saubere Gleichspannung erzeugt. Das PWM-Verfahren kommt auch zum Ansteuern von Servomotoren zum Einsatz. Dort entspricht das Verhältnis zwischen Puls und Pause dem Winkel, den der Servo annimmt.

Register

Über die einzelnen Bits des Registers 0x00h, des sogenannten Control-Registers, lassen sich alle Funktionen des Motors ansteuern. Die Bits 1 und 2 dienen dazu, die Funktionen der H-Brücke zu steuern. Die Tabelle “Ansteuerung H-Brücke” zeigt, welche Bit-Kombination die unterschiedlichen Schaltzustände der H-Brücke erzeugen.

Bit 0

Bit 1

Funktion

0

0

frei Drehen

0

1

Motor dreht in eine Richtung

1

0

Motor dreht in die Gegenrichtung

1

1

Motor bremst

Die Bits 2 bis 7 steuern die PWM-Erzeugung. Im Datenblatt finden Sie eine Tabelle, die Auskunft darüber gibt, welche Spannung der PWM-Generator bei einer bestimmten Bit-Kombination erzeugt. Die ersten 5 möglichen Bit-Kombinationen bleiben dabei reserviert. Der Wert 0x06h für die Bits 2 bis 7 erzeugt die geringste Ausgangsspannung, mit dem Wert 0x3Fh erhält man die höchste. Die Ausgangsspannung ist nicht zu 100 Prozent linear zu den Bit-Kombinationen, deswegen erläutert im Datenblatt eine Tabelle diesen Zusammenhang.

Das Register 0x01h dient als das Fault-Register, über das der DRV8830 verschiedene Fehlerzustände signalisiert. Die Tabelle “Fehlerregister” beschreibt die Funktionen der einzelnen Bits. Beim Auftreten eines Fehlers wird die H-Brücke deaktiviert, bis der Fehler nicht mehr existiert.

Bit

Funktion

0

Wird gesetzt, wenn eines der anderen Fehlerbits gesetzt wurde.

1

Zeigt an, dass der Maximalstrom von einem Ampere überschritten wurde.

2

Dieses Bit wird gesetzt, wenn Unterspannung auftritt.

3

Ist die Temperatur des DRV8830 zu hoch, zeigt dieses Bit es an.

4

Signalisiert, dass über den ISENSE-Eingang ein zu hoher Strom geflossen ist.

5

keine Funktion

6

keine Funktion

7

Setzt im Register gespeicherte Fehler auf 0 zurück.

Testaufbau

Wir verwenden hier den Testaufbau aus Teil 18 dieser Reihe [3]. Sie finden ihn zusätzlich als PDF-Datei im Download-Verzeichnis dieses Artikels. Er beschreibt, wie Sie die I2C-Schnittstelle des RasPi aktivieren und die passende Software installieren. Der Schaltplan (Abbildung 2) zeigt den Anschluss des Moduls. Abbildung 3 zeigt den fertigen Testaufbau. Wir verwenden hier ein extra Netzteil für den Motor, damit mögliche Störungen, die er verursacht, den RasPi nicht negativ beeinflussen. Für einen ersten Test zum Prüfen der Anschlüsse verwenden Sie das Tool I2cdetect (Listing 1).

Abbildung 2: Der Schaltplan f&uuml;r den Testaufbau.

Abbildung 2: Der Schaltplan für den Testaufbau.

Abbildung 3: Der Testaufbau mit einem kleinen Getriebemotor.

Abbildung 3: Der Testaufbau mit einem kleinen Getriebemotor.

Listing 1

$ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- 64 -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Der DRV8830 meldet sich wie erwartet unter der I2C-Adresse 0x64h. Mit den Kommandos i2cset und i2cget starten Sie nun einige Tests, um den Motor zum Leben zu erwecken (Listing 2). Es hängt vom verwendeten Motor ab, mit welcher Einstellung er zu laufen beginnt.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland