Die Steuerung von Motoren erfordert beim Transistor und beim Relais stets mehrere Bauteile und einige Überlegungen zum Aufbau der Schaltung. Außerdem kann dabei nicht die Drehrichtung geändert werden. Integrierte Schaltkreise wie der L293D oder der L298N, auch Motortreiber genannt, vereinfachen den Aufbau der Schaltung für gleich zwei Motoren und ermöglichen zusätzlich die flexible Steuerung der Drehrichtung. Beide basieren auf der Schaltung mit einer H-Brücke bzw. einem Vierquadrantensteller.
Frage: Wie steuert man einen Motor inkl. Drehrichtung mit einem Motortreiber?
Um die Drehrichtung des Motors kontrollieren zu können, braucht man eine spezielle Anordnung von Transistoren, die als H-Brücke oder Vierquadrantensteller bezeichnet wird. Dieser Aufbau befindet sich auch im L293D und im L298N.
Hinweis: Die Freilaufdioden dienen dazu, die vom Motor induzierten Ströme abfließen zu lassen.
Da stets zwei Transistoren gemeinsam eingeschaltet werden müssen, könnten diese beim Anschluss an den Arduino über einen gemeinsamen Digitalpin gesteuert werden. Zudem ist es im Allgemeinen sinnvoll, für den Motor und den Arduino verschiedene Spannungsquellen zu verwenden, die über einen gemeinsamen GND-Anschluss geerdet werden, damit die möglicherweise hohen Ströme des Motors den Arduino nicht zerstören.
Bei der oben dargestellten Schaltung muss jedoch immer noch genau darauf geachtet werden, dass nicht versehentlich alle vier Transistoren leitend geschaltet werden. Daher ist die Steuerung mit dem L293D bzw. dem L298N noch ein wenig komplexer - die oben angestellten Überlegungen verdeutlichen aber gut den prinzipiellen Aufbau.
Der L293D ist ein integrierter Schaltkreis (IC von engl. integrated circuit), das heißt, in das schwarze Gehäuse sind Schaltkreise mit Transistoren, Widerständen, Dioden etc. integriert. Genauer gesagt, enthält der L293D zwei H-Brücken oder Vierquadrantensteller, die sich mit den Pins an beiden Seiten steuern lassen. Bei der Nummerierung der Pins ist darauf zu achten, dass die kleine Kerbe nach oben gehalten wird.
Achtung: Der L293D kann leicht mit anderen Bauteilen wie z. B. einem Shift-Register verwechselt werden, das dieselbe Bauart hat. Um sicher zu gehen, muss man die winzige Beschriftung des Bauteils lesen!
Im Folgenden wird die Belegung der Pins für die linke Seite beschrieben (vgl. Abbildung unten). Die Belegung auf der rechten Seite verläuft analog.
Der Motor wird an Pin 3 und 6 (Out1
und Out2
) angeschlossen. Der jeweilige Zustand der Out
-Pins kann über Pin 2 und 7 (In1
und In2
) geregelt werden. Wenn an In1
der Zustand HIGH
und an In2
LOW
anliegt, wird das auf Out1
und Out2
übertragen, sodass durch den Motor ein Strom fließen kann. Diese Übertragung wird jedoch durch Pin 1 (En1,2
für enable pin 1, 2) gesteuert. Wenn an En1,2
HIGH
anliegt, wird die Input-Konfiguration übertragen, bei LOW
nicht. Durch ein PWM-Signal an En1,2
kann die Leistung des Motors entsprechend gedrosselt werden.
Die vier GND
-Anschlüsse dienen zur Stromversorgung und zur Wärmeableitung, falls hohe Ströme auftreten. An Vmotor
wird der Pluspol der Versorgungsspannung für den Motor angeschlossen; an Vcc
der Logik-Pegel von 5V für die Schaltung des IC.
En1,2
-Pin.Halte die Wirkung auf den Motor tabellarisch fest. Hier genügt es, wenn für den En1,2
-Pin nur zwischen ein / 255 und aus / 0 unterschieden wird.
In1 | In 2 | En1,2 | Wirkung |
---|---|---|---|
1 | 0 | 255 | … |
Recherche: Wie stark darf der L293D belastet werden?
Bei Motoren ist immer genau darauf zu achten, welche Stromstärken und Spannungen die verwendeten Bauteile aushalten. Suche nach dem Datenblatt (data sheet) des L293D und notiere die Maximalwerte zu Versorgungsspannung, Stromstärke und kurzfristige Spitzenstromstärke, die der IC aushält (absolute maximum ratings).
Das Motortreibermodul L298N ist ein beliebtes Bauteil, weil es den Anschluss von Motoren sehr einfach macht und weil es zudem über einen Spannungsregler verfügt, den man in einigen Fällen für die Stromversorgung von weiteren Bauteilen verwenden kann. Der Motortreiber-IC ist an ein Kühlelement geschraubt, um die entstehende Wärme abzuleiten. In dem schwarzen Kasten sind zwei H-Brücken bzw. Vierquadrantensteller verbaut, sodass sich die Motoren in beide Richtungen drehen lassen.
Zur Motorsteuerung
Ein Motor wird an Out1
und Out2
angeschlossen. Der jeweilige Zustand der Out
-Pins kann über die Pins In1
und In2
geregelt werden. Wenn an In1
der Zustand LOW
und an In2
der Zustand HIGH
anliegt, wird dies auf Out1
bzw. Out2
übertragen, sodass durch den Motor ein Strom fließen kann und er sich vorwärts dreht. Diese Übertragung wird jedoch durch den Pin En1,2
(für Enable 1, 2) gesteuert. Wenn an En1,2
HIGH
anliegt, wird die Input-Konfiguration übertragen, bei LOW
nicht. Durch ein PWM-Signal an En1,2
kann die Leistung des Motors entsprechend gedrosselt werden.
Die Steuerung des Motors an Out3
und Out4
erfolgt analog über In3
und In4
, deren Konfiguration übertragen wird, wenn En3,4
auf HIGH
steht.
Hinweis: Durch einen Jumper auf dem En1,2
-Pin kann dieser direkt mit dem 5V-Potential (HIGH
) verbunden werden, sodass die Input-Konfiguration immer direkt übertragen wird. Dann ist aber kein PWM-Signal mehr möglich, sodass der Motor immer mit voller Leistung dreht. Im Folgenden wird daher davon ausgegangen, dass die Jumper entfernt wurden und die En1,2
-Pins stattdessen mit einem PWM-Pin des Arduino verbunden werden.
Zur Spannungsversorgung
Am Vin
-Pin muss der Pluspol einer Batterie mit 7V bis 12V angeschlossen werden. Der Minuspol muss mit GND
verbunden werden. Diese Spannung wird vom Spannungsregler auf ein stabiles 5V-Potential heruntergeregelt, welches für die Schaltlogik benötigt wird. Über den 5V
-Pin (in Kombination mit dem GND
-Pin) kann dieses Potential auch für weitere Bauteile genutzt werden. In dieser Anleitung geschieht dies jedoch nicht, weil die Stromstärke der Batterie dann nicht mehr ausreicht, um eine stabile Spannungsversorgung für alle Bauteile zu gewährleisten.
VIN
und GND
des L298N.En1,2
-Pin.Halte die Wirkung auf den Motor tabellarisch fest. Hier genügt es, wenn für den En1,2
-Pin nur zwischen ein / 255 und aus / 0 unterschieden wird.
In1 | In 2 | En1,2 | Wirkung |
---|---|---|---|
1 | 0 | 255 | … |
In der folgenden Abbildung ist festgehalten, wie sich die Motorsteuerung in eine Funktion auslagern lässt, um das Programm aussagekräftiger und kürzer zu machen, wenn die gleichen Blöcke immer wieder genutzt werden.
stoppe
: Hält den Motor an.dreheRueckwaertsMitLeistung ( leistung )
: Dreht den Motor rückwärts mit der angegebenen Leistung.dreheVorwaertsMitLeistungInProzent ( leistung )
: Dreht den Motor vorwärts, wobei eine Leistung von 100 die höchstmögliche Geschwindigkeit bedeutet und eine Leistung von 0 einen Stopp bedeutet.