Forum: Mikrocontroller und Digitale Elektronik Multiplexerbetrieb LED-Matrix Zeilen oder Spalten


von pezik (Gast)


Lesenswert?

Hallo LED-Matrix-Spezialisten,
ich habe eine Frage, die ihr vermutlich schnell beantworten könnt.
Habe bestimmt schon 5-8 Stunden gebraucht und nichts gefunden.

Im Artikel LED-Matrix gibt es einen Satz:
"Ob man die Zeilen oder Spalten einer Matrix multiplext ist im Prinzip 
egal, aber manchmal ist es schlicht logisch sinnvoller. So ist z.B. bei 
einer LED-Laufschrift mit 8 Zeilen und 40 Spalten es sinnvoll, die 
Zeilen mit 1:8 zu multiplexen und nicht die Spalten mit 1:40!"
 - Was bedeutet "sinnvoller" in dem Beispiel Matrix 8x40 LEDs?
 - Was gewinnt man dabei oder wie spürt die LED ob sie in dem 
Zeilenmultiplex- oder Spaltenmultiplexbetrieb betrieben wird? Fließt 
durch sie weniger Strom?

Irgendwie finde ich "sinvoll" nicht heraus?
Jede LED leuchtet in beiden Betrieben doch für die gleiche Zeit auf, 
muss also der gleiche Strom fließen, oder?

Oder spürt nur der Treiber etwas, ob LEDs in dem oder anderen Modus 
betrieben werden?

Ich komme einfach nicht darauf! :-(

von MaWin (Gast)


Lesenswert?

> Irgendwie finde ich "sinvoll" nicht heraus?

Datenblatt der LED lesen.

Da eine LED im 1:8 Multiplex mit dem 8-fachen Strom des normalen 
versorgt werden muß, bei 1:40 Multiplex jedoch mit dem 40-fachen Strom 
(den sie nicht aushält), ist das 1:8 Multiplex nicht nur sinnvoller, 
sondern schlicht nötig wenn man eine halbwegs erträgliche 
Displayhelligkeit haben will.


Auch ein 16 x 16 LED-Feld mit man 8 x 32 mit 1:8 Multiplex organisieren, 
weil die meisten LEDs nur den 10-fachen Strom aushalten, blau ist 
oftmals noch schlechter.

von Sebastian M. (semu)


Lesenswert?

Hallo Leute,
ich bin mal so frei und häng mich an diesen Post dran..
Mir ist zwei Sachen fundamental unklar im LED-Matrix Artikel.

1. Dort steht folgender Satz:
"Der Trick einer LED-Matrix besteht darin, dass jeweils immer nur eine 
Spalte wirklich leuchtet. Die anderen sind ausgeschaltet [...]".

Ich dachte, der Gag einer LED-Matrix wäre, dass man eben jeden "Pixel" 
bzw. jede LED einzeln ansteuern kann, und nicht nur Spaltenweise. Evtl. 
ist das aber auch nur schlecht beschrieben.

2. Frage_
Wenn wir mal von einer 3x3 Matrix ausgehen, so benötige ich dafür i.d.R. 
6 IO-Ports am Mikrocontroller. An jedem der Ports hängen 3 LEDs (z.B. 3 
Anoden pro Zeilen, 3 Kathoden pro Spalten). Durch die Ansteuerung einer 
Zeilen /Spalten Kombination leuchtet nun genau eine LED im 
Schnittpunkt. Also z.B. (A/1) oder (B/3). Wieso spreche ich jetzt aber, 
je nach Schaltungsdesign, von einem Spalten- oder Zeilenmultiplexing? 
Ich verstehe nicht, wieso man da unterscheidet. Ich multiplexe für jede 
LED doch Zeilen MIT Spalten (bzw. andersrum).

Bin für jeden Wink mit dem Zaumpfahl dankbar :)

Und ja, ich hab den LED-Matrix Artikel sowie das halbe Forum mehrmals 
durchsucht :)

von 4toTakoe (Gast)


Lesenswert?

zu 1.
Nimm es erstmal so Hin. Erläuterung bei 2.

2.
Klar wird in deinem Beispiel nur eine LED angesteuert. Aber wenn man es 
auf die Spalte die gemultiplext wird bezieht, liegt dort ein Bitmuster 
von z.B. 100 an.

Also ist der Trick des Spaltenmultiplex folgender:

Bitmuster für Spalten anlegen (100)
Spalte durchschalten (alle Kathoden mit Transistor/Mosfet)
paar ms warten
Spalte abschalten
Bitmuster für nächste Spalte anlegen (010)
Spalte durchschalten
paar ms warten
Spalte abschalten
Bitmuster für nächste Spalte anlegen (001)
...

Und das ganze mindestens 25x pro Sekunde, sonst siehst du das "Bild" 
flackern.

von Sebastian M. (semu)


Lesenswert?

Sorry, ich steh aufm Schlauch.

Ich verstehe schon was du mir sagen willst, aber ich kapiere nicht, 
wieso das Spaltenmultiplexing genannt wird.

Wenn ich dich recht verstehe, legst du in deinem Beispiel das Muster für 
die erste Spalte an die Zeilen an (konkret 100 -> 1. Zeile schaltet 
auf low). Danach ziehst du die erste Spalte auf high und die LED in der 
linken oberen Ecke leuchtet.

Im nächsten Schritt will ich z.B. LED (B/2) leuchten lassen und lege 
wieder das Muster (010) an die Zeilen an und schalte Spalte 2 durch.
usw.

Wieso multiplexe ich hier per Definition Spalten? Ich steuere doch zu 
genau je einer Spalte auch genau je eine Zeile an....

sorry, aber es ist noch früh am morgen :D

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

MaWin schrieb:
> Da eine LED im 1:8 Multiplex mit dem 8-fachen Strom des normalen
> versorgt werden muß, bei 1:40 Multiplex jedoch mit dem 40-fachen Strom
> (den sie nicht aushält), ist das 1:8 Multiplex nicht nur sinnvoller,
> sondern schlicht nötig wenn man eine halbwegs erträgliche
> Displayhelligkeit haben will.
Und dann waren da noch die Totzeiten, die evtl. gegen das Ghosting 
eingehalten werden müssen.
Und dann wären da die unangenehm hohen geschalteten Ströme, die zu 
erhöhter EMV Ausstrahlung führen können.
Und dazu kommt noch, dass man bei einem 1:40 Multiplexing ja auch eine 
40fach höhere Frequenz zum Weiterschalten braucht.

Kurz: was über 1:8 hinausgeht, sollte grundlegend durchdacht sein!

von pezik (Gast)


Lesenswert?

Hi Leute,

ich befürchte, die eigentliche Frage von mir so nicht beantwortet wird.
:-(

Das "Sinnvolle" am Multiplexbetrieb verstehe ich schon, habe schon eine 
8x8 Matrix im Betrieb und zwar, Spaltenmultiplex.

Berechnung so:
100 Hz = 100 mal pro Sekunde wird die ganze Matrix refreshed.
Daraus ergibt sich, dass für ein "Refreshen" gerade 10ms gebraucht 
werden.
10ms / 8 (Spalten) = 1,25ms pro Spalte.

1. Muster 1 an alle Zeilen
2. Spalte 1 für 1,25ms an, dann aus.
3. Muster 2 an alle Zeilen
4. Spalte 2 für 1,25ms an, dann aus
...
15. Muster 8 an alle Zeilen
16. Spalte 8 für 1,25 ms an dann aus

und dann von Vorne, alles mit dem entsprechenden Strom wegen 
Helligkeiten etc.

Nun erweitere ich die Matrix um weitere 32 Spalten.
Berechnung:
10ms / 40 (Spalten) = 250us pro Spalte.

1. Muster 1 an alle Zeilen
2. Spalte 1 für 250us an, dann aus
...
79. Muster 40 an alle Zeilen
80. Spalte 40 für 250us an, dann aus.

Hier 8x40 soll der Pulsstrom 5 fach größer sein als, 8x8.

Wenn ich aber Zeilenmultiplex arbeiten soll, dann habe ich dasgeliche 
prinzip, aber mit 40 Zeilen und 8 Spalten.

1. Muster "1" an alle 40 Zeilen
2. Spalte "1" (mit 40 Leds) für 1,25ms an, dann aus

Wie bekomme ich denn Muster 1 "parallel" oder "gleichzeitig" an alle 40 
Zeilen? Ich habe keinen 40 bit Port, und keinen 40-Bit Mikrokontroller.

Oder soll ich während Spalte n 1,25ms lang leuchtet durch die 
Schieberegister die 40 bit sequentiell reinschieben, damit sie für die 2 
Spalte "parallel" oder gleichzeitig zur Verfügung stehen?
Anders kann ich mir das nicht vorstellen.

1. In die schieberegister Bitmuster 1 von 8 für die 40 Zeilen 
reinschieben
2. Latch einschalten, somit Bitmuster 1 von 8 ist an den Zeilen
3. Spalte 1 einschalten
4. In die schieberegister Bitmuster 2 von 8 für die 40 Zeilen 
reinschieben
5. 1,25ms abwarten
6. Spalte 1 ausschalten.
7. Latch einschalten, somit Bitmuster 2 von 8 ist an den zeilen
8. Spalte 2 einschalten
9. In die schieberegister Bitmuster 3 von 8 für die 40 Zeilen 
reinschieben
10. 1,25ms abwarten
11. Spalte 2 ausschalten.
usw.

Etwa so?

von Karl H. (kbuchegg)


Lesenswert?

Sebastian M. schrieb:
> Sorry, ich steh aufm Schlauch.
>
> Ich verstehe schon was du mir sagen willst, aber ich kapiere nicht,
> wieso das Spaltenmultiplexing genannt wird.

Weil im Prinzip alle LED einer kompletten Spalte leuchten (können). Es 
sind die LEDs der Spalte die jetzt gerade aktiv sind. NIcht die der 
Nachbarspalte, die kommen später dran.


Ob dann tatsächlich alle LED in dieser Spalte leuchten oder nicht, weil 
du es für das anzuzeigende Bild so benötigst, ist hingegen relativ 
uninteressant.

> auf low). Danach ziehst du die erste Spalte auf high und die LED in der
> linken oberen Ecke leuchtet.

Vergiss deine Einzelledansteuerung. So wird das nichts.

von Karl H. (kbuchegg)


Lesenswert?

> Das "Sinnvolle" am Multiplexbetrieb verstehe ich schon, habe
> schon eine 8x8 Matrix im Betrieb und zwar, Spaltenmultiplex.

> 10ms / 8 (Spalten) = 1,25ms pro Spalte.

...

> Nun erweitere ich die Matrix um weitere 32 Spalten.
> Berechnung:

Und damit hast du die Arschkarte

> 10ms / 40 (Spalten) = 250us pro Spalte.

Eben.
Und genau das ist das Problem. Eine einzelne Spalte leuchtet jetzt nur 
noch 1/40 der kompletten Zeit. Und demenstprechend dunkel wird das ganze 
dann auch.

Und dieses 1/40-tel kannst du auch durch einen höheren Strom nicht mehr 
ausgeleichen.

Bei einem Zeilenmultiplex im genannten Beispiel 8*40 LED, leuchtet aber 
eine komplette Zeile mit 40 Leds immer noch 1.25ms. Also 1/8 der Zeit.

> Wie bekomme ich denn Muster 1 "parallel" oder "gleichzeitig" an alle
> 40 Zeilen? Ich habe keinen 40 bit Port, und keinen 40-Bit
> Mikrokontroller.

Dann musst du dir die 40 Ausgänge eben machen!
Zum Bleistift mit einem Schieberegister.


> Etwa so?
Genau so.
Nur kannst du dir das 'Vorladen' der Schieberegister auch sparen.
Ob du die Schieberegister am Anfang der ISR lädst oder zum Schluss ist 
Jacke wie Hose. Von einem aktivieren einer Zeile bis zum nächsten 
vergeht deswegen auch nicht mehr oder weniger Zeit. Logischer ist es, 
das am Anfang der ISR zu tun. Erst Zeile abschalten, Schieberegister 
laden, Zeile einschalten. Auf die Art hast du eine ganz kurze Zeit, in 
der gar nichts leuchtet - das hilft dann auch, dass tatsächlich alle 
Treiber abgeschaltet haben und bekämpft ebenfalls Ghosting.

von Karl H. (kbuchegg)


Lesenswert?

> Ich dachte, der Gag einer LED-Matrix wäre, dass man eben jeden
> "Pixel" bzw. jede LED einzeln ansteuern kann, und nicht nur
> Spaltenweise.

Darum gehts überhaupt nicht. Es geht nicht darum, ob man Einzelpixel 
ansteuern kann oder nicht.
es geht darum, dass man bei so vielen LED nicht mehr jede LED eine nach 
der anderen durchgehen kann und die je nach Bedarf ein/aus schaltet.
Denn dann kommt man mit der Zeit und mit dem Strom nicht mehr hin.

Also muss man in Gruppen arbeiten. Jeweils eine Gruppe von LED muss 
(potentiell) gemeinsam leuchten können.
Und das können bei einer Matrix dann eben die LED einer kompletten 
Spalte oder die LED einer kompletten Zeile sein.

Ob dann tatsächlich alle LED dieser Zeile oder Spalte leuchten, ist eine 
ganz andere Frage und wird entschieden wenn die Spalte (oder Zeile) 
konkret zusammengestellt wird, die im nächsten Zeitschritt leuchten 
soll.

Bei einer Matrixansteuerung geht es nicht darum, welche LED jetzt 
konkret leuchten muss. Es geht darum ein allgemeines Schema zu haben, 
wie diese Gruppen von LEDs gebildet und abgearbeitet werden.

von Peter D. (peda)


Lesenswert?

Bei einer X * Y Matrix wird eine Dimension gemultiplext und die andere 
parallel angesteuert.
Dadurch läßt sich jede LED unabhängig ein oder ausschalten.

In der Regel multiplext man die kleinere Dimension (kleinere 
Spitzenströme, kleinere Störemission).


Peter

von pezik (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
>> Etwa so?
> Genau so.

Hallo Karl Heinz,
das ist die Antwort, die alles zurecht stellt.

besten Dank!

Von mir aus kann der Thread geschlossen werden.

von Falk B. (falk)


Lesenswert?

@  pezik (Gast)

>ich habe eine Frage, die ihr vermutlich schnell beantworten könnt.
>Habe bestimmt schon 5-8 Stunden gebraucht und nichts gefunden.

Wie wäre es, den Artikel LED-Matrix mal in RUHE zu lesen und mal 
drüber NACHZUDENKEN? Denn ALLES was hier gesagt wurde, steht im Artikel 
schon drin.

Sinnerfassendes Lesen heißt sowas. Wurde früher mal in der Schule 
gelehrt. Gibt's heute bestimmt ne App für . . .

von MaWin (Gast)


Lesenswert?

> Durch die Ansteuerung einer Zeilen /Spalten Kombination
> leuchtet nun genau eine LED im Schnittpunkt.

Nein, durch die Ansteuerung einer Zeile kann man JEDER
LED dieser Zeile sagen ob sie leuchten soll oder nicht
(und bei der nächsten Zeile kannst du andere Spalten
leuchten lassen).

Es leuchtet nicht nur 1 LED zu einer Zeit, sondern es
könnten alle LED einer Zeile leuchten oder eben keine,
oder eine beliebige Kombination daraus.

von John (Gast)


Lesenswert?

Falk Brunner schrieb:
> Wie wäre es, den Artikel LED-Matrix mal in RUHE zu lesen und mal
> drüber NACHZUDENKEN? Denn ALLES was hier gesagt wurde, steht im Artikel
> schon drin.
>
> Sinnerfassendes Lesen heißt sowas. Wurde früher mal in der Schule
> gelehrt. Gibt's heute bestimmt ne App für . . .

Wie wäre es denn die Frage oben zu lesen...
Denn die Frage wurde aus dem Artikel LED-Matrix zittiert.
8 Stunden NACHDENKENS haben dazu geführt, dass
Die Frage "Etwa so?" mit der Antwort "Genau so." beantwortet wurde.

Und nein, es steht dort nicht drin. Es steht nur drin, dass bei 8x40 
Matrix Zeilenmultiplex dem Spaltenmultiplex vorzuziehen ist.
Was heißt es aber genau, steht nicht drin.

Es steht nicht drin, dass man 40 bit für 40 Spalten mit dem 
Schieberegister in eine Zeile reinschieben soll, bevor die Zeile 
eingeschaltet wird.
Es steht nicht drin, dass beim Zeilenmultiplex, ein anderes Algorithmus 
der Software verwendet werden soll.

Ich würde LED-Matrix um gewisse Punkte von "pezik" vervollständigen.

PS: Sinnerfassendes Lesen heißt das eigentliche Problem verstehen, 
Beiträge von Anfang zu lesen und auf die gestellte Frage die richtige 
Antwort zu geben.

Und das hat Karl Heinz drauf! Top! 1A!

@ Falk Brunner:
Was ist ne "App"? Ist das auch ne Matrix?

von Falk B. (falk)


Lesenswert?

@  John (Gast)


>Und nein, es steht dort nicht drin. Es steht nur drin, dass bei 8x40
>Matrix Zeilenmultiplex dem Spaltenmultiplex vorzuziehen ist.
>Was heißt es aber genau, steht nicht drin.

DOCH! Nur eben nicht auf Kindergartennieveau!

"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!)"

>Es steht nicht drin, dass man 40 bit für 40 Spalten mit dem
>Schieberegister in eine Zeile reinschieben soll, bevor die Zeile
>eingeschaltet wird.

Das ist auch nicht Kernthema des Multiplexing sondern eine von vielen 
Realisieruingsmöglichkeiten, welche AUCH im Artikel so erklärt wird!

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

Es ist DIRKET der Link zur Eklärung des Schieberegisters angegeben!

>Es steht nicht drin, dass beim Zeilenmultiplex, ein anderes Algorithmus
>der Software verwendet werden soll.

Wird er auch nicht.

>Ich würde LED-Matrix um gewisse Punkte von "pezik" vervollständigen.

Nö, denn es steht ALLES drin. Nur halt nicht idioten sicher.

>Und das hat Karl Heinz drauf! Top! 1A!

Nö. Karl ist ein Gemütsmensch, der selbst das kleinste 1x1 100 mal immer 
wieder neu erklären kann. So wie Grundschullehrer. Respekt! Aber ich bin 
kein Grundschullehrer, ich stelle schon gewisse Anforderungen an die 
Leute. Deutlich über Grunschulniveau, aber sicher nicht MIT-Abschluss.

>@ Falk Brunner:
>Was ist ne "App"? Ist das auch ne Matrix?

Du bist nicht ganz auf dem Laufenden, oder?

http://www.apple.com/de/iphone/from-the-app-store/

von John (Gast)


Lesenswert?

@ falk
Falk Brunner schrieb:
> DOCH! Nur eben nicht auf Kindergartennieveau!

Hast recht, aber Kinder wird es immer geben und sie beginnen nun mit 
Krabbeln, Gehen, Sprechen lernen und erst dann kommt die Schule, Abitur 
und Studium. :-)

Aber wir weichen vom Thema ab! Wichtig ist, dass "pezik" seine Antwort 
erhalten hat, hoffentlich immer noch Lust hat, nicht nach Spalten, 
sondern nach Zeilen zu multiplexen und wir als wissende dabei helfen 
konnten, nicht war?

Wir brauchen auch Grundschullehrer, ohne sie wären die UNIs eben leer!
:-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.