../icons/Logo.pngPraktische Elektronik


Viele LEDs an wenigen Anschlüssen von Mikrocontrollern betreiben.


list.png

LEDs an Mikrocontroller

LEDs werden häufig zur Anzeige von Schaltzuständen verwendet. In den meisten Fällen wird ein Gatterausgang pro LED benötigt. Bei vielen LEDs muss bei Mikrocontrollern auf eine Version mit mehr Anschlüssen ausgewichen werden.

Im Folgenden werden Schaltungen vorgestellt, bei denen die Anzahl der benötigten Anschlüsse drastisch reduziert werden kann.

LED-Matrix

LED-Matrix-an-Mikrocontroller.png
Bild 1: Eine Matrix von LEDs

Bild 1 zeigt eine Matrix mit 3*4 = 12 LEDs. Drei horizontale Anschlüsse wählen immer eine LED-Reihe mit 1 aus. Die übrigen horizontalen Anschlüsse sind 0. Die vertikalen Anschlüsse der LEDs, die leuchten sollen, werden auf 0 gelegt. Alle übrigen vertikalen Anschlüsse sind 1.

Es können nur die LEDs leuchten, deren horizontaler Anschluss 1 ist und der vertikale 0. Alle anderen LEDs haben entweder an beiden Anschlüssen den gleichen Pegel oder werden in Sperrrichtung betrieben.

Es können nur die LEDs einer einzigen horizontalen Reihe gleichzeitig aktiviert werden. Der Mikrocontroller zeigt dann eine Reihe nach der anderen an. Wenn das schnell genug geht, leuchten für uns alle ausgewählten LEDs. Dieses Verfahren nennt man Multiplex-Betrieb.

Bei r Reihen und v Spalten können so r*v LEDs mit r+v Anschlüssen angezeigt werden. Im obigen Beispiel können 12 LEDs mit 7 Anschlüssen aktiviert werden. Für 6 LEDs benötigen wir 2 Reihen und 3 Spalten, also 5 Anschlüsse.

Belastung der Anschlüsse

Jede der r LED-Reihen wird im Multiplex-Betrieb nur 1/r der Zeit angezeigt. Damit sie hell genug sind, muss der Strom durch die LEDs r mal so groß sein. Das bedeutet, dass die Vorwiderstände der LEDs so bemessen sein müssen, dass der r fache Strom durch die LED fließt.

Im Beispiel mit 3 Reihen muss der Widerstand von 1kΩ auf 330Ω reduziert werden. Durch die horizontale Leitung muss jedoch der Strom von bis zu vier LEDs fließen können. Das Gleiche gilt für die vertikalen Leitungen. Jede Leitung muss den r * v fachen Strom schalten können. Bei großen Matrizen sind daher häufig Treiber-Transistoren erforderlich.

Antiparallele LED-Matrix

Eine raffinierte Schaltung verwendet antiparallel geschaltete LEDs.

Diese Schaltungsvariante wird auch Charlieplexing bezeichnet. Sie wurde zuerst von Charlie Allen von Maxim Integrated vorgestellt.

Sechs-LEDs-an-Mikrocontroller.png
Bild 1: Sechs LEDs an drei Anschlüsse

Wie funktioniert das?

Wenn z.B. der Anschluss E1 1 ist und die Anschlüsse E2 und E3 0 sind, leuchten LED1 und LED5. LED2, LED4 und LED6 leuchten nicht, weil sie sperren. Die LED3 leuchtet nicht, weil die Spannung an beiden Anschlüssen - fast - gleich ist. Jedenfalls übersteigt die Spannung nicht die Flussspannung von LED3.

Wenn der Anschluss E1 0 ist und die Anschlüsse E2 und E3 1 sind, leuchten LED2 und LED4.

Wir können alle LEDs ausschalten, indem wir alle E1, E2 und E3 gemeinsam auf 0 oder 1 liegen.

Eine einzelne LED können wir nicht einschalten, entweder zwei oder keine.

Mit normaler Logik ist es nicht möglich, eine einzelne LED einzuschalten.

Die Ausgänge von Mikrocontrollern haben noch einen dritten Zustand: abgeschaltet. Solche Ausgänge werden Tristate- oder 3-State-Ausgänge genannt. Im dritten Zustand ist ein Tristate-Ausgang hochohmig und nimmt weder eine 0 noch eine 1 an. Stattdessen verhält er sich wie ein Eingang. (Ein Tristate-Anschluss wird häufig als Eingang in Mikrocontrollern verwendet.)

Betrachten wir noch einmal unsere Schaltung.

Wenn alle Ausgänge im Tristate sind, leuchtet keine LED.

Ist E1 1, E2 0 und E3 im 3-state, leuchtet nur die LED1.

Ist E1 0, E2 1 und E3 im 3-state, leuchtet nur die LED2.

Die anderen vier LEDs können durch andere Kombinationen eingeschaltet werden.

Mit dieser Schaltung können bei n Anschlüssen bis zu n*(n-1) LEDs betrieben werden. Bei einer Matrix sind es nur maximal n*n/4.

Mit dieser Schaltung können mehr LEDs pro Anschluss geschaltet werden als mit einer Matrix-Schaltung.

Der Strom einer LED fließt immer durch zwei Widerstände, z.B.

E1 - R1 - LED1 - R2 - E2

Die beiden Widerstände müssen also immer halb so groß sein wie bei einem einzelnen Widerstand.

Anstelle eines einzelnen Widerstandes mit 1kΩ müssten wir z.B. zwei Widerstände mit 470Ω verwenden.

Bei bestimmten Konstellationen der Anschlüsse leuchten zwei LEDs. Wenn z.B. der Anschluss E1 1 ist und die Anschlüsse E2 und E3 0 sind, leuchten LED1 und LED5.

Zwei-LEDs-an-Mikrocontroller.png
Bild 2: Effektive Schaltung von zwei LEDs.

In Bild 2 ist leicht zu erkennen, dass durch den Widerstand R1 der Strom von zwei LEDs fließt, durch R2 und R3 jeweils nur einer. Dadurch reduziert sich der Strom durch jede LED auf 2/3 des Stroms bei nur einer LED. Die beiden LEDs leuchten also dunkler. Der Unterschied ist beim Umschalten auf zwei LEDs zwar bemerkbar, kann aber in vielen Fällen toleriert werden.

Tabelle der Kombinationen

Die folgende Tabelle zeigt die möglichen Kombinationen für drei Anschlüsse.

E1 E2 E3 LED
t t t -
t t 0 -
t t 1 -
t 0 t -
t 0 0 -
t 0 1 LED4
t 1 t -
t 1 0 LED3
t 1 1 -
0 t t -
0 t 0 -
0 t 1 LED6
0 0 t -
0 0 0 -
0 0 1 LED4 + LED6
0 1 t LED2
0 1 0 LDE2 + LED3
0 1 1 LED2 + LED6
1 t t -
1 t 0 LED5
1 t 1 -
1 0 t LED1
1 0 0 LED1 + LED5
1 0 1 LED1 + LED4
1 1 t -
1 1 0 LED3 + LED5
1 1 1 -

Multiplex-Betrieb

Im Multiplex-Betrieb können beliebige Kombinationen von leuchtenden LEDs dargestellt werden.

Allerdings müssen die Anschlüsse im Multiplex-Betrieb einen hohen Strom liefern. Wenn m LEDs gleichzeitig leuchten, muss der Strom m mal so hoch sein. Werden die LEDs im Multiplex betrieben, müssen die Widerstände also R/(2*m) betragen.

Bei unseren 6 LEDs mit einem Vorwiderstand R=1kΩ für eine normale LED müsste hier ein Widerstand von 1kΩ/12 = 0,0833kΩ -> 82Ω verwendet werden. Der Strom wäre (5V-2V)/82Ω=37mA. Viele Mikrocontroller sind dazu nicht in der Lage.