Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Download    Reaktionen    Spiele    Kauftipps    Kontakt   




<<< LEDs schalten         N-Kanal MOSFETs schalten >>>

LED-Matrix

Ein Video zur LED-Matrix gibt's noch nicht

Hinterlasst einen Kommentar, wenn ihr Ideen habt, was in diesem Video gezeigt werden sollte (außer den schon in diesem Kapitel erwähnten Themen).

Übersicht

In diesem Kapitel ist nachzulesen:


Funktionsweise

3x3 LED Matrix
Abbildung 1:
Zu sehen ist eine Matrix aus 9 LEDs. Die drei Spalten (engl.: Columns, Col.) sind über je einen Widerstand von 1kΩ an die GPIOs 1, 2 und 3 angeschlossen, die Zeilen direkt an die GPIOs 4, 5 und 6. An allen GPIOs lieget ein LOW-Signal an, womit an keinem Punkt der Matrix eine Spannung zu messen ist - alle LEDs sind ausgeschaltet.
Matrix mit LEDs 1, 4 und 7 eingeschaltet
Abbildung 2:
Nun wird GPIO Nummer 1 auf HIGH-Signal gesetzt, womit die LEDs Nummer 1, 4 und 7 in Vorwärtsrichtung gepolt sind und zu leuchten beginnen.
Matrix mit LEDs 1, 4 und 7 eingeschaltet mit Ersatzschaltbild
Abbildung 3:
An den Kathoden (Spitze des Dreiecks mit Querstrich des Diodensymbols) der drei LEDs liegen die 0V des LOW-Signals, die Anoden (stumpfe Seite des Dreiecks) sind über den 1kΩ Widerstand mit dem HIGH-Signal, also 5V, an GPIO 1 verbunden. Somit fällt an den LEDs die Schwellspannung ab. Diese Spannung ist typabhängig und liegt üblicherweise im Bereich von 1V bis 3V. An den Anoden, die direkt miteinander verbunden sind, ist die Schwellspannung zu messen.
Gehen wir im Folgenden davon aus, dass das Logiklevel 5V und die Schwellspannung der LEDs 2V beträgt.
Der Widerstand an GPIO Nummer 1 bildet mit den drei in Vorwärtsrichtung gepolten LEDs einen Spannungsteiler. Die drei LEDs wiederum sind parallel zueinander geschaltet, wie in dem Ersatzschaltbild rechts zu sehen.
Matrix Mit LEDs 4 und 7 eingeschaltet
Abbildung 4:
Nun wird auch GPIO Nummer 4 auf HIGH-Level gesetzt, womit LED 1 ausgeschaltet wird, die LEDs 4 und 7 bleiben hingegen eingeschaltet.
Das Ersatzschaltbild rechts zeigt, dass an Kathode von LED 1 - die direkt mit GPIO 4 verbunden ist - nun 5V anliegen, an der Anode nach wie vor 2V, womit diese Diode in Sperrrichtung geschaltet ist und nicht mehr leuchtet. Die Kathoden von LED 2 und 3 sind ebenfalls direkt mit GPIO Nummer 4 verbunden, womit hier 5V anliegen. Die Anode von LED 2 ist über einen Reihenwiderstand mit GPIO 2 verbunden, was auch für die Anode von LED3 und GPIO 3 gilt. Beide liegen somit an 0V, womit LED 2 und 3 in Sperrrichtung geschaltet sind und nicht leuchten.
Matrix mit LED 4 eingeschaltet
Abbildung 5:
Um schließlich auch LED 7 auszuschalten und nur noch LED 4 am Leuchten zu halten, muss auch GPIO 6 auf HIGH-Level, also 5V geschaltet werden.
Ersatzschaltbild mit eingeschalteter LED Nummer 4
Abbildung 6:
Das Ersatzschaltbild zeigt, dass nur noch LED 4 in Vorwärtsrichtung gepolt ist. Nicht im Ersatzschaltbild gezeichnet sind die LEDs Nummer 5 und 6. An diesen liegt sowohl an der Anode als auch an der Kathode 0V an, womit durch diese kein Strom fließen kann.
Ausgangszustand Matrix mit allen LEDs ausgeschaltet.
Abbildung 7:
Wie zu Beginn sind schließlich wieder alle LEDs ausgeschaltet, wenn auch GPIO Nummer 5 auf HIGH-Signal gesetzt wird. Daran ändert sich auch dann nichts nichts, wenn GPIO Nummer 1 auf LOW gesetzt wird. Dies ist der bessere Ausgangszustand für eine LED Matrix, denn ausgehend hiervon bleiben alle LEDs ausgeschaltet, wenn nun GPIO Nummer 1, 2 oder 3 auf HIGH-Signal gesetzt wird.
Matrix in Vorbereitung zum Schalten von LED 5
Abbildung 8:
Hier ist das für GPIO Nummer 2 der Fall. Die LEDs in Spalte 1 (LED 1, 4, 7) und Spalte 3 (LED 3, 6, 9) sind mit 5V an den Kathoden und 0V an den Anoden in Sperrrichtung geschaltet. An den Dioden in Spalte 2 (LED 2, 5, 8) Liegen sowohl an den Kathoden als auch an den Anoden 5V an, womit durch keine der 3 LEDs ein Strom fließen kann.
Matrix mit LED 5 eingeschaltet
Abbildung 9:
Erst wenn einer der GPIOs Nummer 4, 5 oder 6 auf LOW-Signal geht, fließt ein Strom durch das Netzwerk. Hier ist GPIO 5 auf LOW-Signal gegangen, womit ein Strom aus GPIO Nummer 2 über den Widerstand und LED 5 in GPIO Nummer 5 fließt. GPIO 2 ist die Stromquelle (engl.: current source), GPIO 5 ist die Stromsenke (engl.: current sink).
Ausgangszustand LED Matrix
Abbildung 10:
Bevor die nächste LED eingeschaltet wird, sollte der Ausgangszustand von Abbildung 7 wieder hergestellt werden.
3x3 LED Matrix, LED 8 eingeschaltet
Abbildung 11:
Zum Einschalten einer beliebigen LED muss also zunächst der GPIO der entsprechenden Spalte auf HIGH-Signal und direkt anschließend der GPIO der entsprechenden Zeile auf LOW-Signal gesetzt werden. Hier sind das Spalte 2 (GPIO 2) und Zeile 3 (GPIO 6), womit LED Nummer 8 eingeschaltet ist.
Sechs GPIOs sind ausreichend, um 9 LEDs einzeln einzuschalten.
Schalten mehrerer LEDs einer Zeile
Abbildung 12:
Völlig unabhängig lassen sich die LEDs aber nicht schalten:
In den Abbildungen 2, 4 und 5 ist zu sehen, dass die LEDs einer Spalte entweder einzeln, in Zweiergruppen oder alle drei eingeschaltet werden können, wozu Spalte 1 auf HIGH-Signal und die jeweilige Zeile(n) auf LOW gesetzt werden müssen.
Ähnlich funktioniert das auch, wenn eine Zeile auf LOW geschaltet ist. Je nachdem, welche Spalte(n) nun auf HIGH-Signal sind, leuchten die entsprechenden LEDs in dieser Zeile. Hier ist das für die LEDs 8 und 9 der Fall.
Matrix mit 4 eingeschalteten LEDs
Abbildung 13:
Nicht möglich ist es allerdings, z.B. nur die beiden LEDs Nummer 3 und 8 einzuschalten:
Für LED Nummer 3 muss Zeile 1 (GPIO 4) auf LOW und Spalte 3 (GPIO 3) auf HIGH gesetzt werden. Für LED Nummer 8 muss Zeile 3 (GPIO 6) auf LOW und Spalte 2 (GPIO 2) auf HIGH gesetzt werden. Damit werden zwangsläufig auch die beiden LEDs 2 und 9 eingeschaltet.
Matrix aus 16 LEDs
Abbildung 14:
Die LED-Matrix kann nach belieben erweitert werden. 16 LEDs ergeben sich bei einer Matrix aus 4 Spalten und 4 Zeilen, es werden somit 8 GPIOs zur Ansteuerung benötigt. Für quadratische Matrizen geht es weiter mit 25 LEDs mit 10 GPIOs, 36 LEDs mit 12 GPIOs, 42 LEDs mit 14 LEDs und so weiter.
Matrix aus 12 LEDs
Abbildung 15:
Auch unsymmetrische Matrizen sind möglich wie hier bestehend aus 3 Zeilen und 4 Spalten, was 12 LEDs bei 7 GPIOs ergibt. Das Verhältnis aus LEDs zu GPIOs ist aber bei quadratischen Matrizen am günstigsten.

Common Row Anode Konfiguration

Matrix in Common Row Anode Konfiguration
Abbildung 16:
Die vorherigen Abbildungen haben die Matrizen in der Common Row Cathode Konfiguration gezeigt. Dabei sind die Kathoden der LEDs jeder Zeile direkt miteinander verbunden. In der hier zu sehenden Abbildung handelt es sich um die Common Row Anode Konfiguration, entsprechend sind die LEDs in jeder Zeile an ihrer Anodenseite verbunden. Um in dieser Anordnung eine LED zu adressieren, darf nur an der entsprechenden Zeile ein HIGH-Signal anliegen, während die übrigen Zeilen auf LOW-Signal gesetzt sind. Alle Spalten außer der Spalte der einzuschaltenden LED müssen auf HIGH-Signal gesetzt werden. Die Signale sind im Vergleich zur Common Row Cathode Konfiguration invertiert.

Gesamtstrom

Maximaler Spalten- und Zeilenstrom
Abbildung 17:
Beim Berechnen der Widerstände ist der Maximalstrom der GPIOs zu beachten! Für den Arduino Uno sind das z.B. 20mA pro GPIO. Nach dem Ohmschen Gesetz erhalten wir bei der Logikspannung von 5V:
R = U / I = 5V / 0.02A = 250Ω
Da auch an der LED eine Spannung in Höhe der Durchlassspannung abfällt, kann diese von der Logikspannung abgezogen werden. diesen Fall lassen wir aber aus Sicherheitsgründen außen vor.
Zu beachten ist allerdings, dass in der Matrix auch alle LEDs einer Zeile gleichzeitig eingeschaltet werden können, womit dann ein deutlich höherer Strom fließt! Die GPIOs einer Spalte sind über Reihenwiderstände mit den LEDs verbunden. Somit ist der Quellstrom (engl.: source current) pro Spalte auf jeden Fall kleiner als der Maximalwert. Die Zeilen sind jedoch direkt mit den LEDs verbunden. Sind alle LEDs einer Zeile gleichzeitig eingeschaltet, so addiert sich der Senkenstrom (engl.: sink current) zu einem Wert deutlich über dem Maximum! Um das zu verhindern müssen Die Widerstandswerte angepasst werden. Der Maximalstrom pro GPIO ist durch die Anzahl der Spalten zu teilen und man erhält für eine 3x3 Matrix:
R = N * U / I = 3 * 5V / 0.02A = 750Ω

Matrix mit Reihenwiderständen in Spalten und Zeilen
Abbildung 18:
Plan "B" besteht darin, auch die Zeilen über Vorwiderstände mit den LEDs zu verbinden. Dann genügt der niedrigere Widerstandswert der vorherigen Rechnung und dieser muss nicht angepasst werden, wenn die LED Matrix erweitert wird. Soll die maximale Helligkeit der LEDs ausgenutzt werden, so müssen die Signale der GPIOs über z.B. Transistoren verstärkt werden, wie in den folgenden Kapiteln zu lesen ist.

Multiplexing

Matrix in multiplex Ansteuerung
Abbildung 19:
Man kann die Trägheit des menschlichen Auges ausnutzen, um den Eindruck zu erwecken, jede beliebige Kombination von LEDs schalten zu können. Wie gezeigt, können die LEDs jeweils einer Zeile durchaus in beliebiger Kombination angesteuert werden. Der Trick besteht nun darin, die Zeilen mit sehr hoher Frequenz von oben nach unten anzusteuern und dabei jeweils nur die gewünschten LEDs einzuschalten. Die jeweils aktive Zeile ist dabei - ausgehend von einer Common Row Cathode Konfiguration - auf LOW-Signal geschaltet, die Spalten der zu aktivierenden LEDs befinden sich auf HIGH-Signal. Um die gewünschte Täuschung aufzubauen, muss die Matrix mit einer Frequenz von mehr als etwa 25Hz geschaltet werden. Bei einer 3x3 LED Matrix bedeutet das, dass eine einzelne Zeile für nur etwa:
1s / ( 25 * 3 ) ≈ 13ms
eingeschaltet ist, bevor die nächste Zeile angesteuert wird.
Auf dem Foto sieht es aus, als ob jede zweite LED ständig eingeschaltet ist, was ohne Multiplexing nicht möglich wäre. In Wahrheit wird jede Zeile nur für etwa 1ms aktiviert.

Beispielschaltung

Beispielschaltung Matrix in Common Row Anode Konfiguration
Abbildung 20:
Beispielschaltung 6x6 LED Matrix mit verschiedenfarbigen LEDs:
12x 5mm LED Gelb
12x 5mm LED Grün
12x 5mm LED Rot
12 Widerstände zu je 270Ω
Die LED Matrix habe ich hier als Drahtgitter verlötet, um den Schaltplan 1 zu 1 umzusetzen, was sehr anschaulich ist. Dabei ist unbedingt darauf zu achten, dass sich keine blanken Drähte an den Gitterpunkten berühren! Ich habe dazu kleine Stücke der isolierenden Umhüllung aufgeschoben, was recht fummelig ist. Einfacher ist die Schaltung auf einer Lochrasterplatine zu verlöten.

Softwarebeispiel Arduino

Für die Beispielschaltung gibt's die Beispielsoftware mit Multiplexing für den Arduino Uno als Download.

Bezugsquellen für Bauteile

Durch den Kauf von Bauteilen über die von mir angegebenen Affiliate-Partnerlinks in der Tabelle (oder in den Bannern auf meinen Seiten) unterstützt ihr meine Projekte - vielen Dank!
Die Links anzuklicken bedeutet allerdings keinen Kaufzwang - völlig ungezwungenes Stöbern ist möglich ;-)

Meine frei zugängliche Bildungsplattform ohne einzukaufen mit Hilfe einer Spende oder als Patreon zu unterstützen geht natürlich auch. Vielen Dank an alle, die mir bereits einen Obolus haben zukommen lassen!

Wenn ihr weitere Bauteile kennt, die sich für die Beispiele auf dieser Seite eignen, hinterlasst bitte einen Kommentar auf dieser Seite.

Bauteil Online Shops Bemerkung
Arduino UNO Arduino UNO auf eBay

Adruino UNO auf Amazon
Mikrocontroller sind für Echtzeitanwendungen wie das Multiplexing bestens geeignet.
LEDs LED Sortimente auf eBay

LED Sortimente auf Amazon
LEDs mit Durchlassströmen um die 20mA sind günstig zu bekommen, sogenannte Low Current LEDs sind teurer, bei kleinen Strömen aber heller.
Widerstände Widerstände auf eBay

Widerstände auf Amazon
Kohleschichtwiderstände mit 5% Toleranz sind günstig und für Experimente rund um LEDs gut geeignet.
Lochrasterplatine Lochrasterplatinen auf eBay

Lochrasterplatinen auf Amazon
Europlatinen haben ein Lochrastermaß von 2.54mm.




<<< LEDs schalten         N-Kanal MOSFETs schalten >>>


Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Archiv    Download    Reaktionen    Spiele    Verweise    Kauftipps    Kontakt    Impressum   





Twitter YouTube Hackaday Patreon TPO