Wie man LEDs an Mikrocontroller anschließt
|
Eine LED schließt man an eine positive Gleichspannung an, dann die LED,
dann ein Widerstand zur Begrenzung des Stroms, dann ein Schalter, z.B. in Form
eines bipolaren npn-Transistors, zuletzt gegen Masse, also die Null-Volt Leitung
der Betriebsspannung.
Die LED muß richtigherum gepolt sein. Falsch herum bleibt sie dunkel, es
geht aber auch nichts kaputt. Widerstand und LED darf man von der Reihenfolge
her auch austauschen, also den Widerstand an die Betriebsspannung, die LED
am Transistor.
Für den Transistor nimmt man einen beliebigen npn-Transistor, z.B. BC547C
mit einem Basisvorwiderstand von 1..10kOhm.
|
Zur Berechnung des Vorwiderstands gibt es massenhaft LED-Rechner im Web.
Aber es geht auch ohne Rechner einfach:
R = (Ubetrieb - Uled) / 20 mA
mit:
20 mA = Strom, den die meisten LEDs brauchen (1)
Ubetrieb = Betriebsspannung, oft 5 oder 12 Volt
Uled = Flußspannung der LED, hängt von der Farbe ab:
Beispielrechnung für eine rote LED an 5 Volt: (5V-1.5V)/0.02A = 175 Ohm
Praktisch sieht man einer LED nicht an, wenn sie etwas weniger Strom
erhält, d.h., man wählt den Widerstand einfach ein bisschen größer.
220 Ohm ist ein Standardwert, der bei 5 Volt für rot, gelb und grün geht;
330 Ohm geht auch immer noch.
Farbe | Flußspannung | Widerstand bei 5 Volt |
rote LED | 1.5V | 220..330 Ohm |
gelbe LED | 2.2V | 220..330 Ohm |
grüne LED | 2.2V | 220..330 Ohm |
blaue LED | 4.5V (2) | 33 Ohm |
weiße LED | 3.3 - 4.5V (2) | 100..33 Ohm |
Mit dem berechneten Widerstand kann man eine LED nun an der geplanten Betriebsspannung direkt anschließen, und sie wird leuchten. Das kann man ohne
Mikrocontroller testen, und auch mit dem Widerstand die Helligkeit evtl.
noch ein bisschen variieren. Den Widerstand nicht kleiner machen, als
berechnet, nur größer ist erlaubt!
|
Mit dem Transistor sollte jeder Mikrocontroller in der Lage sein die LED
so anzusteuern.
Wenn der Mikrocontroller genug Strom liefern kann geht as aber
auch ohne Transistor:
man kann eine LED vom Mikrocontroller gegen Masse schalten lassen (oben
im Bild), oder gegen Plus (unten).
Die erste Methode ist ein bisschen verquer, weil man die LED
EINschaltet, wenn man eine log. 0 ausgibt, und mit einer log. 1 AUSschaltet.
Diese verquere Methode ergibt heute eigentlich nur noch Sinn, wenn der
Mikrocontroller es von der Strombelastbarkeit der Ausgänge nur so kann.
Meine bevorzugten Mikrocontroller von Atmel aus den Reihen AtTiny, AtMega,
AtXMega können beide Varianten problemlos, sprich, 20mA für eine LED schaffen
die in beiden gezeigten Varianten. (3)
|
Das ist doch alles falsch?!?
Ja und nein. Hier paar Richtigstellungen bzw. Verfeinerungen.
(1) Betriebsstrom 20mA gilt für praktisch alle Anzeige-LEDs.
Es gibt auch Leuchtmittel, die deutlich mehr Strom brauchen,
sogenannte Stromspar-LEDs wollen nur 2 mA,
und es gibt noch viele weitere Ausnahmen.
Genaueres erfährt man vom Datenblatt der LED:
dort nach dem Betriebsstrom suchen, der dort gerne Gruppenstrom genannt wird.
Oft einfacher: im Datenblatt eine Angabe mit der Einheit mA suchen!
Allerdings sind die 20mA so verbreitet, dass ich bei
LEDs aus der Bastelkiste kein Datenblatt mehr heraussuche.
(2) blaue und weiße LEDs weichen gerne von den genannten Flussspannungen ab,
selten auch mal die anderen Farben.
Auch hier gilt: Datenblatt lesen!
Alternativ: LED mit 220 Ohm Vorwiderstand an ein Labornetzteil anschließen,
Spannung langsam von der minimalen Ausgangsspannug hochdrehen bis 20 mA fließen.
Nun kann man die Flußspannung über der LED mit einem Multimeter messen.
(3) Ob der Mikrocontroller den Strom liefern kann, kann auch
hier nur ein Blick in das Datenblatt, diesmal das des Controllers, beantworten.
Oft steht die Strombelastbarkeit gleich vorne unter "Features".
Alternativ muss man meist Kurven heraussuchen, z.B. "IO-Pin-Sink-Current"
und dann den passenden Kurvenpunkt heraussuchen.
Wenn kein Punkt für 20mA in der Kurve vorkommt bedeutet das meist,
dass der Controller überlastet wäre.
Mehrere LEDs an einen Mikrocontrollerausgang anschließen
Wenn jede LED einzeln ansteuerbar sein soll, dann muss man wie oben beschrieben
arbeiten. Jedoch sollen beispielsweise an einem Modellauto die Blinker links
vorne und links hinten sicherlich immer nur zusammen aufleuchten.
Hier kann man einen der wertvollen
Pins des Mikrocontroller sparen, indem man mehrere LEDs von einem Pin
ansteuert.
|
Methode eins spart Strom: man schaltet mehrere LEDs hintereinander.
Also LED, LED, ..., LED und ein Widerstand, geschaltet durch einen
Transistor oder Mikrocontroller, wie oben beschrieben.
Für die Rechnung addiert man die Flußspannungen der ganzen
LEDs und rechnet ansonsten wie oben. Zwei rote LEDs an 5 Volt brauchen
dann einen Widerstand von (5V - (1,5V + 1,5V)) / 0.02A = 100 Ohm.
|
Aber wenn die Summe der Flußspannungen über die Betriebsspannung
hinausgeht, dann funktioniert das Verfahren nicht mehr, die LEDs bleiben
dunkel.
Einzelne blaue oder weiße LEDs können deshalb schone alleine an 3,3 Volt
Controllern Probleme haben.
Dagegen hilft, dass man den Bipolar-Transistor (siehe ganz oben) benutzt,
der auch höhere Spannungen schalten kann, als der Mikrocontroller selbst.
Liefert das Netzteil also z.B. 9 Volt, die irgendwo in der Schaltung auf
5 Volt für den Controller heruntergeregelt werden, dann kann man die LEDs direkt an die 9 Volt anschließen, und mit einem Transistor vom Controller
her ansteuern. Damit kann man dann auch zwei blaue LEDs auf einmal ansteuern.
(Gerechnet wird der LED-Vorwiderstand auch hier wie schon gezeigt.)
Auf keinen Fall mehr Spannung vom Controller schalten lassen, als seine
Betriebsspannung beträgt! Der Transistor ist Pflicht!
|
Methode zwei schaltet mehrere LED-Stränge parallel. Jeder Strang wird mit einem
Widerstand auf 20mA eingestellt, wie immer.
Jeder Strang darf dabei auch mehrere LEDs in Reihe nach der ersten Methode
haben.
Aber es entsteht ein neues Problem:
die Ströme der Stränge addieren sich für den elektronischen Schalter.
Controller sind mit 20mA schon sehr gefordert, bei zwei Strängen,
somit 40mA wird's wahrscheinlich schon zu Eng.
Mit Transistor geht da schon viel mehr,
fünf parallele Stränge mit zusammen 100mA sollten kein Problem sein.
Wenn noch mehr zusammenkommt empfehle ich ein Relais einzusetzen.
Bitte nicht auf die Idee kommen, mehrere LED-Stränge mit nur einem Widerstand
zu betreiben. Kleine Unterschiede zwischen den LEDs in den verschiedenen
Strängen führen im Allgemeinen dazu, dass ein Strang mehr Strom bekommt.
Der Helligkeitsunterschied ist meist deutlich sichtbar.
|
Relais an einen Mikrocontroller anschließen
|
Wenn ich's schon erwähne: hier ist die Methode, wie man Relais per
Mikrocontroller ansteuert. Nicht viel anders als eine LED. Relais
brauchen typischerweise mehr Strom als ein Mikrocontroller liefern kann,
weshalb der Transistor nur selten fehlen wird.
Die Betriebsspannung sollte zur Ansteuerspannung des Relais passen. Meist
sind die Relais hier recht tolerant, d.h., ein 12 V-Relais schaltet meist
auch schon bei 9 Volt. Mal wieder: Datenblatt lesen oder ausprobieren!
Die Diode antiparallel zur Relaisspule ist Pflicht. Sie schließt die
Spannungsspitze kurz, die beim Abschalten des Ansteuerstroms entsteht,
und die den Transistor früher oder später zerstören würde.
|
FETs als Schalter
FET? Ja, geht auch statt bipolar-Transistor. Kostet statt 4 Cent für den
Transistor und 3 Cent für den Widerstand 50 Cent für den FET. Ist mir hier,
also für LEDs und Relais zu teuer.
Kommt nur sinnvoll vor, wenn man gerade einen FET übrig hat, oder
wenn die Dinger mal billiger werden.
Übrigens schalte ich die Schutzdiode bei Relais auch hin, wenn ein FET als
Schalter dient, auch wenn die weit verbreitete Meinung besteht, dass FETs
eine Schutzdiode integriert haben, die das erledigt.
Der Transistor bleibt durch diese integrierte Diode zwar heil, aber dann
sucht sich die Spannungsspitze halt ein anderes Opfer.
Vier Cent für die Diode investiere ich gerne zur Sicherheit.
Weitergehende Ansteuerungswünsche
Helligkeitssteuerung: siehe im Web unter PWM (Pulse Width Modulation, dt.
Pulsdauermodulation, selten dann auch mal PDM abgekürzt).
Ansteuerung von vielen LEDs: siehe im Web unter Matrixansteuerung.
Vieleicht schreib' ich zu diesen Themen auch mal mehr. Bisher noch nicht.