www.mikrocontroller.net

LED-Matrix

Inhaltsverzeichnis

[bearbeiten] Definition

Matrix: Rechteckige Anordnung mit Zeilen und Spalten. In der Mathematik : Matrix (Wikipedia)

[bearbeiten] Aufbau

In einer LED-Matrix sind jeweils die Kathoden und Anoden 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.

Eine 5x7 LED-Matrix
Eine 5x7 LED-Matrix


[bearbeiten] Multiplexbetrieb

Multiplex(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). 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
Multiplexzeitdiagramm


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 wird, so ist in einer quadratischen LED-Matrix der Aufwand für die Bauteile nur

Anzahl der Bauteile = \sqrt{Anzahl der LEDs}

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

[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:16 gemuxt werden können, darüberhinaus werden die Pulsströme zu hoch (20mA Gleichstrom = 320 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 Nivau erhöhen. Um ganz sicher zu gehen kann man einen Watchdog mit minimaler Laufzeit oder 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).

[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).

Eine praktische Umsetzung kann man hier sehen.

Multiplexansteuerung mit Schieberegistern
Multiplexansteuerung mit Schieberegistern


[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.

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 erschlagen 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
ULN2803 8fach NPN-Transisorarray, 500mA
ULN2003 7fach NPN-Transisorarray, 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
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] Weblinks

webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net