Forum: Mikrocontroller und Digitale Elektronik LED-Matrix zu dunkel


von Max S. (masterjekkt)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe ein kleines Problem bei meiner 8x24 LED-Matrix. Also 
erstmal hab ich ein Board mit einem Atmega16 entworfen, das beliebig 
erweitert werden kann. Daher auch die Pads, die benötige ich um die 
LED's per Steckkabel mit dem uC oder anderen Komponenten zu verbinden.

Also die Zeilen werden mit 200Hz direkt vom uC gemuxt 
(Impuls-Pausenverhältnis von 5000:1) und ich benutze Low-Current-LED's. 
Wie ihr seht, werden die LED's per Transistoren durchgeschaltet damit 
der Kontroller nicht hart belastet wird. Trotzdem leuchten die LED's 
nicht mit ihrer maximaler Helligkeit. Bei Belichtung sieht man sie noch 
relativ gut, ich möchte aber dass sie noch heller sind. Könntet Ihr mir 
sagen woran das liegen mag?

von Benedikt K. (benedikt)


Lesenswert?

Wenn ich richtig gerechnet habe, fließt durch eine LED ein Strom von 
20mA. Bei einem Impuls-Pausenverhältnis von 5000:1 ergibt das 4µA 
mittleren LED Strom. Das das nicht hell ist, sollte klar sein.

Wieso verwendest du auch ein Impuls-Pausenverhältnis von 5000:1???

von ARM-Fan (Gast)


Lesenswert?

Die Basiswiderstände an den Emitterfolgern müssen auch noch weg.

von Falk B. (falk)


Lesenswert?

@ Max Stephany (masterjekkt)

>Hallo, ich habe ein kleines Problem bei meiner 8x24 LED-Matrix.

In der Tat. Lies man was zum Thema LED-Matrix und erkenne

- Deine Q1..Q8 als Kolletorschaltung (Hallo Matthias!) sind falsch. Der 
Basiswiderstand ist kontraproduktiv.
- Die Widerstände R9..R16 sind an der falschen Stelle, die gehören in 
die Spaltenleitungen vor die Transistoren Q9..Q32,
- Die Basiswiderstände vn Q9..32 sind zu hoch, 470 Ohm sind empfohlen.

>erweitert werden kann.

Das glaub ich mal nicht.

>Also die Zeilen werden mit 200Hz direkt vom uC gemuxt
>(Impuls-Pausenverhältnis von 5000:1)

????
5000:1
Dann wärsen sie quasi total aus.

Die Matrix wird sinnvollerweise zeilenweise 8:1 gemuxt.

MFG
Falk

von Stefan (Gast)


Lesenswert?

Na, was soll sie denn auch anderst tun als schwächer leuchten, wenn sie 
nur einen kurzen Impuls bekommt. Hättes jeder LED noch ein FlipFlop oder 
ähnliches vorschalten sollen, oder zumindest einen Kondensator parallel.

von Max S. (masterjekkt)


Lesenswert?

Ich habe es bereits mit 5:1 versucht, hat leider nichts gebracht. Und 
eine Low-Current-LED benötigt 1-2mA.

von ARM-Fan (Gast)


Lesenswert?

>Na, was soll sie denn auch anderst tun als schwächer leuchten, wenn sie
>nur einen kurzen Impuls bekommt. Hättes jeder LED noch ein FlipFlop oder
>ähnliches vorschalten sollen, oder zumindest einen Kondensator parallel.

Autsch!

von Falk B. (falk)


Lesenswert?

@ Stefan (Gast)

>nur einen kurzen Impuls bekommt. Hättes jeder LED noch ein FlipFlop oder
>ähnliches vorschalten sollen, oder zumindest einen Kondensator parallel.

Autsch! Informier dich mal über die Funktion einer LED-Matrix.

MFG
Falk

von Max S. (masterjekkt)


Lesenswert?

Bei einem Verhältnis von 5000:1 (also hier 5ms ein, 1us aus) leuchten 
sie maximal hell, jedoch nicht so hell wie sie sollten.

von Michael U. (amiga)


Lesenswert?

Hallo,

was meinst Du mit Impuls-Pausenverhältnis 5000:1?
Bei 8 Zeilen MUX sind es bei mit 1:8 für jede Zeile, also 1/8 des 
LED-Stroms bei statische Ansteuerung.

Die Spaltentreiber sind Emitterfolger, die Emitterspannung kann aber 
höchstens Uh vom Port (ca. 4,9V) - Ube (ca. 0,7V) = 4,2V sein.
Die Sättigungsspannung der Spaltentreiber ist ca. 0,2V.
Bei roten LED (hast DU nicht angegeben) kommt jetzt die Flußspannung 
(ca. 1,6V) dazu. Macht also 4,2V - 0,2V - 1,6V = 2,4V
2,4V / 68 Ohm = 35mA.

Bei 1:8 Mux also 35mA/8 = 4,4mA.
Die LED wären also so hell wie bei 4,4mA Dauerstrom. Das sieht relativ 
passend aus.
Aber: die Emitterfolger bekommen ihren Basisstrom über 8,2k. Diese 
Widerstände sind bei einem Emitterfolger unnötig und hier vermutlich 
sogar ziemlich störend.
Da die LED-Widerstände in den Zeilen liegen mußt Du ja die Spalten 
multiplexen, das wären aber 1:24 und damit nur noch ca. 1,5mA als 
statischer LED-Strom.

Mein Vorschlag: zeilenweise multiplexen, jeder Spalte einen 
LED-Vorwiderstand, die Zeilentreiber brauchen keinen Basiswiderstand.

Gruß aus Berlin
Michael

von Benedikt K. (benedikt)


Lesenswert?

Max Stephany wrote:
> Bei einem Verhältnis von 5000:1 (also hier 5ms ein, 1us aus) leuchten
> sie maximal hell, jedoch nicht so hell wie sie sollten.

Ach so rum meins du das. Dann solltest du besser das hier lesen 
LED-Matrix, denn Prinzip bedingt kann eine 8x24 Matrix nie mehr als 
1/8 haben.

von Max S. (masterjekkt)


Lesenswert?

Michael U. wrote:
> Hallo,
>
> was meinst Du mit Impuls-Pausenverhältnis 5000:1?
> Bei 8 Zeilen MUX sind es bei mit 1:8 für jede Zeile, also 1/8 des
> LED-Stroms bei statische Ansteuerung.
>
Mit dem Impuls-Pausenverhältnis meine ich die Ein- und Auszeit einer 
einzigen LED.

von ARM-Fan (Gast)


Lesenswert?

>Mit dem Impuls-Pausenverhältnis meine ich die Ein- und Auszeit einer
>einzigen LED.

Das meinen die Vorredner auch.
Eine LED ist so lange an wie ihre Zeile oder Spalte aktiv ist.
Also bei dir 1:8 oder 1:24.

von Michael U. (amiga)


Lesenswert?

Hallo,

verstehe ich nicht.

Eine LED auch in einer Matrix ist entweder logisch an oder aus.

Aus ist klar. An ist die Zeit, wie oft sie in der Matrix dran kommt.
Bei zeilenweisen Multiplex wäre es also so:

alle Zeilen ausschalten
passende Daten an alle Spalten für Zeile 1 anlegen.
Zeile 1 einschalten

alle Zeilen ausschalten
passende Daten an alle Spalten für Zeile 2 anlegen.
Zeile 2 einschalten

...

alle Zeilen ausschalten
passende Daten an alle Spalten für Zeile 8 anlegen.
Zeile 8 einschalten

Jede LED ist also 1/8 der Zeit eines Durchlaufs eingeschaltet.

Sind als bei 200Hz Multiplexfrequenz 5ms für einen Durchlauf aller 
Zeilen.
Also jede Zeile und damit jede LED 5ms/8 =  0,625ms an und  4,375ms aus.

Falls die 200Hz die Frequnt ist, mit der weitergeschaltet wird, sind es 
eben 5ms an und 35ms aus.

Geht garnicht anders.

Gruß aus Berlin
Michael

von ulrich (Gast)


Lesenswert?

Das Missverständniss leigt wohl darin, das bei einer LED Matrix mehr als 
eine LED gleichzeitig leuchen kann. Die Begrenzung auf jeweils 1 LED 
gibts beim Charleipixeling.

Selbst mit den Widerständen so wie gezeichnet kann man noch auf ein 
Tastverhältnis von 1:24 kommen, allerdings sollten die Basiswierstände 
dann kleiner werden, denn Transistoren in Emitterschaltung müssen 8 LEDs 
gelichzeitig versorgen, also 8 * 30 mA = 240 mA.

Wenn man die Matrix andersherum nutzen will, mit 24 Widerständen für die 
LEDs, wird man auch 8 größere Transistoren brauchen, denn 24 mal rund 30 
mA sind fast 1 A.

Statt der Low Current LEDs würde ich die ähnlichen hellen LEDs 
vorschlagen, die können meistens mehr Strom ab, bei gleichem 
Wirkungsgrad. Neue LEDs muß man sich aber nicht extra kaufen.

von Max S. (masterjekkt)


Lesenswert?

Die Basisvorwiderstände für die Transistoren müssten eigentlich korrekt 
berechnet sein. 5V - 0,7V (UBE) = 4,3V. Der BC547 liefert einen 
maximalen Kollektorstrom von 10mA bei 0,5mA Basisstrom und eine Spalte 
benötigt 2mA. Also 4,3V/0,5mA = 8,6k also 8,2k Vorwiderstand. Was ist 
daran falsch?

von Max S. (masterjekkt)


Lesenswert?

>
> Wenn man die Matrix andersherum nutzen will, mit 24 Widerständen für die
> LEDs, wird man auch 8 größere Transistoren brauchen, denn 24 mal rund 30
> mA sind fast 1 A.
>
Nein ich benutze ja LED's mit 2V/2mA im Zeilenmultiplex, also werden das 
48mA wenn jede LED durchgeschaltet ist (in meinem 1. Programm allerdings 
nicht jede LED).

von ARM-Fan (Gast)


Lesenswert?

Wie kommst du auf die 2mA ?
Weil es low-current LEDs sind die bei 2mA hell leuchten?

Das "brauchen" heißt ja nicht, dass man ihnen nicht auch 1A
reinjagen kann bis sie es "bekommen".

von Max S. (masterjekkt)


Lesenswert?

Ok ich ersetze die 8,2k Widerstände mal durch 4,7k. Bis dahin wird es 
noch ein wenig dauern. Danke für eure Ratschläge!

mfg Max

von ARM-Fan (Gast)


Lesenswert?

470 Ohm!

und die von den Emitterfolgern müssen ganz raus (brücken).

von ARM-Fan (Gast)


Lesenswert?

Deine BC547 sind außerdem unterdimensioniert. Die können dauerhaft
100mA und Peak 200mA. Die sind schon arg an der Schmerzgrenze.

von Falk B. (falk)


Lesenswert?

@ Max Stephany (masterjekkt)

>maximalen Kollektorstrom von 10mA bei 0,5mA Basisstrom und eine Spalte
>benötigt 2mA.

Nöö, die braucht 8*2=16 mA, weil du ja 8:1 Multiplexen willst.

> Also 4,3V/0,5mA = 8,6k also 8,2k Vorwiderstand. Was ist
>daran falsch?

OK, passt in etwa. Ich hatte nciht die Low Current LEDs bedacht. :-0

>Nein ich benutze ja LED's mit 2V/2mA im Zeilenmultiplex, also werden das
>48mA wenn jede LED durchgeschaltet ist

Nöö, es sind 2*24*8= 384mA. 8:1 MULTIPLEXEN!

MFG
Falk

von Max S. (masterjekkt)


Lesenswert?

Falk Brunner wrote:

> Nöö, die braucht 8*2=16 mA, weil du ja 8:1 Multiplexen willst.
>
Ich muxe die Zeilen, nicht die Spalten. Zu jeder Zeit ist bloß 1 Zeile 
aktiv und damit nicht die ganze Spalte, also keine 8 LED's. Also fliesst 
in einer Spalte 2mA.

> Nöö, es sind 2*24*8= 384mA. 8:1 MULTIPLEXEN!
>
Auch wiederum nicht :)

von Falk B. (falk)


Lesenswert?

@  Max Stephany (masterjekkt)

>Ich muxe die Zeilen, nicht die Spalten. Zu jeder Zeit ist bloß 1 Zeile
>aktiv und damit nicht die ganze Spalte, also keine 8 LED's.

Eben, dann sind bis zu 24 LEDs einer Zeile für 1/8 der Umlaufzeit aktiv.

> Also fliesst in einer Spalte 2mA.

Das macht dann aber effektiv 2/8=0,25mA LED-Strom. Kein Wunder, dass die 
so dunkel sind.

>Auch wiederum nicht :)

Aber sicher, mein multiplexender Freund ;-)

MFG
Falk

von ARM-Fan (Gast)


Lesenswert?

Kann das sein, dass du uns sagen willst, dass du die LEDs einzeln
scannst?

So nach dem Prinzip:

- Zeile 1 aktivieren (Q1)
- Spaltentreiber (Q9-Q32) nacheinander durchschalten
- Zeile 2 aktivieren (Q2)
- usw. ...

Ansonsten verstehe ich nicht an welcher Stelle wir aneinenader 
vorbeireden.

von Hugo Ratlos (Gast)


Lesenswert?

Aber was das Schlimmste ist:

Die LED-Vorwiderstände hängen an den Zeilentreibern, nicht an den 
Spaltentreibern, wo sie eigentlich für das 1:8 Multiplexing benötigt 
würden.

Momentan sollte also die Helligkeit durchaus von der Anzahl der LEDs 
abhängen, die pro Zeile leuchten. Im schlimmsten Fall teilen sich also 
24 LEDs einen Vorwiderstand. Wenn das nicht dunkel wird.

Viel Spass beim umlöten :-)

von Max S. (masterjekkt)


Lesenswert?

@ Falk Brunner

Ich weiss jetzt was du meinst. Ich habe jetzt an die Transistoren in den 
Spalten gedacht, nicht Q1-Q8 :P

@ ARM-Fan

Ich arbeite nach dem Prinzip:

-1. Zeile einschalten, Daten an die Spalten ausgeben (alle 
gleichzeitig).
-1. Zeile ausschalten.
-2. Zeile einschalten, Daten an die Spalten ausgeben.
-2. Zeile ausschalten.

usw.

von ARM-Fan (Gast)


Lesenswert?

>Im schlimmsten Fall teilen sich also 24 LEDs einen Vorwiderstand.

Eben. Deswegen kam ich grad auf die Scanning Idee.
Ansonsten müßten doch schon die Zeilentreiber oder der Zeilenvor-
widerstand abgeraucht sein.

von Max S. (masterjekkt)


Lesenswert?

Hugo Ratlos wrote:
> Aber was das Schlimmste ist:
>
> Die LED-Vorwiderstände hängen an den Zeilentreibern, nicht an den
> Spaltentreibern, wo sie eigentlich für das 1:8 Multiplexing benötigt
> würden.
>
> Momentan sollte also die Helligkeit durchaus von der Anzahl der LEDs
> abhängen, die pro Zeile leuchten. Im schlimmsten Fall teilen sich also
> 24 LEDs einen Vorwiderstand. Wenn das nicht dunkel wird.
>
> Viel Spass beim umlöten :-)

EDIT: Die Vorwiderstände hab ich für den schlimmsten Fall berechnet, 
also so als ob die 24 LED's zusammen leuchten würden.

von Hugo Ratlos (Gast)


Lesenswert?

"Normalerweise" würde man keinen 1:24 Multiplex bauen, weil es die LEDs 
bei hinreichender Helligkeit stark strapaziert, aber mit Deinen 
Low-Current-LEDs geht das in Ordnung.

Welchen LED-Typ benutzt Du eigentlich?

von Max S. (masterjekkt)


Lesenswert?

Hugo Ratlos wrote:
> "Normalerweise" würde man keinen 1:24 Multiplex bauen, weil es die LEDs
> bei hinreichender Helligkeit stark strapaziert, aber mit Deinen
> Low-Current-LEDs geht das in Ordnung.
>
> Welchen LED-Typ benutzt Du eigentlich?

Ich benutze rote Low-Current-LED's mit 2V/2mA.

von Hugo Ratlos (Gast)


Lesenswert?

Ich meinte eigentlich die Typenbezeichnung ;-) Auch um eine Vorstellung 
vom preislichen Rahmen zu bekommen.

von Max S. (masterjekkt)


Angehängte Dateien:

Lesenswert?

Hugo Ratlos wrote:
> Ich meinte eigentlich die Typenbezeichnung ;-) Auch um eine Vorstellung
> vom preislichen Rahmen zu bekommen.

Typenbezeichnung ist bei Conrad nicht angegeben, da stand nur rote 5mm 
low-current.

Ich hab den Fehler jetzt behoben. Die Basisvorwiderstände der 
Transistoren für die Zeilen waren zu hoch, hab die durch 1k Widerstände 
und die LED-Vorwiderstände durch 0 ohm Wid. ersetzt. Durch die hohe 
Multiplexfrequenz kann also nicht viel passieren. Jedenfalls leuchtet 
die Anzeige jetzt sehr viel heller.

Hab die Schaltung als Dateianhang hinzugefügt. Lasst euch nicht durch 
die vielen Kabel verwirren, die brauche ich um für jedes Programm alles 
optimal verdrahten zu können, abhängig davon für welche Funktion. Auf 
dem Foto ist dann meine Digitaluhr dargestellt.

von Falk B. (falk)


Lesenswert?

@Max Stephany (masterjekkt)

>und die LED-Vorwiderstände durch 0 ohm Wid. ersetzt. Durch die hohe
>Multiplexfrequenz kann also nicht viel passieren. Jedenfalls leuchtet
>die Anzeige jetzt sehr viel heller.

Klar, wenn mir jemand ne Kugel durch den Kopf jagt, dauert das nur ein 
paar Mikrosekunden, kann also nicht viel passieren . . . :-0

Tu deinen LEDs einen Gefallen und bau 24 Widerstände in die 
Spaltentreiber.

>die vielen Kabel verwirren, die brauche ich um für jedes Programm alles
>optimal verdrahten zu können, abhängig davon für welche Funktion.

Schalu Leute verdrahten das immer gleich un machen den Rest in der 
Software . . .

MfG
Falk

von Max S. (masterjekkt)


Lesenswert?

Falk Brunner wrote:

> Schalu Leute verdrahten das immer gleich un machen den Rest in der
> Software . . .
>
Ja schon, aber wenn ich jetzt alles fest verdrahten würde, könnte ich zb 
PortD nicht für den USART oder die externen Interrupts benutzen. Ich 
möchte ja nicht nur die Matrix ansteuern, sondern auch andere 
Schaltungen damit betreiben, diese Platine dient als Hauptkomponente wo 
der uC drauf sitzt. Wenn ich jetzt zb ASCII-Zeichen an den uC senden 
möchte und die dann auf der Matrix anzeigen lassen will, und danach 
etwas anderes programmiere, wobei ich den gesamten PortD brauch dann 
klappt das mit einer festen Verdrahtung nicht. Es ist sozusagen zum 
Experimentieren :-)

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.