../icons/Logo.png

Praktische Elektronik


So werden viele LEDs an wenige Anschlüsse von Mikrocontrollern angeschlossen.


Home

So funktioniert's

LEDs an Mikrocontroller


LEDs an Mikrocontroller

Häufig werden LEDs verwendet, um Zustände von Schaltungen anzuzeigen. Meistens benötigt man einen Gatterausgang pro LED. Bei vielen LEDs muss man bei Mikrocontrollern auf eine Version mit mehr Anschlüssen ausweichen.

Im Folgenden werden Schaltungen vorgestellt, bei der die Zahl 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 Reihe von LEDs mit 1 aus. Die anderen horizontalen Anschlüsse sind 0. Die vertikalen Anschlüsse derjenigen LEDs, die leuchten sollen, werden auf 0 gelegt. Alle übrigen vertikalen Anschlüsse sind 1.

Es können nur diejenigen 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 immer nur die LED einer einzigen horizontalen Reihe aktiviert zur Zeit werden. Mit dem Mikrocontroller werden dann Reihen nacheinander angezeigt. Wenn das schnell genug erfolgt, leuchten für uns dann alle ausgewählten LEDs. Man nennt diese Verfahren Multiplex-Betrieb.

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

Belastung der Anschlüsse

Jede der r Reihen von LEDs wird im Multiplex-Betrieb nur 1/r der Zeit angezeigt. Damit sie hell genug sind, muss der Strom durch die LEDs r mal so hoch 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Ω verringert werden. Aber durch die horizontale Leitung muss 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 deshalb häufig Treiber-Transistoren notwendig.

Antiparallele LED-Matrix

Eine pfiffige Schaltung verwendet antiparallel geschaltete LEDs.

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

Wie funktioniert dass?

Wenn beispielsweise der Anschluss E1 1 ist und die Anschlüsse E2 und E3 0 sind, würden LED1 und LED5 leuchten. LED2, LED4 und LED6 leuchten nicht, weil sie sperren. Die LED3 leuchtet nicht, weil die Spannung an beiden Anschlüssen - fast - gleich ist. Auf jeden Fall liegt die Spannung nicht über der Flussspannung der LED3.

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

Wir können alle LEDs ausschalten indem 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 aber noch einen dritten Zustand: abgeschaltet. Derartige Ausgänge werden als Tristate- oder 3-state-Ausgänge bezeichnet. Im dritten Zustand ist ein Tristate-Ausgang hochohmig und nimmt weder eine 0 noch eine 1 an. Er verhält sich vielmehr wie ein Eingang. (Ein Anschluss im Tristate wird in Mikrocontroller häufig als Eingang benutzt.)

Betrachten wir jetzt wieder unsere Schaltung.

Wenn alle Ausgänge im Tristate sind wird keine LED leuchten.

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

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

Die anderen vier LEDs können mit weiteren Kombinationen eingeschaltet werden.

Mit dieser Schaltung können mit 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 bei einer Matrix-Schaltung.

Der Strom einer LED fließt immer über zwei Widerstände

z.B.
E1 - R1 - LED1 - R2 - E2

Die beiden Widerstände müssen daher immer halb so groß wie bei einem einzelnen Widerstand sein. Wir müssten z.B anstelle eines einzelnen Widerstands von 1kΩ mit zwei von 470Ω einsetzen.

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

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

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

Multiplex-Betrieb

Beliebige Kombinationen von leuchtenden LEDs können im Multiplex-Betrieb dargestellt werden.

Die Anschlüsse müssen im Multiplex-Betrieb allerdings einen hohen Strom liefern. Bei m gleichzeitig leuchtenden LEDs muss der Strom m mal so hoch sein. Werden die LEDs im Multiplex betrieben, müssen die Widerstände also R/(2*m) sein. Schaltungen mit Treiber-Transistoren sind sind nicht möglich. Damit ist diese Schaltung auf wenige gleichzeitig leuchtende LEDs beschränkt.

Bei unseren 6 LEDs mit einem Vorwiderstand R=1kΩ für eine normale LED müsste hier ein Widerstand von 1kΩ/12 = 0,0833Ω -> 820Ω eingesetzt werden. Der Strom wäre (5V-2V)/820Ω=37mA. Das können viele Mikrocontroller nicht leisten.

Attention pin In Compiled Tips ‘N Tricks Guide von Microchip wird im TIP #2 Input/Output Multiplexing eine Schaltung vorgestellt, die eine kleine Macke hat: Bei GP0=1, GP2=3-state und GP2=0 leuchten neben der hellen LED6 auch LED2 und LED4 schwach.

Tabelle der Kombinationen

Die folgende Tabelle zeigt die möglichen Kombination 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 -