Forum: Mikrocontroller und Digitale Elektronik LED-Multiplex-Betrieb, 12V, u.a.: High-Side steuern


von Andi H (Gast)


Lesenswert?

Hallo!

Ich hab ein kleines Problem und hoffe, ihr könnt helfen. Bevor ich
lange rumprobiere, kein zufriedenstellendes Ergebnis bekomme und viel
Geld ausgebe...

Mein Problem ist folgendes: Ich muß eine LED-Matrix mit insgesamt 64
LEDs (8x8) im Multiplebetrieb ansteuern. Dabei kann ich weder die LEDs
noch die Vorwiderstände (jede LED einen eigenen) austauschen, da sie
bereits in einer gefliesten Tanzfläche (in den Fugenkreuzen)
eingearbeitet sind und nur noch die 16 Anschlußkabel
(8xAnode/8xKathode) zugänglich sind.

Jede LED soll jetzt einzeln angesteuert werden können, die Software (AT
Mega 8535) ist bereits fertig. Mein bisheriger Versuch mittels ULN2803
(Low-Side) und TD62783 (=UDN2981, High-Side) läßt allerdings zu
wünschen übrig (LEDS viel zu dunkel), bisher lief das ganze aber auch
nur auf 5 Volt, außerdem ziehen die Transistoren in den
Treiberbausteinen noch Spannung ab. Die Vorwiderstände der LEDs sind
auch für den Betrieb an 5V ausgelegt (180Ohm), allerdings für Dauer-An,
nicht für Multiplex.

Um jetzt eine höhere Helligkeit zu erreichen, würde ich die LEDs gerne
mit 12 Volt )oder gar mehr???) ansteuern. Was meint Ihr, eigentlich
müßten die das doch locker mitmachen, da sie bei Multiplex-Betrieb ja
nur ein 8-tel der Zeit an sind? Kann man bei LEDs linear rechnen,
also:
 1/8 Leuchtdauer = Strom 8 mal so hoch?

Die nächste Frage ist, womit steuere ich sie an? Wenn ich das richtig
sehe, werden die bisherigen ULN/UDN Treiberbausteine den daraus
resultierenden höheren Strom nicht verkraften, da bei 8 LEDs
gleichzeitig an, je 180Ohm Vorwiderstand, bei 12 Volt (=ca.10V an den
Widerständen) schon ca. 440mA fließen. (55mA je LED, aber bei einem
Duty-Cycle von 12,5%). Wenn man dann davon ausgeht, daß alle 64 LEDs
leuchten sollen, muß der Treiberbausten insgesamt diese 440 mA
dauerhaft liefern können, laut Datenblatt kann zwar jeder Kanal max
500mA, aber sicher nicht wenn alle gleichzeitig an sind, denn da steht
noch was von "Duty 10% = 160mA /ch" usw, jedenfalls weit entfernt von
den 440mA...

Hoffe, ihr könnt mir etwas helfen, wie ich den Aufbau jetzt am Besten
machen könnte. Diskret? Mit MosFETs? Oder doch lieber mit
PNP/NPN-Transistporen? Was ist besser? Vor allem für die Highside, hier
dachte ich zunächst an ein P-Kanal MosFet, gesteuert über ein
NPN-Transistor vom Port des uC, allerdings habe ich noch keine großen
Erfahrungen mit FETs. Könnte das Probleme mit der Gate-Kapazität und
somit der Umladezeit geben, da ich eine sehr hohe Frequenz (weit
jenseits 10KHZ) anstrebe? Also doch lieber nen PNP statt FET? Oder gar
irgend ein fertiger High-Side-Baustein wie "BTS..."?

So, nun genug getextet, ich hoffe Ihr könnt mir helfen. Jede Antwort
willkommen: Kritik, Gegenvorschläge, Teilantworten,..., immer her
damit! :-)  Bis dann!

ciao,
Andi

von Jörn-H. G. (joern_g)


Lesenswert?


von Jörn-H. G. (joern_g)


Lesenswert?

Ach ja zum Pulsstrom noch ergänzend:
Dafür musst du mal in das Datenblatt der LEDs gucken, der Hersteller
gibt den Wert dafür immer an.

Bei IR-LEDs sind das z.B. durchaus mal einige Ampere, die man pulsen
darf, bei anderen LEDs manchmal auch nur sehr wenig.

Hier sind z.B. viele solche Angaben zu Kingbright-LEDs zu finden:
http://www.kingbright-europe.de/_daten/Application_note.pdf

Da steht zum Beispiel, dass du bei der LED ganz rechts 0,1ms lang (wenn
du danach 0,9ms Pause machst! 1/10 duty cycle) 200mA anstatt nur 30mA
"bestromen" darfst (Seite 8).

Die Spannung dazu ganz normal über U=R*I und dem Spannungsabfall (Vf)
aus dem Datenblatt berechnen.

Irgendwelche Werte (z.B. mal eben 12V) zu nehmen ist eine schlechte
Idee. Weil was machst du, wenn es zwar prima funktioniert, die LED dann
aber nach 50 Betriebsstunden bereits ausfällt und du die Fliese
rausklopfen darfst.

cu joern

P.S. Rechenbeispiel:
Rote LED:
Vf=2,5V
R=180Ohm
U=5V
5V-2,5V=2,5V
2,5V/180Ohm= 14mA (Dauerstrom) - ein bischen wenig sind die 5V also
allemal, wenn deine LEDs auch so ein Vf haben.

Blaue LED:
5V-3,5V=1,5V
1,5V/180=8,3mA (viel zu wenig, bzw. viel zu großer Vorwiderstand)

Nun also pulsen mit sagen wir erstmal nur 100mA (bei 180Ohm):
rot:
100mA*180=18V
18V+2,5V = 20,5V
20,5V dürftest du bei duty cycle und 0,1ms Puls also anlegen.

blau:
100mA*180=18V
18V+3,5V=21,5V
21,5V dürftest du bei duty cycle und 0,1ms Puls also anlegen.

12V sollte also kein Problem geben bei so kurzem duty cycle und puls

von Hendrik (Gast)


Lesenswert?

Mittlerweile ist es etwas haarig auf die Suche zu verweisen, da in
diesen Threads auch oft wieder auf die Suche verwiesen wird g

Versuchs doch mal mit einem Hi-Side Driver à la UDN...
Die haben soweit ich weiß einen integrierten Levelshifter, sodass du
mit der Spannung hochkannst.

Du hast zwar schon den Controller fertig, aber da Du von einer
Tanzfläche gesprochen hast ist vielleicht auch mal mein Matrix-Projekt
irgendwann interessant für Dich:
www.hoelscher-hi.de/hendrik/light/matrix.htm

Mich würden auch ein paar Details zu deiner Steuerung interessieren...

Viele Grüße, Hendrik

von Andi H (Gast)


Lesenswert?

Hallo!

Erstmal Danke für Eure Antworten!

@Jörn: Problem ist, daß ich die LEDs schon länger liegen hatte, und
natürlich kein Datenblatt dazu... Sind übrigens weiße. Mein Puls wird
wohl bei längstens 100ns liegen, eher kürzer. Müßte ich nochmal genau
nachrechnen. Auf alle Fälle hilft mir das schonmal weiter, kann ich mit
12 Volt also problemlos mal testen. Für den Test nehm ich natürlich noch
nen paar LEDs, die noch nicht eingefliest sind, da ists nicht so
schlimm, wenn mir eine bei drauf geht.

@Hendrik: Die UDN2981 habe ich derzeit verwendet, um mit 5Volt den
höheren Strom liefern zu können, mein Problem ist jetzt aber, daß ich
ja durch den Multiplex-Betrieb eine höhere Spannung benutzen möchte,
die der UDN zwar liefern könnte, aber wohl den dann daraus
resultierenden wesentlich höheren Strom nicht mehr verkraftet. Das
schrieb ich aber oben auch schon ;-) (Gibts vielleicht noch andere, die
noch mehr strom liefern können? Also dauerhaft bis zu 1 Ampere
insgesamt? Hab noch nicht gezielt nach gesucht...)

Meine Steuerung ist ein DMX-Empfänger auf Mega8535-Basis. 64DMX-Kanäle
werden dazu benutzt, um meine 64LEDs anzusteuern. Der uC erhält per DMX
die Daten von einem WinXP-System mit "e:cue"-Software (siehe
www.ecue.tv) und einem ecue-nano. In der derzeitigen Version werden die
LEDs lediglich ab einem Schwellwert von 128 ein bzw. ausgeschaltet,
später sollen insgesamt mehrere Dimmstufen (strebe 8-16 an)
implementiert werden. Dabei hat der 8535 dann auch alle Hände voll zu
tun, er läuft übrigens auf 16MHz.

Deine Seite kenne ich übrigens, auch ganz interessant. Ähnliche
Anwendungen hab ich auch schon entwickelt, bisher hab ich DMX-Empfänger
(bzw Sender) allerdings nie IRQ-gesteuert programmiert, da meine uC
immer genug Zeit hatten zu pollen. Der Vorteil dabei war, daß ich das
Brake-Signal auch mittels Schleife besser auswerten konnte, indem ich
die entsprechende Low-Phase nach abschalten des UART abgewartet habe.

Für dieses Projekt hab ich jetzt aber wie Du eine IRQ-gesteuerte
Routine entwickelt, mit dem gleichen Nachteil wie dem Code auf Deiner
Seite, daß ein eigentlicher UART-Fehler dazu verwendet wird, um das
Brake-Signal zu erkennen. Was aber, wenn tatsächlich ein Fehler
auftritt und zufällig danach ein korrektes Byte mit $00 empfangen wird,
was aber in wirklichkeit KEIN Startbyte ist? naja, daran tüftliche ich
später nochmal, erstmal funkioniert es ja (solange das DMX-Signal
sauber genug ist).

Hätte ich Deine Seite übrigens früher gefunden, hätte ich mir einiges
an Arbeit gespart, letzten Endes funktioniert meine Empfangsroutine
nach dem gleichen Prinzip wie Deine... ;-)

---

Soweit so gut, was mir jetzt immer noch fehlt:
Eine gute und vor allem preiswerte Möglichkeit, einen relativ großen
Strom (100-200mA) bei 12V (oder höher) je Kanal bei insgesamt 8 Kanälen
auf der High-Side mit 5V zu steuern. Also insgeamt bis ca 1,5A
Stromaufnahme bei 12V, aufgeteilt auf 8 Kanäle.

Low-Side wäre das ka kein Problem mittels 8 mal N-MosFet oder
NPN-Tansistor. Aber wie die HighSide?

Bisher haben mir die links bzw. Forumssuche nicht genügend helfen
können. Wie ich die LED-Matrix per uC und Software ansteuere ist kein
Problem, auch schon fertig. Aber die "Endstufe" fehlt mir noch,
zumindest wie die 5V-Portspannung (High- oder Low-Aktiv ist wurscht,
das läßt sich ja per Software ändern) auf den großen 12V/200mA-Strom
umgesetzt werden kann. Und zwar bei 8 Kanälen, möglichst preiswert...

Gruß,
Andi.

von Hendrik (Gast)


Lesenswert?

@Andi: Ich würde Dir gern eine Mail schicken, habe aber noch keine Addy
von dir... Schreib mir bitte irgendwas an hoe1scher|ät|web.de.

Grüße, Hendrik

von Hendrik H. (henne)


Lesenswert?

<offtpic>...ich hab mich mal angemeldet...</offtopic>

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.