Forum: Mikrocontroller und Digitale Elektronik Hilfe bei LED-Matrix Beschaltung


von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich möchte eine 8*8 Led Matrix bauen und mit einem ATmega8 ansteuern, 
ohne Schieberegister, direkt von den Ports aus.
Die LEDs haben eine Forward Voltage von 2.1 Volt, einen Peak Forward 
Current von 150mA und brauchen 20mA um mit 11mcd zu leuchten.
So viel ist mir klar: Da ich 8:1 multiplexe, muss ich mit höheren 
Strömen arbeiten, um eine gute Helligkeit der LEDs zu bekommen. Diese 
hohen Ströme kann der MC nicht schalten, darum brauche ich Transistoren.

Ich hab mal eine erste Version mit 2*2 Leds nach dem Artikel 
"LED-Matrix" hier auf der HP aufgezeichnet.
Am PortB sind die Splaten, am PortC die Reihen.

Stimmt der generelle Aufbau?
Reicht der eine Vorwiderstand R3 aus, oder braucht jeder Transistor 
seinen eigenen?
R1,R2,R4,R5 sind die Basiswiderstände.
Wie groß müssen die Basiswiderstände sein und welchen Transistortyp soll 
ich nehmen. Passt die BC-Baureihe, welches Ic muss er haben?
Haben die Transistoren bzw. ihre Basiswiderstände einen Einfluss auf die 
Wahl des LED-Vorwiderstands?

Ich hab zwar schon im Forum die Such-Funktion benutzt, aber nichts 
gefuden, was mir bei meinem konkreten Aufbau weiterhilft.
Also seid bitte nicht böse, dass ich das Theme zum tausendetsen Mal hier 
im Forum anfange.

Ich hoffe, ihr könnt mir helfen.
Vielen Dank!

von Karl H. (kbuchegg)


Lesenswert?

Für Q5 und Q6 würde ich lieber PNP Typen nehmen.
( Low Side schalten: Also von einer Schaltung nach GND durchschalten: 
NPN
  High Side schalten: Also von Vcc zur Schaltung: PNP )

> Reicht der eine Vorwiderstand R3 aus, oder braucht jeder Transistor
> seinen eigenen?

Der Widerstand begrenzt den Strom, der durch die LED läuft. Wenn jetzt 
LED5 und LED6 gleichzeitig eingeschaltet sind, bestimmt der eine 
Widerstand den Strom, der durch beide LED läuft -> Leds leuchten 
dunkler, als wie wenn nur eine LED eingeschaltet wäre. Daher braucht 
jede LED-Spalte (oder LED-Zeile, je nachdem was du multiplexst) einen 
eigenen Vorwiderstand.

> Transistortyp soll ich nehmen.

Einen dessen Ice gross genug ist. Für deinen Zwecke werden es wohl 
BC337, BC327 und Konsorten tun.

> Wie groß müssen die Basiswiderstände sein

Muss man ausrechnen.
Wieviel Strom soll maximal über die C-E Strecke laufen. Aus dem 
Datenblatt hF heraussuchen. Durchdividieren. Damit ist der Basisstrom 
bekannt. Daraus ergibt sich der Vorwiderstand. Den zur Sicherheit noch 
halbieren, damit der Transi nur ja in die Sättigung geht.
Wahrscheinlich wird 1K ausreichen ( ohne Rechnen, rein nur geschätzt :-)

von Falk B. (falk)


Lesenswert?

@  Stefan (Gast)

>Stimmt der generelle Aufbau?

Nein.

Q5, Q5 sind Emitterfolger, die kriegen sinnvollerweise keinen 
Basisvorwiderstand.
R3 ist vollkommen falsch platziert, da müssen für jede Zeile ein R an 
die Emitter von Q5, Q6.
Dann musst du aber spaltenweise multiplexen.

MFG
Falk

von Stefan (Gast)


Lesenswert?

Erstmal danke für eure Antworten!

Jetzt bin ich aber etwas verwirrt.
Soll ich jetzt:
(1) Q5 und Q6 in Emitterschaltung als PNPs mit Last am Kollektor (so wie 
von Karl heinz Buchegger beschrieben)
oder als
(2) Emitterfolger als NPNs (Falk Brunner)
aufbauen

Ich sehe gerade, dass die zweite Variante auch hier: 
http://www.mikrocontroller.net/wikifiles/6/64/LED_Matrix_8x5.png 
beschrieben ist.

Warum ist (2) richtig? Ich multiplexe ja die Spalten. Kann ich dann 
überhaupt mein Muster an die Zeilen anlegen?
Was ist an (1) falsch?

Warum brauch ich einen Transistor mit Ic=1A. Ich will ja nur 150mA 
schalten. Würde da nicht einer mit Ic=0.2A (z.B: BC 547) reichen?

Danke!

von CogitoErgoSum (Gast)


Lesenswert?

Wenn das simmt was du schreibst, dann hol dir neue LEDs. Was sind das 
für ineffiziente LEDs wenn die mit 20mA nur 11mcd bringen. Da hat jede 
neue LED mehr bei nur n paar mA.

von Stefan (Gast)


Lesenswert?

Ich versuche, die Kosten möglichst gering zu halten.
Diese LEDs kosten 5 Cent pro Stück und leuchten bei 20mA trotzdem noch 
hell genug.
Low-current LEDs sind mir viel zu teuer, vor allem wenn ich 64 Stück 
davon brauche. Da nehme ich lieber ein paar Transistoren in Kauf.

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:
> Erstmal danke für eure Antworten!
>
> Jetzt bin ich aber etwas verwirrt.
> Soll ich jetzt:
> (1) Q5 und Q6 in Emitterschaltung als PNPs mit Last am Kollektor (so wie
> von Karl heinz Buchegger beschrieben)
> oder als
> (2) Emitterfolger als NPNs (Falk Brunner)
> aufbauen

Such dir was aus.

> Warum brauch ich einen Transistor mit Ic=1A. Ich will ja nur 150mA
> schalten. Würde da nicht einer mit Ic=0.2A (z.B: BC 547) reichen?

Würde er.
Aber einer der 1A kann, kostet auch nicht mehr.
Und nur weil er 1A abkann, heißt das ja nicht, dass du 1A fliessen 
lassen musst. Das bedeutet nur, dass er soviel aushält. Und da er mehr 
aushält, ist er auch ein klein wenig immuner gegen Durchbrennen.

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:
> Erstmal danke für eure Antworten!
>

> Warum ist (2) richtig? Ich multiplexe ja die Spalten.

Überleg dir einfach, durch welche LED und vor allem welchen Widerstand 
der Strom läuft, wenn du Spalte für Spalte durchgehst. Es ist immer nur 
1 Spalte eingeschaltet, d.h. der Strom geht immer genau durch 1 
Widerstand und 1 LED. Und das in jeder Zeile.

D.h. diese Schaltung ist für Spaltenmultiplex ausgelegt. Wnnn du die 
Zeilen multiplexen willst, dann musst du die Widerstände anders 
anordnen.

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

@Karl heinz Buchegger: Das mit den Widerständen ist mir schon klar.

Ich frage mich, warum es keinen Unterschied macht, ob ich
"Q5 und Q6 in Emitterschaltung als PNPs mit Last am Kollektor"
oder
"Q5 und Q6 als Emitterfolger als NPNs" verwende?

Ich hab jetzt im Anhang die Verion mit Emitterfolger drinnen.

Stimmt das alles so?

Jetzt brauche ich nur noch die Werte für R1 bis R8.
Wenn ich mit 5 Volt arbeite, die LEDs eine Durchlassspannung von 2.1 
Volt haben, sind dann Pulsströme von 136mA okay? Dann käme ich auf 22 
Ohm.
Der Widerstand müsste dann einer mit 0.5 W sein, richtig?

Wie wähle ich die Werte von R9 bis R16?
Vom BC337 gibt es den 16/25/40 mit Hfe (minimal) = 100/160/250
Muss ich den Hfe_max Wert auch beachten, der liegt nämlich bei 250 (beim 
16er)?
Wenn ich 150mA zwischen Collector und Emitter zulassen will, und mit 
Hfe=100 rechne, komme ich auf 2,8kOhm. Halbiert sind das 1,4. Würde da 
ein Widerstand von 1,2 KOhm passen?
Der Widerstand müsste nur einer mit 1/10 Watt sein, oder?

Danke!

von Falk B. (falk)


Lesenswert?

@  Stefan (Gast)

>Jetzt brauche ich nur noch die Werte für R1 bis R8.

Wenn ich mit 5 Volt arbeite, die LEDs eine Durchlassspannung von 2.1
Volt haben, sind dann Pulsströme von 136mA okay? Dann käme ich auf 22
Ohm.
Der Widerstand müsste dann einer mit 0.5 W sein, richtig?

Ich komme auf ~15 Ohm

R = U / I = (5-2,1-0,7-0,1) / 140mA = 15 Ohm

0,5W sind OK.

>Wie wähle ich die Werte von R9 bis R16?

Nimm 470 Ohm und gut.

>Vom BC337 gibt es den 16/25/40 mit Hfe (minimal) = 100/160/250
>Muss ich den Hfe_max Wert auch beachten, der liegt nämlich bei 250 (beim
>16er)?

Ist hier egal.

>Wenn ich 150mA zwischen Collector und Emitter zulassen will, und mit
>Hfe=100 rechne, komme ich auf 2,8kOhm. Halbiert sind das 1,4. Würde da
>ein Widerstand von 1,2 KOhm passen?

Geht auch, sollte man aber etwas mehr Reserve gönnen. 1K oder so.

>Der Widerstand müsste nur einer mit 1/10 Watt sein, oder?

Reicht.

MfG
Falk

von Stefan (Gast)


Lesenswert?

Hallo!

Vielen Dank für eure Hilfe!

@Falk: R = U / I = (5-2,1-0,7-0,1) / 140mA = 15 Ohm
Ach so, die 0,7 Volt fallen ja noch zwischen Basis und Emitter ab, 
richtig?
Aber woher kommen die 0,1 Volt?

Was ist jetzt für die Basiswiderstände besser: 1k oder 470?

Viele Grüße,
Stefan

von Falk B. (falk)


Lesenswert?

@  Stefan (Gast)

>Aber woher kommen die 0,1 Volt?

C-E Sättigungsspannung der Spaltentransistoren.

>Was ist jetzt für die Basiswiderstände besser: 1k oder 470?

Ist egal.

MFG
Falk

von Stefan (Gast)


Lesenswert?

Hallo!

Wenn ich meine LEDs nicht über die 8 Spalten- bzw. Zeilenleitungen 
direkt an den MC anschließe, sondern dafür zwei 74HC595 Schieberegister 
verwende (ich möchte Pins beim ATmega8 sparen), ändert sich dann an den 
Werten meiner Widerstände etwas?

Eigentlich müsste alles beim Alten bleiben, oder übersehe ich etwas?

Passen für die Schieberegister Abblockkondensatoren von 100nF?

Viele Grüße,

Stefan

von Falk B. (falk)


Lesenswert?

@  Stefan (Gast)

>verwende (ich möchte Pins beim ATmega8 sparen), ändert sich dann an den
>Werten meiner Widerstände etwas?

Nein.

>Passen für die Schieberegister Abblockkondensatoren von 100nF?

Ja.

MFG
Falk

von Stefan (Gast)


Lesenswert?

Ich möchte nur die Zeilen an ein Schieberegister anschließen.

Die Spalten werden ja gemultiplext. Sie liegen über eine 
Emitterschaltung (NPN) gegen GND. Wenn ich jetzt an den NPN-Transistor 
eine log. 1 anlege, dann aktiviere ich damit die Spalte, bei log. 0 ist 
die Spalte aus, ist das soweit ichtig?

Es soll ja immer nur eine Spalte aktiv sein. Könnte ich die Spalten über 
einen 74HCT238 ansteuern (um Portpins zu sparen)?

Bei diesem IC sind VCC und GND auf gegenüberliegenden Seiten des 
DIP-Gehäuses. Ist da ein Abblockkondensator sinnvoll? Wenn ja, 100nF?

Vielen Dank!

Stefan

von Falk B. (falk)


Lesenswert?

@  Stefan (Gast)

>die Spalte aus, ist das soweit ichtig?

Schaltplan!

>Es soll ja immer nur eine Spalte aktiv sein. Könnte ich die Spalten über
>einen 74HCT238 ansteuern (um Portpins zu sparen)?

Ja.

>Bei diesem IC sind VCC und GND auf gegenüberliegenden Seiten des
>DIP-Gehäuses. Ist da ein Abblockkondensator sinnvoll? Wenn ja, 100nF?

An einem Digital-IC ist eine Abblockkondensator IMMER NOTWENDIG! 100nF 
sind der Standardwert, der praktisch immer OK ist.

MFG
Falk

von Stefan (Gast)


Lesenswert?

Ich hätte noch eine Frage:

Wie lange kann ich die einzelen LEDs eingesschaltet lassen? Zu denen, 
die ich verwende habe ich leider kein Datenblatt. In anderen 
Datenblätter habe ich aber sowas wie: "peak forward current: 130mA (1/10 
duty cycle, 0.1ms pulse width)" gelesen.
Das heißt, jede LED dürfte nur 0,1ms lang an sein und 0,7ms aus (ich 
multiplexe ja 8). Das wäre dann eine Frequenz von 1250Hz (1/0,0008).

Das ist aber ganz schöne Verschwendung der MC-CPU Ressourcen. Kann ich 
die Displayfrequenz auch kleiner machen, sodass jede LED dann halt 
länger als 0,1ms an ist, ohne dass sie druchbrennen?

MFG
Stefan

von Freizeitbastler (Gast)


Lesenswert?

Wenn Du dich außerhalb des Datenblatt bewegen möchtest, musst Du wohl 
eigene Testreihen fahren.

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:

> Das ist aber ganz schöne Verschwendung der MC-CPU Ressourcen.

Inwiefern?

Alle 0.1ms ein Interrupt, der zur nächsten Stelle weiterschaltet ist für 
einen µC so gut wie gar nichts.

: Wiederhergestellt durch User
von Stefan (Gast)


Lesenswert?

Du meinst wohl alle 0,1 ms.

Aber Du hast wahrscheinlich Recht. Ich muss halt meine Daten per SPI ins 
Schieberegister laden, aber bei 16MHz Systemtakt sollte das schon gehen.

Andere Frage: Ich verwende ein unstabilisiertes 300mA Netzteil. Kommt 
das überhapt mit meiner Schaltung klar? Ich hab ja 8 LEDs und durch jede 
(wenn alle an sind) fließt 140mA. (Ich verwende einen 7805 für meine 
Schaltung.)

von Karl H. (kbuchegg)


Lesenswert?

Stefan schrieb:
> Du meinst wohl alle 0,1 ms.
>
> Aber Du hast wahrscheinlich Recht. Ich muss halt meine Daten per SPI ins
> Schieberegister laden, aber bei 16MHz Systemtakt sollte das schon gehen.


16Mhz  sind 16000000 Instuktionen pro Sekunde.
Wieviele Takte benötigt man für den Anzeigewechsel im Mulitplex? Sagen 
wir einmal 20. Macht pro Sekunde 10000 * 20 Instruktionen = 200000

   16000000   .... 100%
     200000   .... x

x = 0.0125

Dein Multiplex verbraucht gerade mal 1 Hunderstel Prozent der 
Rechenzeit.

> Andere Frage: Ich verwende ein unstabilisiertes 300mA Netzteil. Kommt
> das überhapt mit meiner Schaltung klar? Ich hab ja 8 LEDs und durch jede
> (wenn alle an sind) fließt 140mA. (Ich verwende einen 7805 für meine
> Schaltung.)

Wenn alle 8 LED an sind, wollen sie 8 * 140mA = 1.12A  haben.
Wenn dein Netzteil nur 300mA liefern kann, hast du ein Problem


(Hast du schon ausprobiert, wie stark die Helligkeit einsackt, wenn du 
den Stromverbrauch reduzierst, auf, keine Ahnung, 30 oder 40mA. Kommt 
natürlich auf die Anwendung an, aber meistens benötigt man ja sowieso 
keine 7-Segment Anzeige, die einem den Sehpurpur von der Netzhaut 
brennt.)

von Falk B. (falk)


Lesenswert?

@  Karl heinz Buchegger (kbuchegg) (Moderator)

>Dein Multiplex verbraucht gerade mal 1 Hunderstel Prozent der
>Rechenzeit.

Niemand multiplext LEDs mit 10kHz, nur weil das als Standardmessug immer 
im Datenblatt steht.

Pi ml Daumen kann man bei kleinen normalen/ultrahellen LEDs mit 20mA 
etwa den halben Pulsstrom anstetzen und dann normal mit 1KHz oder so 
muxen.

Bei PowerLEDs ala Luxeon & Co ist das was anderes, die verkraften keine 
sonderlich hohen Pulsströme.

MfG
Falk

von Vlad T. (vlad_tepesch)


Lesenswert?

>Pi ml Daumen kann man bei kleinen normalen/ultrahellen LEDs mit 20mA
etwa den halben Pulsstrom anstetzen

den halben? du meinst den doppelten.

von Falk B. (falk)


Lesenswert?

@  Vlad Tepesch (vlad_tepesch)

>>Pi ml Daumen kann man bei kleinen normalen/ultrahellen LEDs mit 20mA
>etwa den halben Pulsstrom anstetzen

>den halben? du meinst den doppelten.

Ich mein den halben von dem Wert, der für 0,1ms im Datenblatt steht.

MFG
Falk

von Vlad T. (vlad_tepesch)


Lesenswert?

ach so.
wenn die LEDs keine teuren sind, würd ich mir mal mit nem Messgerät und 
nem Poti die Helligkeitsunterschiede zwischen 20,40 und 80mA anschauen.
meine billigen grünen standardleds werden über 30mA scheinbar nicht mehr 
heller.
weswegen ich sie in meiner Matrix auch nur mit 35A betreibe

von Freizeitbastler (Gast)


Lesenswert?

> weswegen ich sie in meiner Matrix auch nur mit 35A betreibe

hihi, werden sie da nicht doch heller?

von Mark B. (markbrandis)


Lesenswert?

Mit 35 Ampère müsste man auch ein größeres Wohnzimmer schon recht gut 
beleuchten können. Nur eben nicht sehr lang ;-)

von HildeK (Gast)


Lesenswert?

>Mit 35 Ampère müsste man auch ein größeres Wohnzimmer schon recht gut
>beleuchten können.

Eben nicht, wenn sie oberhalb 30mA nicht mehr heller werden, dann sind 
sie auch bei 30A nicht heller - oder?

Deine Aussage stimmt aber, wenn man auf LEDs verzichtet und z.B. einen 
entsprechenden Xenonscheinwerfer nimmt. :-)

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.