Externe LEDs am Arduino anschließen

https://oer-informatik.de/externe_led_ansteuern_nodemcu

tl/dr; (ca. 10 min Lesezeit): Nach dem “Hello World” geht es an die digitalen Ausgänge: Wie können LED angeschlossen werden? Welche gibt es? Welche Vorwiderstände benötigen sie? Woran erkenne ich den Widerstandswert? Teil 2 der NodeMCU-Reihe.

Wenn wir externe LED mit dem NodeMCU ansteuern wollen, müssen wir uns zunächst mit den elektronischen Spezifikationen der LED vertraut machen. Unser NodeMCU-Board (ESP8266 oder ESP32) liefert an den einzelnen Pins HIGH = 3,3V oder LOW= 0V, somit können wir LED an einer Spannung von 3,3V betreiben. Arduino Unos laufen mit 5V, hier gelten die Überlegungen analog, jedoch mit anderen Werten (siehe Tabelle unten). Typische Betriebsspannungen der LED sind etwa:

LED Farbe Betriebsspannung
rot 1,6 - 2,2 V
gelb 1,9 - 2,5V
grün 1,9 - 2,5V
blau 2,7 - 3,5 V
weiß 2,7 - 3,5 V

Einfacher Fall: blaue und weiße LED

Eine blaue oder weiße LED können wir am NodeMCU also an 3,3V direkt anschließen, bei den anderen Farben müssen wir uns noch etwas überlegen (dazu später mehr). In den Beispielen gehe ich von einem nodeMCU auf ESP8266-Basis aus (daher Pin D6). Bei einem ESP32 gilt alles entsprechend, nur der Pin müsste anders heißen (z.B. GPIO4).

Wir haben zwei Möglichkeiten, die benötigten 3,3V zu erhalten:

  • zwischen einem Pin (z.B. D6) und GND (0V), wenn wir D6 auf HIGH (also 3,3V) stellen (high-active)
Schaltplan: LED highactive direkt an 3,3V zwischen GND und D6
Schaltplan: LED highactive direkt an 3,3V zwischen GND und D6
  • zwischen einem Pin (z.B. D6) und 3V3 (3,3V), wenn wir D6 auf LOW (also 0V) stellen (low-active)
Schaltplan: LED lowactive direkt zwischen 3V3 und D6
Schaltplan: LED lowactive direkt zwischen 3V3 und D6

Wichtig hierbei ist, dass wir die LED mit dem Pluspol an den jeweilig positiveren Pin anschließen. Der Pluspol (die Anode) ist daran zu erkennen, dass er von allem mehr hat: mehr Kragen und mehr (längeres) Beinchen. Der Minuspol der LED (Kathode) ist an der LED abgeflacht und hat ein kürzeres Beinchen. Ist die LED verkehrt herum verbunden, sperrt sie und leuchtet nicht.

Schaltplan: LED highactive direkt an 3,3V zwischen GND und D6
Schaltplan: LED highactive direkt an 3,3V zwischen GND und D6

LED mit Vorwiderstand

Im Fall einer roten, gelben oder grünen LED müssen wir die anliegende Spannung auf unter 3,3V mindern, um die LED nicht zu zerstören. Wir fügen ein zusätzliches Bauteil in den Stromkreis ein: einen Vorwiderstand. Und wir nutzen eine der Grundgesetzmäßigkeiten des elektrischen Stromkreises, das zweite Kirchhoff’sche Gesetz:

Die Summe aller Spannungen beim Umlauf in einer geschlossenen Masche ist Null.

LED mit Vorwiderstand
LED mit Vorwiderstand

Wir haben in unserem Stromkreis die Spannungsquelle (D6 und GND) mit U_{ges} =3,3V, die LED (an einer roten LED sollen U_{LED}=1,6V fallen) und einen noch unbekannten Vorwiderstand R_{V}, an dem die Spannung U_{V} fällt.

Es gilt also:

\sum{U_i}=0

Die Spannungen müssen in einem Maschendurchlauf (Pfeilrichtung) summiert werden, wenn der Pfeil gegen die Umlaufrichtung verläuft (bei U_{ges}) mit negativem Vorzeichen!

\Rightarrow U_{V} + U_{LED} - U_{ges} = 0

\Rightarrow U_{V} = U_{ges} - U_{LED} = 3,3V - 1,6 V = 1,7 V

Am Vorwiderstand müssen also 1,7V fallen, damit die LED am Betriebspunkt betrieben werden kann.

Um den Widerstand dimensionieren zu können, müssen wir dem Datenblatt der LED noch die Betriebsstromstärke entnehmen. Üblicherweise liegt diese bei LED um die I_{LED} = 20 mA. Da in unverzweigten Stromkreisen die Stromstärke an jedem Punkt identisch ist, können wir diese Stromstärke auch für den Vorwiderstand annehmen.

Mit Hilfe der Gleichung für den elektrischen Widerstand können wir den benötigten Vorwiderstandswert ausrechnen:

R_{V} = \frac{U_{V}}{I_{LED}} = \frac{1,7V}{0,20A} = 85 \frac{V}{A} = 85 \Omega

Nicht alle Widerstandswerte sind als Bauteil verfügbar, wir müssen daher auf diskrete vorhandene Werte ausweichen. Diese sollten nicht zu niedrig gewählt werden, da sonst eine höhere Stromstärke im Stromkreis fließt. Im ungünstigsten Fall können dadurch Bauteile oder Leiterbahnen zerstört werden. Bei einem zu hoch gewählten Widerstandswert leuchtet die LED mit etwas geringerer Leuchtkraft - das ist vertretbar und unproblematisch.

Widerstände können als Bauteil gekauft werden und sind in Serien sortiert, die unterschiedlich viele Werte je Dekade (je Faktor 10) haben. Die E3 Reihe hat z.B. drei Werte je Dekade: 10 \Omega, 22 \Omega, 47 \Omega und dann in der nächsten Dekade: 100 \Omega, 220 \Omega, 470 \Omega usw. Bei der E6 Reihe sind es entsprechend sechs Werte je Dekade, bei der E12-Reihe zwölf und so weiter. Beispielhaft sind hier für die erste Dekade (1 \Omega <= R < 10 \Omega) die Werte der E-Reihen genannt:

Widerstandswerte - Übersicht der E-Reihen E3 - E24
Widerstandswerte - Übersicht der E-Reihen E3 - E24

Oft liegen nur die Widerstände der E3-Reihe zwischen 100 \Omega und 10 k\Omega vor. Bei nodeMCU-Controllern kann dann für alle LED-Farben zum 100 \Omega-Widerstand gegriffen werden (bei blauen und weißen LED kann ggf. auf diesen verzichtet werden - siehe Datenblatt oder eigene Messung). Bei 5V-basierten Microcontrollern wie dem Arduino wäre für alle LED ein 220 \Omega-Widerstand passend. Wenn präzisere E-Reihen vorliegen, können die Widerstände an Hand der folgenden Tabelle ausgewählt werden:

LED Farbe Betriebsspannung errechneter Vorwiderstandswert an 3,3V Microcontroller (z.B: nodeMCU), ausgewählte Widerstände je E-Reihe errechneter Vorwiderstandswert an 5 V Microcontroller (z.B: Arduino), ausgewählte Widerstände je E-Reihe
rot 1,6 - 2,2 V 55 \Omega - 85 \Omega
E3/E6/E12: 100 \Omega
E24: 91 \Omega
140 \Omega - 170 \Omega
E3/E6: 220 \Omega
E12/E24: 180 \Omega
gelb 1,9 - 2,5V 40 \Omega - 70 \Omega
E3/E6: 100 \Omega
E12/E24: 82 \Omega
125 \Omega - 155 \Omega
E3/E6: 220 \Omega
E12/E24: 180 \Omega
grün 1,9 - 2,5V 40 \Omega - 70 \Omega
E3/E6: 100 \Omega
E12/E24: 82 \Omega
125 \Omega - 155 \Omega
E3/E6: 220 \Omega
E12/E24: 180 \Omega
blau 2,7 - 3,5 V 0 \Omega - 30 \Omega
E3: 47 \Omega
E6/E12/E24: 33 \Omega
75 \Omega - 125 \Omega
E3: 220 \Omega
E6/E12/E24: 150 \Omega
weiß 2,7 - 3,5 V 0 \Omega - 30 \Omega
E3: 47 \Omega
E6/E12/E24: 33 \Omega
75 \Omega - 125 \Omega
E3: 220 \Omega
E6/E12/E24: 150 \Omega

Da die Widerstände als Bauteil zu klein sind, um Werte darauf aufzudrucken, wurde eine Farbcodierung entwickelt. Vier oder fünf Farbringe beschreiben den jeweiligen Wert:

  • Bei vier Ringen: zwei Zahlenwerte, ein Multiplikator, ein Ring zur Angabe der Toleranz (silber oder gold).

  • Bei fünf Ringen: drei Zahlenwerte, ein Multiplikator, ein Ring zur Angabe der Toleranz (grün, blau, violett).

Farbcodierung von Widerstandswerten
Farbcodierung von Widerstandswerten

Ein 100 \Omega (5\%) Widerstand mit vier Ringen hat die Farbfolge: braun-schwarz-braun-gold. Weitere verbreitete Beispiele mit 4 Ringen:

Farbcodierung von Widerstandswerten
Farbcodierung von Widerstandswerten

Ein 100 \Omega (1\%) Widerstand mit fünf Ringen hat die Farbfolge: braun-schwarz-schwarz-schwarz-braun. Weitere verbreitete Beispiele mit 5 Ringen:

Farbcodierung von Widerstandswerten
Farbcodierung von Widerstandswerten

Aufbau der Schaltung mit externen LED auf einem Breadboard

Das Breadboard führt oben und unten je eine blaue Schiene für Ground (GND) und eine rote Schiene für 3,3 Volt (3V3), die waagerecht durchkontaktiert sind und mit den entsprechenden Anschlüssen des NodeMCU verbunden werden sollten.

In der Mitte des Breadboards sind oberhalb und unterhalb der mittigen Nut jeweils 5 Pins senkrecht durchkontaktiert.

Wir schließen die LED an, in dem wir von der unteren GND-Schiene kommend auf eine Spalte der unteren Hälfte gehen, von dort über einen 100 \Omega - Widerstand auf die obere Hälfte, dort in der selben Spalte die Kathode der LED anschließen (das kürzere Beinchen). Die Anode der LED steckt in der benachbarten Spalte, von wo eine Brücke zu einem der gewählten digitalen Ausgänge geht. Der Beispielcode hier ist für einen ESP8266-basierten NodeMCU (D6, D7 und D8). Für andere Microcontroller müssen einfach die entsprechenden GPIO-Bezeichnungen ersetzt werden (also z.B. GPIO25, GPIO26, GPIO27).

Aufbau einer Ampel mit dem NodeMCU und den Anschlüssen D6, D7 und D8
Aufbau einer Ampel mit dem NodeMCU und den Anschlüssen D6, D7 und D8

Ein zugehöriger Sketch nutzt die selben Elemente, die wir schon beim “Hello World” kennengelernt hatten - nur mit den gewählten Anschlüssen der LED. Diesmal sind die LED highactive, leuchten also bei anliegendem HIGH-Signal. Eine Ampelschaltung könnte etwa so aussehen:

Weitere Literatur und Quellen

Quellen und offene Ressourcen (OER)

Die Ursprungstexte (als Markdown), Grafiken und zugrunde liegende Diagrammquelltexte finden sich (soweit möglich in weiterbearbeitbarer Form) in folgendem git-Repository:

https://gitlab.com/oer-informatik/mcu/arduino-esp.

Sofern nicht explizit anderweitig angegeben sind sie zur Nutzung als Open Education Resource (OER) unter Namensnennung (H. Stein, oer-informatik.de) freigegeben gemäß der Creative Commons Namensnennung 4.0 International Lizenz (CC BY 4.0).

Creative Commons Lizenzvertrag

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: