Forum: Mikrocontroller und Digitale Elektronik Ist TLC5940 als Treiber für Seoul Z-Power LED P5-II, RGB möglich/sinvoll?


von Kai G. (runtimeterror)


Lesenswert?

Tag zusammen!

Ich plane im Moment eine RGB-Zimmerbeleuchtung. Sie soll vorwiegend als 
Effektbeleuchtung eingesetzt werden - eine gute Farbwiedergabe ist also 
nicht so tragisch.

Ich habe dafür die "Seoul Z-Power LED P5-II, RGB" ins Auge gefasst, da 
sie mit knapp 40 lm/W immer noch halbwegs ökonomisch daherkommt und mit 
ihren 6 Anschlüssen recht flexibel beschaltet werden kann.
http://www.seoulsemicon.com/en/product/prd/zpowerLEDp5-II.asp

Der Raum wird im Moment mit ca 4000 lm bestrahlt (4 x 50 W 
Hochvolthalogen-Spots), was in etwa 50 RGB-LEDs entspricht. Um auf die 
empfohlenen 500 lx zu kommen bräuchte es ca. 80 LEDs.

Wenn ich schon so viele davon an die Decke hänge, möchte ich die 
natürlich auch getrennt ansteuern/dimmen können - Spaß muss sein =)
Ein Matrixverschaltung/-ansteuerung kommt wegen der gewünschten 
Helligkeit nicht in Frage.

Um einen brauchbaren Weißpunkt zu erhalten sollte die LED laut 
Datenblatt mit 220 mA, 350 mA und 200 mA betrieben werden. Ausgehend von 
diesem Weiß, möchte die die LED per PWM dimmen (bei einem Duty Cycle von 
3 mal 100% soll also in etwa weiß rauskommen).

Exemplarstreuung ist nicht so tragisch, da die LEDs mehr als 3 m über 
dem Boden hängen und man beim direkten Blick in die LED eh keine 
großartigen Helligkeitsunterschiede feststellen dürfte.

Bei der Suche nach einem geeigneten Treiber bin ich auch den TLC5940 
gestoßen. Dieser liefert als Konstantstromsenke 16 x 120 mA bei 64 
Analogstufen und 4096 PWM-Stufen. Bis auf den Maximalstrom passt der 
Treiber meiner Meinung nach perfekt.
http://focus.ti.com/docs/prod/folders/print/tlc5940.html

Jetzt hatte ich die Idee einfach mehrere Kanäle zusammenzuschalten um 
die höheren Ströme zu erreichen:
- Rot : 2 x 120 mA = 240 mA (statt 220 mA)
- Grün: 3 x 120 mA = 360 mA (statt 350 mA)
- Blau: 1 x 120 mA = 120 mA (statt 100 mA)
Ich treffe also ziemlich gut den Weißpunkt - den Rest kann ich mit der 
PWM justieren.

Die Treiber werden vermutlich alle von einem AVR-µC angesteuert.

- Würde das mit dem Zusammenschalten so einfach funktionieren? Auch in 
Zusammenhang mit der PWM (identische Duty-Cycles bei 
zusammengeschalteten Kanälen vorausgesetzt)?
- Kennt ihr einen Treiber, der besser geeignet wäre (ungerne unter 10 
Bits bei der PWM-Auflösung)?
- Wäre ein diskreter Aufbau sinnvoller (vom Aufwand mal abgesehen)?
- Kennt ihr RGB-LEDs, die einen besseren oder ähnlich guten optischen 
Wirkungsgrad haben und sich einfach auf einen brauchbaren Weißpunkt 
einstellen lassen?
- Kennt ihr eine gute/günstige Bezugsquelle für den Treiber oder die 
LEDs?
- Welche Versorgung würdet ihr wählen? Ein ATX-Netzteil wird die rund 50 
A nicht über die 6 V-Schiene liefern können... Eher 12 V mit 
DC/DC-Wandler... werde mal ein wenig in den Datenblättern stöbern.
- Was habe ich sonst noch übersehen? ;)

Danke für eure Vorschläge!

Kai

von Kai G. (runtimeterror)


Lesenswert?

Kaum schickt man den Beitrag ab:

"Möchtest du den Ausgangsstrom für die LEDs vergrößeren so solltest du
mehrere Ausgänge der TLC parallel schalten und dann da nur 1 LED
dranhängen. Laut AppNote zum TLC soll das gehen."
Beitrag "Re: Hilfe LUXEON LED Array über TLC5940 und ULN2803"

Ich suche jetzt mal die Appnote...

von Kai F. (kai-) Benutzerseite


Lesenswert?

hallo,
habe zwar bisher nur mit dem TLC5922 und dem TLC5940 was mit "normalen" 
RGBs angestellt, allerdings hört das sich schonmal ganz vernünftig an, 
allerdings auch sehr kostenintensiv.
Was du auch noch bedenken solltest ist die Kühlung, die jeder Treiber 
braucht, vor allem wenn du ihn im Dauerbetrieb auf voller Auslastung 
laufen hast. Da würde ich zur Sicherheit nochmal gegenrechnen ob das mit 
der Verlustleistung hinhaut.
Wenn du das weiß als Maximum einstellst, nimmst du dir die Möglichkeit 
dein ganzes Zimmer in sehr hellem blau leuchten zu lassen, vielleicht 
wäre es geschickter jede Farbe bis zu seinem Maximum leuchten zu lassen 
und den Rest über die Software zu machen, genug Stufen hast du ja 
schließlich. Theoretisch sind 1,8 * 10^16 Farben möglich, das sollte 
locker ausreichen, wobei du auch mal schauen solltest, dass du das ganze 
nicht linear regelst, sondern mal bei LED Fading reinschaust, damit 
das ganze auch noch übersichtlicher wird.
Bei der Terminierung wirst du auch noch viel Spaß haben, da kann ich dir 
aber auch ein paar Tips geben wenn es so weit ist.
Ich habe zwar wie gesagt nur mit den TLC5946 was gemacht, allerdings ist 
der ja recht ähnlich und du kannst vielleicht ein paar Codeschnipsel 
gebrauchen

Die AppNote hab ich mir auch schonmal angeschaut, ist eigentlich so wie 
man es sich vorstellt

Gruß
Kai

von Matthias L. (Gast)


Lesenswert?

Wie willst du die Vernetzung und die Ansteuerung, also die 
Helligkeitsvorgaben machen?

von Kai G. (runtimeterror)


Lesenswert?

Hi Kai, danke für's Feedback.

>habe zwar bisher nur mit dem TLC5922 und dem TLC5940 was mit "normalen"
>RGBs angestellt, allerdings hört das sich schonmal ganz vernünftig an,
>allerdings auch sehr kostenintensiv.

Wird vermutlich auch nicht billig - wenn ich mir vorher nicht sicher 
bin, ob das klappt, werd' ich auch die Finger davon lassen. Ist ja auch 
nicht gerade wenig Arbeit die Dinger an die Decke zu pappen.

>Was du auch noch bedenken solltest ist die Kühlung, die jeder Treiber
>braucht, vor allem wenn du ihn im Dauerbetrieb auf voller Auslastung
>laufen hast. Da würde ich zur Sicherheit nochmal gegenrechnen ob das mit
>der Verlustleistung hinhaut.

Mach ich. Meine derzeitige Deckenbeleuchtung verheizt 200 W - solange 
ich da nicht drüber komme ist alles im grünen Bereich.
Fällt dir eine effektivere Lösung ein?

>Wenn du das weiß als Maximum einstellst, nimmst du dir die Möglichkeit
>dein ganzes Zimmer in sehr hellem blau leuchten zu lassen,

Das ist schon ok. Wenn ich mir das helle Blau offenhalten würde, wirken 
andere Farben dagegen mickrig. Es sollten insgesamt genug LEDs sein um 
auch das Blau hell genug wiedergeben zu können.
Ich werde wahrscheinlich die Dot-Correction für die Feinabstimmung am 
Weißpunkt verwenden - wenn die nicht zu viel verheizt. Die Ansteuerung 
wird dadurch vereinfacht.

>vielleicht
>wäre es geschickter jede Farbe bis zu seinem Maximum leuchten zu lassen
>und den Rest über die Software zu machen, genug Stufen hast du ja
>schließlich.

Mir wäre am liebsten eine RGB-LED, bei denen der Weißpunkt bei 
identischen Strömen erreicht würde - konnte aber leider keine (mit 
entsprechend gutem Wirkungsgrad) finden.

>wobei du auch mal schauen solltest, dass du das ganze
>nicht linear regelst, sondern mal bei LED Fading reinschaust, damit
>das ganze auch noch übersichtlicher wird.

LED Fading sieht im Moment noch recht übershaubar aus ;)
Für die korrekte Farbwiedergabe halte ich mich an die Stevenssche 
Potenzfunktion mit einem Gamma-Wert von 0,33 - das sollte ganz gut 
passen.
http://de.wikipedia.org/wiki/Stevenssche_Potenzfunktion

>Bei der Terminierung wirst du auch noch viel Spaß haben, da kann ich dir
>aber auch ein paar Tips geben wenn es so weit ist.

Was genau meinst du? Die Kommunikation mit den Treiberbausteinen?

>Ich habe zwar wie gesagt nur mit den TLC5946 was gemacht, allerdings ist
>der ja recht ähnlich und du kannst vielleicht ein paar Codeschnipsel
>gebrauchen

Ich komme wahrscheinlich darauf zurück, sobald alle Unklarheiten 
beseitigt sind, danke!

>Die AppNote hab ich mir auch schonmal angeschaut, ist eigentlich so wie
>man es sich vorstellt

Die Appnote ist zwar für andere Bausteine gedacht, aber ich vermute mal, 
dass die auch auf den TLC5940 überrtagbar ist.
http://focus.ti.com/lit/an/slva253/slva253.pdf

schöne Grüße,
Kai

von Kai F. (kai-) Benutzerseite


Lesenswert?

Hallo nochmal,

Mit Verlustleistung meinte ich nicht, dass du vielleicht zu viel Strom 
verbrauchen könntest, sondern, dass der Treiber zu viel Leistung 
"verbraten" muss, sodass die im Datenblatt angegebene maximale 
Verlustleistung überschritten wird. Wenn du 6V einspeißt, die LED aber 
nur 3V braucht, musst du 3V verheizen, was bei 16*120mA auf fast 6 Watt 
hinauslaufen würde und wahrscheinlich zu viel wäre (Diese Treiber werden 
ganz schön heiß)
Mit einem DCDC Wandler für jeden Treiber würdest du die Spannung 
natürlich viel besser regeln können und damit auch den TLC entlasten.

Für die Ansteuerung nimmst du am besten die daisy-chaining Methode (SOUT 
an SIN vom folgenden) und schiebst die Daten durch alle Treiber durch.
Das Problem daran ist nur, dass die Datenleitung sehr lang wird , sodass 
es zu Reflektionen kommt siehe Wellenwiderstand
Hier steht wie ich es gelöst habe 
[[Beitrag "SPI Parallelterminierung"]]

Funktionieren wird das alles schon, muss nur eben gut durchdacht sein, 
eine bessere Möglichkeit zur Ansteuerung fällt mir auch nicht ein

Gruß
der andere Kai

von Kai G. (runtimeterror)


Lesenswert?

>Wie willst du die Vernetzung und die Ansteuerung, also die
>Helligkeitsvorgaben machen?

Die Vernetzung hatte ich mir (soweit das schon durchdacht ist) wie folgt 
vorgestellt:
1
                      ___
2
                     |AVR|___ PC per RS232
3
                     |___|
4
                       |
5
 ,____,____,____,__   _|_   __,____,____,____,
6
                   \_|TLC|_/
7
 ,____,____,____,__/ |___| \__,____,____,____,
8
                       |
9
 ,____,____,____,__   _|_   __,____,____,____,
10
                   \_|TLC|_/
11
 ,____,____,____,__/ |___| \__,____,____,____,
12
                       |
13
                       |
14
oder:
15
                       |
16
  *    *    *    *    _|_    *    *    *    *
17
   \____\____\____\__|TLC|__/____/____/____/
18
   /    /    /    /  |___|  \    \    \    \
19
  *    *    *    *     |     *    *    *    *
20
                       |
21
                       |
22
  *    *    *    *    _|_    *    *    *    *
23
   \____\____\____\__|TLC|__/____/____/____/
24
   /    /    /    /  |___|  \    \    \    \
25
  *    *    *    *     |     *    *    *    *
26
                       |

(TLC steht für den Treiber oder Treiberverbund, der für den Betrieb von 
je 16 RGB-LEDs notwendig ist - z.B. 3 x TLC5940)

Vom AVR aus wird ein Flachbandkabel (und die Spannungsversorgung) zu den 
TLCs geführt, welche entweder per Daisy-Chain, Bus oder Stern 
angeschlossen werden.

Jede LED ist mit seinem TLC-Modul über ein 6-adriges Flachbandkabel 
verbunden (3xAnode, 3xKathode) um ein Übersprechen zu vermeiden 
(Sternverkabelung). (Muss mal schauen, ob eine Ader 350 mA mitmacht - 
sonst halt ein anderes Kabel)

Der AVR erhält vom PC (oder berechnet selbst) für jeden Kanal einen 
8-Bit-Helligkeitswert. Dieser wird per LUT (oder Umrechnung) in einen 
gammakorrigierten 10-Bit-Wert umgesetzt und als Duty-Cycle an das 
zuständige TLC-Modul gesendet, welches den neuen Wert übernimmt und 
hält.

Die genaue Topologie und das Protokoll werde ich erarbeiten, sobald ich 
mich für einen Treiber fest entschieden habe. Der AVR dürfte sich auch 
dann noch langweilen, wenn er die maximal geschätzten 15 Treiber 
parallel per Software-Implementation füttert. Das ist zumindest im 
Moment meine bevorzugte Variante.

Jetzt zu Kais Posting... ;)

von Kai G. (runtimeterror)


Lesenswert?

> Mit Verlustleistung meinte ich nicht, dass du vielleicht zu viel Strom
> verbrauchen könntest, sondern, dass der Treiber zu viel Leistung
> "verbraten" muss, sodass die im Datenblatt angegebene maximale
> Verlustleistung überschritten wird.

Ach so - hatte dich falsch verstanden.

> Wenn du 6V einspeißt, die LED aber
> nur 3V braucht, musst du 3V verheizen, was bei 16*120mA auf fast 6 Watt
> hinauslaufen würde und wahrscheinlich zu viel wäre (Diese Treiber werden
> ganz schön heiß)

Hmm... ist auf jeden Fall nicht mein Ziel.

> Mit einem DCDC Wandler für jeden Treiber würdest du die Spannung
> natürlich viel besser regeln können und damit auch den TLC entlasten.

Das macht definitiv Sinn - dafür habe ich auf jeden Fall noch ein paar 
Cents übrig.

> Für die Ansteuerung nimmst du am besten die daisy-chaining Methode (SOUT
> an SIN vom folgenden) und schiebst die Daten durch alle Treiber durch.
> Das Problem daran ist nur, dass die Datenleitung sehr lang wird , sodass
> es zu Reflektionen kommt siehe Wellenwiderstand
> Hier steht wie ich es gelöst habe
> [[Beitrag "SPI Parallelterminierung"]]

Danke, werde ich mir ansehen.
Ich bevorzuge die parallele Übertragung (siehe Posting oben). Was ich 
überlegt hatte ist das Daisy-Chaining auf je drei Treiber zu 
beschränken, die alle auf demselben Modul sitzen und die bis zu 4-5 
Module parallel zu füttern. Maximale Leitungslänge 5 m. Ich kann durch 
die Parallelisierung deutlich im Takt runtergehen, was die Kommunikation 
verbessern sollte.

Auch ist die Platzierung des AVR in der Mitte der Gesamtanordnung 
denkbar - das würde die Leitungslänge halbieren (max. 2,5 m)

> Funktionieren wird das alles schon, muss nur eben gut durchdacht sein,

Ich habe Zeit und scheinbar viel Unterstützung :)

von Matthias L. (Gast)


Lesenswert?

Ich fragte, weil vielleicht folgende Möglichkeit zumindest mal 
diskutiert werden sollte:

pro LED ein tiny mir 3x hardware-PWM und nem kleinen schaltregler von zB 
24V auf 5V.
die Ansteuerung über rs485 zB und das protokoll sieht dann zB so aus:

<adresse><helligkeit>
0..80      0..1023

Die verdrahtung würde aus 4(verschiedenen) leitungen bestehen: 
plus,minus,daten+,daten-.


Was spricht dagegen?

von Kai F. (kai-) Benutzerseite


Lesenswert?

du solltest dir auch überlegen ob du wirklich jede LED einzeln ansteuern 
willst oder ob er dir vielleicht reicht immer 2er oder 3er Gruppen 
anzusteuern.
Da deine LEDs 6 Pins haben, spricht von der Hardware nichts dagegen, du 
könntest dir eventuell den Spannungsregler sparen, brauchst weniger 
Treiber und der Verdrahtungsaufwand wird geringer

von Kai G. (runtimeterror)


Lesenswert?

>Was spricht dagegen?

Nichts :) Aufwand ist erstmal egal - bin ja noch jung ;) - und die 
Kosten sind auch überschaubar. Ich muss die LEDs eh irgendwie 
befestigen, und das kann von mir aus auch eine kleine Platine mit 'nem 
Tiny sein.
Die Option habe ich im Hinterkopf, aber mir ist für den Konstantstrom 
nichts Sinnvolles eingefallen, was nicht zu viel Energie verballert.

>du solltest dir auch überlegen ob du wirklich jede LED einzeln ansteuern
>willst oder ob er dir vielleicht reicht immer 2er oder 3er Gruppen
>anzusteuern.

Halte ich mir als Notlösung offen, falss die Einzelansteuerung zu 
ineffizient wird. Ich muss die erstmal durchrechnen. Das ließe sich auch 
mit Matthias Vorschlag kombinieren - ggf. mit Mega statt Tiny.

von Anonymous (Gast)


Lesenswert?

up

Gibt es was neues?

von Kai G. (runtimeterror)


Lesenswert?

Nope - habe im Moment aber zu viele Baustellen in der Wohnung offen, 
dass es im Moment an Zeit, Motivation und Geld gleichermaßen mangelt 
(Altbau lässt grüßen) :(

Der Rest meiner Freizeit geht im Moment in dieses verwandte Projekt:
Beitrag "Sinnvolle Spannungsversorgung mehrerer LED-Module"

Viele dort gelöste Probleme kommen auch der Deckenbeleuchtung zugute.

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.