www.mikrocontroller.net

LED-Matrix

Eine 5×7 LED-Matrix

In einer LED-Matrix sind jeweils die Kathoden und Anoden der LEDs in Zeilen bzw. Spalten verbunden. Der Vorteil besteht darin, dass weniger Kontakte nach außen geführt und angesteuert werden müssen, ebenso sinkt der Verdrahtungsaufwand im Modul bzw. auf der Platine. Die Ansteuerung erfolgt dabei im sogenannten Multiplexbetrieb. Prinzipiell kann man sowohl die Zeilen als auch die Spalten multiplexen. Die nachfolgende Beschreibung bezieht sich auf das Multiplexen von Spalten.

Inhaltsverzeichnis

[Bearbeiten] Multiplexbetrieb

Multiplexverfahren (Wikipedia)

Der Trick einer LED-Matrix besteht darin, dass jeweils immer nur eine Spalte wirklich leuchtet. Die anderen sind ausgeschaltet. Wird nun in schneller Folge jede Spalte einmal angeschaltet, so entsteht auf grund der Trägheit des menschlichen Auges ein scheinbar vollständiges Bild, bei dem alle LEDs gleichzeitig leuchten können. Wird dieser Zyklus schnell genug durchlaufen ist das Bild flimmerfrei, was praktisch ab ca. 100Hz erreicht wird. In Ausnahmefällen kann jedoch eine bewegte LED-Matrix auch bei höheren Multiplexfrequenzen als flimmernd erscheinen (z. B. LED-Bremsleuchten, LED-Anzeigen an Zügen oder Strassenbahnen). Der Ablauf der Steuerung ist recht einfach.

  1. Spalte C1 einschalten, alle anderen Spalten auschalten, Muster für Spalte C1 an Zeilen R1..R7 anlegen
  2. Spaltenmultiplexzeit warten
  3. Spalte C2 einschalten, alle anderen Spalten auschalten, Muster für Spalte C2 an Zeilen R1..R7 anlegen
  4. Spaltenmultiplexzeit warten
  5. Spalte C3 einschalten, alle anderen Spalten auschalten, Muster für Spalte C3 an Zeilen R1..R7 anlegen
  6. Spaltenmultiplexzeit warten
  7. Spalte C4 einschalten, alle anderen Spalten auschalten, Muster für Spalte C4 an Zeilen R1..R7 anlegen
  8. Spaltenmultiplexzeit warten
  9. Spalte C5 einschalten, alle anderen Spalten auschalten, Muster für Spalte C5 an Zeilen R1..R7 anlegen
  10. Spaltenmultiplexzeit warten
  11. Zyklus beginnt bei 1.

Praktisch wird man dazu einen Timer per Interrupt verwenden, keine Warteschleifen.

Multiplexzeitdiagramm


LEDs IOs Vorwiderstände
16 8 4
64 16 8
1024 64 32

Durch Einsatz der Multiplexverfahrens können mit relativ wenigen Ansteuerbauteilen (IO-Pins, Transistoren, Stromquellen) sehr viele LEDs gesteuert werden. Während bei direkter Ansteuerung für jede LED ein IO-Pin sowie eine Stromquelle bzw. Vorwiderstand benötig würde, ist in einer zweiachsigen LED-Matrix der Aufwand für die Bauteile deutlich geringer:

\text{Anzahl der Bauteile} = \sqrt\text{Anzahl der LEDs}

[Bearbeiten] Ansteuerung

Der verringerte Aufwand an Bauteilen kommt jedoch nicht ohne Nachteile. Da jede Spalte in einer Matrix mit N Spalten immer nur für 1/N der Zeit für einen vollen Bildaufbau aktiv ist, muss in dieser Zeit die gleiche Lichtmenge (=Energie) abgegeben werden, damit die genauso hell erscheint, wie wenn sie konstant mit Strom versorgt wird. Dazu muss der N-fache Strom fliessen. Demensprechend müssen die Vorwiderstände bzw. Stromquellen dimensioniert sein. Doch das führt zu zwei Problemen.

  1. Der Pulsstrom durch eine LED kann nicht beliebig gesteigert werden. Genaue Angaben dazu gibt es im Datenblatt. Als grobe Abschätzung kann man sagen, dass die meisten LEDs bis etwa 1:10 gemuxt werden können, darüberhinaus werden die Pulsströme zu hoch (20mA Betriebsstrom => 200 mA Pulsstrom!)

  2. Die hohen Pulsströme verkraften die LEDs wirklich nur ganz kurz, sie brauchen die Ausschaltzeit um wieder abzukühlen! D.H. Die Ansteuerung des Multiplex darf NIE stehen bleiben, sonst brennen die LEDs durch! Für die Testphase der Matrix sowie Softwareentwicklung sollte man deshalb die Ströme stark veringern, die LEDs sind dann zwar wesenlich dunkler, überleben aber einen Softwareabsturz der Steuerung. Wenn am Ende alles getestet ist und man sich sicher ist daß die Steuerung funktioniert, kann man den Strom der Matrix wieder auf das volle Niveau erhöhen. Um ganz sicher zu gehen kann man einen Watchdog mit minimaler Laufzeit oder ein Monoflop verwenden, um im Fehlerfall die Stromversorgung bzw. Ansteuerung der LEDs abzuschalten.

Um die Helligkeit der LEDs im Multiplexbetrieb voll zu nutzen muss meistens ein höherer Strom geschaltet werden, als Mikrocontroller es können. Eine LED muss aufgrund ihrer Kennlinie an einer Stromquelle betrieben werden. Im einfachsten Fall ist das ein in Reihe geschalteter Widerstand an einer Spannungsquelle.

[Bearbeiten] Direkt

In einigen Projekten im Internet sieht man LED-Matritzen direkt per Mikrocontroller angesteuert, ohne Transistoren. Das geht praktisch nur mit Low-Current Bauteilen, sonst sind die LEDs auf Grund des geringen Stroms zu dunkel.

[Bearbeiten] Transistoren/Treiber

Das ist der Normalfall. Man kann diskrete Transistoren (z. B. BC846, BC337) oder Arrays (z. B. ULN2803) benutzen. Bei grossen Anzeigen mit vielen LEDs werden die Pulsströme bisweilen schon recht hoch. Hier wird man dann mehr auf MOSFETs zurück greifen (bei Strömen über 1A). Oft liegt auch die LED-Betriebsspannung über der Logikspannung, hier braucht man dann einen Pegelwandler bzw. sog. High Side Driver.

[Bearbeiten] Schieberegister

Ein Schieberegister ist im Prinzip ein Seriell-Parallel-Wandler. Das hat mit Multiplexbetrieb eigentlich nichts direkt zu tun, es ist vielmehr eine Erweiterung der IO-Pins (siehe auch Porterweiterung mit SPI und AVR-Tutorial: Schieberegister).

Eine praktische Umsetzung kann man hier sehen.

Multiplexansteuerung mit Schieberegistern


Eine weitere Schaltung mit Schieberegistern ist im Retro-Spiel zum Selberbauen Ping-Pong von Burkhard Kainka verwendet worden. Hier werden die 10 Zeilen mit Atmega8-Portpins gegen 12 Schieberegister-Spalten zweier 4094D CMOS-ICs geschaltet, um eine Matrix aus 120 roten SMD-LEDs zu steuern.

[Bearbeiten] Dimmen

Multiplexen kann auch mit PWM kombiniert werden. Dabei ist die Multiplexzeit einer Spalte gleich der PWM-Periodendauer. Allerdings kann hier der Rechenaufwand für die CPU schon recht hoch werden, da die meisten Mikrocontroller nicht so viele PWM-Kanäle in Hardware zur Verfügung stellen und die PWM in Software nachgebildet werden muss (Soft-PWM).

Falls die Multiplexzeit klein genug gewählt wird, kann man in Grenzen auch per gezieltem Ein- und Abschalten in Grenzen eine Dimmfunktion erreichen. Um hier allerdings noch flimmerfreie Ergebnisse zu erzielen, sollte die Multiplexfrequenz mit den geplanten Dimmstufen multipliziert werden (bspw. 16 Dimmstufen bei 100 Hz Multiplexfrequenz = 1600 Hz angepasste Multiplexfrequenz), was die Rechenzeit wieder rum schnell in die Höhe treiben kann. Dimmen selbst erreicht man dann mit entsprechend angepassten Schaltzeiten (bspw. 25% Helligkeit = 4x LED an, 12x LED aus bei insgesamt 16 Dimmstufen, dann von vorne).

[Bearbeiten] Spezielle ICs

Neben den typischen Treiberbausteinen für möglichst hohe Ströme, die weiter unten aufgeführt sind, gibt es auch noch integrierte Lösungen für das direkte Betreiben einer LED-Matrix an bspw. der SPI-Schnittstelle. Beispiele sind hier MAXIM 7219 und 7221 (gibts auch bei Reichelt) für 8x8 LED-Matrizen oder 8x8-Segmentanzeigen. Zwischen beiden Modi wird per Software-Befehl gewechselt. Die ICs bieten einige Vorteile, wie automatische Dimmung und großzügiges Freischaufeln von CPU-Kapazität auf dem µC. Außerdem können die ICs dank SPI Data In und Data Out Pins kaskadiert werden, wie normale Schieberegister, und somit virtuell eine unbegrenzte Zahl an LEDs ansteuern. Allerdings ist der Strom für die integrierten Stromsenken auf etwa 50 mA begrenzt, was bei einigen Displays zu wenig sein kann. Hier kann man wieder Vor- und Nachteile abwiegen. Weitere ICs bei Maxim umfassen weitere Standardfälle, wie 5x7 Matrizen oder 7-, 10-, 14-Segment LED-Anzeigen mit 4 bis max. etwa 16 Stellen. Diese ICs gibts dann allerdings leider nicht bei den Standardversandhändlern.

Bauteil Beschreibung Bezugsquelle
ULN2803 8fach NPN-Transistorarray, 500mA
ULN2003 7fach NPN-Transistorarray, 500mA
UDN2981 8fach High Side Treiber, 500mA
TLC5921 16 Bit-Schieberegister plus Latch
mit Konstantstromsenken, max. 80mA pro Ausgang
TLC5922 16 Bit-Schieberegister plus Latch
mit Konstantstromsenken, max. 80mA pro Ausgang
Dimmung jedes einzelnen Kanals mit 7 Bit möglich, pinkompatibel zum TLC5921
TLC5940 tme.pl
CAT4016 16 Bit-Schieberegister/Latch mit Konstantstromsenken(max. 100mA), günstig Farnell
TPIC6B595 8-Bit Schieberegister + Leistungstreiber, 500mA
IRF7304 2fach P-Kanal MOSFET, 3,5A, SO-8 Gehäuse
MAX7219 Seriell angesteuerter 8x8 Matrizentreiber
MAX7221 Seriell angesteuerter 8x8 Matrizentreiber

[Bearbeiten] Siehe auch

[Bearbeiten] Weblinks

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net