<style>[reveal]{opacity:1 !important;transform:none !important}</style>

LED am Mikrocontroller-Pin

LED direkt an Arduino oder ESP32: Vorwiderstand mit dem Spannungsabfall im Pin berechnen, Pin- und Summenstrom prüfen und weiße LEDs an 3,3 V verstehen.

7 Min. LesezeitLED ArduinoLED am GPIOVorwiderstand ArduinoLED ESP32

Eine LED am Pin ist meist das Erste, was du mit einem Mikrocontroller baust, und später die Statusanzeige jedes Geräts. Sie braucht nur einen Widerstand. Trotzdem steckt in der kleinen Schaltung mehr als „330 Ω, passt schon“: Der Pin selbst hat einen Innenwiderstand, er verträgt nur begrenzt Strom, und an 3,3 V wird eine weiße oder blaue LED zum Glücksspiel.

Hier schließt du eine LED so an einen Arduino Uno oder ESP32 an, dass sie hell genug leuchtet, den Pin schont und bei jedem Exemplar ähnlich hell ist.

Schaltplan

Zwei LEDs an einem ATmega328P: LED1 an PB0 (D8, Pin 14) über R1 330 Ω nach Masse, leuchtet bei HIGH; LED2 von +5 V über R2 330 Ω an PB1 (D9, Pin 15), leuchtet bei LOW
Zwei Arten, eine LED anzuschließen: Der Pin liefert den Strom (D8) oder nimmt ihn auf (D9).
  • IC1, ATmega328P: der Mikrocontroller des Arduino Uno. D8 und D9 sind die Pins 14 und 15 im DIP-28-Gehäuse.
  • R1, R2, 330 Ω: die Vorwiderstände. Sie legen den Strom fest. Ohne sie bestimmt der Pin den Strom, und das sind schnell 60 mA und mehr.
  • LED1, LED2: rote Standard-LEDs, 3 oder 5 mm, Flussspannung um 2,0 V.
  • D8 als Quelle: Der Pin liefert bei HIGH Strom, die LED hängt mit der Kathode an Masse.
  • D9 als Senke: Die LED hängt mit der Anode an +5 V. Der Pin zieht bei LOW Strom nach Masse, bei HIGH liegen beide Seiten auf 5 V, und die LED ist aus.

So funktioniert die Schaltung

Eine LED ist eine Diode: Unterhalb ihrer Flussspannung fließt kaum Strom, darüber steigt er steil an. Schon 0,1 V mehr können den Strom vervielfachen. Deshalb kann man eine LED nicht an eine Spannung legen, sondern nur einen Strom einstellen. Das übernimmt der Widerstand: Er nimmt die Differenz zwischen Pinspannung und Flussspannung auf, und nach dem ohmschen Gesetz ergibt sich daraus der Strom.

Der Pin ist dabei keine ideale Spannungsquelle. Im Ausgang des ATmega328P sitzen zwei Transistoren, die zusammen wie ein Widerstand von etwa 20 bis 30 Ω wirken. Bei 10 mA liefert ein HIGH-Pin also nicht 5,0 V, sondern rund 4,8 V. Das Datenblatt garantiert bei 20 mA nur noch 4,2 V.

Ob du die LED als Quelle oder Senke anschließt, ist beim ATmega328P fast egal: Er treibt in beide Richtungen etwa gleich stark. Die Senke stammt aus Zeiten, in denen Logikbausteine nach Masse deutlich mehr Strom ziehen als liefern konnten, und ist bei Open-Drain-Ausgängen die einzige Möglichkeit. Die Quelle ist intuitiver: HIGH heißt an. Wichtig bei der Senke: Die Anode gehört an dieselbe Spannung, mit der der Controller läuft.

Dimensionierung

1. Strom festlegen. Moderne LEDs leuchten schon mit 2 bis 5 mA gut sichtbar. 20 mA, der Nennstrom vieler 5-mm-LEDs, sind für eine Statusanzeige zu hell und belasten den Pin unnötig. Ziel hier: etwa 8 mA.

2. Widerstand berechnen. Für die rote LED am Uno mit UF = 2,0 V und UOH ≈ 4,8 V bei diesem Strom:

R = UOH − UFIF = 4,8 V − 2,0 V8 mA = 350 Ω

Aus der E12-Reihe passt 330 Ω. Damit fließen (4,8 V − 2,0 V) / 330 Ω ≈ 8,5 mA.

Rechner

LED-Vorwiderstand

Rechnerisch
200 Ω
Nimm (E12)
220 Ω
Strom damit
13,6 mA
Verlustleistung
40,9 mW

Belastbarkeit des Widerstands mindestens 1/8 W (doppelte Reserve).

+−U = 5 VR = 220 ΩUR = 3 VI = 13,6 mAAKUF = 2 VU = UR + UF

3. Grenzwerte prüfen.

4. Am ESP32. Hier liegt die Pinspannung bei 3,3 V, unter Last eher 3,2 V, und es bleibt viel weniger Spannung für den Widerstand. Für eine rote LED mit 5 mA:

R = 3,2 V − 2,0 V5 mA = 240 Ω → 220 Ω, I ≈ 5,5 mA

Für eine weiße LED mit UF ≈ 2,9 V bleiben nur 0,3 V: R = 0,3 V / 5 mA = 60 Ω, gewählt 68 Ω, typisch 4,4 mA. Das Problem: Die Flussspannung streut von Exemplar zu Exemplar um ±0,2 V und mehr. Bei 0,3 V Reserve ändert das den Strom drastisch.

LED-Strom über der Abweichung der Flussspannung: am Uno mit 330 Ω bleibt der Strom zwischen 7,6 und 9,1 mA, am ESP32 mit roter LED zwischen 4,1 und 6,4 mA, mit weißer LED und 68 Ω schwankt er zwischen 0 und 7,4 mA
Je weniger Spannung am Widerstand bleibt, desto stärker schlägt die Streuung der LED durch. Die weiße LED am ESP32 ist mal hell, mal fast dunkel.

Faustregel: Am Widerstand sollte mindestens 1 V abfallen. Weiße, blaue und echte grüne LEDs schaltest du am ESP32 deshalb über einen Transistor aus 5 V, siehe NPN-Transistor als Low-Side-Schalter. Ausführlich zur Rechnung: LED-Vorwiderstand berechnen.

Code

LED1 blinkt, LED2 wird per PWM gedimmt. Weil LED2 als Senke hängt, ist die Logik umgekehrt: 255 heißt aus.

const int LED1 = 8;    // Quelle: HIGH = an
const int LED2 = 9;    // Senke: LOW = an, PWM-fähig

void setup() {
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
}

void loop() {
  digitalWrite(LED1, !digitalRead(LED1));   // umschalten
  for (int h = 0; h <= 255; h += 5) {
    analogWrite(LED2, 255 - h);             // invertiert: 255 = aus
    delay(10);
  }
}

Auf dem ESP32 funktioniert derselbe Code mit anderen Pinnummern, etwa GPIO 25 und 26; analogWrite nutzt dort den LED-PWM-Baustein des Chips.

Bauteilliste

BezeichnerWert/TypHinweis
IC1ATmega328P (Arduino Uno)D8 = Pin 14, D9 = Pin 15
R1, R2330 Ω, 0,25 Wam ESP32 mit roter LED: 220 Ω
LED1, LED2LED rot, 3 mm oder 5 mmlanges Bein = Anode

Varianten

Mehrere LEDs. Jede LED bekommt ihren eigenen Widerstand. Parallel an einen gemeinsamen Widerstand gelegt, nimmt die LED mit der kleinsten Flussspannung fast den ganzen Strom. Für viele LEDs bieten sich ein Schieberegister 74HC595 oder adressierbare LED-Streifen an.

RGB-LED. Eine RGB-LED sind drei LEDs in einem Gehäuse. Bei gemeinsamer Kathode hängt jede Farbe wie LED1 an einem Pin, bei gemeinsamer Anode wie LED2. Jede Farbe braucht ihren eigenen Widerstand, denn Rot hat rund 2,0 V, Grün und Blau etwa 3,0 V Flussspannung.

Größere Ströme. Ab etwa 20 mA oder bei LEDs an 12 V schaltet ein Transistor: NPN-Transistor als Low-Side-Schalter oder MOSFET als Low-Side-Schalter.

Typische Fehler

  • LED verpolt: Sie bleibt dunkel. Das kürzere Bein und die abgeflachte Gehäuseseite markieren die Kathode.
  • Widerstand vergessen: Die LED leuchtet grell, der Pin liefert weit über 40 mA. Pin und LED altern schnell oder fallen sofort aus.
  • Logik der Senke übersehen: LED2 leuchtet, wenn das Programm „aus“ meint. Bei einer Senke ist LOW an.
  • 5-V-LED-Schaltung am ESP32: Hängt die Anode an 5 V und der Pin ist HIGH (3,3 V), fließt über die LED trotzdem Strom in den Pin hinein, und die LED glimmt. Am ESP32 gehört die Anode an 3,3 V.
  • Weiße LED am ESP32 unterschiedlich hell: Zu wenig Spannungsreserve am Widerstand, siehe oben. Abhilfe: Transistor und 5 V.

Selbsttest

Welchen Vorwiderstand brauchst du für eine grüne LED mit 3,0 V bei 5 mA an einem 5-V-Pin, der unter Last 4,9 V liefert?

(4,9 V − 3,0 V) / 5 mA = 380 Ω; aus der E12-Reihe 390 Ω, dann fließen 4,9 mA.

Warum genügt die Rechnung mit 5,0 V am Pin nicht ganz?

Der Ausgang hat einen Innenwiderstand von 20 bis 30 Ω. Unter Last sinkt die Pinspannung, bei 20 mA garantiert nur auf 4,2 V.

Darfst du an D8 bis D13 sechs LEDs mit je 20 mA betreiben?

Besser nicht: Zusammen sind es 120 mA, das Datenblatt empfiehlt für diese Pingruppe höchstens 100 mA. Mit 330-Ω-Widerständen und 8,5 mA je LED bleibst du bei 51 mA.

Warum leuchtet eine weiße LED am ESP32 mal hell, mal kaum?

Über dem Widerstand bleiben nur etwa 0,3 V. Schon 0,2 V Streuung der Flussspannung ändern den Strom um zwei Drittel.

Bei welchem Pegel leuchtet eine LED, die von +5 V über einen Widerstand an den Pin geht?

Bei LOW, denn dann fließt Strom von +5 V durch die LED in den Pin.