Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


(pr(k) encoder hinzugefügt)
(Ansteuerung mit Treiber IC L293 D)
 
(153 dazwischenliegende Versionen von 12 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Hat man sich entschlossen, für seinen Roboter oder andere Konstruktion einen Getriebemotor zu verwenden, so muss man sich Gedanken machen, wie man ihn ansteuert. Gewöhnlich will man die Motoren ja sowohl in Bezug auf Drehrichtung und Geschwindigkeit über eine Programmiersprache steuern. Daher wird in der Regel erst mal ein Controllerboard benötigt. Leider kann man an die wenigsten Controllerboards einen Getriebemotor direkt anschließen, eine der wenigen Ausnahmen ist das [[RN-Control]]-Board und das RNBFRA-Board. Bei beiden Boards ist es einfach, dort müssen die Getriebemotoren einfach nur an die Schraubklemmen angeschlossen werden, danach kann man sofort mit der Programmierung loslegen.
+
Ist der Entschluss gefasst, für seinen Roboter oder andere Konstruktion einen Getriebemotor zu verwenden, so müssen sich Gedanken gemacht werden, wie er ansteuert werden kann. Gewöhnlich sollen die Motoren ja sowohl in Bezug auf Drehrichtung und Geschwindigkeit über eine Programmiersprache angesteuert werden. Daher wird in der Regel erst mal ein Controllerboard benötigt. Leider kann man an die wenigsten Controllerboards einen Getriebemotor direkt anschließen, eine der wenigen Ausnahmen ist das [[RN-Control]]-Board und das RNBFRA-Board. Bei beiden Boards ist es einfach, dort müssen die Getriebemotoren einfach nur an die Schraubklemmen angeschlossen werden, danach kann man sofort mit der Programmierung loslegen.
  
Ich möchte hier aber aufzeigen, wie man Motoren auch bei anderen Boards anschließen kann. Die gleiche Technik läßt sich natürlich auch nutzen, um z.B. mehr als zwei Motoren an [[RN-Control]] anzuschließen.
+
Ich möchte hier aber aufzeigen, wie man Motoren auch bei anderen Boards anschließen kann. Die gleiche Technik lässt sich natürlich auch nutzen, um z.B. mehr als zwei Motoren an [[RN-Control]] anzuschließen.
  
 
==Ansteuerung mit Relais==
 
==Ansteuerung mit Relais==
Zeile 9: Zeile 9:
 
[[Bild:hbrueckerelais.gif|center]]
 
[[Bild:hbrueckerelais.gif|center]]
  
Da auch Relais wegen des Strombedarfes nicht direkt vom Controller geschaltet werden können, wurde in dem oberen Beispiel ein Transistor vorangestellt. Die Diode dient nur dazu, die Spannungen, die beim Ausschalten des Relais induziert werden, abzuleiten. Ohne Diode funktioniert das Ganze in der Regel auch, jedoch könnte der Transistor oder sogar der Controller durch die induzierte Spannung beschädigt werden.  
+
Da auch Relais wegen des Strombedarfes nicht direkt vom Controller geschaltet werden können, wurde in dem oberen Beispiel ein Transistor vorangestellt. Die Diode dient dazu, die Spannungen abzuleiten, die beim Ausschalten des Relais induziert werden. Ohne Diode könnte der Transistor oder sogar der Controller durch die induzierte Spannung beschädigt werden.  
Die Schaltung ist also in der Lage, die Drehrichtung umzuschalten, jedoch nicht in der Lage, den Motor zu stoppen. Um den Motor ganz auszuschalten, müsste man noch ein weiteres Relais vorsehen, das die gesamte Motorspannung abschaltet. Ein Schaltbild können wir uns ersparen, da das Ganze recht ähnlich aussieht.  
+
Die Schaltung ist also in der Lage, die Drehrichtung umzuschalten, jedoch nicht in der Lage, den Motor zu stoppen. Um den Motor ganz auszuschalten, könnte man man 2 getrennte Relais für die beiden Umschaltkontakte nutzen. Ein Schaltbild können wir uns ersparen, da das Ganze recht ähnlich aussieht.  
Der große Nachteil von Relaisschaltungen ist, dass die Geschwindigkeit des Motors nicht geregelt werden kann, zudem haben Relais bei sehr vielen Schaltvorgängen einen gewissen Verschleiß.  
+
Der große Nachteil von Relaisschaltungen ist, dass die Geschwindigkeit des Motors nicht geregelt werden kann, zudem haben Relais bei vielen Schaltvorgängen einen gewissen Verschleiß.
Vorteil der Schaltung ist jedoch, das man auch sehr große Lasten/Motoren schalten kann.
+
Das Auschalten einer induktiven Last ist dabei für die Relaiskontakte besonders schädlich.
 +
Vorteil der Schaltung ist jedoch, das man auch große Lasten/Motoren schalten kann.
 +
 
 +
==Ansteuerung mit Relais und MOS-FET==
 +
Die Schaltung ist sehr ähnlich wie die vorherige Relaisschaltung. Es wird aber in die Masseleitung hinter dem Relais ein [[Feldeffekttransistor#MOSFETS|MOSFET]] und eine Freilaufdiode eingesetzt. Dadurch werden die meisten Nachteile der einfachen Relaisschaltung behoben. Durch den MOSFET läßt sich der Motor in der Geschwindigkeit regeln und ggf. abschalten.
 +
 
 +
[[Bild:RelaisundFet.png|center]]
 +
 
 +
Es sind prinzipiell alle N-Kanal MOS-FETs geeignet. Für die hier gezeigte direkte Steuerung vom µC sollte es ein Logik-Level-Typen sein. Der FET IRLZ34 sollte ohne Kühlung bis etwa 5 A genügen. Die Freilaufdiode D1 muß für den Motorstrom ausgelegt sein, und bei PWM Steuerung genügend schnell sein(z.B. Shottky SB540). Die Induktivität L1 (ca. 1...100 µH) und der Kondensator C1 dienen zur Funkentstörung und können bei kurzem Kabel zum Motor auch weggelassen werden. Um die Umschaltverluste und Funkstörungen gering zu halten, sollte die [[PWM]]-Frequenz nicht unnötig hoch liegen. Eine einfache Motorbremse ist möglich mit einem P-MOSFET (oder PNP Transistor) parallel zur Freilaufdiode. Ein Programmfehler kann damit allerdings zu einem Kurzschluss führen.
 +
 
 +
Da das Relais nur Strom verbraucht, wenn es angezogen wird, sollte man den Motor so anschließen, dass in der bevorzugten Drehrichtung (beim Roboter Vorwärtsfahren) das Relais nicht angezogen ist.
 +
Die Schaltung (ohne Motorbremse) ist sicher gegen Querströme und es können durch Fehler im Programm des µC kaum Schäden entstehen. Das Relais sollte erst umgeschaltet werden, wenn der Motor steht, dann gibt es keine Funken an den Relaiskontakten.
 +
 
 +
Der Verdrahtungsaufwand insgesamt ist minimal und sogar kleiner als bei Motortreiber-ICs, wie dem [[Getriebemotoren_Ansteuerung#Ansteuerung_mit_dem_Schaltkreis_L298|L298]], da keine zusätzlichen Bauteile benötigt werden. Daher ist die Schaltung insbesondere für Anfänger geeignet.
 +
 
 +
Vorteile sind:
 +
*tolerant gegen Fehler im µC Programm
 +
*hohe Strombelastbarkeit
 +
*sehr geringer Spannungsabfall (< 1 V)
 +
*niedrige Kosten, auch bei hoher Leistung
 +
*das Relais kann stromlos geschaltet werden (wenig Verschleiß an Kontakten)
 +
 
 +
Nachteile sind:
 +
*hörbares "Klacken" beim Laufrichtungswechsel
 +
*zusätzlicher Stromverbrauch, wenn das Relais geschaltet ist
  
 
==Ansteuerung mit MOS-FET==
 
==Ansteuerung mit MOS-FET==
Zeile 24: Zeile 48:
 
Wenn die Neufassung komplett fertig ist, sollten die alten Texte weg.
 
Wenn die Neufassung komplett fertig ist, sollten die alten Texte weg.
 
}}
 
}}
====Grundprinzip====
+
===Grundprinzip===
Wesentlich günstiger und auch beliebter ist die Ansteuerung von Motoren mit MOS-FETs. Also Transistoren, die quasi leistungslos nur durch Spannungen geschaltet werden und extrem hohe Ströme verkraften. Zu diesem Thema findet man unzählige Beiträge im Roboternetz.
+
Wenn man die Steuerung rein mit Halbleitern realisieren will, bietet sich die H Brückenschaltung (Vollbrücke) an. An jeden Motoranschluß kommt einen Halbbrücke, die den Anschluß mit GND oder der Versorgungsspannung verbinden kann. Die fertigen [[Getriebemotoren_Ansteuerung#Ansteuerung_mit_Treiber_IC_L293_D|Motorteiber ICs]] sind auch entsprechend aufgebaut.
 +
Der Aufbau aus Einzelteilen wird vor allem gebraucht, wenn man kein passendes IC findet, z.B. bei hoher Leistung.
  
Die Grundschaltung besteht aus 2 N-Kanal-MOSFET (hier BUZ11) und zwei P-Kanal-MOSFET (hier IRF5305), mit denen die Motoranschlüsse nach GND bzw. UB geschaltet werden. Zusätzlich sind noch 4 Schottky-Dioden (z.B. SB530) erforderlich, um Induktionsströme des Motors abzuleiten. Die Dioden werden in Sperrichtung von den beiden Motoranschlüssen nach GND bzw. UB geschaltet.
+
Bei den üblichen Batteriespannungen sind als Schaltelemete [[Feldeffekttransistor#MOSFETS|MOS-FET]]s die beste Wahl. Also (unipolaren) Transistoren, die quasi leistungslos nur durch Spannungen geschaltet werden. Zu diesem Thema findet man unzählige Beiträge im Roboternetz, denn die Schaltung ist nicht ganz einfach.
  
Grundsätzlich muss die Beschaltung der Gate-Eingänge so erfolgen, dass zum Starten des Motors die Transistoren einer Diagonale auf "leitend" und die der anderen auf "sperrend" geschaltet werden. Zum Anhalten des Motors werden z.B. die unteren auf leitend und die oberen auf sperrend geschaltet - Der Motor wird dadurch schnell abgebremst, denn durch einen Transistor und eine Freilaufdiode fließt ein nicht unerheblicher Bremsstrom.
+
Die Grundschaltung besteht aus 2 N-Kanal-MOS-FET und zwei P-Kanal-MOS-FET, mit denen die Motoranschlüsse nach GND bzw. UB geschaltet werden.
Alternativ kann man auch alle Transistoren auf sperrend schalten, der Motor läuft dann im Leerlauf aus.
+
Auf die extra Freilaufdioden kann bei einer Vollbrücke mit modernen MOSFETs meistens verzichtet werden, da die MOSFETs bereits hinreichend gute Dioden enthalten.  Teilweise werden trotzdem zusätzliche [[Im RN-Wiki verwendete Elektronikbauteile|Schottky-Dioden]] benutzt, um die Verluste etwas weiter zu reduzieren. Die Dioden werden in Sperrichtung von den beiden Motoranschlüssen nach GND bzw. UB geschaltet.
 +
Die Transistortypen werden entsprechend der benötigten Ströme und Spannungen gewählt. Zu große Transistoren haben den Nachteil einer großen Gatekapazität und benötigen daher aufwendigere Treiber.
  
Die Transistoren einer Seite dürfen nicht dauerhaft gleichzeitig auf "leitend" geschaltet werden, da dies einen Kurzschluss verursacht.
+
Grundsätzlich muss die Beschaltung der Gate-Eingänge so erfolgen, dass zum Starten des Motors die Transistoren einer Diagonale auf "leitend" und die der anderen auf "sperrend" geschaltet werden. Zum Anhalten des Motors werden z.B. die unteren auf leitend und die oberen auf sperrend geschaltet  (Der Motor wird aufgrund des nicht unerheblichen Bremsstroms von Transistor und Freilaufdiode stark gebremst).
 
+
Alternativ kann man auch alle Transistoren auf sperrend schalten, der Motor läuft dann im Leerlauf aus.
Hinweis: Zumindestens bei dem Transistor BUZ11 handelt es sich um ein veraltetes Modell. Wenn es auf hohe Leistung ankommt, sollte da ein anderer Transistor gewählt werden.
+
  
====Elektrische Ansteuerung der Gates====
+
Die Transistoren einer Seite dürfen nicht gleichzeitig auf "leitend" geschaltet werden, da dies einen Kurzschluss verursacht.
Beim Umschalten der Transistoren entsteht eine erhöhte Verlustleistung - der Widerstand wechselt von sperrend (sehr großer Widerstand) nach leitend (sehr kleiner Widerstand) und umgekehrt.
+
  
 +
===Elektrische Ansteuerung der Gates===
 +
Beim Umschalten der Transistoren entstehen Verluste - der Widerstand wechselt von sperrend (sehr großer Widerstand) nach leitend (sehr kleiner Widerstand) und umgekehrt.
 
Zwischen beiden Enden des Schaltvorgangs befindet sich der Transistor in der "Widerstandsphase" (weder ganz leitend, noch ganz sperrend), die eine erhebliche Verlustleistung und damit Erwärmung mit sich bringt.
 
Zwischen beiden Enden des Schaltvorgangs befindet sich der Transistor in der "Widerstandsphase" (weder ganz leitend, noch ganz sperrend), die eine erhebliche Verlustleistung und damit Erwärmung mit sich bringt.
  
Deshalb sollte der Schaltvorgang - insbesondere wenn für eine PWM-Gegelung sehr oft geschaltet werden soll - möglichst schnell erfolgen. Da zum Umschalten die durch den Aufbau des MOSFETs bedingte Gatekapazität umgeladen werden muss, ist hierzu (sehr kurzzeitig) ein hoher Stromfluss nötig.
+
Deshalb sollte der Schaltvorgang schnell erfolgen, insbesondere wenn für eine [[PWM]]-Regelung sehr oft geschaltet wird. Da zum Umschalten die durch den Aufbau des MOSFETs bedingte Gatekapazität umgeladen werden muss, ist hierzu (sehr kurzzeitig) ein hoher Stromfluss nötig. Zu schnell (<100 ns) sollte man wegen der Funkstörungen aber auch nicht schalten.
=====Schaltung direkt am Port=====
+
Eine Ansteuerung unmittelbar über den Ausgang eines Mikrocontrollers (oder eines TTL-IC) ist schon wegen der benötigten Spannungen nicht möglich.  
+
  
Bei den N-FET könnte man sog. "Logik-MOSFET" nehmen, die bereits bei 5V ausreichend leitet.  
+
Für die P-Mosfets wird eine Spannung von 0 V bzw. etwa -10 V realtiv zur postiven Versorgung gebraucht. Für die N-Mosfets reicht eine Spannung von 0 V bzw. ca. 10 V, bei logic level Mosfets reichen 5 V.
  
Bei den P-MOSFET bemisst sich die Schaltspannung gegen UB, mit einem 5V Port und UB=12V würde also zwischen -12V und -7V umgeschaltet, was einen P-MOSFET erfordern würde, der bereits bei -7V sperrt.
+
====Schaltung direkt am Port====
 +
Eine Ansteuerung unmittelbar über den Ausgang eines Mikrocontrollers (oder eines TTL-IC) ist schon wegen der benötigten Spannungen oft nur für die N-MOSFETs möglich, und das auch nur bei Logic Level Fets. Bei den P-[[MOSFET]] bemisst sich die Schaltspannung gegen UB und nur für ein UB von etwa 5-6 V könnte die Spannung passen.
  
Dass ein Portpin nur einen geringen Stromfluss (~20mA) zulässt, ist ein weiteres Problem und verhindert einen Schaltvorgang mit idealer steiler Flanke. Allerdings ist die Schaltungsvariante mit einem Transistor in diesem Punkt keinesfalls besser, wenn die Gatekapazität durch den PullUp-Widerstand umgeladen werden muss.
+
Dass ein Portpin nur einen geringen Stromfluss (ca. 20 mA) zulässt, ist ein weiteres Problem und verhindert einen schnellen Schaltvorgang.  
=====Schaltung mit einem Transistor=====
+
Diese Schaltungsversion ist für eher kleine Logic Level MOSFETs (bis etwa 2 nF Gate Kapazität), bevorzugt ohne PWM, möglich.
Eine einfache Steuerschaltung besteht aus einem Transistor-Schalter und einem Pull-Up-Widerstand. Als Schalter hab ich 1/7 eines ULN2003 IC verwendet, als PullUp 2200 Ohm. Ein diskreter Aufbau mit 1 Transistor und 2 Widerständen ist aber auch nicht komplizierter.
+
  
Der Vorteil liegt in der Einfachheit, der Nachteil liegt darin, dass die Schaltung nicht sonderlich schnell vonstatten geht: Für die Schaltung des FET muss die Gate-Kapazität transferiert werden, was insbesondere beim Wechsel von 0V nach UB einen Moment dauert, da die Ladung durch den Widerstand hindurch muss.
+
====Schaltung mit einem Transistor====
 +
Eine einfache Steuerschaltung besteht aus einem Transistor-Schalter (Emitter nach GND)und einem Pull-Up-Widerstand.  
  
Ein kleinerer Widerstand könnte hier helfen, verursacht allerdings einen nicht unerheblichen Stromfluss im geschalteten Zustand (zulässige Verlustleistung beachten).
+
Der Vorteil liegt in der Einfachheit, der Nachteil liegt darin, dass die Schaltung nicht sonderlich schnell vonstatten geht: Für die Schaltung des FET muss die Gate-Kapazität transferiert werden, was insbesondere beim Wechsel von 0 V nach U<sub>B</sub> einen Moment dauert, da die Ladung durch den Widerstand hindurch muss. Ein kleinerer Widerstand könnte hier helfen, verursacht allerdings einen nicht unerheblichen Stromfluss im geschalteten Zustand.
=====Schaltung mit zwei Transistoren=====
+
Eine bessere Ansteuerung sollte sich ergeben, wenn man zwei Transistoren zur Gate-Ansteuerung verwendet: Einer schaltet gegen 0V, der andere Gegen UC. So kann man erreichen, dass in beide Richtungen rasch umgeschaltet werden kann.
+
=====Integrierte Gate-Treiber=====
+
Statt der Beschaltung mit zwei Transistoren kann man auch einen integrierten MOSFET-Treiber verwenden. Mit derartige IC sind darauf ausgelegt, kurzfristig den für eine Umschaltung benötigten hohen Stromfluss zu ermöglichen.
+
  
Es gibt auch Treiber-IC, die zur Ansteuerung der oberen Transistoren eine Spannung oberhalb von UB erzeugen. Mit solchen Highside-Treibern kann die H-Brücke auch aus 4 N-Kanal-Transistoren gebaut werden, was den Vorteil hat, dass N-Kanal-FET mit geringerem Schaltwiderstand zu bekommen sind.
+
Sinnvoll ist diese Version damit nur für die P-MOSFETs, wenn diese nicht mit dem PWM Signal versorgt werden. Für die N Kanal Fets ist es in der Regel besser direkt den Logicpegel und Logic Level Fets zu nehmen.
  
====Logische Ansteuerung der Gates====
+
====Schaltung mit zwei Transistoren====
Nach der elektrischen Ansteuerung ist die logische Ansteuerung durch den Mikrocontroller zu überlegen.
+
Eine bessere Ansteuerung sollte sich ergeben, wenn man zwei Transistoren zur Gate-Ansteuerung verwendet: Einer schaltet gegen 0 V, der andere gegen UC. So kann man erreichen, dass in beide Richtungen rasch umgeschaltet werden kann.
  
=====Mögliche Querströme=====
+
====Integrierte Gate-Treiber====
In der H-Brücke sind zwei problematische Zustände zu berücksichtigen:
+
Statt der Beschaltung mit zwei Transistoren kann man auch einen integrierten [[MOSFET]]-Treiber verwenden. Derartige ICs (z.B. ICL7667) sind darauf ausgelegt, kurzfristig den für eine Umschaltung benötigten hohen Stromfluss zu ermöglichen.
  
1. Das offensichtliche Problem ist ein Kurzschluss: Wenn beide Transistoren einer Seite auf leitend geschaltet werden wird dadurch ein Kurzschluss erzeugt. Falls vorhanden brennt die Sicherung durch - ist keine Sicherung vorhanden, brennt was anderes durch.
+
Es gibt auch Treiber-ICs (z.B. IR2111), die zur Ansteuerung der oberen Transistoren eine Spannung oberhalb von UB erzeugen. Mit solchen Highside-Treibern kann die H-Brücke auch aus 4 N-Kanal-Transistoren gebaut werden, was den Vorteil hat, dass N-Kanal-FETs mit geringerem Schaltwiderstand zu bekommen sind.  Bei den Treibern für highside N-Kanal-Fets hat man aber oft eine Begrenzung des Tastverhältnisses.
  
2. Ein nicht so offensichtliches Problem rührt daher, dass der Schaltvorgang nur mit endlicher Geschwindigkeit abläuft und der Transistor auch schon vor Erreichen des Zielwertes der Gate-Spannung erheblichen Strom leitet. Hierdurch kommt es zu einem Kurzschluss durch den nicht mehr richtig gesperrten und den noch nicht richtig gesperrten Transistor.
+
===Logische Ansteuerung der Gates===
 +
Nach der elektrischen Ansteuerung ist die logische Ansteuerung durch den Mikrocontroller zu überlegen. In der H-Brücke sind zwei problematische Zustände zu berücksichtigen:
  
Die Stromspitze selbst liegt noch im Rahmen der Spezifikationen der Transistoren. Sofern ein Messwiderstand von z.B. 0,1 Ohm da ist oder die Spannungsquelle einen vergleichbaren Innenwiderstand hat fließt ein Strom von weniger als 70A, die Transistoren sind jeweils für Spitzen von über 100A spezifiziert.
+
1. Das offensichtliche Problem ist ein Kurzschluss: Wenn beide Transistoren einer Seite auf leitend geschaltet werden ist das ein Kurzschluss. Falls vorhanden brennt die Sicherung durch oder es wird sogar etwas beschädigt.
  
Allerdings hat die Stromspitze drei Auswirkungen:
+
2. Ein nicht so offensichtliches Problem rührt daher, dass der Schaltvorgang nur mit endlicher Geschwindigkeit abläuft und der Transistor auch schon vor Erreichen des Zielwertes der Gate-Spannung erheblichen Strom leitet. Hierdurch kommt es zu einem Kurzschluss durch den nicht mehr richtig gesperrten und den noch nicht richtig gesperrten Transistor. Es reicht also nicht die beiden Transistoren gleichzeitig zu schalten, sondern es wird eine kleine Verzögerung benötigt.
  
 +
Die Stromspitze selbst liegt oft noch im Rahmen der Spezifikationen der Transistoren.
 +
Allerdings hat die Stromspitze drei Auswirkungen:
 
# Die Transistoren erwärmen sich
 
# Die Transistoren erwärmen sich
 
# Es kann an einem Messwiderstand zu einer Spannungsspitze kommen
 
# Es kann an einem Messwiderstand zu einer Spannungsspitze kommen
 
# Die Versorgungsspannung bricht kurzzeitig zusammen
 
# Die Versorgungsspannung bricht kurzzeitig zusammen
  
----
+
Die Störung der Versorgungsspannung lässt sich ohne Oszilloskop kaum messen. Insbesondere in umfangreicheren Schaltungen können Störungen an ganz anderen Stellen (z.B. bei Sensoren) auftreten, die man dann nicht gleich mit der Motorsteuerung in Verbindung bringt.
  
Die Erwärmung des Transistors ist solange kein Problem, wie nur selten umgeschaltet wird. Bei einer Regelung per PWM könnten sich die kleinen Energiemengen zu einem relevanten Problem addieren.
+
====softwaremäßige Ansteuerung====
 
+
Die einfachste Art der Ansteuerung besteht darin, die 4 Gates mit 4 Ausgängen des Controllers zu steuern.
Da die Erwärmung - sofern sie relevant wird - leicht ohne Messinstrumente feststellbar ist, dürfte dieser Teil des Problems insofern handhabbar sein, als man leicht feststellen kann, ob das Problem relevant ist und das Problem auf die Transistoren beschränkt sind.
+
 
+
Bei Leerlauf-Schaltvorgängen im Abstand von 1/15 Sekunden habe ich keine Erwärmung der Transistoren feststellen können, es wurden auch keine zusätzlichen Kühlkörper verwendet.
+
 
+
----
+
Die Spannungsspitze am Messwiderstand kann abgeleitet werden:
+
Als weitere Vorsichtsmaßnahme habe ich den Messport des Controllers mit einem Widerstand und einer Z5.1 Diode abgesichert.
+
 
+
----
+
 
+
Die Störung der Versorgungsspannung lässt sich ohne Oszilloskop nicht messen. Insbesondere in umfangreicheren Schaltungen können Störungen an ganz anderen Stellen (z.B. bei Sensoren) auftreten, die man dann nicht gleich mit der Motorsteuerung in Verbindung bringt.
+
 
+
Um die Störung vom Controller fernzuhalten habe ich dem Spannungswandler vorsichtshalber eine kleine Schottky-Diode (SB140) vorgeschaltet, um ein Entladen des Stützkondensators zu verhindern.
+
 
+
=====softwaremäßige Ansteuerung=====
+
Die einfachste Art der Ansteuerung besteht darin, die Schalter der 4 Gates mit 4 Ausgängen des Controllers zu verbinden.
+
  
 
Die korrekte Ansteuerung muss dann durch die Software garantiert werden.  
 
Die korrekte Ansteuerung muss dann durch die Software garantiert werden.  
 
 
Eine Fehlschaltung der Software z.B. bei einem Absturz kann allerdings zur Zerstörung der Schaltung führen, die Schaltung sollte also in jedem Fall eine Sicherung haben.
 
Eine Fehlschaltung der Software z.B. bei einem Absturz kann allerdings zur Zerstörung der Schaltung führen, die Schaltung sollte also in jedem Fall eine Sicherung haben.
  
=====Einfache Ansteuerung=====
+
====Einfache, gemeinsame Ansteuerung ====
Etwas sicherer ist es, die Schaltung so aufzubauen, dass ein Kurzschluss nicht dauerhaft geschaltet werden kann.
+
Bei passender Spannung, können die Gates einer Seite jeweils gemeinsam geschaltet werden. Bei einer Gate-Spannung von 0V sperrt der N-[[MOSFET]] (U<sub>GS</sub>=0V), der P-[[MOSFET]] leitet bei dieser Gate-Spannung, da hier U<sub>GS</sub>=-UB ist.  
  
Hierzu habe ich die Schaltung so aufgebaut, dass die Gates einer Seite jeweils gemeinsam geschaltet werden.
+
Bei einer Gate-Spannung von UB verhält es sich genau umgekehrt: Der N-[[MOSFET]] leitet (U<sub>GS</sub>=UB) und der P-[[MOSFET]] sperrt (U<sub>GS</sub>=0V)
  
Bei einer Gate-Spannung von 0V sperrt der N-MOSFET (U<sub>GS</sub>=0V), der P-MOSFET leitet bei dieser Gate-Spannung, da hier U<sub>GS</sub>=-UB ist.  
+
Diese einfache Ansteuerung benötigt nur 2 Port-Pins, hat jedoch den Nachteil, dass während des Umschaltens die oben beschriebenen temporären Querströme auftreten können und deshalb eher schnell geschaltet werden sollte. Die Ansteuerung mit nur einem Transistor ist hier also nicht angebracht. Je höher die Spannung, desto schlimmer wird das Problem beim Umschalten. Ohne extra Verzögerungen sind damit nur Spannungen bis ca. 8 V möglich.  
  
Bei einer Gate-Spannung von UB verhält es sich genau umgekehrt: Der N-MOSFET leitet (U<sub>GS</sub>=UB) und der P-MOSFET sperrt (U<sub>GS</sub>=0V)
+
Mit einer Parallelschaltung aus einem Widerstand und einer Diode vor den Gates, kann man erreichen, dass die Transistoren schneller auf sperrend als auf leitend schalten. Beim N-FET zeigt die Anode zum FET, beim P-FET die Kathode.
 +
Damit sind dann auch etwas höhere Spannungen möglich, aber spätestens bei ca. 20 V wird die maximale Gatespannung erreicht.
  
Diese einfache Ansteuerung benötigt lediglich zwei Transistorschalter und auch nur 2 Port-Pins, hat jedoch den Nachteil, dass die oben beschriebenen Querströme auftreten.
+
Eine mögliche Ausführung für etwa 8-15 V, ist es ein Gate Treiber IC (z.B. ICL7667) zu nehmen, und durch Dioden und Widerstände zu den Gates für eine Verzögerung beim Einschalten zu sorgen.
=====Verbesserungsmöglichkeiten=====
+
 
Zur Lösung des Querstrom-Problems gibt es mehrere Ansatzmöglichkeiten, die ebenfalls mit zwei Controller-Ausgängen auskommen.
+
====Ansteuerung mit logischer Verknüpfung====
----
+
Der Zustand eines dauerhaften Querstroms sollte besser Hardwaremäßig vermieden werden. Zusätzlich kann die Logic die Zahl der IO Pins auf 2 oder 3 reduziert werden. Sinnvollerweise sollte dabei nur eine Leitung die PWM Steuerung übernehmen.
 
Mittels Logik-Bausteinen werden zwei Ausgänge des Controllers so umgesetzt, dass die folgenden Zustände geschaltet werden können:
 
Mittels Logik-Bausteinen werden zwei Ausgänge des Controllers so umgesetzt, dass die folgenden Zustände geschaltet werden können:
 
 
# Motor-Stop: untere Transistoren leitend, obere sperrend (oder umgekehrt)
 
# Motor-Stop: untere Transistoren leitend, obere sperrend (oder umgekehrt)
# Motor-Vorlauf: 1. Diagolale leitend
+
# Motor-Vorlauf: 1. Diagonale leitend
 
# Motor-Rücklauf: 2. Diagonale leitend
 
# Motor-Rücklauf: 2. Diagonale leitend
 
# Motor-Leerlauf: Alle Transistoren sperrend
 
# Motor-Leerlauf: Alle Transistoren sperrend
 +
Der Motor Stop Zustand ist dabei nicht unbedingt nötig. Wie die Logic genau aussieht hängt davon ab ob die Gate Treiber die Signale noch mal invertieren.
 +
In der wohl einfachsten Form, kann man die P MOSFETs über einfache Transistortreiber langsam steuern. Die PWM Steurung geht dann nur mit den N-FETs. Hier kann man Logic Level Typen nehmen, die man direkt von Logic Gattern (z.B. 74HC...) ansteuern kann, oder bei größeren FETs mit Gate Treibern.
  
Die Querstrom-Problematik kann hierbei softwaremäßig gelöst werden, indem beim Umschalten jeweils kurz der Leerlauf geschaltet wird, damit alle Transistoren sperren.
+
Die Querstrom-Problematik beim Schalten kann hierbei softwaremäßig gelöst werden, indem beim Umschalten jeweils kurz der Leerlauf geschaltet wird, damit alle Transistoren sperren. Damit auch Temporäre Querströme sicher vermieden werden können auch hier Verzögerungselemente sinnvoll sein.
----
+
 
Eine andere Möglichkeit besteht darin, das Umladen der Gate-Kapazität asymmetrisch zu gestalten, so dass die Transistoren schneller auf sperrend als auf leitend geschaltet werden. Eine einfache Möglichkeit ist die Parallelschaltung einer Diode und eines Widerstandes: In Sperr-Richtung fließt die Ladung langsamer als in die Durchlass-Richtung.
+
=====Heidingscher Encoder (Beispiel für Logic) =====
===Heidingscher Encoder===
+
Aufgrund der Kritik an der alten Schaltung(siehe '''Alte Schaltungsbeschreibung''') entschied ich mich einen neuen, einfachen sowie preisgünstigen Encoder zu entwickeln, den man mit der 74series aufbauen kann. Die [[Im RN-Wiki verwendete ICs|74series]] sind mit 20 mA Treiberstrom natürlich kaum zum direkten Treiben geeignet. Die Verzögerung müßte hier in die Treiber integriert sein.
Aufgrund der Kritik an der Schaltung entschied ich mich einen neuen, einfachen sowie preisgünstigen Encoder zu entwickeln, den man mit der 74series aufbauen kann. Als Treiber können sowohl Transistoren verwendet werden, dabei aber Vorwiderstände nicht vergessen! Die 74series sind mit 20mA Treiberstrom also natürlich nicht zum direkten Treiben geeignet.
+
Die Logikanzeigen in den Grafiken sollen je einen Transistor bzw. Mosfet darstellen.  
Die Logikanzeigen in den Grafiken sollen je einen Transistor bzw. Mosfet darstellen.
+
 
====PR Encoder===
+
=====PR Encoder=====
 
[[Bild:Prtreiber.png]]
 
[[Bild:Prtreiber.png]]
Der PR Encoder(PWM-Richtung Encoder) ist mit zwei NOR Gates sowie eines Inverters aufgebaut, d.h. man kann ihn mit nur einem IC(74HC(T)02) aufbauen. Will mein 2 Encoder verwenden, empfliehlt sich den Inverter auszulagern (74HC(T)04 oder 74HC(T)14 Sollte man keinen Schmitt-Trigger benötigen empfiehlt sich aus Schnelligkeitsgründen die 74HC(T)04 Variante).  
+
 
Alternativ ist es noch möglich sich den Inverter zu sparen, und die Ansteuerung für den P(WM) Kanal invertiert laufen zu lassen.
+
Der PR Encoder(PWM-Richtung Encoder) ist mit zwei NOR Gates sowie eines Inverters aufgebaut, d.h. man kann ihn mit nur einem [[Im RN-Wiki verwendete ICs|IC(74HC(T)02)]] aufbauen. Will mein 2 Encoder verwenden, empfiehlt sich den Inverter auszulagern [[Im RN-Wiki verwendete ICs|(74HC(T)04]] oder [[Im RN-Wiki verwendete ICs|74HC(T)14]]. Sollte man keinen Schmitt-Trigger benötigen empfiehlt sich aus Schnelligkeitsgründen die [[Im RN-Wiki verwendete ICs|74HC(T)04]] Variante).  
====PRK Encoder===
+
Alternativ ist es noch möglich sich den Inverter zu sparen, und die Ansteuerung für den P(WM) Kanal invertiert laufen zu lassen.
 +
 
 +
=====PRK Encoder=====
 
[[Bild:Prktreiber.png]]
 
[[Bild:Prktreiber.png]]
Der Prk-Encoder(PWM-Richtung-Kurzschluss-Treiber) ist eine Erweiterung des PR-Encoders. Er erlaubt es zusätzlich, die Motoren durch einen Kurzschluss zu stoppen.
+
 
Aufgebaut werden kann dieser aus 1 NOR und 1 Nand Gate. Dabei werden 3 Nand-Gates als Inverter beschaltet. (d.h. eine die Leitung die übrig bleibt auf Vcc).
+
Der Prk-Encoder([[PWM]]-Richtung-Kurzschluss-Encoder) ist eine Erweiterung des PR-Encoders. Er erlaubt es zusätzlich, die Motoren durch einen Kurzschluss zu stoppen.
 +
Aufgebaut werden kann dieser aus 1 NOR und 1 NAND Gate. Dabei werden 3 NAND-Gates als Inverter beschaltet (d.h. eine Leitung, die übrigen bleiben auf VCC).
 +
 
 
====Support====
 
====Support====
Fragen einfach in das Forum posten, oder mich anschreiben(User s.o.)
+
Fragen einfach in das Forum posten, oder mich anschreiben (User s.o.)
 +
 
 
===Alte Schaltungsbeschreibung===
 
===Alte Schaltungsbeschreibung===
 
{{FarbigerRahmen|
 
{{FarbigerRahmen|
Zeile 152: Zeile 166:
  
  
Anmerkung: Den 74HC26N gibts wohl nicht , nur die TTL-Version 74LS26, die HC-Mos-Version lautet 74HC03.
+
Anmerkung: Den 74HC26N gibts wohl nicht , nur die TTL-Version [[Im RN-Wiki verwendete ICs|74LS26]], die HC-Mos-Version lautet [[Im RN-Wiki verwendete ICs|74HC03]].
  
 
Eine sogenannte H-Brücke, die nur aus zwei MOSFETSs und einem Logik-IC besteht. Mit zwei Controllerports kann diese Schaltung sowohl Geschwindigkeit als auch Drehrichtung regeln. Für die Geschwindigkeit ist ein sogenannter [[PWM]]-Port notwendig. Also ein Port, der durch ein gepulstes Signal den Motor etlichemal innerhalb einer Sekunde ein- und ausschaltet und somit quasi die Leistung regelt (siehe [[PWM]]).
 
Eine sogenannte H-Brücke, die nur aus zwei MOSFETSs und einem Logik-IC besteht. Mit zwei Controllerports kann diese Schaltung sowohl Geschwindigkeit als auch Drehrichtung regeln. Für die Geschwindigkeit ist ein sogenannter [[PWM]]-Port notwendig. Also ein Port, der durch ein gepulstes Signal den Motor etlichemal innerhalb einer Sekunde ein- und ausschaltet und somit quasi die Leistung regelt (siehe [[PWM]]).
 
Die Schaltung ist so konstruiert, dass immer nur zwei Transistoren durchschalten. Auf diese Weise fließt einmal der Strom von links oben nach rechts unten und einmal von rechts oben nach links unten, der Motor wird also ähnlich wie bei der Relaisschaltung umgepolt.  
 
Die Schaltung ist so konstruiert, dass immer nur zwei Transistoren durchschalten. Auf diese Weise fließt einmal der Strom von links oben nach rechts unten und einmal von rechts oben nach links unten, der Motor wird also ähnlich wie bei der Relaisschaltung umgepolt.  
Bei niedriger [[PWM]]_Frequenz sollte die Schaltung durchaus für einige Ampere geeignet sein, wobei ca. 8 bis 13V ideal sein sollten.
+
Bei niedriger [[PWM]]_Frequenz sollte die Schaltung durchaus für einige Ampere geeignet sein, wobei ca. 8 bis 13 V ideal sein sollten.
  
Das Logic-IC wurde durch 3x BC547 Transitoren ersetzt.
+
Das Logic-IC wurde durch 3x [[Im RN-Wiki verwendete Transistoren|BC547]] Transitoren ersetzt.
  
  
[[Bild:Hbrückenmosfet BD547.PNG|center|900px]]
+
 
 +
[[Bild:Hbrueckenmosfet_BD547.PNG]]
  
 
====Kritik an der Schaltung====
 
====Kritik an der Schaltung====
  
Diese Schaltung wird im Forum von mehreren Leuten, u.A. Ratber, shaun, massiv kritisiert, z.B. hier: http://www.roboternetz.de/phpBB2/viewtopic.php?t=33067&sid=892e80c6cd2d003292e607bcd7a7123a .
+
Diese Schaltung wird [http://www.roboternetz.de/phpBB2/viewtopic.php?t=33067&sid=892e80c6cd2d003292e607bcd7a7123aim hier Forum von mehreren Leuten, u.A. Ratber, shaun, massiv kritisiert].
  
 
Ich habe leider nicht das Wissen eine bessere Lösung zu liefern. Das Problem sind die Querströme: Im Umschaltmoment sind highside und lowside switch für kurze Zeit beide leitend. Das entspricht einem Kurzschluss der Versorgungsleitung bei jedem Umschalten mit allen damit verbundenen Problemen (Erwärmung, Schwingung, Sicherungen, Reset). Aus diesem Grund sind NAND-Gatter nicht geeignet!
 
Ich habe leider nicht das Wissen eine bessere Lösung zu liefern. Das Problem sind die Querströme: Im Umschaltmoment sind highside und lowside switch für kurze Zeit beide leitend. Das entspricht einem Kurzschluss der Versorgungsleitung bei jedem Umschalten mit allen damit verbundenen Problemen (Erwärmung, Schwingung, Sicherungen, Reset). Aus diesem Grund sind NAND-Gatter nicht geeignet!
  
 
Zum Umschalten muss man
 
Zum Umschalten muss man
*den bisher leitenden Mosfet ausschalten,
+
*den bisher leitenden [[MOSFET]] ausschalten,
 
*dann etwas warten,
 
*dann etwas warten,
*und schließlich den nächsten Mosfet schließen.
+
*und dann den nächsten [[MOSFET]] schließen.
  
 
Dies kann man erreichen, indem man den Einschaltmoment  
 
Dies kann man erreichen, indem man den Einschaltmoment  
Zeile 180: Zeile 195:
  
  
Am sinnvollsten sind integrierte Mosfet-Treiber. Diese haben oft eine einstellbare Tot-Zeit (''Dead-Time''), können hohe Leistungen zum Umladen der Gatekapazität liefern und beachten andere Effekte wie ''Propagation-Time'', Veränderung des Source Potentials beim Highside-switch, etc.
+
Am sinnvollsten sind integrierte [[MOSFET]]-Treiber. Diese haben oft eine einstellbare Tot-Zeit (''Dead-Time''), können hohe Leistungen zum Umladen der Gatekapazität liefern und beachten andere Effekte wie ''Propagation-Time'', Veränderung des Source Potentials beim Highside-switch, etc.
  
 
'''Erklärung von shaun:'''
 
'''Erklärung von shaun:'''
  
die gezeigte Schaltung taugt auch nur als Prinzipschaltung bedingt, da man einen variierenden Aufwand in eine sichere Verriegelung investieren müsste. Bei fixer und nicht zu hoher Betriebsspannung könnte man mit RD-Kombinationen in den Gateleitungen das Ausschalten beschleunigen und das Einschalten verzögern, so dass die Querleitung wegfällt. Allerdings bewirkt diese simple R-Cg-Verzögerung größere Schaltverluste.  
+
Die gezeigte Schaltung taugt auch nur als Prinzipschaltung bedingt, da man einen variierenden Aufwand in eine sichere Verriegelung investieren müsste. Bei fixer und nicht zu hoher Betriebsspannung könnte man mit RD-Kombinationen in den Gateleitungen das Ausschalten beschleunigen und das Einschalten verzögern, so dass die Querleitung wegfällt. Allerdings bewirkt diese simple R-Cg-Verzögerung größere Schaltverluste.  
  
Setzt man die Vezögerung vor dedizierte Treiber, müssen diese wiederum leistungsfähig genug zum Umladen der Gates sein und bis an die Versorgung heranreichen, weshalb man an diesem Punkt überlegen sollte, ob 95% duty cycle nicht auch reichen würden ''(Anmerkung: Bezug auf bootstrapping?)'' und man integrierte Treiber für reine N-Kanal-Bestückung einsetzen sollte - spart dann wieder etwas Verluste am Highside-Switch, weil N-Kanäler gleicher Generation und Leistungsklasse einen niedrigeren Rds(on) als ihre P-Pendants haben.
+
Setzt man die Verzögerung vor dedizierte Treiber, müssen diese wiederum leistungsfähig genug zum Umladen der Gates sein und bis an die Versorgung heranreichen, weshalb man an diesem Punkt überlegen sollte, ob 95% duty cycle nicht auch reichen würden ''(Anmerkung: Bezug auf bootstrapping?)'' und man integrierte Treiber für reine N-Kanal-Bestückung einsetzen sollte - spart dann wieder etwas Verluste am Highside-Switch, weil N-Kanäler gleicher Generation und Leistungsklasse einen niedrigeren Rds(on) als ihre P-Pendants haben.
  
 
{{Ausbauwunsch|Eine vernünftige diskrete Ansteuerung für eine H-Brücke.
 
{{Ausbauwunsch|Eine vernünftige diskrete Ansteuerung für eine H-Brücke.
Korrektur auf Rechtschreibfehler, Zeichensetzung, Schreibstil, Fachausdrücke. Gibt's denn keinen der etwas verbessern möchte?}}
+
Korrektur auf Rechtschreibfehler, Zeichensetzung, Schreibstil, Fachausdrücke. Gibt's denn keinen, der etwas verbessern möchte?}}
 +
 
 
==Ansteuerung mit einem LeistungsOPV==
 
==Ansteuerung mit einem LeistungsOPV==
Die wohl preislich und platztechnisch günstigste Alternative zur Ansteuerung von Motoren in H-Brücken ist die Verwendung von (Leistungs-)Operationsverstärkern.  
+
Die wohl preislich und platztechnisch günstigste Alternative zur Ansteuerung von Motoren in H-Brücken ist die Verwendung von (Leistungs-)Operationsverstärkern oder Audioverstärker ICs.  
 +
 
 
===Heidingscher Motortreiber===  
 
===Heidingscher Motortreiber===  
Bei dem Heidingschen Motortreiber wird jeder Anschluss des Motors mit einem Ausgang des Operationsverstärker verbunden, die Eingänge des OPVs selbst als Komparator. Diese Methode ist für kleine und mittlere Motoren(=< 1A) und mäßige PWM-Frequenzen(<10kHz) gut geeignet. Ein RB35 von Conrad kann damit problemlos angesteuert werden. Bei zu hohen PWM-Frequenzen ist die SlewRate von vielen OPVs zu gering und die entsprechenden OPVs sind dann viel zu teuer und man sollte eine Ansteuerung per Mosfet(s.o.) bevorzugen. Momentan hat sich der TCA 0372 DP1 (57ct bei Reichelt) Verwendung gefunden.  
+
Bei dem Heidingschen Motortreiber wird jeder Anschluss des Motors mit einem Ausgang des Operationsverstärker verbunden, die Eingänge des OPVs selbst als Komparator. Diese Methode ist für kleine und mittlere Motoren(=< 1A) und mäßige PWM-Frequenzen(<10kHz) gut geeignet. Ein RB35 von Conrad kann damit problemlos angesteuert werden. Bei zu hohen [[PWM]]-Frequenzen ist die SlewRate von vielen OPVs zu gering und die entsprechenden OPVs sind dann viel zu teuer und man sollte eine Ansteuerung per [[MOSFET]] (s.o.) bevorzugen. Momentan hat sich der [[Im RN-Wiki verwendete ICs|TCA 0372 DP1]] (0,57€ bei Reichelt) Verwendung gefunden.  
Weitere Informationen sind in folgendem Forumsbeitrag zu finden:
+
Weitere Informationen sind in [http://www.roboternetz.de/phpBB2/viewtopic.php?t=38412 diesem Forumsbeitrag] zu finden.
http://www.roboternetz.de/phpBB2/viewtopic.php?t=38412
+
 
 
===Gleichstromansteuerung===
 
===Gleichstromansteuerung===
Eine weitere Möglichkeit ist es, dem Operationsverstärker eine Gleichspannung vorzugeben, mit denen der OPV die Motoren ansteuert. Diese Methode eignet sich sehr gut für analoge Schaltkreise. Der Wirkungsgrad ist allerdings nicht der beste, da die restliche Spannung in Wärme umgesetzt wird. Zudem werden viele weitere komponenten benötigt, dass den Aufbau treuerer und fehleranfälliger macht.
+
Eine weitere Möglichkeit ist es, dem Operationsverstärker eine Gleichspannung vorzugeben, mit denen der OPV die Motoren ansteuert. Diese Methode eignet sich sehr gut für analoge Schaltkreise. Der Wirkungsgrad ist allerdings nicht der beste, da die restliche Spannung in Wärme umgesetzt wird. Zudem werden viele weitere Komponenten benötigt, was den Aufbau teurer und fehleranfälliger macht.
Der entsprechenden Schaltkreis ist im Datenblatt des TCA 0372 DP1 zu finden.
+
Der entsprechende Schaltkreis ist im Datenblatt des TCA 0372 DP1 zu finden.
  
==Ansteuerung mit Treiber IC L293 D==
+
==Ansteuerung mit Treiber ICs ==
 +
===Ansteuerung mit Treiber IC L293 D===
 +
Ein häufig eingesetztes Motortreiber-IC '''für kleine Roboter''' ist der L293D. Da dieses IC zwei H-Brücken enthält, können so pro IC zwei Motoren angesteuert werden. Der im Datenblatt angegebene Maximalstrom beträgt pro Kanal 600 mA. Die Beschaltung des Treibers gestaltet sich recht einfach. Da bereits Freilaufdioden und die nötige Logik im Treiber enthalten sind, werden lediglich Elkos und Kondensatoren an der Versorgungsspannung benötigt.
 +
 
 +
Die Verluste des Treibers dürfen aber nicht außer Acht gelassen werden: Einerseits liegt der Ruhestrom in der Größenordnung 40 mA, andererseits muss durch die Verluste an den Treibertransistoren mit '''über 3 Watt Abwärme (bei 600 mA auf beiden Brücken)''' gerechnet werden! Bei geringen Ausgangsströmen sind die Verluste entsprechend kleiner. Deshalb ist dieser Treiber '''nur für kleine Motoren mit geringen Strömen empfohlen'''. In dieser Treiber-Übersicht ist der L293D der schwächste Kandidat. Den Treiberbaustein gibt es auch in SMD und heißt dann L293DD.
  
Dies ist ohne Zweifel die am häufigsten genutzte Ansteuerung bei Roboter-Bastlern: Man nimmt einfach das IC L293D, denn darin sind sogar zwei H-Brücken enthalten. Also mit einem IC lassen sich ohne weiteres externe Bauteile gleich zwei Motoren ansteuern. Zwar nur bis ca. 600mA, aber das reicht oft schon für kleinere bis mittlere Roboteranwendungen aus.
 
  
 
[[Bild:L293Pinout.JPG|center]]
 
[[Bild:L293Pinout.JPG|center]]
Zeile 209: Zeile 229:
 
[[Bild:hbrueckel293d.gif|center]]
 
[[Bild:hbrueckel293d.gif|center]]
  
Wie aus dem Schaltbild zu ersehen ist, werden für die Ansteuerung jedes Motors 3 Ports benötigt. Die Enable-Leitung führt man oft auf einen PWM-Port welcher wie bei der MOS-FET Schaltung oben die Geschwindigkeit regelt. Die beiden anderen Ports geben die Drehrichtung an. Immer wenn die Ports unterschiedliche Polarität haben dreht der Motor in eine bestimmte Richtung, je nachdem wo Low und High anliegt. Das Besondere ist, dass wenn an beiden Ports der gleiche Pegel anliegt, also zweimal Low oder High, dann wird nämlich der Motor kurzgeschlossen - das fungiert als Bremse. Das Bremsen kann bei Robotern durchaus nützlich sein. Zudem ist bei schnellen Richtungswechseln immer zu empfehlen zuerst kurz zu bremsen, um nicht den Motor oder Motortreiber zu stark zu belasten.
+
Hinweise zum Schaltplan:
 +
 
 +
Zur Stabilisierung der Versorgungsspannung sollten noch '''Elkos''' (z.B. 100µF) eingebaut werden, dies ist im Schaltplan nicht eingezeichnet! (Vergleiche z.B. mit Schaltplan vom L293B, weiter unten). Außerdem müssen unbedingt alle vier GND-Anschlüsse mit Masse verbunden werden!
 +
 
 +
Wie aus dem Schaltbild zu ersehen ist, werden für die Ansteuerung jedes Motors 3 Ports benötigt. Die Enable-Leitung führt man oft auf einen [[PWM]]-Port welcher, wie bei der [[MOS-FET]] Schaltung oben, die Geschwindigkeit regelt. Die beiden anderen Ports geben die Drehrichtung an. Immer wenn die Ports unterschiedliche Polarität haben dreht der Motor in eine bestimmte Richtung, je nachdem wo Low und High anliegt. Das Besondere ist, dass wenn an beiden Ports der gleiche Pegel anliegt, also zweimal Low oder High, dann wird nämlich der Motor kurzgeschlossen, das dann als Bremse fungiert. Das Bremsen kann bei Robotern durchaus nützlich sein. Zudem ist bei schnellen Richtungswechseln immer zu empfehlen zuerst kurz zu bremsen, um nicht den Motor oder Motortreiber zu stark zu belasten.
 +
 
 +
Wahrheitstabelle (hier exemplarisch für 1 und 2; bei 3 und 4 entsprechend):
 +
{| {{Blauetabelle}}
 +
|-
 +
| Eingang "1A" || Eingang "2A" || "1,2EN" || Ausgang "1Y" || Ausgang "2Y" || entspricht
 +
|-
 +
| 0V || 0V || 5V || - || - || Motor kurzschließen (Bremsen)
 +
|-
 +
| 0V || 5V || 5V || - || + || Motor dreht vorwärts
 +
|-
 +
| 5V || 0V || 5V || + || - || Motor dreht rückwärts
 +
|-
 +
| 5V || 5V || 5V || + || + || Motor kurzschließen (Bremsen)
 +
|-
 +
| egal || egal || 0V || hochohmig || hochohmig || Motor aus (Verbindung trennen, nicht kurzschließen)
 +
|}
 +
 
 +
 
 +
Bei Belastung des Ausgangs steht nicht mehr die volle Betriebsspannung am Ausgang zur Verfügung.
 +
 
 +
Der angegebene Maximalstrom von 600mA pro H-Brücke ist mit Vorsicht zu genießen, da oft die Verlustleistung des Treibers außer Acht gelassen wird. Bei der Entnahme des Nennstroms (600mA) entwickelt das IC eine Verlustleistung von etwa 3,3 Watt ! (Woher kommt der Zahlenwert? Verluste an Transistoren: 1,2V lowside + 1,4V highside = 2,6V total drop bei 0,6A ergeben 1,56 W Verlust an einer Brücke, also 3,12 W an beiden Brücken. Dazu kommt mindestens ein Ruhestrom von 40mA an 5V, also 0,2W, macht 3,32 W). Das IC kann sich dabei so stark erwärmen, dass es zerstört wird.
 +
 
 +
Um die Abwärme besser abzuführen, können mit Kühlkörper aufgeklebt werden und ein Platinenlayout mit großer Massefläche verwendet werden. Durch PWM-Betrieb kann die durchschnittliche Stromaufnahme verrigert werden, dann sinkt aber auch die Motorleistung. Selten erfolgt auch eine Huckepack-Montage von mehreren identischen ICs zur Verteilung der Abwärme. Auch auf kurzes Abbremsen des Motors vor einem Richtungswechsel soll noch einmal hingewiesen werden. Besser ist es jedoch, einen leistungsfähigeren Treiber einzusetzen.
 +
 
 +
===Ansteuerung mit Treiber IC L293 B===
 +
Der L293B ist dem L293D sehr ähnlich, da er die selbe Pinbelegung besitzt und auch von der Ansteuerung genau identisch ist. Im Gegensatz zum L293D kann er aber 67% mehr Strom (d.h. 1A) am Ausgang liefern, benötigt aber zusätzlich noch 4 Freilaufdioden pro Motor. Der Preisunterschied zum L293D ist minimal, sodass man sich den Einbau des etwas stärkeren L293B überlegen kann.
 +
[[Bild:L293B_Pins.png|center]]
 +
 
 +
Es soll noch eine typische Anwendungsschaltung für den L293B gezeigt werden (Auf das Bild klicken für höhere Auflösung):
 +
 
 +
[[Bild:L293B_Schaltplan.png|550px|center]]
 +
 
 +
Als Dioden schlägt das Datenblatt die Verwendung von 1N4001 vor. (Dioden in oben gezeigter Anordnung kommen so auch in Brückengleichrichtern vor.) Bei einem PWM Signal, wo der Strom nicht auf Null zurück geht, sind langsame Dioden aber problematisch, besser geeignet sind schnelle oder Schottkydioden (z.B. BYV27, 1N5819).
 +
 
 +
Die Verlustleistung des ICs bei einem Ausgangsstrom von 1A (Nennstrom) beträgt ca. 3 Watt! Hierfür ist schon eine Kühlung erforderlich (Kühlkörper, Platinenlayout mit Kühlflächen, ggf. Lüfter).
 +
 
 +
Wahrheitstabelle: siehe L293D
 +
 
 +
Ein ähnliches IC ist das SN754410, welches allerdings schwer erhältlich ist.
  
==Ansteuerung mit dem Schaltkreis L298==
+
===Ansteuerung mit dem Schaltkreis L298===
  
Der Schaltkreis L298 ist quasi der große Bruder des L293D. Er beinhaltet auch zwei komplette H-Brücken, kann also auch zwei Motoren ansteuern. Die Pinbelegung ist ebenfalls dem L293D sehr ähnlich, jedoch verfügt er über eine andere Bauform:
+
Der Schaltkreis [[Im RN-Wiki verwendete ICs|L298]] ist quasi der große Bruder des [[Im RN-Wiki verwendete ICs|L293D]]. Er beinhaltet auch zwei komplette H-Brücken, kann also auch zwei Motoren ansteuern. Die Pinbelegung ist ebenfalls dem [[Im RN-Wiki verwendete ICs|L293D]] sehr ähnlich, jedoch verfügt er über eine andere Bauform ("MULTIWATT-15"):
  
  
 
[[Bild:L298Pinout.JPG|center]]
 
[[Bild:L298Pinout.JPG|center]]
 +
Hinweis: Der L298 ist auch in einer SMD-Ausführung erhältlich.
  
 +
Der wichtigste Unterschied besteht jedoch darin, dass jede H-Brücke bei [[Im RN-Wiki verwendete ICs|L298]] bis zu 2 A belastet werden kann. Damit lassen sich also schon wesentlich größere Motoren ansteuern. Ein weiterer Vorzug sind die sogenannten SENSE-Ausgänge, über die der komplette Strom fließt. Oft wird hier ein Hochlastwiderstand  angeschlossen, um aus der abfallenden Spannung den Strom berechnen zu können. Dies machen sich Steuerungen wie [http://www.roboternetz.de/phpBB2/viewtopic.php?t=2741 RN-Motor] oder aber andere Schrittmotoransteuerungen zunutze, um den Strom zu regeln. Benötigt man keine Strommessung, so müssen die Sense-Ausgänge direkt mit GND verbunden werden. Anders als beim [[Im RN-Wiki verwendete ICs|L293D]] werden hier externe Freilaufdioden gebraucht.
  
Der wichtigste Unterschied besteht jedoch darin, dass jede H-Brücke bei L298 bis zu 2A belastet werden kann. Damit lassen sich also schon wesentlich größere Motoren ansteuern. Ein weiterer Vorzug sind die sogenannten SENSE-Ausgänge, über die der komplette Strom fließt. Oft wird hier ein Hochlastwiderstand  angeschlossen, um aus der abfallenden Spannung den genauen Strom berechnen zu können. Dies machen sich Steuerungen wie [http://www.roboternetz.de/phpBB2/viewtopic.php?t=2741 RN-Motor] oder aber andere Schrittmotoransteuerungen zunutze, um den Strom genau zu regeln. Benötigt man keine Strommessung, so müssen die Sense-Ausgänge immer direkt mit GND verbunden werden. In diesem Fall muss allerdings eine andere Strombegrenzung eingeplant werden. Wird keine Strombegrenzung eingebaut, müssen diese Widerstände trotztem eingebaut werden, da der Treiber sonst heiss wird.
+
Bei der angegebenden Stromstärke von 2A ist allerdings auf eine ausreichende Wärmeabfuhr durch Kühlkörper zu achten. Laut Datenblatt kann bei einem Strom von 2A in einer Brücke eine Spannung von bis zu 4,9V abfallen. Die Verlustleistung beträgt dann 9,8W ''pro Brücke''.
 +
Geringere Verluste haben im Allgemeinen Motortreiber, welche aus MOSFETs aufgebaut sind, da sie niederohmiger sind.
 +
Leider lässt sich dieser Motortreiber bei Defekt aufgrund seiner Bauform nur schwer auswechseln.
  
  
 
[[Bild:hbrueckel298.gif|center]]
 
[[Bild:hbrueckel298.gif|center]]
  
 +
 +
Hinweis: Im Schaltplan fehlen Kondensatoren und Elkos. Es sollte noch ein Keramikkondensator 100nF zwischen +5V und GND, sowie noch ein 100nF Keramikkondensator und parallel dazu ein Elko mit ausreichender Kapazität zwischen Betriebsspannung und GND eingebaut werden.
  
 
Ein weiteres Schaltbild gibt es hier [http://www.roboternetz.de/bilder/schaltung298getriebe.gif]
 
Ein weiteres Schaltbild gibt es hier [http://www.roboternetz.de/bilder/schaltung298getriebe.gif]
  
==Ansteuerung mit L6205==
+
===Ansteuerung mit L620x===
Der Schaltkreis L6205 stellt eine etwas modernere Alternative zur L298 Ansteuerung dar. Die Ansteuerung ist praktisch identisch, der Schaltungsaufbau in etwa gleich. Beim L6205 sind keine Freilaufdioden mehr notwendig, dafür ist ein Kondensator und zwei Dioden für die interne Spannungserzeugung notwendig.
+
Der Schaltkreis [[Im RN-Wiki verwendete ICs|L620x]] stellt eine etwas modernere Alternative zur L298-Ansteuerung dar. Die Ansteuerung ist praktisch identisch, der Schaltungsaufbau in etwa gleich. Beim L620x sind keine externen Freilaufdioden mehr notwendig, dafür ist ein Kondensator und zwei Dioden für die interne Spannungserzeugung notwendig.
Ein großer Vorteil  ist auch das kein extra Kühlkörper mehr notwendig ist. Viele integrierte Schutzfunktionen im L6205 sorgen dafür das der Chip nicht so einfach zerstört werden kann. In der Praxis sind die angegeben 2,8A jedoch mit Vorsicht zu geniesen. Bei Testlayouts erwärmten sich die IC´s bereits bei 2A Dauerstrom (PWM) oft so stark das die automatische Temperaturabschaltung reagierte, somit wird man vermutlich ohne Kühlung oder großes Kühllayout auf er Platine auch nicht mehr als beim L298 erreichen.  
+
Ein großer Vorteil  ist auch, dass kein extra Kühlkörper mehr notwendig ist. Durch die Verwendung von niederohmigen FETs im L620x fällt am Motortreiber weniger Spannung ab und die Verlustleistung des Motortreiber-ICs wird dadurch deutlich geringer. Durch die erhältliche DIP-Bauform lassen sich diese Motortreiber bei Defekt auch schnell und einfach auswechseln. Viele integrierte Schutzfunktionen im L620x sorgen dafür, dass der Chip nicht so einfach zerstört werden kann.
  
[[Bild:l6205ic.gif]] [[Bild:l6205pinbelegung.gif]]
+
In der Praxis sind die angegeben 2,8 A (für den L6205) jedoch mit Vorsicht zu genießen. Bei Testlayouts erwärmten sich die ICs bereits bei 2 A Dauerstrom (PWM) oft so stark, dass die automatische Temperaturabschaltung reagierte, somit wird man vermutlich ohne Kühlung oder großes Kühllayout auf der Platine auch nicht mehr als beim [[Im RN-Wiki verwendete ICs|L298]] erreichen.
  
 +
====L6202 für 1 Motor====
 +
 +
Pinbelegung des Motortreibers:
 +
 +
[[Bild:L6202Pinbelegung.png]]
 +
 +
Den L6202 gibt es auch noch in anderen Gehäusebauformen: L6201 ist die SMD-Ausführung (SO20 / PowerSO20), L6203 hat ein "Multiwatt-11"-Gehäuse.
 +
 +
Schaltungsbeispiel:
 +
 +
[[Bild:L6202Anwendung.png|800px]]
 +
 +
Kurze Erläuterung:
 +
 +
R1 schaltet die H-Brücke bei fehlendem PWM-Signal ab und ist entbehrlich. Anmerkung: dieser Widerstand sollte scheinbar doch etwas hochohmiger gewählt werden, in der Größenordnung 50kOhm, um das PWM-Signal nicht zu stark zu belasten. (Details folgen u.U. noch)
 +
 +
C1 stabilisiert eine interne Spannungsreferenz.
 +
 +
C4 und C5 sind so genannte boostrap-Kondensatoren, die unbedingt notwendig sind, damit der Motortreiber seine oberen FETs treiben kann (nähere Details im Datenblatt). Die Kapazität von C4/C5 soll für einen sicheren Betrieb jeweils mindestens 10nF betragen.
 +
 +
R2 und C6 bilden ein sog. Snubber-Netzwerk, welches zur Entstörung dient.
 +
 +
====L6205 für 2 Motoren====
 +
[[Bild:l6205ic.gif]] [[Bild:l6205pinbelegung.gif]]
  
 
[[Bild:l6205.gif|center]]
 
[[Bild:l6205.gif|center]]
  
==Noch mehr Power gewünscht?==
+
=== TLE4202B / B57928 ===
 +
Der TLE4202B ist ein kompakter Motortreiber von Siemens im TO-220-Gehäuse und kann einen Motor mit maximal 2A treiben. Er kann von 3,5V-17V Betriebsspannung arbeiten (absoutes Maximum: 40V). Intern ist der TLE4202B analog aufgebaut, er besteht aus Komparatoren mit einer Leistungsendstufe. Die notwendigen Freilaufdioden sind bereits integriert. Der Treiber ist kurzschlussfest gegen Masse und schaltet bei Überhitzung ab.
 +
Leider lässt sich aufgrund des internen Aufbaus der Motorausgang nicht hochohmig schalten, es mangelt auch - im Vergleich
 +
zu anderen Motortreiberbausteinen - an einem separaten PWM-Eingang. Der Betrieb mit PWM ist trotzdem möglich '''TODO!'''.
 +
Zur Verlustleistung und Abwärme des Treibers je nach Laststrom wurde eine Messreihe durchgeführt (siehe unten).
 +
Bezugsquelle für den TLE4202B ist vorzugsweise Pollin aufgrund des attraktiven Preises (50 Cent).
  
Obwohl der L298 schon einiges abdeckt, so kommt er spätestens bei den Scheibenwischermotoren langsam an seine Grenzen. Bei starker Belastung können solche Motoren kurzzeitig bis ca. 10 A und mehr ziehen. Für solch starke Motoren gibt es jetzt einen ganz interessanten Motorchip aus dem KFZ-Bereich: vnh3sp (Datenblatt im Roboternetz Download-Bereich).  
+
Pinbelegung des Motortreibers TLE4202B (TO-220-Gehäuse):
Mit ihm lassen sich sogar recht große Motoren ansteuern; vorausgesetzt, man kühlt ihn entsprechend, so verträgt der Chip bis zu 30A. Aber selbst ohne Kühlung bietet er bedeutet mehr Leistung als der L298. Das Schöne, die Ansteuerung ist kaum anders als beim L298 und L293D.
+
 
 +
[[Bild:TLE4202_Pins.png]]
 +
 
 +
Anwendungsschaltung laut Datenblatt (nachgezeichnet in Target):
 +
 
 +
[[Bild:TLE4202_Schematic.png]]
 +
 
 +
Die Kondensatoren (C2,C3) und Widerstände(R1,R2), die zwischen den Motoranschlüssen und Masse liegen, sind wichtig zur Schwingneigungsunterdrückung. Diese sog. Snubber-Netzwerke sind durchaus üblich, beispielsweise bei Audioverstärkern. Sie tragen hier zur Stabilität des Treibers bei. Ein Weglassen dieser Komponenten könnte zu wilden Schwingungen am Ausgang führen.
 +
 
 +
Die 1,7V-Referenz wird intern erzeugt und ist mit den invertierenden Eingängen der Komparatoren verbunden (über 50kOhm intern). Die Komparatoren vergleichen die Eingangssignale an IN1/IN2 mit dieser Spannungsreferenz und steuern dann den Ausgang auf High (wenn Eingangsspannung über Referenzspannung) oder auf Low (wenn Eingangsspannung unter der Referenzspannung).
 +
Im gezeigten Schaltplan wird die interne Referenz verwendet. Pin 2 wird dann nur mit einem Kondensator gegen Masse verbunden. Die Referenzspannung wird somit etwas stabilisiert.
 +
 
 +
Da die Referenz über 50kOhm intern an die invertierenden Eingänge geschaltet ist, könnte auch von außen an Pin 2 eine andere beliebige (niederohmige) Referenzspannungsquelle eingespeist werden.
 +
 
 +
Wahrheitstabelle der Ansteuerung:
 +
{| {{Blauetabelle}}
 +
|-
 +
| IN1 || IN2 || OUT1 || OUT2 || entspricht
 +
|-
 +
| L || L || - || - || Stop (Motor kurzschließen)
 +
|-
 +
| L || H || - || + || Motor dreht vorwärts
 +
|-
 +
| H || L || + || - || Motor dreht rückwärts
 +
|-
 +
| H || H || + || + || Stop (Motor kurzschließen)
 +
|}
 +
Wie man hier noch einmal sieht, kann bei dieser Brücke die Verbindung zum Motor nicht getrennt werden, Motor ausschalten bedeutet hier den Motor kurzschließen, sodass er dann relativ abrupt stehen bleibt.
 +
 
 +
Es existiert auch ein TLE4203, welcher bis zu 4 Ampere treiben kann.
 +
 
 +
==== Messreihe ====
 +
 
 +
Zur Bestimmung der Verlustleistung und der am Treiber TLE4202B abfallenden Spannung wurde vom RN-User BMS eine Messreihe durchgeführt. Die Beschaltung des Treibers erfolgte nach Datenblatt, als Betriebsspannung wurde 12V gewählt. Eingang 1 des Treibers wurde auf GND gelegt und Eingang 2 mit +12V verbunden. Als Last diente eine einstellbare elektronische Last. Die Messreihe wurde bei Raumtemperatur durchgeführt. Der Treiber wurde zunächst ohne Kühlkörper betrieben, um zu ermitteln, bis zu welchem Strom bzw. welcher Verlustleistung ein gefahrloser Betrieb noch ohne Kühlkörper möglich ist.
 +
 
 +
Bei verschiedenen Lastströmen im Bereich 0...2,5 A erfolgte die Messung der Ausgangsspannung des Treibers sowie dessen Temperatur. Für Lastströme größer 1 A wurde ein Kühlkörper verwendet, um den Treiber durch zu hohe Abwärme nicht zu gefährden. Die automatische Abschaltung bei Übertemperatur wurde dabei nicht herausgefordert. Da Temperaturwerte für die Fälle mit und ohne Kühlkörper nicht direkt vergleichbar sind, wurden für die höheren Ströme keine Temperaturen mehr gemessen, zumindest aber die abfallende Spannung am Treiber.
 +
 
 +
Die Ruhestromaufnahme des Treibers wurde mit 16mA gemessen, an 12V ergibt das eine Leistungsaufnahme von knapp 0,2 Watt. Möchte man die gesamte Verlustleistung des Treibers berechnen, müssen diese 0,2 Watt zu den Werten aus der Tabelle addiert werden.
 +
 
 +
{| {{Blauetabelle}}
 +
|-
 +
| Laststrom || Ausgangsspannung || Spannungsabfall am Treiber [*1] || Verlustleistung aufgrund Laststrom [*1] || Temperatur
 +
|-
 +
| 0,0 A || 11,3 V || 0,7 V ||  ||
 +
|-
 +
| 0,1 A || 11,0 V || 1,0 V || 0,10 W || 34 °C
 +
|-
 +
| 0,2 A || 10,9 V || 1,1 V || 0,22 W || 41 °C
 +
|-
 +
| 0,3 A || 10,8 V || 1,2 V || 0,36 W || 50 °C
 +
|-
 +
| 0,4 A || 10,7 V || 1,3 V || 0,52 W || 58 °C
 +
|-
 +
| 0,5 A || 10,6 V || 1,4 V || 0,70 W || 66 °C
 +
|-
 +
| 0,6 A || 10,4 V || 1,6 V || 0,96 W || 75 °C
 +
|-
 +
| 0,7 A || 10,3 V || 1,7 V || 1,19 W || 87 °C
 +
|-
 +
| 0,8 A || 10,2 V || 1,8 V || 1,44 W || 97 °C
 +
|-
 +
| 1,0 A || 10,1 V || 1,9 V || 1,90 W ||
 +
|-
 +
| 1,5 A || 9,5 V || 2,5 V || 3,75 W ||
 +
|-
 +
| 2,0 A || 8,9 V || 3,1 V || 6,20 W ||
 +
|-
 +
| 2,5 A [*2] || 8,0 V || 4,0 V || 10,00 W ||
 +
|-
 +
|}
 +
 
 +
[*1] : Diese Werte wurden berechnet.
 +
 
 +
[*2] : Der Treiber ist nur bis 2 A spezifiziert, konnte aber kurzzeitig auch 2,5 A liefern.
 +
 
 +
Kommentar:
 +
 
 +
* Allgemein gilt: Mit steigendem Laststrom steigt der Spannungsabfall am Treiber sowie auch dessen Verlustleistung.
 +
* Wie bei anderen Treibern auch ist der laut Datenblatt versprochene maximale Ausgangsstrom des Treibers (hier 2A) nur mit vernünftiger Kühlung erreichbar.
 +
* Nimmt man als ''gefahrlose'' Betriebstemperatur etwa 60 °C an ( um sich nicht die Finger daran zu verbrennen ;) ), kann man an den Messwerten ablesen, dass dann nur knapp ein halbes Ampere ''Dauerstrom'' möglich sind.
 +
* Für größere Ströme sollte unbedingt ein geeigneter Kühlkörper verwendet werden.
 +
 
 +
Warnung: Wird der Treiber bei höheren Dauerströmen dennoch ohne Kühlkörper und damit bei hohen Temperaturen betrieben, muss damit gerechnet werden, dass die Lebensdauer und Zuverlässigkeit des Treibers drastisch sinkt!
 +
 
 +
=== TLE5205 ===
 +
Der TLE5205 ist ein starker Motortreiber im TO-220-Gehäuse, welcher einen Motor bis 5A treiben kann. Freilaufdioden sind hier bereits integriert. Der Motortreiber kann falsche Verbindungen am Ausgang erkennen und zeigt dies durch ein Signal am Errorflag (EF) an. Kurzschlüsse der Ausgänge mit der Versorgung (V+ und GND) und eine zu hohe Stromaufnahme der Last können erkannt werden, der Ausgang wird dann innerhalb 50µS abgeschaltet und das EF gesetzt (open-drain-Ausgang!). Ein offener Ausgang wird ebenfalls detektiert. Bei Überhitzung (150°C) schaltet das IC ab. Achtung! Bei Unterspannung ("Under Voltage Lockout" im Datenblatt) schaltet sich die Brücke ebenfalls ab (bei etwa 5V). Die Betriebsspannung des ICs kann maximal 40V betragen, die Testschaltungen im Datenblatt werden im Bereich von 6-18V betrieben. Die Ruhestromaufnahme des ICs beträgt typisch 5mA (maximal 10mA).
 +
 
 +
[[Bild:TLE5205_Pins.png]]
 +
 
 +
Der TLE5205 ist nicht pinkompatibel zum TLE4202(B) !
 +
 
 +
Wie man sieht, kommt dieser Motortreiber mit sehr wenig Außenbeschaltung aus:
 +
 
 +
[[Bild:TLE5205_Schaltplan.png]]
 +
 
 +
Als Elko kann auch gerne ein Typ mit größerer Kapazität verwendet werden (im Datenblatt 4700µF in der Testschaltung). Es können auch mehrere Elkos mit kleiner Kapazität parallel geschaltet werden (günstiger ESR).
 +
 
 +
Im Fehlerfall (Kurzschluss, Überhitzung, Leerlauf) wird "ERROR" auf GND gelegt. Durch Ändern der Pegel an den Eingängen wird das EF wieder zurückgesetzt (liefert dann High, +5V). Der Pull-up-Widerstand ist notwendig, da der EF-Pin nur gegen GND schalten kann (open-drain-Ausgang).
 +
 
 +
Die Brücke verhält sich im Vergleich zu den anderen gezeigten Motortreibern etwas anders an ihren Eingängen:
 +
 
 +
Wahrheitstabelle (laut Datenblatt):
 +
{| {{Blauetabelle}}
 +
|-
 +
| IN1 || IN2 || OUT1 || OUT2 || entspricht
 +
|-
 +
| L || L || + || - || Motor dreht vorwärts
 +
|-
 +
| L || H || - || + || Motor dreht rückwärts
 +
|-
 +
| H || L || - || - || Motor stop (kurzschließen, OUT1+2 auf GND)
 +
|-
 +
| H || H || Z || Z || Motor ausschalten (Verbindung trennen)
 +
|}
 +
 
 +
Wahrheitstabelle (nach Fehlersuche mit zwei Bauteilen herausgefunden):
 +
{| {{Blauetabelle}}
 +
|-
 +
| IN1 || IN2 || OUT1 || OUT2 || entspricht
 +
|-
 +
| L || L || - || - || Motor stop (kurzschließen, OUT1+2 auf GND)
 +
|-
 +
| L || H || - || + || Motor dreht rückwärts
 +
|-
 +
| H || L || + || - || Motor dreht vorwärts
 +
|-
 +
| H || H || Z || Z || Motor ausschalten (Verbindung trennen)
 +
|}
 +
 
 +
Leider mangelt es bei dieser Brücke an einem separaten Eingang für PWM. Man könnte zunächst auf die Idee kommen, den Eingang IN1 mit PWM zu verbinden und IN2 als Richtungssignal zu nehmen. Das das allerdings nicht ganz wie erhofft klappt soll hier erklärt werden (ist nicht ganz einfach): Der Motor würde beim Vorwärtsfahren abwechselnd drehen und gebremst (kurzgeschlossen) werden, beim Rückwärtsfahren allerdings abwechselnd drehen und ausgeschaltet werden (nicht kurzgeschlossen). Das Verhalten des Motors je nach Richtung wäre dann unterschiedlich.
 +
 
 +
Abhilfe verschafft diese kleine Schaltung an den Eingängen des Motortreibers:
 +
 
 +
[[Bild:TLE5205_PWM.png]]
 +
 
 +
Ist PWM auf 5V, dann wird der Motor ausgeschaltet (Verbindung wird getrennt).
 +
 
 +
Ist PWM auf 0V, so gelten die angelegten Pegel zur Richtungsinformation.
 +
 
 +
Vorsicht! Bei den zuvor vorgestellten Motortreibern ist dieses Verhalten genau anders herum.
 +
 
 +
=== Weitere Treiber-ICs ===
 +
Es gibt noch mehr ähnliche Treiber ICs, die hier nur kurz aufgezählt werden sollten. Für Details sollte man ohnehin ins Datenblatt schauen.
 +
*L293E ähnlich dem L293B, mit Strommessung
 +
*BTS7741G  max. 7A , nur eine Brücke, SMD
 +
*MC33887 max. 5A, nur eine Brücke, SMD
 +
*BA6209 1,6A pk (max. continuous output current nicht angegeben), max.18V, nur eine Brücke, SIP10-Gehäuse
 +
*TA7267 1A (3A pk), 6-18V, eine Brücke, HSIP7-Gehäuse
 +
*TB6568KQ 1,5A (3A pk), 10-45V, eine Brücke, HSIP7-Gehäuse
 +
 
 +
== Grundsätzliche Hinweise zum Aufbau ==
 +
* Die '''Spannungsversorgung''' der Motortreiber sollte ausreichend '''gepuffert''' werden, um Spannungseinbrüche durch z.B. hohe Anlaufströme der Motoren zu vermeiden. Ein '''Elko''' mit einer Kapazität von 100µF...2200µF (je nach Stromaufnahme des Motors) sollte in der Versorgungsleitung vorgesehen werden. Typen mit geringem ESR sind von Vorteil; es können auch mehrere "normale" Elkos parallel geschaltet werden. Ein zusätzlicher 100nF Keramikkondensator filtert hochfrequente Störungen auf der Versorgungsleitung.
 +
* Die '''Verkabelung''' von der Versorgungsleitung zum Motortreiber und von dort bis hin zu den Motoren muss einen ausreichenden Querschnitt aufweisen; ein Verdrillen der Kabel verbessert dabei die EMV (elektromagnetische Verträglichkeit). Die Kabel der Motoren sollten nach Möglichkeit Abstand zu Sensorleitungen halten und möglichst nicht zu ihnen parallel liegen, um eine Verfälschung der Sensormesswerte durch Induktion zu unterbinden. Dies ist vor allem bei einer Steuerung der Motoren mit PWM und bei hochohmigen Sensorimpedanzen enorm wichtig. Die Motoren sollten grundsätzlich immer entstört werden (siehe unten). Ein Kondensator zwischen den Anschlüssen ist das Minimum.
 +
* Wird der Motortreiber mit PWM betrieben, sollte die '''Frequenz der PWM''' möglichst niedrig eingestellt werden. Dadurch werden Verluste beim Umschalten in der H-Brücke reduziert (v.a. bei MOSFETs).
 +
* '''Freilaufdioden''' müssen für die auftretenden Ströme ausgelegt und auch "schnell genug" sein. Sind in den Motortreiberbausteinen bereits Freilaufdioden ("free wheeling diodes") integriert, so müssen in der Regel keine zusätzlichen Dioden in die Schaltung eingebaut werden. Zusätzliche Freilaufdioden schaden allerdings auch nicht.
 +
* Ein Motortreiber kann seinen angegebenen '''Nennstrom''' in Realität meist nicht ohne '''Kühlung''' erreichen (kurzzeitig durchaus möglich, langfristig aber nicht). Der Motortreiber sollte lieber etwas überdimensioniert werden (in Bezug auf maximal lieferbaren Strom), um einerseits die Verluste zu reduzieren, andererseits aber auch die Möglichkeit zum zukünftigen Umbau und Betrieb des Roboters mit leistungsfähigeren Motoren zu gewährleisten.
 +
* Am Motor steht aufgrund der '''internen Verluste''' (z.B. RDS-ON-Widerstand bei MOSFETs) meist nicht mehr die volle Betriebsspannung zur Verfügung. Insbesondere bei niedrigen Versorgungsspannungen macht sich dies bemerkbar.
 +
* Vor allem wenn größere Ströme von den Motoren benötigt werden, sollte man auf ein möglichst '''sternförmiges Massekonzept''' (Verdrahtung) der Schaltung achten, notfalls muss Steuerung und Leistungsteil aus getrennten Spannungsquellen versorgt werden.
 +
* Die Motortreiber sollten '''auswechselbar''' sein, z.B. durch Verwendung einer IC-Fassung. Bei Defekt oder Überlastung kann der Motortreiber zügig und einfach ausgetauscht werden (besonders auf Roboter-Wettbewerben sinnvoll!). Nicht für alle Gehäusebauformen der Motortreiber sind Sockel verfügbar.
 +
* Bei einem Platinenlayout für Motortreiber sind '''breite Leiterbahnen und Kühlflächen''' (häufig große Masseflächen) sowie '''kurze Verbindungen''' vorteilhaft, um Spannungsabfälle auf den Leitungen zu reduzieren und Wärme abzuführen.
 +
 
 +
==Noch mehr Power gewünscht?==
 +
Obwohl der L298 schon einiges abdeckt, so kommt er spätestens bei den Scheibenwischermotoren langsam an seine Grenzen. Bei starker Belastung können solche Motoren kurzzeitig bis ca. 10 A und mehr ziehen. Für solch starke Motoren gibt es jetzt einen ganz interessanten Motorchip aus dem Kfz-Bereich: VNH3SP (Datenblatt u.a. im Roboternetz Download-Bereich).  
 +
Mit ihm lassen sich sogar recht große Motoren ansteuern; vorausgesetzt, man kühlt ihn entsprechend, so verträgt der Chip bis zu 30 A. Aber selbst ohne Kühlung bietet er bedeutet mehr Leistung als der L298. Das Schöne: die Ansteuerung ist kaum anders als beim L298 und L293D.
  
 
Kleiner Nachteil: Da es ein SMD-Chip mit 1mm Kontaktabstand ist, muss man schon eine geeignete Platine (spezielles Layout mit Kühlflächen) und etwas Löterfahrung besitzen. Inzwischen gibt es aber schon verschiedene RN-Projekte mit dem Chip (RN-Power, RN-Mini H-Bridge), Platinen und Chip können über den [http://www.shop.robotikhardware.de/shop/catalog/index.php Robotikhardware.de-Platinenservice] bezogen werden.  
 
Kleiner Nachteil: Da es ein SMD-Chip mit 1mm Kontaktabstand ist, muss man schon eine geeignete Platine (spezielles Layout mit Kühlflächen) und etwas Löterfahrung besitzen. Inzwischen gibt es aber schon verschiedene RN-Projekte mit dem Chip (RN-Power, RN-Mini H-Bridge), Platinen und Chip können über den [http://www.shop.robotikhardware.de/shop/catalog/index.php Robotikhardware.de-Platinenservice] bezogen werden.  
Zeile 247: Zeile 508:
  
  
Alternativ zum [[SMD]]-Chip VNH3SP30 gibt es noch die Alternative VNH2SP30. Dieser Chip erlaubt zwar nur Motorspannungen zwischen 6 und 16 Volt, jedoch hat er einen wesentlich geringeren Innenwiderstand und wird deshalb nur etwa halb so warm wie der VNH3SP30.  
+
Alternativ zum [[SMD]]-Chip VNH'''3'''SP30 gibt es noch die Alternative VNH'''2'''SP30.
 +
Dieser Chip erlaubt zwar nur Motorspannungen zwischen 6 und 16 Volt (Achtung: schaltet über 16V ab aufgrund Overvoltage Protection!), jedoch hat er einen wesentlich geringeren Innenwiderstand und wird deshalb nur etwa halb so warm wie der VNH3SP30.
 
Aus diesem Grund eignet er sich auch ideal für kleine Doppelmotorsteuerungen.
 
Aus diesem Grund eignet er sich auch ideal für kleine Doppelmotorsteuerungen.
 
Natürlich gibt's auch hierfür ein Projekt und eine Bauanleitung, siehe [[RN-VNH2Dualmotor]]
 
Natürlich gibt's auch hierfür ein Projekt und eine Bauanleitung, siehe [[RN-VNH2Dualmotor]]
  
Das Schöne ist, dass es dieses RN-Projekt jetzt auch auch als Fertigmodul gibt!
+
Das Schöne ist, dass es dieses RN-Projekt jetzt auch als Fertigmodul gibt!
  
  
 
[[Bild:rndualmotoransteuerung.jpeg|center]]
 
[[Bild:rndualmotoransteuerung.jpeg|center]]
 +
 +
==Vergleich der gezeigten Motortreiber(-bausteine)==
 +
 +
Bitte kontrollieren, korregieren und/oder ergänzen :)
 +
 +
{| {{Blauetabelle}}
 +
|-
 +
| Bezeichnung || Bauformen || Mot. || UB || Ausg.strom || Freilaufd. || Curr.Sens. || ca. Preis || REI || CON || CSD || POL || RHW
 +
|-
 +
| L293B || DIL-16 || 2 || 4.5V-36V || 1A || keine || nein || 1-2 € || X || . || . || . || .
 +
|-
 +
| L293D || DIL-16 || 2 ||4.5V-36V || 600mA || integriert || nein || 1-2 € || X || X || X || . || X
 +
|-
 +
| L293DD || SO-16 (SMD) || 2 ||4.5V-36V || 600mA || integriert || nein || 2-3 € || X || X || . || . || .
 +
|-
 +
| L293E || DIL-20 || 2 || 4.5V-36V || 1A || keine || ja || 2-3 € || X || X || X || . || .
 +
|-
 +
| L298 || Multiwatt-15, Pow.SO20 || 2 || 4,5V-50V || 2A || keine || ja || 2-4 € || X || X || X || X || X
 +
|-
 +
| L6201/PS || SO20/PowerSO20 || 1 || 12V-48V || 1A / 4A(!?) || integriert || ja || 5 € || X || . || . || . || .
 +
|-
 +
| L6202 || DIL-18 || 1 || 12V-48V || 1,5-2 A || integriert || ja || 3-4 € || X || . || X || . || .
 +
|-
 +
| L6203 || Multiwatt-11 || 1 || 12V-48V || 2A / (4A!?) || integriert || ja || 4 € || X || . || X || . || .
 +
|-
 +
| L6205 || DIL-20,(Power)SO-20 || 2 || 8V-52V || 2,8A || integriert || ja || 7 € || X || . || . || . || X
 +
|-
 +
| TLE4202 || TO220 || 1 || 3,5-17V|| 2A || integriert || nein || 0,50 € || . || . || . || X || .
 +
|-
 +
| TLE5205 || TO220, P-DSO-20 || 1 || 6V-40V || 5A || integriert || nein || (5 €) || . || . || . || . || .
 +
|-
 +
| BTS7741G || P-DSO-28-14 || 1 || 4,8V-42V || 7A || integriert || nein || 2 € || . || . || . || X || .
 +
|-
 +
| VNH2SP30 || MultiPowerSO-30 || 1 || 5,5V-16V [*1]|| 30A || integriert || ja || 10 € || . || . || . || . || X
 +
|-
 +
| VNH3SP30 || MultiPowerSO-30 || 1 || 5,5V-36V [*2]|| 30A || integriert || nein || 6-9 € || X || . || . || . || X
 +
|-
 +
| Bezeichnung || Bauformen || Mot. || UB || Ausg.strom || Freilaufd. || Curr.Sens. || ca. Preis || REI || CON || CSD || POL || RHW
 +
|}
 +
 +
Abkürzungen:
 +
 +
* Mot. = Wie viele Motoren können gesteuert werden
 +
* UB = Betriebsspannungsbereich
 +
* Ausg.strom = Ausgangsstrom
 +
* Freilaufd. = Freilaufdioden
 +
* Curr.Sens. = Current Sensing = Messung des Motorstroms
 +
 +
Verfügbarkeit bei Händlern:
 +
 +
* REI = reichelt.de
 +
* CON = conrad.de
 +
* CSD = csd-electronics.de
 +
* POL = pollin.de
 +
* RHW = robotikhardware.de
 +
 +
X bedeutet verfügbar, . bedeutet nicht verfügbar
 +
 +
Anmerkungen zu Motortreibern vom Typ VNH2SP30 und VNH3SP30:
 +
 +
* [*1]: schaltet bei typ. 19V (16V-22V) ab aufgrund Overvoltage Protection
 +
* [*2]: schaltet bei typ. 43V (>36V) ab aufgrund Overvoltage Protection
 +
 +
(keine Garantie auf Vollständigkeit und Richtigkeit der Angaben)
 +
 +
Stand: März 2012
  
 
==Endstufen mit I2C-Bus / RS232==
 
==Endstufen mit I2C-Bus / RS232==
[[Bild:motctrl.png|thumb|Motoransteuerung über RS232, I2C, RC]]Verwendet man eine der oben vorgestellten H-Bridges, so wird immer vorausgesetzt das ein PWM-Signal und mehrere Ports zur Ansteuerung bereitstehen. Ist dies nicht der Fall weil diese vielleicht schon belegt sind, so lassen sich Endstufen durch einen zusätzlichen Microcontroller auch um beliebige Schnittstellen erweitern. Insbesondere über I2C lassen sich dadurch mehrere Motorboards über einen einzigen Bus ansteuern. Ein Beispiel ist der programmierte Controller MOTCTRL, der speziell für diese Aufgabe gedacht ist. Die Grundscháltung sieht man in der rechten Skizze.
+
[[Bild:motctrl.png|thumb|Motoransteuerung über RS232, I2C, RC]]Verwendet man eine der oben vorgestellten H-Bridges, so wird immer vorausgesetzt, dass ein PWM-Signal und mehrere Ports zur Ansteuerung bereitstehen. Ist dies nicht der Fall, weil diese vielleicht schon belegt sind, so lassen sich Endstufen durch einen zusätzlichen Microcontroller auch um beliebige Schnittstellen erweitern. Insbesondere über I2C lassen sich dadurch mehrere Motorboards über einen einzigen Bus ansteuern. Ein Beispiel ist der programmierte Controller MOTCTRL, der speziell für diese Aufgabe gedacht ist. Die Grundschaltung sieht man in der rechten Skizze.
 +
 
 +
==Varianten der Ansteuerung==
 +
===Verwendung von Logikgattern===
 +
Pro Motor, der angesteuert werden soll, werden normalerweise je drei Pins benötigt: 1xPWM und 2xRichtung. Sollen viele Motoren gleichzeitig angesteuert werden, so werden auch viele Pins des Mikrocontrollers benötigt. Durch die Verwendung von NAND oder NOT-Gattern können Pins für die Richtungsinformation gespart werden:
 +
 
 +
[[Bild:Motortreiber_NAND_NOT.png|800px]]
 +
 
 +
Aufgabe der Gatter ist es, das Richtungsbit zu invertieren. So liegt an IN1 der gleiche Pegel wie an Richtung an, an IN2 der invertierte Pegel.
 +
Somit ist es möglich, mit nur einem Richtungsbit auszukommen. Es wird die Verwendung von 74HC00 (enthält 4x NAND) oder 74HC04 (enthält 6x NOT) - Logikgattern empfohlen. Selbstverständlich müssen die Logikgatter für den Betrieb auch mit der Versorgungsspannung (meist +5V) verbunden werden, üblicherweise wird die Versorgung auch mit einem 100nF Keramikkondensator in der Nähe des Gatters abgeblockt. (Nicht im Plan eingezeichnet!)
 +
 
 +
Vorteile dieser Variante:
 +
* 50% der Mikrocontrollerpins für die Richtungsinformation werden eingespart und können für andere Zwecke verwendet werden
 +
* Programmierung wird einfacher, da weniger Pins gesteuert werden müssen
 +
 
 +
Nachteile:
 +
* Es wird ein zusätzliches IC benötigt
 +
* kurze Laufzeitunterschiede der Signale an IN1 und IN2 (in der Regel vernachlässigbar)
 +
* Motor kann nicht kurzgeschlossen (also gebremst) werden, da hierzu gleiche Pegel an IN1 und IN2 notwendig wären; Ausschalten geschieht weiterhin über PWM
 +
 
 +
Inverter können auch aus Transistoren und Widerständen gebaut werden:
 +
 
 +
[[Bild:Inverter_npn_pnp.png|800px]]
 +
 
 +
===Verwendung von Portexpandern===
 +
Mit einem I2C-Portexpander wie z.B. PCF8574 oder mit einem Seriell-Parallel-Schieberegister 74HC595 könnten die Richtungsinformationen IN1, IN2 usw. geschaltet werden.
 +
 
 +
Vorteile:
 +
* Einsparung der Mikrocontrollerpins für die Richtungsinformation
 +
* Bremsen ist weiterhin möglich (im Gegensatz zur Variante mit den Logikgattern)
 +
 
 +
Nachteile:
 +
* Es wird ein zusätzliches IC benötigt
 +
* leicht erhöhter Softwareaufwand für den Mikrocontroller (I2C-Bus oder Ansteuerung des Schieberegisters)
 +
* Verzögerungen durch die Ansteuerung
 +
 
 +
 
 +
== Messung der Stromaufnahme des gesteuerten Motors ==
 +
Es kann manchmal interessant sein, zu wissen, wie viel Strom die Motoren eines Roboters verbrauchen. Man könnte so einen Anhaltspunkt zur Belastung der Motoren erhalten. Ein hoher Motorstrom würde z.B. bedeuten, dass der Roboter gegen eine Wand fährt o.ä. Außerdem könnte eine Regelung der Motoren realisiert werden.
 +
 
 +
Die meisten Motortreiber-ICs haben dafür SENSE-Anschlüsse. Wer keine Messung des Motorstroms benötigt, verbindet die SENSE-Anschlüsse mit GND (vgl. Schaltplan des L298). Ansonsten ist vorgesehen, einen Widerstand zwischen SENSE und GND einzubauen. Durch diesen Widerstand, der auch "Shunt" genannt wird, fließt auch genau der Strom, der durch den Motor fließt. Nach dem Ohmschen Gesetz U = R * I fällt dann an diesem Shunt eine Spannung ab, die proportional zum Motorstrom ist. Die Spannung lässt sich dann relativ einfach mit einem Mikrocontroller messen, indem man diese Spannung an einen Analogeingang anlegt.
 +
 
 +
Beispiel: Es soll ein Shunt mit 0,1 Ohm verwendet werden, der Motor benötigt 2A. Dann fallen am Shunt U = R * I = 0,1Ohm * 2A = 0,2V ab.
 +
 
 +
Ein Mikrocontroller könnte diese Spannung direkt mit dem ADC messen. Da ein Mikrocontroller allerdings einen Messbereich bis meistens 5V aufweist, würde sich nur eine geringe Auflösung des gemessenen Motorstroms ergeben. Man könnte nun den Shunt größer machen (z.B. 1 Ohm), um größere Spannungen zum Messen zu erhalten. Allerdings fehlt die Spannung, die am Shunt abfällt, dann natürlich am Motor, sodass dieser langsamer dreht. Außerdem wird im Shunt elektrische Energie in Wärme umgesetzt, sodass diese für die entsprechende Leistung ausgelegt werden müssten. Die elektrische Leistung berechnet sich aus P = I² * R. Würde man beim angegebenen Beispiel einen 1-Ohm Widerstand einsetzen, müsste dieser schon P = (2A)² * 1Ohm = 4W verheizen!
 +
 
 +
Eine bessere Lösung ist die Verwendung eines niederohmigen Shunts (z.B. 0,1 Ohm) sowie eines Operationsverstärkers, welcher die am Shunt gemessene Spannung quasi ''multipliziert'' und somit für den Mikrocontroller besser messbar macht.
 +
 
 +
[[Bild:Strommessung_shunt_tiefpass_opamp.png|600px]]
 +
 
 +
Gezeigt wird in der Abbildung der Shunt (links), dahinter ein RC-Tiefpassfilter, welches den Strom ''mittelt'', indem kurze Stromspitzen reduziert werden und den Messwert glätten/stabilisieren soll, sowie ein Operationsverstärker als nichtinvertierender Verstärker. Der Kondensator C2 dient nur zur Entstörung der Versorgungsspannung des Operationsverstärkers.
 +
 
 +
Als Operationsverstärker kann z.B. der LM358 (zwei in einem Gehäuse) oder der LM324 (vier in einem Gehäuse) verwendet werden. Dieser kommt mit asymmetrischer Betriebsspannung - also +5V und GND - aus. Der Operationsverstärker wird in der Grundschaltung des nichtinvertierenden Verstärkers betrieben. Der Verstärkungsfaktor berechnet sich aus 1+(R3/R4); hier also 1+(10k/1k)=11. Aus einer Eingangsspannung von z.B. 0,2V würden dann 0,2V * 11 = 2,2V am Ausgang werden. Diese Spannung ließe sich schon viel besser mit einem Mikrocontroller messen. Es können auch andere Widerstandswerte für R3 und R4 verwendet werden, um den Verstärkungsfaktor anzupassen.
 +
 
 +
Die genauen Werte des Tiefpassfilters sind unkritisch, es können auch andere Werte als in der Abbildung verwendet werden. Man könnte das Filter auch weglassen.
 +
 
 +
Anmerkung: Der LM358 bzw. LM324 kann bei 5V Betriebsspannung am Ausgang nur bis etwa 3,5V aussteuern. Sollen noch höhere Spannungen am Ausgang erreicht werden, muss entweder die Betriebsspannung des OpAmps erhöht oder ein sog. Rail-To-Rail Operationsverstärker (z.B. LMC6484) eingesetzt werden, der bis knapp an die Versorgungsspannung aussteuern kann.
 +
 
 +
Bei ungeschickter Masseführung kann es zu Fehlmessungen kommen. Nicht nur in diesem Fall, sondern grundsätzlich ist es besser, einen Subtrahierer mit OpAmp anstatt der oben gezeigten Schaltung aufzubauen. Eine solche Schaltung ist nicht viel umfangreicher, es sind nur zwei zusätzliche Widerstände notwendig.
 +
Sind präzise Messungen erforderlich, sollte der Widerstandswert des Shunts nachgemessen werden, außerdem wird die Verwendung von Metallfilmwiderständen mit einer Toleranz von 1% in der weiteren OpAmp-Schaltung empfohlen.
 +
 
 +
== Motor ausschalten - Varianten ==
 +
Muss man über einen so banalen Zusammenhang noch Worte verlieren? JA! Es gibt hier zwei Varianten, die durchaus wichtig sind, und in manchen Anwendungsgebieten auch einen großen Unterschied machen.
 +
Naheliegend ist, die Verbindung zum Motor einfach zu trennen, sodass dieser noch ausrollen kann. Die andere Möglichkeit ist, die beiden Anschlüsse des Motors miteinander zu verbinden. Damit wird der Motor abgebremst. Den Effekt kann jeder einmal praktisch ausprobieren: Verbinde die beiden Anschlüsse des Motors und versuche dann, an der Achse zu drehen. Vor allem bei Getriebemotoren ist dann diese Bremse spürbar.
 +
 
 +
[[Bild:Motor_aus.png]]
 +
 
 +
Für eine Geschwindigkeitsregelung mittels PWM sollte das "normale Ausschalten" gewählt werden, da sich der Roboter sonst wohl kaum vom Fleck bewegt.
 +
Soll der Roboter schnell anhalten oder für einen relativ kleinen Winkel drehen, so sollten die Motoren gebremst werden.
 +
 
 +
Andererseits sollte die Hardware falls erwünscht auch beide Betriebsarten unterstützen können. Jedoch sind dazu nicht alle Motortreiber in der Lage. Probleme kann das Bremsen machen, da der Motor dann über den Motortreiber kurzgeschlossen wird (z.B. beide Anschlüsse mit GND verbunden). Dann fließt im Moment des Bremsens ein Strom durch den Treiber, welcher dann Leistung in Form von Wärme abgeben muss.
 +
 
 +
Motortreiber aus Operationsverstärkern können z.B. ihren Ausgang nicht hochohmig schalten, es liegt immer eine belastbare Spannung am Ausgang an, somit können diese nur bremsen und nicht "normal" ausschalten.
 +
 
 +
Hier eine Tabelle die zeigt, welche Motortreiber welche Variante beherrschen können:
 +
{| {{Blauetabelle}}
 +
|-
 +
| Treiber || L293B/D/DD/E || L298 || L620x || OpAmp || TLE4202B || TLE5202 || BTS7741 || VNH2SP30 || Variante mit Logikgattern
 +
|-
 +
| Ausschalten || ja || ja || ja || nein || nein || ja || nein || ja || ja
 +
|-
 +
| Bremsen || ja || ja || ja || ja || ja || ja || ja || ja || nein
 +
|}
  
 
==Und nie vergessen Motoren zu entstören==
 
==Und nie vergessen Motoren zu entstören==
  
Das Entstören dient dazu, das sogenannte "Bürstenfeuer" zu verhindern, wodurch Störungen hervorgerufen werden könnten. Und so wirds gemacht:
+
Das Entstören dient dazu, eine Ausbreitung von Funkstörungen durch das sogenannte "Bürstenfeuer" zu verhindern. Und so wird's gemacht:
  
  
 
[[Bild:entstoerung.gif|center]]
 
[[Bild:entstoerung.gif|center]]
 +
 +
Bei Steuerung des Motors per PWM sind die Induktivitäten hilfreich. Sie verhindern das bei den steilen Flanken des PWM Signals große Ströme duch die Kondensatoren fließen. Alternativ zu den 2 Kondensatoren (C2,C3) gegen das Gehäuse kann das Gehäuse auch direkt an Masse angeschlosssen werden. Bei einer PWM Steuerung ist das die bessere Lösung.
  
 
==Siehe auch==
 
==Siehe auch==
 
* [[Getriebemotoren]]
 
* [[Getriebemotoren]]
 
* [[RN-VNH2Dualmotor]]
 
* [[RN-VNH2Dualmotor]]
 +
* [[Motorkraft berechnen]]
  
 
==Weblinks==
 
==Weblinks==

Aktuelle Version vom 14. Dezember 2015, 19:46 Uhr

Ist der Entschluss gefasst, für seinen Roboter oder andere Konstruktion einen Getriebemotor zu verwenden, so müssen sich Gedanken gemacht werden, wie er ansteuert werden kann. Gewöhnlich sollen die Motoren ja sowohl in Bezug auf Drehrichtung und Geschwindigkeit über eine Programmiersprache angesteuert werden. Daher wird in der Regel erst mal ein Controllerboard benötigt. Leider kann man an die wenigsten Controllerboards einen Getriebemotor direkt anschließen, eine der wenigen Ausnahmen ist das RN-Control-Board und das RNBFRA-Board. Bei beiden Boards ist es einfach, dort müssen die Getriebemotoren einfach nur an die Schraubklemmen angeschlossen werden, danach kann man sofort mit der Programmierung loslegen.

Ich möchte hier aber aufzeigen, wie man Motoren auch bei anderen Boards anschließen kann. Die gleiche Technik lässt sich natürlich auch nutzen, um z.B. mehr als zwei Motoren an RN-Control anzuschließen.

Ansteuerung mit Relais

Die einfachste Methode, um Motoren per Controller anzusteuern, erreicht man durch die Verwendung von Relais. Mit einem Relais, das zwei Umschaltkontakte besitzt, lässt sich über einen einzelnen Controllerport bequem die Drehrichtung wechseln.

Hbrueckerelais.gif

Da auch Relais wegen des Strombedarfes nicht direkt vom Controller geschaltet werden können, wurde in dem oberen Beispiel ein Transistor vorangestellt. Die Diode dient dazu, die Spannungen abzuleiten, die beim Ausschalten des Relais induziert werden. Ohne Diode könnte der Transistor oder sogar der Controller durch die induzierte Spannung beschädigt werden. Die Schaltung ist also in der Lage, die Drehrichtung umzuschalten, jedoch nicht in der Lage, den Motor zu stoppen. Um den Motor ganz auszuschalten, könnte man man 2 getrennte Relais für die beiden Umschaltkontakte nutzen. Ein Schaltbild können wir uns ersparen, da das Ganze recht ähnlich aussieht. Der große Nachteil von Relaisschaltungen ist, dass die Geschwindigkeit des Motors nicht geregelt werden kann, zudem haben Relais bei vielen Schaltvorgängen einen gewissen Verschleiß. Das Auschalten einer induktiven Last ist dabei für die Relaiskontakte besonders schädlich. Vorteil der Schaltung ist jedoch, das man auch große Lasten/Motoren schalten kann.

Ansteuerung mit Relais und MOS-FET

Die Schaltung ist sehr ähnlich wie die vorherige Relaisschaltung. Es wird aber in die Masseleitung hinter dem Relais ein MOSFET und eine Freilaufdiode eingesetzt. Dadurch werden die meisten Nachteile der einfachen Relaisschaltung behoben. Durch den MOSFET läßt sich der Motor in der Geschwindigkeit regeln und ggf. abschalten.

RelaisundFet.png

Es sind prinzipiell alle N-Kanal MOS-FETs geeignet. Für die hier gezeigte direkte Steuerung vom µC sollte es ein Logik-Level-Typen sein. Der FET IRLZ34 sollte ohne Kühlung bis etwa 5 A genügen. Die Freilaufdiode D1 muß für den Motorstrom ausgelegt sein, und bei PWM Steuerung genügend schnell sein(z.B. Shottky SB540). Die Induktivität L1 (ca. 1...100 µH) und der Kondensator C1 dienen zur Funkentstörung und können bei kurzem Kabel zum Motor auch weggelassen werden. Um die Umschaltverluste und Funkstörungen gering zu halten, sollte die PWM-Frequenz nicht unnötig hoch liegen. Eine einfache Motorbremse ist möglich mit einem P-MOSFET (oder PNP Transistor) parallel zur Freilaufdiode. Ein Programmfehler kann damit allerdings zu einem Kurzschluss führen.

Da das Relais nur Strom verbraucht, wenn es angezogen wird, sollte man den Motor so anschließen, dass in der bevorzugten Drehrichtung (beim Roboter Vorwärtsfahren) das Relais nicht angezogen ist. Die Schaltung (ohne Motorbremse) ist sicher gegen Querströme und es können durch Fehler im Programm des µC kaum Schäden entstehen. Das Relais sollte erst umgeschaltet werden, wenn der Motor steht, dann gibt es keine Funken an den Relaiskontakten.

Der Verdrahtungsaufwand insgesamt ist minimal und sogar kleiner als bei Motortreiber-ICs, wie dem L298, da keine zusätzlichen Bauteile benötigt werden. Daher ist die Schaltung insbesondere für Anfänger geeignet.

Vorteile sind:

  • tolerant gegen Fehler im µC Programm
  • hohe Strombelastbarkeit
  • sehr geringer Spannungsabfall (< 1 V)
  • niedrige Kosten, auch bei hoher Leistung
  • das Relais kann stromlos geschaltet werden (wenig Verschleiß an Kontakten)

Nachteile sind:

  • hörbares "Klacken" beim Laufrichtungswechsel
  • zusätzlicher Stromverbrauch, wenn das Relais geschaltet ist

Ansteuerung mit MOS-FET

Neufassung

Dieser Artikel ist noch lange nicht vollständig. Der Auto/Initiator hofft das sich weitere User am Ausbau des Artikels beteiligen.

Das Ergänzen ist also ausdrücklich gewünscht! Besonders folgende Dinge würden noch fehlen:

Die Neufassung kann im momentanen Stand nur als Anregung verstanden werden.

Insbesondere fehlen noch angepasste Schaltpläne.

Einige der Anmerkungen aus dem Abschnitt "Kritik an der Schaltung" sind in der Neufassung noch nicht enthalten, die Beschreibung von Verzögerungsgliedern müsste auch eine Erklärung enthalten, welche Verzögerung mit welchen Werten erreicht wird.

Wenn die Neufassung komplett fertig ist, sollten die alten Texte weg.


Grundprinzip

Wenn man die Steuerung rein mit Halbleitern realisieren will, bietet sich die H Brückenschaltung (Vollbrücke) an. An jeden Motoranschluß kommt einen Halbbrücke, die den Anschluß mit GND oder der Versorgungsspannung verbinden kann. Die fertigen Motorteiber ICs sind auch entsprechend aufgebaut. Der Aufbau aus Einzelteilen wird vor allem gebraucht, wenn man kein passendes IC findet, z.B. bei hoher Leistung.

Bei den üblichen Batteriespannungen sind als Schaltelemete MOS-FETs die beste Wahl. Also (unipolaren) Transistoren, die quasi leistungslos nur durch Spannungen geschaltet werden. Zu diesem Thema findet man unzählige Beiträge im Roboternetz, denn die Schaltung ist nicht ganz einfach.

Die Grundschaltung besteht aus 2 N-Kanal-MOS-FET und zwei P-Kanal-MOS-FET, mit denen die Motoranschlüsse nach GND bzw. UB geschaltet werden. Auf die extra Freilaufdioden kann bei einer Vollbrücke mit modernen MOSFETs meistens verzichtet werden, da die MOSFETs bereits hinreichend gute Dioden enthalten. Teilweise werden trotzdem zusätzliche Schottky-Dioden benutzt, um die Verluste etwas weiter zu reduzieren. Die Dioden werden in Sperrichtung von den beiden Motoranschlüssen nach GND bzw. UB geschaltet. Die Transistortypen werden entsprechend der benötigten Ströme und Spannungen gewählt. Zu große Transistoren haben den Nachteil einer großen Gatekapazität und benötigen daher aufwendigere Treiber.

Grundsätzlich muss die Beschaltung der Gate-Eingänge so erfolgen, dass zum Starten des Motors die Transistoren einer Diagonale auf "leitend" und die der anderen auf "sperrend" geschaltet werden. Zum Anhalten des Motors werden z.B. die unteren auf leitend und die oberen auf sperrend geschaltet (Der Motor wird aufgrund des nicht unerheblichen Bremsstroms von Transistor und Freilaufdiode stark gebremst). Alternativ kann man auch alle Transistoren auf sperrend schalten, der Motor läuft dann im Leerlauf aus.

Die Transistoren einer Seite dürfen nicht gleichzeitig auf "leitend" geschaltet werden, da dies einen Kurzschluss verursacht.

Elektrische Ansteuerung der Gates

Beim Umschalten der Transistoren entstehen Verluste - der Widerstand wechselt von sperrend (sehr großer Widerstand) nach leitend (sehr kleiner Widerstand) und umgekehrt. Zwischen beiden Enden des Schaltvorgangs befindet sich der Transistor in der "Widerstandsphase" (weder ganz leitend, noch ganz sperrend), die eine erhebliche Verlustleistung und damit Erwärmung mit sich bringt.

Deshalb sollte der Schaltvorgang schnell erfolgen, insbesondere wenn für eine PWM-Regelung sehr oft geschaltet wird. Da zum Umschalten die durch den Aufbau des MOSFETs bedingte Gatekapazität umgeladen werden muss, ist hierzu (sehr kurzzeitig) ein hoher Stromfluss nötig. Zu schnell (<100 ns) sollte man wegen der Funkstörungen aber auch nicht schalten.

Für die P-Mosfets wird eine Spannung von 0 V bzw. etwa -10 V realtiv zur postiven Versorgung gebraucht. Für die N-Mosfets reicht eine Spannung von 0 V bzw. ca. 10 V, bei logic level Mosfets reichen 5 V.

Schaltung direkt am Port

Eine Ansteuerung unmittelbar über den Ausgang eines Mikrocontrollers (oder eines TTL-IC) ist schon wegen der benötigten Spannungen oft nur für die N-MOSFETs möglich, und das auch nur bei Logic Level Fets. Bei den P-MOSFET bemisst sich die Schaltspannung gegen UB und nur für ein UB von etwa 5-6 V könnte die Spannung passen.

Dass ein Portpin nur einen geringen Stromfluss (ca. 20 mA) zulässt, ist ein weiteres Problem und verhindert einen schnellen Schaltvorgang. Diese Schaltungsversion ist für eher kleine Logic Level MOSFETs (bis etwa 2 nF Gate Kapazität), bevorzugt ohne PWM, möglich.

Schaltung mit einem Transistor

Eine einfache Steuerschaltung besteht aus einem Transistor-Schalter (Emitter nach GND)und einem Pull-Up-Widerstand.

Der Vorteil liegt in der Einfachheit, der Nachteil liegt darin, dass die Schaltung nicht sonderlich schnell vonstatten geht: Für die Schaltung des FET muss die Gate-Kapazität transferiert werden, was insbesondere beim Wechsel von 0 V nach UB einen Moment dauert, da die Ladung durch den Widerstand hindurch muss. Ein kleinerer Widerstand könnte hier helfen, verursacht allerdings einen nicht unerheblichen Stromfluss im geschalteten Zustand.

Sinnvoll ist diese Version damit nur für die P-MOSFETs, wenn diese nicht mit dem PWM Signal versorgt werden. Für die N Kanal Fets ist es in der Regel besser direkt den Logicpegel und Logic Level Fets zu nehmen.

Schaltung mit zwei Transistoren

Eine bessere Ansteuerung sollte sich ergeben, wenn man zwei Transistoren zur Gate-Ansteuerung verwendet: Einer schaltet gegen 0 V, der andere gegen UC. So kann man erreichen, dass in beide Richtungen rasch umgeschaltet werden kann.

Integrierte Gate-Treiber

Statt der Beschaltung mit zwei Transistoren kann man auch einen integrierten MOSFET-Treiber verwenden. Derartige ICs (z.B. ICL7667) sind darauf ausgelegt, kurzfristig den für eine Umschaltung benötigten hohen Stromfluss zu ermöglichen.

Es gibt auch Treiber-ICs (z.B. IR2111), die zur Ansteuerung der oberen Transistoren eine Spannung oberhalb von UB erzeugen. Mit solchen Highside-Treibern kann die H-Brücke auch aus 4 N-Kanal-Transistoren gebaut werden, was den Vorteil hat, dass N-Kanal-FETs mit geringerem Schaltwiderstand zu bekommen sind. Bei den Treibern für highside N-Kanal-Fets hat man aber oft eine Begrenzung des Tastverhältnisses.

Logische Ansteuerung der Gates

Nach der elektrischen Ansteuerung ist die logische Ansteuerung durch den Mikrocontroller zu überlegen. In der H-Brücke sind zwei problematische Zustände zu berücksichtigen:

1. Das offensichtliche Problem ist ein Kurzschluss: Wenn beide Transistoren einer Seite auf leitend geschaltet werden ist das ein Kurzschluss. Falls vorhanden brennt die Sicherung durch oder es wird sogar etwas beschädigt.

2. Ein nicht so offensichtliches Problem rührt daher, dass der Schaltvorgang nur mit endlicher Geschwindigkeit abläuft und der Transistor auch schon vor Erreichen des Zielwertes der Gate-Spannung erheblichen Strom leitet. Hierdurch kommt es zu einem Kurzschluss durch den nicht mehr richtig gesperrten und den noch nicht richtig gesperrten Transistor. Es reicht also nicht die beiden Transistoren gleichzeitig zu schalten, sondern es wird eine kleine Verzögerung benötigt.

Die Stromspitze selbst liegt oft noch im Rahmen der Spezifikationen der Transistoren. Allerdings hat die Stromspitze drei Auswirkungen:

  1. Die Transistoren erwärmen sich
  2. Es kann an einem Messwiderstand zu einer Spannungsspitze kommen
  3. Die Versorgungsspannung bricht kurzzeitig zusammen

Die Störung der Versorgungsspannung lässt sich ohne Oszilloskop kaum messen. Insbesondere in umfangreicheren Schaltungen können Störungen an ganz anderen Stellen (z.B. bei Sensoren) auftreten, die man dann nicht gleich mit der Motorsteuerung in Verbindung bringt.

softwaremäßige Ansteuerung

Die einfachste Art der Ansteuerung besteht darin, die 4 Gates mit 4 Ausgängen des Controllers zu steuern.

Die korrekte Ansteuerung muss dann durch die Software garantiert werden. Eine Fehlschaltung der Software z.B. bei einem Absturz kann allerdings zur Zerstörung der Schaltung führen, die Schaltung sollte also in jedem Fall eine Sicherung haben.

Einfache, gemeinsame Ansteuerung

Bei passender Spannung, können die Gates einer Seite jeweils gemeinsam geschaltet werden. Bei einer Gate-Spannung von 0V sperrt der N-MOSFET (UGS=0V), der P-MOSFET leitet bei dieser Gate-Spannung, da hier UGS=-UB ist.

Bei einer Gate-Spannung von UB verhält es sich genau umgekehrt: Der N-MOSFET leitet (UGS=UB) und der P-MOSFET sperrt (UGS=0V)

Diese einfache Ansteuerung benötigt nur 2 Port-Pins, hat jedoch den Nachteil, dass während des Umschaltens die oben beschriebenen temporären Querströme auftreten können und deshalb eher schnell geschaltet werden sollte. Die Ansteuerung mit nur einem Transistor ist hier also nicht angebracht. Je höher die Spannung, desto schlimmer wird das Problem beim Umschalten. Ohne extra Verzögerungen sind damit nur Spannungen bis ca. 8 V möglich.

Mit einer Parallelschaltung aus einem Widerstand und einer Diode vor den Gates, kann man erreichen, dass die Transistoren schneller auf sperrend als auf leitend schalten. Beim N-FET zeigt die Anode zum FET, beim P-FET die Kathode. Damit sind dann auch etwas höhere Spannungen möglich, aber spätestens bei ca. 20 V wird die maximale Gatespannung erreicht.

Eine mögliche Ausführung für etwa 8-15 V, ist es ein Gate Treiber IC (z.B. ICL7667) zu nehmen, und durch Dioden und Widerstände zu den Gates für eine Verzögerung beim Einschalten zu sorgen.

Ansteuerung mit logischer Verknüpfung

Der Zustand eines dauerhaften Querstroms sollte besser Hardwaremäßig vermieden werden. Zusätzlich kann die Logic die Zahl der IO Pins auf 2 oder 3 reduziert werden. Sinnvollerweise sollte dabei nur eine Leitung die PWM Steuerung übernehmen. Mittels Logik-Bausteinen werden zwei Ausgänge des Controllers so umgesetzt, dass die folgenden Zustände geschaltet werden können:

  1. Motor-Stop: untere Transistoren leitend, obere sperrend (oder umgekehrt)
  2. Motor-Vorlauf: 1. Diagonale leitend
  3. Motor-Rücklauf: 2. Diagonale leitend
  4. Motor-Leerlauf: Alle Transistoren sperrend

Der Motor Stop Zustand ist dabei nicht unbedingt nötig. Wie die Logic genau aussieht hängt davon ab ob die Gate Treiber die Signale noch mal invertieren. In der wohl einfachsten Form, kann man die P MOSFETs über einfache Transistortreiber langsam steuern. Die PWM Steurung geht dann nur mit den N-FETs. Hier kann man Logic Level Typen nehmen, die man direkt von Logic Gattern (z.B. 74HC...) ansteuern kann, oder bei größeren FETs mit Gate Treibern.

Die Querstrom-Problematik beim Schalten kann hierbei softwaremäßig gelöst werden, indem beim Umschalten jeweils kurz der Leerlauf geschaltet wird, damit alle Transistoren sperren. Damit auch Temporäre Querströme sicher vermieden werden können auch hier Verzögerungselemente sinnvoll sein.

Heidingscher Encoder (Beispiel für Logic)

Aufgrund der Kritik an der alten Schaltung(siehe Alte Schaltungsbeschreibung) entschied ich mich einen neuen, einfachen sowie preisgünstigen Encoder zu entwickeln, den man mit der 74series aufbauen kann. Die 74series sind mit 20 mA Treiberstrom natürlich kaum zum direkten Treiben geeignet. Die Verzögerung müßte hier in die Treiber integriert sein. Die Logikanzeigen in den Grafiken sollen je einen Transistor bzw. Mosfet darstellen.

PR Encoder

Prtreiber.png

Der PR Encoder(PWM-Richtung Encoder) ist mit zwei NOR Gates sowie eines Inverters aufgebaut, d.h. man kann ihn mit nur einem IC(74HC(T)02) aufbauen. Will mein 2 Encoder verwenden, empfiehlt sich den Inverter auszulagern (74HC(T)04 oder 74HC(T)14. Sollte man keinen Schmitt-Trigger benötigen empfiehlt sich aus Schnelligkeitsgründen die 74HC(T)04 Variante). Alternativ ist es noch möglich sich den Inverter zu sparen, und die Ansteuerung für den P(WM) Kanal invertiert laufen zu lassen.

PRK Encoder

Prktreiber.png

Der Prk-Encoder(PWM-Richtung-Kurzschluss-Encoder) ist eine Erweiterung des PR-Encoders. Er erlaubt es zusätzlich, die Motoren durch einen Kurzschluss zu stoppen. Aufgebaut werden kann dieser aus 1 NOR und 1 NAND Gate. Dabei werden 3 NAND-Gates als Inverter beschaltet (d.h. eine Leitung, die übrigen bleiben auf VCC).

Support

Fragen einfach in das Forum posten, oder mich anschreiben (User s.o.)

Alte Schaltungsbeschreibung

Achtung! Die Schaltung ist so nicht zu verwenden! Siehe unter Kritik an der Schaltung

Wesentlich günstiger und auch beliebter ist die Ansteuerung von Motoren mit MOS-FETs. Also Transistoren, die quasi leistungslos nur durch Spannungen geschaltet werden und extrem hohe Ströme verkraften. Zu diesem Thema findet man unzählige Beiträge im Roboternetz. Eine der interessantesten Schaltungen, die im Roboternetz vorgestellt wurde, dürfte diese sein:


Hbrueckemosfet.gif


Anmerkung: Den 74HC26N gibts wohl nicht , nur die TTL-Version 74LS26, die HC-Mos-Version lautet 74HC03.

Eine sogenannte H-Brücke, die nur aus zwei MOSFETSs und einem Logik-IC besteht. Mit zwei Controllerports kann diese Schaltung sowohl Geschwindigkeit als auch Drehrichtung regeln. Für die Geschwindigkeit ist ein sogenannter PWM-Port notwendig. Also ein Port, der durch ein gepulstes Signal den Motor etlichemal innerhalb einer Sekunde ein- und ausschaltet und somit quasi die Leistung regelt (siehe PWM). Die Schaltung ist so konstruiert, dass immer nur zwei Transistoren durchschalten. Auf diese Weise fließt einmal der Strom von links oben nach rechts unten und einmal von rechts oben nach links unten, der Motor wird also ähnlich wie bei der Relaisschaltung umgepolt. Bei niedriger PWM_Frequenz sollte die Schaltung durchaus für einige Ampere geeignet sein, wobei ca. 8 bis 13 V ideal sein sollten.

Das Logic-IC wurde durch 3x BC547 Transitoren ersetzt.


Datei:Hbrueckenmosfet BD547.PNG

Kritik an der Schaltung

Diese Schaltung wird hier Forum von mehreren Leuten, u.A. Ratber, shaun, massiv kritisiert.

Ich habe leider nicht das Wissen eine bessere Lösung zu liefern. Das Problem sind die Querströme: Im Umschaltmoment sind highside und lowside switch für kurze Zeit beide leitend. Das entspricht einem Kurzschluss der Versorgungsleitung bei jedem Umschalten mit allen damit verbundenen Problemen (Erwärmung, Schwingung, Sicherungen, Reset). Aus diesem Grund sind NAND-Gatter nicht geeignet!

Zum Umschalten muss man

  • den bisher leitenden MOSFET ausschalten,
  • dann etwas warten,
  • und dann den nächsten MOSFET schließen.

Dies kann man erreichen, indem man den Einschaltmoment

  • durch RC-Glieder verzögert und
  • den Ausschaltmoment durch Dioden beschleunigt.

Die entstehenden Schaltungen sind komplex, benötigen viele Bauteile und sind fehleranfällig.


Am sinnvollsten sind integrierte MOSFET-Treiber. Diese haben oft eine einstellbare Tot-Zeit (Dead-Time), können hohe Leistungen zum Umladen der Gatekapazität liefern und beachten andere Effekte wie Propagation-Time, Veränderung des Source Potentials beim Highside-switch, etc.

Erklärung von shaun:

Die gezeigte Schaltung taugt auch nur als Prinzipschaltung bedingt, da man einen variierenden Aufwand in eine sichere Verriegelung investieren müsste. Bei fixer und nicht zu hoher Betriebsspannung könnte man mit RD-Kombinationen in den Gateleitungen das Ausschalten beschleunigen und das Einschalten verzögern, so dass die Querleitung wegfällt. Allerdings bewirkt diese simple R-Cg-Verzögerung größere Schaltverluste.

Setzt man die Verzögerung vor dedizierte Treiber, müssen diese wiederum leistungsfähig genug zum Umladen der Gates sein und bis an die Versorgung heranreichen, weshalb man an diesem Punkt überlegen sollte, ob 95% duty cycle nicht auch reichen würden (Anmerkung: Bezug auf bootstrapping?) und man integrierte Treiber für reine N-Kanal-Bestückung einsetzen sollte - spart dann wieder etwas Verluste am Highside-Switch, weil N-Kanäler gleicher Generation und Leistungsklasse einen niedrigeren Rds(on) als ihre P-Pendants haben.

Dieser Artikel ist noch lange nicht vollständig. Der Auto/Initiator hofft das sich weitere User am Ausbau des Artikels beteiligen.

Das Ergänzen ist also ausdrücklich gewünscht! Besonders folgende Dinge würden noch fehlen:

Eine vernünftige diskrete Ansteuerung für eine H-Brücke. Korrektur auf Rechtschreibfehler, Zeichensetzung, Schreibstil, Fachausdrücke. Gibt's denn keinen, der etwas verbessern möchte?


Ansteuerung mit einem LeistungsOPV

Die wohl preislich und platztechnisch günstigste Alternative zur Ansteuerung von Motoren in H-Brücken ist die Verwendung von (Leistungs-)Operationsverstärkern oder Audioverstärker ICs.

Heidingscher Motortreiber

Bei dem Heidingschen Motortreiber wird jeder Anschluss des Motors mit einem Ausgang des Operationsverstärker verbunden, die Eingänge des OPVs selbst als Komparator. Diese Methode ist für kleine und mittlere Motoren(=< 1A) und mäßige PWM-Frequenzen(<10kHz) gut geeignet. Ein RB35 von Conrad kann damit problemlos angesteuert werden. Bei zu hohen PWM-Frequenzen ist die SlewRate von vielen OPVs zu gering und die entsprechenden OPVs sind dann viel zu teuer und man sollte eine Ansteuerung per MOSFET (s.o.) bevorzugen. Momentan hat sich der TCA 0372 DP1 (0,57€ bei Reichelt) Verwendung gefunden. Weitere Informationen sind in diesem Forumsbeitrag zu finden.

Gleichstromansteuerung

Eine weitere Möglichkeit ist es, dem Operationsverstärker eine Gleichspannung vorzugeben, mit denen der OPV die Motoren ansteuert. Diese Methode eignet sich sehr gut für analoge Schaltkreise. Der Wirkungsgrad ist allerdings nicht der beste, da die restliche Spannung in Wärme umgesetzt wird. Zudem werden viele weitere Komponenten benötigt, was den Aufbau teurer und fehleranfälliger macht. Der entsprechende Schaltkreis ist im Datenblatt des TCA 0372 DP1 zu finden.

Ansteuerung mit Treiber ICs

Ansteuerung mit Treiber IC L293 D

Ein häufig eingesetztes Motortreiber-IC für kleine Roboter ist der L293D. Da dieses IC zwei H-Brücken enthält, können so pro IC zwei Motoren angesteuert werden. Der im Datenblatt angegebene Maximalstrom beträgt pro Kanal 600 mA. Die Beschaltung des Treibers gestaltet sich recht einfach. Da bereits Freilaufdioden und die nötige Logik im Treiber enthalten sind, werden lediglich Elkos und Kondensatoren an der Versorgungsspannung benötigt.

Die Verluste des Treibers dürfen aber nicht außer Acht gelassen werden: Einerseits liegt der Ruhestrom in der Größenordnung 40 mA, andererseits muss durch die Verluste an den Treibertransistoren mit über 3 Watt Abwärme (bei 600 mA auf beiden Brücken) gerechnet werden! Bei geringen Ausgangsströmen sind die Verluste entsprechend kleiner. Deshalb ist dieser Treiber nur für kleine Motoren mit geringen Strömen empfohlen. In dieser Treiber-Übersicht ist der L293D der schwächste Kandidat. Den Treiberbaustein gibt es auch in SMD und heißt dann L293DD.


L293Pinout.JPG


Hbrueckel293d.gif

Hinweise zum Schaltplan:

Zur Stabilisierung der Versorgungsspannung sollten noch Elkos (z.B. 100µF) eingebaut werden, dies ist im Schaltplan nicht eingezeichnet! (Vergleiche z.B. mit Schaltplan vom L293B, weiter unten). Außerdem müssen unbedingt alle vier GND-Anschlüsse mit Masse verbunden werden!

Wie aus dem Schaltbild zu ersehen ist, werden für die Ansteuerung jedes Motors 3 Ports benötigt. Die Enable-Leitung führt man oft auf einen PWM-Port welcher, wie bei der MOS-FET Schaltung oben, die Geschwindigkeit regelt. Die beiden anderen Ports geben die Drehrichtung an. Immer wenn die Ports unterschiedliche Polarität haben dreht der Motor in eine bestimmte Richtung, je nachdem wo Low und High anliegt. Das Besondere ist, dass wenn an beiden Ports der gleiche Pegel anliegt, also zweimal Low oder High, dann wird nämlich der Motor kurzgeschlossen, das dann als Bremse fungiert. Das Bremsen kann bei Robotern durchaus nützlich sein. Zudem ist bei schnellen Richtungswechseln immer zu empfehlen zuerst kurz zu bremsen, um nicht den Motor oder Motortreiber zu stark zu belasten.

Wahrheitstabelle (hier exemplarisch für 1 und 2; bei 3 und 4 entsprechend):

Eingang "1A" Eingang "2A" "1,2EN" Ausgang "1Y" Ausgang "2Y" entspricht
0V 0V 5V - - Motor kurzschließen (Bremsen)
0V 5V 5V - + Motor dreht vorwärts
5V 0V 5V + - Motor dreht rückwärts
5V 5V 5V + + Motor kurzschließen (Bremsen)
egal egal 0V hochohmig hochohmig Motor aus (Verbindung trennen, nicht kurzschließen)


Bei Belastung des Ausgangs steht nicht mehr die volle Betriebsspannung am Ausgang zur Verfügung.

Der angegebene Maximalstrom von 600mA pro H-Brücke ist mit Vorsicht zu genießen, da oft die Verlustleistung des Treibers außer Acht gelassen wird. Bei der Entnahme des Nennstroms (600mA) entwickelt das IC eine Verlustleistung von etwa 3,3 Watt ! (Woher kommt der Zahlenwert? Verluste an Transistoren: 1,2V lowside + 1,4V highside = 2,6V total drop bei 0,6A ergeben 1,56 W Verlust an einer Brücke, also 3,12 W an beiden Brücken. Dazu kommt mindestens ein Ruhestrom von 40mA an 5V, also 0,2W, macht 3,32 W). Das IC kann sich dabei so stark erwärmen, dass es zerstört wird.

Um die Abwärme besser abzuführen, können mit Kühlkörper aufgeklebt werden und ein Platinenlayout mit großer Massefläche verwendet werden. Durch PWM-Betrieb kann die durchschnittliche Stromaufnahme verrigert werden, dann sinkt aber auch die Motorleistung. Selten erfolgt auch eine Huckepack-Montage von mehreren identischen ICs zur Verteilung der Abwärme. Auch auf kurzes Abbremsen des Motors vor einem Richtungswechsel soll noch einmal hingewiesen werden. Besser ist es jedoch, einen leistungsfähigeren Treiber einzusetzen.

Ansteuerung mit Treiber IC L293 B

Der L293B ist dem L293D sehr ähnlich, da er die selbe Pinbelegung besitzt und auch von der Ansteuerung genau identisch ist. Im Gegensatz zum L293D kann er aber 67% mehr Strom (d.h. 1A) am Ausgang liefern, benötigt aber zusätzlich noch 4 Freilaufdioden pro Motor. Der Preisunterschied zum L293D ist minimal, sodass man sich den Einbau des etwas stärkeren L293B überlegen kann.

L293B Pins.png

Es soll noch eine typische Anwendungsschaltung für den L293B gezeigt werden (Auf das Bild klicken für höhere Auflösung):

L293B Schaltplan.png

Als Dioden schlägt das Datenblatt die Verwendung von 1N4001 vor. (Dioden in oben gezeigter Anordnung kommen so auch in Brückengleichrichtern vor.) Bei einem PWM Signal, wo der Strom nicht auf Null zurück geht, sind langsame Dioden aber problematisch, besser geeignet sind schnelle oder Schottkydioden (z.B. BYV27, 1N5819).

Die Verlustleistung des ICs bei einem Ausgangsstrom von 1A (Nennstrom) beträgt ca. 3 Watt! Hierfür ist schon eine Kühlung erforderlich (Kühlkörper, Platinenlayout mit Kühlflächen, ggf. Lüfter).

Wahrheitstabelle: siehe L293D

Ein ähnliches IC ist das SN754410, welches allerdings schwer erhältlich ist.

Ansteuerung mit dem Schaltkreis L298

Der Schaltkreis L298 ist quasi der große Bruder des L293D. Er beinhaltet auch zwei komplette H-Brücken, kann also auch zwei Motoren ansteuern. Die Pinbelegung ist ebenfalls dem L293D sehr ähnlich, jedoch verfügt er über eine andere Bauform ("MULTIWATT-15"):


L298Pinout.JPG

Hinweis: Der L298 ist auch in einer SMD-Ausführung erhältlich.

Der wichtigste Unterschied besteht jedoch darin, dass jede H-Brücke bei L298 bis zu 2 A belastet werden kann. Damit lassen sich also schon wesentlich größere Motoren ansteuern. Ein weiterer Vorzug sind die sogenannten SENSE-Ausgänge, über die der komplette Strom fließt. Oft wird hier ein Hochlastwiderstand angeschlossen, um aus der abfallenden Spannung den Strom berechnen zu können. Dies machen sich Steuerungen wie RN-Motor oder aber andere Schrittmotoransteuerungen zunutze, um den Strom zu regeln. Benötigt man keine Strommessung, so müssen die Sense-Ausgänge direkt mit GND verbunden werden. Anders als beim L293D werden hier externe Freilaufdioden gebraucht.

Bei der angegebenden Stromstärke von 2A ist allerdings auf eine ausreichende Wärmeabfuhr durch Kühlkörper zu achten. Laut Datenblatt kann bei einem Strom von 2A in einer Brücke eine Spannung von bis zu 4,9V abfallen. Die Verlustleistung beträgt dann 9,8W pro Brücke. Geringere Verluste haben im Allgemeinen Motortreiber, welche aus MOSFETs aufgebaut sind, da sie niederohmiger sind. Leider lässt sich dieser Motortreiber bei Defekt aufgrund seiner Bauform nur schwer auswechseln.


Hbrueckel298.gif


Hinweis: Im Schaltplan fehlen Kondensatoren und Elkos. Es sollte noch ein Keramikkondensator 100nF zwischen +5V und GND, sowie noch ein 100nF Keramikkondensator und parallel dazu ein Elko mit ausreichender Kapazität zwischen Betriebsspannung und GND eingebaut werden.

Ein weiteres Schaltbild gibt es hier [1]

Ansteuerung mit L620x

Der Schaltkreis L620x stellt eine etwas modernere Alternative zur L298-Ansteuerung dar. Die Ansteuerung ist praktisch identisch, der Schaltungsaufbau in etwa gleich. Beim L620x sind keine externen Freilaufdioden mehr notwendig, dafür ist ein Kondensator und zwei Dioden für die interne Spannungserzeugung notwendig. Ein großer Vorteil ist auch, dass kein extra Kühlkörper mehr notwendig ist. Durch die Verwendung von niederohmigen FETs im L620x fällt am Motortreiber weniger Spannung ab und die Verlustleistung des Motortreiber-ICs wird dadurch deutlich geringer. Durch die erhältliche DIP-Bauform lassen sich diese Motortreiber bei Defekt auch schnell und einfach auswechseln. Viele integrierte Schutzfunktionen im L620x sorgen dafür, dass der Chip nicht so einfach zerstört werden kann.

In der Praxis sind die angegeben 2,8 A (für den L6205) jedoch mit Vorsicht zu genießen. Bei Testlayouts erwärmten sich die ICs bereits bei 2 A Dauerstrom (PWM) oft so stark, dass die automatische Temperaturabschaltung reagierte, somit wird man vermutlich ohne Kühlung oder großes Kühllayout auf der Platine auch nicht mehr als beim L298 erreichen.

L6202 für 1 Motor

Pinbelegung des Motortreibers:

L6202Pinbelegung.png

Den L6202 gibt es auch noch in anderen Gehäusebauformen: L6201 ist die SMD-Ausführung (SO20 / PowerSO20), L6203 hat ein "Multiwatt-11"-Gehäuse.

Schaltungsbeispiel:

L6202Anwendung.png

Kurze Erläuterung:

R1 schaltet die H-Brücke bei fehlendem PWM-Signal ab und ist entbehrlich. Anmerkung: dieser Widerstand sollte scheinbar doch etwas hochohmiger gewählt werden, in der Größenordnung 50kOhm, um das PWM-Signal nicht zu stark zu belasten. (Details folgen u.U. noch)

C1 stabilisiert eine interne Spannungsreferenz.

C4 und C5 sind so genannte boostrap-Kondensatoren, die unbedingt notwendig sind, damit der Motortreiber seine oberen FETs treiben kann (nähere Details im Datenblatt). Die Kapazität von C4/C5 soll für einen sicheren Betrieb jeweils mindestens 10nF betragen.

R2 und C6 bilden ein sog. Snubber-Netzwerk, welches zur Entstörung dient.

L6205 für 2 Motoren

L6205ic.gif L6205pinbelegung.gif

L6205.gif

TLE4202B / B57928

Der TLE4202B ist ein kompakter Motortreiber von Siemens im TO-220-Gehäuse und kann einen Motor mit maximal 2A treiben. Er kann von 3,5V-17V Betriebsspannung arbeiten (absoutes Maximum: 40V). Intern ist der TLE4202B analog aufgebaut, er besteht aus Komparatoren mit einer Leistungsendstufe. Die notwendigen Freilaufdioden sind bereits integriert. Der Treiber ist kurzschlussfest gegen Masse und schaltet bei Überhitzung ab. Leider lässt sich aufgrund des internen Aufbaus der Motorausgang nicht hochohmig schalten, es mangelt auch - im Vergleich zu anderen Motortreiberbausteinen - an einem separaten PWM-Eingang. Der Betrieb mit PWM ist trotzdem möglich TODO!. Zur Verlustleistung und Abwärme des Treibers je nach Laststrom wurde eine Messreihe durchgeführt (siehe unten). Bezugsquelle für den TLE4202B ist vorzugsweise Pollin aufgrund des attraktiven Preises (50 Cent).

Pinbelegung des Motortreibers TLE4202B (TO-220-Gehäuse):

TLE4202 Pins.png

Anwendungsschaltung laut Datenblatt (nachgezeichnet in Target):

TLE4202 Schematic.png

Die Kondensatoren (C2,C3) und Widerstände(R1,R2), die zwischen den Motoranschlüssen und Masse liegen, sind wichtig zur Schwingneigungsunterdrückung. Diese sog. Snubber-Netzwerke sind durchaus üblich, beispielsweise bei Audioverstärkern. Sie tragen hier zur Stabilität des Treibers bei. Ein Weglassen dieser Komponenten könnte zu wilden Schwingungen am Ausgang führen.

Die 1,7V-Referenz wird intern erzeugt und ist mit den invertierenden Eingängen der Komparatoren verbunden (über 50kOhm intern). Die Komparatoren vergleichen die Eingangssignale an IN1/IN2 mit dieser Spannungsreferenz und steuern dann den Ausgang auf High (wenn Eingangsspannung über Referenzspannung) oder auf Low (wenn Eingangsspannung unter der Referenzspannung). Im gezeigten Schaltplan wird die interne Referenz verwendet. Pin 2 wird dann nur mit einem Kondensator gegen Masse verbunden. Die Referenzspannung wird somit etwas stabilisiert.

Da die Referenz über 50kOhm intern an die invertierenden Eingänge geschaltet ist, könnte auch von außen an Pin 2 eine andere beliebige (niederohmige) Referenzspannungsquelle eingespeist werden.

Wahrheitstabelle der Ansteuerung:

IN1 IN2 OUT1 OUT2 entspricht
L L - - Stop (Motor kurzschließen)
L H - + Motor dreht vorwärts
H L + - Motor dreht rückwärts
H H + + Stop (Motor kurzschließen)

Wie man hier noch einmal sieht, kann bei dieser Brücke die Verbindung zum Motor nicht getrennt werden, Motor ausschalten bedeutet hier den Motor kurzschließen, sodass er dann relativ abrupt stehen bleibt.

Es existiert auch ein TLE4203, welcher bis zu 4 Ampere treiben kann.

Messreihe

Zur Bestimmung der Verlustleistung und der am Treiber TLE4202B abfallenden Spannung wurde vom RN-User BMS eine Messreihe durchgeführt. Die Beschaltung des Treibers erfolgte nach Datenblatt, als Betriebsspannung wurde 12V gewählt. Eingang 1 des Treibers wurde auf GND gelegt und Eingang 2 mit +12V verbunden. Als Last diente eine einstellbare elektronische Last. Die Messreihe wurde bei Raumtemperatur durchgeführt. Der Treiber wurde zunächst ohne Kühlkörper betrieben, um zu ermitteln, bis zu welchem Strom bzw. welcher Verlustleistung ein gefahrloser Betrieb noch ohne Kühlkörper möglich ist.

Bei verschiedenen Lastströmen im Bereich 0...2,5 A erfolgte die Messung der Ausgangsspannung des Treibers sowie dessen Temperatur. Für Lastströme größer 1 A wurde ein Kühlkörper verwendet, um den Treiber durch zu hohe Abwärme nicht zu gefährden. Die automatische Abschaltung bei Übertemperatur wurde dabei nicht herausgefordert. Da Temperaturwerte für die Fälle mit und ohne Kühlkörper nicht direkt vergleichbar sind, wurden für die höheren Ströme keine Temperaturen mehr gemessen, zumindest aber die abfallende Spannung am Treiber.

Die Ruhestromaufnahme des Treibers wurde mit 16mA gemessen, an 12V ergibt das eine Leistungsaufnahme von knapp 0,2 Watt. Möchte man die gesamte Verlustleistung des Treibers berechnen, müssen diese 0,2 Watt zu den Werten aus der Tabelle addiert werden.

Laststrom Ausgangsspannung Spannungsabfall am Treiber [*1] Verlustleistung aufgrund Laststrom [*1] Temperatur
0,0 A 11,3 V 0,7 V
0,1 A 11,0 V 1,0 V 0,10 W 34 °C
0,2 A 10,9 V 1,1 V 0,22 W 41 °C
0,3 A 10,8 V 1,2 V 0,36 W 50 °C
0,4 A 10,7 V 1,3 V 0,52 W 58 °C
0,5 A 10,6 V 1,4 V 0,70 W 66 °C
0,6 A 10,4 V 1,6 V 0,96 W 75 °C
0,7 A 10,3 V 1,7 V 1,19 W 87 °C
0,8 A 10,2 V 1,8 V 1,44 W 97 °C
1,0 A 10,1 V 1,9 V 1,90 W
1,5 A 9,5 V 2,5 V 3,75 W
2,0 A 8,9 V 3,1 V 6,20 W
2,5 A [*2] 8,0 V 4,0 V 10,00 W

[*1] : Diese Werte wurden berechnet.

[*2] : Der Treiber ist nur bis 2 A spezifiziert, konnte aber kurzzeitig auch 2,5 A liefern.

Kommentar:

  • Allgemein gilt: Mit steigendem Laststrom steigt der Spannungsabfall am Treiber sowie auch dessen Verlustleistung.
  • Wie bei anderen Treibern auch ist der laut Datenblatt versprochene maximale Ausgangsstrom des Treibers (hier 2A) nur mit vernünftiger Kühlung erreichbar.
  • Nimmt man als gefahrlose Betriebstemperatur etwa 60 °C an ( um sich nicht die Finger daran zu verbrennen ;) ), kann man an den Messwerten ablesen, dass dann nur knapp ein halbes Ampere Dauerstrom möglich sind.
  • Für größere Ströme sollte unbedingt ein geeigneter Kühlkörper verwendet werden.

Warnung: Wird der Treiber bei höheren Dauerströmen dennoch ohne Kühlkörper und damit bei hohen Temperaturen betrieben, muss damit gerechnet werden, dass die Lebensdauer und Zuverlässigkeit des Treibers drastisch sinkt!

TLE5205

Der TLE5205 ist ein starker Motortreiber im TO-220-Gehäuse, welcher einen Motor bis 5A treiben kann. Freilaufdioden sind hier bereits integriert. Der Motortreiber kann falsche Verbindungen am Ausgang erkennen und zeigt dies durch ein Signal am Errorflag (EF) an. Kurzschlüsse der Ausgänge mit der Versorgung (V+ und GND) und eine zu hohe Stromaufnahme der Last können erkannt werden, der Ausgang wird dann innerhalb 50µS abgeschaltet und das EF gesetzt (open-drain-Ausgang!). Ein offener Ausgang wird ebenfalls detektiert. Bei Überhitzung (150°C) schaltet das IC ab. Achtung! Bei Unterspannung ("Under Voltage Lockout" im Datenblatt) schaltet sich die Brücke ebenfalls ab (bei etwa 5V). Die Betriebsspannung des ICs kann maximal 40V betragen, die Testschaltungen im Datenblatt werden im Bereich von 6-18V betrieben. Die Ruhestromaufnahme des ICs beträgt typisch 5mA (maximal 10mA).

TLE5205 Pins.png

Der TLE5205 ist nicht pinkompatibel zum TLE4202(B) !

Wie man sieht, kommt dieser Motortreiber mit sehr wenig Außenbeschaltung aus:

TLE5205 Schaltplan.png

Als Elko kann auch gerne ein Typ mit größerer Kapazität verwendet werden (im Datenblatt 4700µF in der Testschaltung). Es können auch mehrere Elkos mit kleiner Kapazität parallel geschaltet werden (günstiger ESR).

Im Fehlerfall (Kurzschluss, Überhitzung, Leerlauf) wird "ERROR" auf GND gelegt. Durch Ändern der Pegel an den Eingängen wird das EF wieder zurückgesetzt (liefert dann High, +5V). Der Pull-up-Widerstand ist notwendig, da der EF-Pin nur gegen GND schalten kann (open-drain-Ausgang).

Die Brücke verhält sich im Vergleich zu den anderen gezeigten Motortreibern etwas anders an ihren Eingängen:

Wahrheitstabelle (laut Datenblatt):

IN1 IN2 OUT1 OUT2 entspricht
L L + - Motor dreht vorwärts
L H - + Motor dreht rückwärts
H L - - Motor stop (kurzschließen, OUT1+2 auf GND)
H H Z Z Motor ausschalten (Verbindung trennen)

Wahrheitstabelle (nach Fehlersuche mit zwei Bauteilen herausgefunden):

IN1 IN2 OUT1 OUT2 entspricht
L L - - Motor stop (kurzschließen, OUT1+2 auf GND)
L H - + Motor dreht rückwärts
H L + - Motor dreht vorwärts
H H Z Z Motor ausschalten (Verbindung trennen)

Leider mangelt es bei dieser Brücke an einem separaten Eingang für PWM. Man könnte zunächst auf die Idee kommen, den Eingang IN1 mit PWM zu verbinden und IN2 als Richtungssignal zu nehmen. Das das allerdings nicht ganz wie erhofft klappt soll hier erklärt werden (ist nicht ganz einfach): Der Motor würde beim Vorwärtsfahren abwechselnd drehen und gebremst (kurzgeschlossen) werden, beim Rückwärtsfahren allerdings abwechselnd drehen und ausgeschaltet werden (nicht kurzgeschlossen). Das Verhalten des Motors je nach Richtung wäre dann unterschiedlich.

Abhilfe verschafft diese kleine Schaltung an den Eingängen des Motortreibers:

TLE5205 PWM.png

Ist PWM auf 5V, dann wird der Motor ausgeschaltet (Verbindung wird getrennt).

Ist PWM auf 0V, so gelten die angelegten Pegel zur Richtungsinformation.

Vorsicht! Bei den zuvor vorgestellten Motortreibern ist dieses Verhalten genau anders herum.

Weitere Treiber-ICs

Es gibt noch mehr ähnliche Treiber ICs, die hier nur kurz aufgezählt werden sollten. Für Details sollte man ohnehin ins Datenblatt schauen.

  • L293E ähnlich dem L293B, mit Strommessung
  • BTS7741G max. 7A , nur eine Brücke, SMD
  • MC33887 max. 5A, nur eine Brücke, SMD
  • BA6209 1,6A pk (max. continuous output current nicht angegeben), max.18V, nur eine Brücke, SIP10-Gehäuse
  • TA7267 1A (3A pk), 6-18V, eine Brücke, HSIP7-Gehäuse
  • TB6568KQ 1,5A (3A pk), 10-45V, eine Brücke, HSIP7-Gehäuse

Grundsätzliche Hinweise zum Aufbau

  • Die Spannungsversorgung der Motortreiber sollte ausreichend gepuffert werden, um Spannungseinbrüche durch z.B. hohe Anlaufströme der Motoren zu vermeiden. Ein Elko mit einer Kapazität von 100µF...2200µF (je nach Stromaufnahme des Motors) sollte in der Versorgungsleitung vorgesehen werden. Typen mit geringem ESR sind von Vorteil; es können auch mehrere "normale" Elkos parallel geschaltet werden. Ein zusätzlicher 100nF Keramikkondensator filtert hochfrequente Störungen auf der Versorgungsleitung.
  • Die Verkabelung von der Versorgungsleitung zum Motortreiber und von dort bis hin zu den Motoren muss einen ausreichenden Querschnitt aufweisen; ein Verdrillen der Kabel verbessert dabei die EMV (elektromagnetische Verträglichkeit). Die Kabel der Motoren sollten nach Möglichkeit Abstand zu Sensorleitungen halten und möglichst nicht zu ihnen parallel liegen, um eine Verfälschung der Sensormesswerte durch Induktion zu unterbinden. Dies ist vor allem bei einer Steuerung der Motoren mit PWM und bei hochohmigen Sensorimpedanzen enorm wichtig. Die Motoren sollten grundsätzlich immer entstört werden (siehe unten). Ein Kondensator zwischen den Anschlüssen ist das Minimum.
  • Wird der Motortreiber mit PWM betrieben, sollte die Frequenz der PWM möglichst niedrig eingestellt werden. Dadurch werden Verluste beim Umschalten in der H-Brücke reduziert (v.a. bei MOSFETs).
  • Freilaufdioden müssen für die auftretenden Ströme ausgelegt und auch "schnell genug" sein. Sind in den Motortreiberbausteinen bereits Freilaufdioden ("free wheeling diodes") integriert, so müssen in der Regel keine zusätzlichen Dioden in die Schaltung eingebaut werden. Zusätzliche Freilaufdioden schaden allerdings auch nicht.
  • Ein Motortreiber kann seinen angegebenen Nennstrom in Realität meist nicht ohne Kühlung erreichen (kurzzeitig durchaus möglich, langfristig aber nicht). Der Motortreiber sollte lieber etwas überdimensioniert werden (in Bezug auf maximal lieferbaren Strom), um einerseits die Verluste zu reduzieren, andererseits aber auch die Möglichkeit zum zukünftigen Umbau und Betrieb des Roboters mit leistungsfähigeren Motoren zu gewährleisten.
  • Am Motor steht aufgrund der internen Verluste (z.B. RDS-ON-Widerstand bei MOSFETs) meist nicht mehr die volle Betriebsspannung zur Verfügung. Insbesondere bei niedrigen Versorgungsspannungen macht sich dies bemerkbar.
  • Vor allem wenn größere Ströme von den Motoren benötigt werden, sollte man auf ein möglichst sternförmiges Massekonzept (Verdrahtung) der Schaltung achten, notfalls muss Steuerung und Leistungsteil aus getrennten Spannungsquellen versorgt werden.
  • Die Motortreiber sollten auswechselbar sein, z.B. durch Verwendung einer IC-Fassung. Bei Defekt oder Überlastung kann der Motortreiber zügig und einfach ausgetauscht werden (besonders auf Roboter-Wettbewerben sinnvoll!). Nicht für alle Gehäusebauformen der Motortreiber sind Sockel verfügbar.
  • Bei einem Platinenlayout für Motortreiber sind breite Leiterbahnen und Kühlflächen (häufig große Masseflächen) sowie kurze Verbindungen vorteilhaft, um Spannungsabfälle auf den Leitungen zu reduzieren und Wärme abzuführen.

Noch mehr Power gewünscht?

Obwohl der L298 schon einiges abdeckt, so kommt er spätestens bei den Scheibenwischermotoren langsam an seine Grenzen. Bei starker Belastung können solche Motoren kurzzeitig bis ca. 10 A und mehr ziehen. Für solch starke Motoren gibt es jetzt einen ganz interessanten Motorchip aus dem Kfz-Bereich: VNH3SP (Datenblatt u.a. im Roboternetz Download-Bereich). Mit ihm lassen sich sogar recht große Motoren ansteuern; vorausgesetzt, man kühlt ihn entsprechend, so verträgt der Chip bis zu 30 A. Aber selbst ohne Kühlung bietet er bedeutet mehr Leistung als der L298. Das Schöne: die Ansteuerung ist kaum anders als beim L298 und L293D.

Kleiner Nachteil: Da es ein SMD-Chip mit 1mm Kontaktabstand ist, muss man schon eine geeignete Platine (spezielles Layout mit Kühlflächen) und etwas Löterfahrung besitzen. Inzwischen gibt es aber schon verschiedene RN-Projekte mit dem Chip (RN-Power, RN-Mini H-Bridge), Platinen und Chip können über den Robotikhardware.de-Platinenservice bezogen werden.


Minihbridge ansteuerung.gif


Alternativ zum SMD-Chip VNH3SP30 gibt es noch die Alternative VNH2SP30. Dieser Chip erlaubt zwar nur Motorspannungen zwischen 6 und 16 Volt (Achtung: schaltet über 16V ab aufgrund Overvoltage Protection!), jedoch hat er einen wesentlich geringeren Innenwiderstand und wird deshalb nur etwa halb so warm wie der VNH3SP30. Aus diesem Grund eignet er sich auch ideal für kleine Doppelmotorsteuerungen. Natürlich gibt's auch hierfür ein Projekt und eine Bauanleitung, siehe RN-VNH2Dualmotor

Das Schöne ist, dass es dieses RN-Projekt jetzt auch als Fertigmodul gibt!


Rndualmotoransteuerung.jpeg

Vergleich der gezeigten Motortreiber(-bausteine)

Bitte kontrollieren, korregieren und/oder ergänzen :)

Bezeichnung Bauformen Mot. UB Ausg.strom Freilaufd. Curr.Sens. ca. Preis REI CON CSD POL RHW
L293B DIL-16 2 4.5V-36V 1A keine nein 1-2 € X . . . .
L293D DIL-16 2 4.5V-36V 600mA integriert nein 1-2 € X X X . X
L293DD SO-16 (SMD) 2 4.5V-36V 600mA integriert nein 2-3 € X X . . .
L293E DIL-20 2 4.5V-36V 1A keine ja 2-3 € X X X . .
L298 Multiwatt-15, Pow.SO20 2 4,5V-50V 2A keine ja 2-4 € X X X X X
L6201/PS SO20/PowerSO20 1 12V-48V 1A / 4A(!?) integriert ja 5 € X . . . .
L6202 DIL-18 1 12V-48V 1,5-2 A integriert ja 3-4 € X . X . .
L6203 Multiwatt-11 1 12V-48V 2A / (4A!?) integriert ja 4 € X . X . .
L6205 DIL-20,(Power)SO-20 2 8V-52V 2,8A integriert ja 7 € X . . . X
TLE4202 TO220 1 3,5-17V 2A integriert nein 0,50 € . . . X .
TLE5205 TO220, P-DSO-20 1 6V-40V 5A integriert nein (5 €) . . . . .
BTS7741G P-DSO-28-14 1 4,8V-42V 7A integriert nein 2 € . . . X .
VNH2SP30 MultiPowerSO-30 1 5,5V-16V [*1] 30A integriert ja 10 € . . . . X
VNH3SP30 MultiPowerSO-30 1 5,5V-36V [*2] 30A integriert nein 6-9 € X . . . X
Bezeichnung Bauformen Mot. UB Ausg.strom Freilaufd. Curr.Sens. ca. Preis REI CON CSD POL RHW

Abkürzungen:

  • Mot. = Wie viele Motoren können gesteuert werden
  • UB = Betriebsspannungsbereich
  • Ausg.strom = Ausgangsstrom
  • Freilaufd. = Freilaufdioden
  • Curr.Sens. = Current Sensing = Messung des Motorstroms

Verfügbarkeit bei Händlern:

  • REI = reichelt.de
  • CON = conrad.de
  • CSD = csd-electronics.de
  • POL = pollin.de
  • RHW = robotikhardware.de

X bedeutet verfügbar, . bedeutet nicht verfügbar

Anmerkungen zu Motortreibern vom Typ VNH2SP30 und VNH3SP30:

  • [*1]: schaltet bei typ. 19V (16V-22V) ab aufgrund Overvoltage Protection
  • [*2]: schaltet bei typ. 43V (>36V) ab aufgrund Overvoltage Protection

(keine Garantie auf Vollständigkeit und Richtigkeit der Angaben)

Stand: März 2012

Endstufen mit I2C-Bus / RS232

Motoransteuerung über RS232, I2C, RC
Verwendet man eine der oben vorgestellten H-Bridges, so wird immer vorausgesetzt, dass ein PWM-Signal und mehrere Ports zur Ansteuerung bereitstehen. Ist dies nicht der Fall, weil diese vielleicht schon belegt sind, so lassen sich Endstufen durch einen zusätzlichen Microcontroller auch um beliebige Schnittstellen erweitern. Insbesondere über I2C lassen sich dadurch mehrere Motorboards über einen einzigen Bus ansteuern. Ein Beispiel ist der programmierte Controller MOTCTRL, der speziell für diese Aufgabe gedacht ist. Die Grundschaltung sieht man in der rechten Skizze.

Varianten der Ansteuerung

Verwendung von Logikgattern

Pro Motor, der angesteuert werden soll, werden normalerweise je drei Pins benötigt: 1xPWM und 2xRichtung. Sollen viele Motoren gleichzeitig angesteuert werden, so werden auch viele Pins des Mikrocontrollers benötigt. Durch die Verwendung von NAND oder NOT-Gattern können Pins für die Richtungsinformation gespart werden:

Motortreiber NAND NOT.png

Aufgabe der Gatter ist es, das Richtungsbit zu invertieren. So liegt an IN1 der gleiche Pegel wie an Richtung an, an IN2 der invertierte Pegel. Somit ist es möglich, mit nur einem Richtungsbit auszukommen. Es wird die Verwendung von 74HC00 (enthält 4x NAND) oder 74HC04 (enthält 6x NOT) - Logikgattern empfohlen. Selbstverständlich müssen die Logikgatter für den Betrieb auch mit der Versorgungsspannung (meist +5V) verbunden werden, üblicherweise wird die Versorgung auch mit einem 100nF Keramikkondensator in der Nähe des Gatters abgeblockt. (Nicht im Plan eingezeichnet!)

Vorteile dieser Variante:

  • 50% der Mikrocontrollerpins für die Richtungsinformation werden eingespart und können für andere Zwecke verwendet werden
  • Programmierung wird einfacher, da weniger Pins gesteuert werden müssen

Nachteile:

  • Es wird ein zusätzliches IC benötigt
  • kurze Laufzeitunterschiede der Signale an IN1 und IN2 (in der Regel vernachlässigbar)
  • Motor kann nicht kurzgeschlossen (also gebremst) werden, da hierzu gleiche Pegel an IN1 und IN2 notwendig wären; Ausschalten geschieht weiterhin über PWM

Inverter können auch aus Transistoren und Widerständen gebaut werden:

Inverter npn pnp.png

Verwendung von Portexpandern

Mit einem I2C-Portexpander wie z.B. PCF8574 oder mit einem Seriell-Parallel-Schieberegister 74HC595 könnten die Richtungsinformationen IN1, IN2 usw. geschaltet werden.

Vorteile:

  • Einsparung der Mikrocontrollerpins für die Richtungsinformation
  • Bremsen ist weiterhin möglich (im Gegensatz zur Variante mit den Logikgattern)

Nachteile:

  • Es wird ein zusätzliches IC benötigt
  • leicht erhöhter Softwareaufwand für den Mikrocontroller (I2C-Bus oder Ansteuerung des Schieberegisters)
  • Verzögerungen durch die Ansteuerung


Messung der Stromaufnahme des gesteuerten Motors

Es kann manchmal interessant sein, zu wissen, wie viel Strom die Motoren eines Roboters verbrauchen. Man könnte so einen Anhaltspunkt zur Belastung der Motoren erhalten. Ein hoher Motorstrom würde z.B. bedeuten, dass der Roboter gegen eine Wand fährt o.ä. Außerdem könnte eine Regelung der Motoren realisiert werden.

Die meisten Motortreiber-ICs haben dafür SENSE-Anschlüsse. Wer keine Messung des Motorstroms benötigt, verbindet die SENSE-Anschlüsse mit GND (vgl. Schaltplan des L298). Ansonsten ist vorgesehen, einen Widerstand zwischen SENSE und GND einzubauen. Durch diesen Widerstand, der auch "Shunt" genannt wird, fließt auch genau der Strom, der durch den Motor fließt. Nach dem Ohmschen Gesetz U = R * I fällt dann an diesem Shunt eine Spannung ab, die proportional zum Motorstrom ist. Die Spannung lässt sich dann relativ einfach mit einem Mikrocontroller messen, indem man diese Spannung an einen Analogeingang anlegt.

Beispiel: Es soll ein Shunt mit 0,1 Ohm verwendet werden, der Motor benötigt 2A. Dann fallen am Shunt U = R * I = 0,1Ohm * 2A = 0,2V ab.

Ein Mikrocontroller könnte diese Spannung direkt mit dem ADC messen. Da ein Mikrocontroller allerdings einen Messbereich bis meistens 5V aufweist, würde sich nur eine geringe Auflösung des gemessenen Motorstroms ergeben. Man könnte nun den Shunt größer machen (z.B. 1 Ohm), um größere Spannungen zum Messen zu erhalten. Allerdings fehlt die Spannung, die am Shunt abfällt, dann natürlich am Motor, sodass dieser langsamer dreht. Außerdem wird im Shunt elektrische Energie in Wärme umgesetzt, sodass diese für die entsprechende Leistung ausgelegt werden müssten. Die elektrische Leistung berechnet sich aus P = I² * R. Würde man beim angegebenen Beispiel einen 1-Ohm Widerstand einsetzen, müsste dieser schon P = (2A)² * 1Ohm = 4W verheizen!

Eine bessere Lösung ist die Verwendung eines niederohmigen Shunts (z.B. 0,1 Ohm) sowie eines Operationsverstärkers, welcher die am Shunt gemessene Spannung quasi multipliziert und somit für den Mikrocontroller besser messbar macht.

Strommessung shunt tiefpass opamp.png

Gezeigt wird in der Abbildung der Shunt (links), dahinter ein RC-Tiefpassfilter, welches den Strom mittelt, indem kurze Stromspitzen reduziert werden und den Messwert glätten/stabilisieren soll, sowie ein Operationsverstärker als nichtinvertierender Verstärker. Der Kondensator C2 dient nur zur Entstörung der Versorgungsspannung des Operationsverstärkers.

Als Operationsverstärker kann z.B. der LM358 (zwei in einem Gehäuse) oder der LM324 (vier in einem Gehäuse) verwendet werden. Dieser kommt mit asymmetrischer Betriebsspannung - also +5V und GND - aus. Der Operationsverstärker wird in der Grundschaltung des nichtinvertierenden Verstärkers betrieben. Der Verstärkungsfaktor berechnet sich aus 1+(R3/R4); hier also 1+(10k/1k)=11. Aus einer Eingangsspannung von z.B. 0,2V würden dann 0,2V * 11 = 2,2V am Ausgang werden. Diese Spannung ließe sich schon viel besser mit einem Mikrocontroller messen. Es können auch andere Widerstandswerte für R3 und R4 verwendet werden, um den Verstärkungsfaktor anzupassen.

Die genauen Werte des Tiefpassfilters sind unkritisch, es können auch andere Werte als in der Abbildung verwendet werden. Man könnte das Filter auch weglassen.

Anmerkung: Der LM358 bzw. LM324 kann bei 5V Betriebsspannung am Ausgang nur bis etwa 3,5V aussteuern. Sollen noch höhere Spannungen am Ausgang erreicht werden, muss entweder die Betriebsspannung des OpAmps erhöht oder ein sog. Rail-To-Rail Operationsverstärker (z.B. LMC6484) eingesetzt werden, der bis knapp an die Versorgungsspannung aussteuern kann.

Bei ungeschickter Masseführung kann es zu Fehlmessungen kommen. Nicht nur in diesem Fall, sondern grundsätzlich ist es besser, einen Subtrahierer mit OpAmp anstatt der oben gezeigten Schaltung aufzubauen. Eine solche Schaltung ist nicht viel umfangreicher, es sind nur zwei zusätzliche Widerstände notwendig. Sind präzise Messungen erforderlich, sollte der Widerstandswert des Shunts nachgemessen werden, außerdem wird die Verwendung von Metallfilmwiderständen mit einer Toleranz von 1% in der weiteren OpAmp-Schaltung empfohlen.

Motor ausschalten - Varianten

Muss man über einen so banalen Zusammenhang noch Worte verlieren? JA! Es gibt hier zwei Varianten, die durchaus wichtig sind, und in manchen Anwendungsgebieten auch einen großen Unterschied machen. Naheliegend ist, die Verbindung zum Motor einfach zu trennen, sodass dieser noch ausrollen kann. Die andere Möglichkeit ist, die beiden Anschlüsse des Motors miteinander zu verbinden. Damit wird der Motor abgebremst. Den Effekt kann jeder einmal praktisch ausprobieren: Verbinde die beiden Anschlüsse des Motors und versuche dann, an der Achse zu drehen. Vor allem bei Getriebemotoren ist dann diese Bremse spürbar.

Motor aus.png

Für eine Geschwindigkeitsregelung mittels PWM sollte das "normale Ausschalten" gewählt werden, da sich der Roboter sonst wohl kaum vom Fleck bewegt. Soll der Roboter schnell anhalten oder für einen relativ kleinen Winkel drehen, so sollten die Motoren gebremst werden.

Andererseits sollte die Hardware falls erwünscht auch beide Betriebsarten unterstützen können. Jedoch sind dazu nicht alle Motortreiber in der Lage. Probleme kann das Bremsen machen, da der Motor dann über den Motortreiber kurzgeschlossen wird (z.B. beide Anschlüsse mit GND verbunden). Dann fließt im Moment des Bremsens ein Strom durch den Treiber, welcher dann Leistung in Form von Wärme abgeben muss.

Motortreiber aus Operationsverstärkern können z.B. ihren Ausgang nicht hochohmig schalten, es liegt immer eine belastbare Spannung am Ausgang an, somit können diese nur bremsen und nicht "normal" ausschalten.

Hier eine Tabelle die zeigt, welche Motortreiber welche Variante beherrschen können:

Treiber L293B/D/DD/E L298 L620x OpAmp TLE4202B TLE5202 BTS7741 VNH2SP30 Variante mit Logikgattern
Ausschalten ja ja ja nein nein ja nein ja ja
Bremsen ja ja ja ja ja ja ja ja nein

Und nie vergessen Motoren zu entstören

Das Entstören dient dazu, eine Ausbreitung von Funkstörungen durch das sogenannte "Bürstenfeuer" zu verhindern. Und so wird's gemacht:


Entstoerung.gif

Bei Steuerung des Motors per PWM sind die Induktivitäten hilfreich. Sie verhindern das bei den steilen Flanken des PWM Signals große Ströme duch die Kondensatoren fließen. Alternativ zu den 2 Kondensatoren (C2,C3) gegen das Gehäuse kann das Gehäuse auch direkt an Masse angeschlosssen werden. Bei einer PWM Steuerung ist das die bessere Lösung.

Siehe auch

Weblinks