Forum: Mikrocontroller und Digitale Elektronik How to: RGB LEDs anständig dimmen.


von Steffi M. (Gast)


Lesenswert?

Hallo,
ich möchte RGB LEDs mit dem TLC5940 von Texas Instruments Dimmen. So 
weit kein Problem, die Funktion ist klar und es klappt auch. Der TLC5940 
bietet ja 12 bit pro PWM Kanal... Das ist mehr als genug. Mein Problem 
ist jetzt folgendes: Die meisten (eigentlich alle) RGB LEDs die ich bis 
jetzt benutzt habe, habe unterschiedlich helle Farben. Meistens ist das 
Rot relativ schwach. Ich suche nun nach einer Möglichkeit die Farben 
entsprechend Anzupassen (über das 12 bit PWM) um so eine möglichst gute 
Darstellung des RGB Farbraumes (8 bit pro Farbe, True Color) zu 
erreichen.
Hat jemand von euch sowas schonmal gemacht? Wenn ja, wie?

Danke
Steffi

von Andreas B. (andreasb)


Lesenswert?

1. Definiere weiss;-)

Wir haben vor Kurzem ein RGB LED abgestimmt, und zwar einmal bei 
Tageslicht, und ein mal unter Leuchtstoffröhren, das dritte mal im 
Dunkeln.

Das wir 3 mal verschiedene Ergebnisse gekriegt haben war ja klar, daher 
hat die Digitalkamera ja auch ein Weissabgleich;-) Stichtwort: 
Farbtemperatur, Kelvin

Wir haben pro Farbe einen anderen Widerstandswert ferstgelegt. Du kannst 
aber natürlich die Farbe in deine PWM Berechnung einfliessen lassen, das 
ist dann dynamischer.

Objektiv abstimmen kannst du auch mit einer Digitalkamera, Weissabgleich 
auf Manuell schalten, mit weissem Blatt Papier abgleichen (in 
gewünschter Lichtquelle) und dann gegen die LED halten, du siehst 
relativ schnell auf dem Display ob es weiss ist oder ob es zuviel blau 
oder was auch immer hat.



mfg Andreas

von Steffi M. (Gast)


Lesenswert?

Ok, jetzt sagen wir mal ich habe einen Weißabgleich gemacht und folgende 
Werte rausbekommen:
rot: 4095
grün: 3422
blau: 3142

sind jetzt nur Beispiele.
Die Eingangsdaten für die LED soll ein 24 bit Wert sein (8bit je Farbe)
Kann ich das jetzt linear ausrechnen?
Wieder ein Beispiel: Ich will die Farbe CA7AFF mit meiner LED 
darstellen. Die 8 bit pro Farbe muss ich ja jetzt in 12 bit pro Farbe 
umrechnen. Ich nehme mal nur den wert für Grün ( 7A=122 )

Ist der Wert den ich jetzt in den TLC5940 schieben muss folgender:
(3422/255)*122= 1637  ?

von Steffi M. (Gast)


Lesenswert?

Da ist der Andreas wohl schon ins Bett gekrochen ;)
Trotzdem vielen Dank für deine Hilfe!

von MagIO (Gast)


Lesenswert?

Lange Antwort: Gibt schon Artikel darüber (siehe linkes Menü). Bitte 
lesen.

Kurze Antwort: Die Wahrnehmung des Auges stimmt nicht mit der Realität 
überein. D.H. wenn es uns linear vorkommen soll, dann muss die Änderung 
in der Tat exponentiell sein. In genanntem Artikel gibt es verschiedene 
Tabellen, aus denen man sich die Werte picken kann.

von MagIO (Gast)


Lesenswert?

Hier noch der direkte Link zu dem Artikel, den ich meine:
http://www.mikrocontroller.net/articles/LED-Fading

von Steffi M. (Gast)


Lesenswert?

Wie unangenehm. Das heißt meinen linearen Ansatz von oben kann ich 
vergessen. Und am besten bastel ich mir durch ausprobieren eine Lookup 
Tabelle zusammen?

von MagIO (Gast)


Lesenswert?

Geht es um mehrere RGB LEDs? Bei genügend vielen würde es ja Sinn machen 
pro Farbe einen TLC zu benutzen und mit Iref pro Farbe einen 
entsprechenden Offset einzustellen.

Ansonsten musst du nach dem lookup den offset noch mit reinrechnen.

Leider sehe ich gerade, daß der sourcecode im Artikel keine Tabelle für 
12 Bit Auflösung enthält. Aber vielleicht kannst Du ja auch hier mal 
nachfragen:
Beitrag "Modulare 16x8-RGB-LED-Matrix-Platine mit Gamma-Korrektur"

von Jan (Gast)


Lesenswert?

Hallo Steffi,

das Thema "Farbmischung" mit RGB-Led's ist alles andere als trivial. Wie 
du schon richtig bemerkt hast, ist das Hauptproblem nicht der 
"Mischalgorithmus" sondern die LED als solche. Bei RBG's geben die 
Hersteller im Datenblatt entweder die Farborte für die Einzelchips an, 
oder aber für einen definierten Weißpunkt, der sich einstellt wenn die 
Chips mit einem bestimmten Strom beaufschlagt werden (z.B. 20mA /20mA 
/10mA)
Kennt man die "Anfangsorte", so kann man durch eine lineare Gleichung 
ganz easy den resultierenden Zielort berechnen.

So, nun aber die Krux an der Sache: Die Messung der Farborte erfolgt 
beim LED-Hersteller am Band, dauert daher nur ein paar Millisekunden. 
Dies ist aber für einen Einsatz in der Praxis absolut unnütz, da die 
LEDs dort ja dauerhaft leuchten. Durch die Temperaturerhöhung verschiebt 
sich der Farbraum nun aber dramatisch und liegt weit neben dem 
Startpunkt, der vom Hersteller angegeben wurde :-(

Mittlerweile gehen einige Hersteller (Ich denke Osram) dazu über ein 
sog. "hot- binning" durchzuführen, wobei genau dieser Erwärmung 
berücksichtigt wird...alles in allem ein sehr sehr komplexes Thema und 
ohne Refernzmessung durch Sprektrometer (scheiß teuer) oder zumindest 
einem True-Colour Farbsensor eigentlich nicht machbar...Oder hot-binned 
Leds verwenden....zu dieser Sorte kann ich aber nichts sagen, hab damit 
noch nicht gearbeitet und sind erst ganz frisch auf den Markt gekommen


Gruß Jan

von Steffi M. (Gast)


Lesenswert?

Ja, es geht um mehrere. Und die Sache mit dem Offset ist SUPER! Dann 
kann ich die vollen 12 bit ausnutzen, bzw. muss die Tabelle nicht 
anpassen.

Und die Tabelle gibts in dem von dir verlinken Beitrag. :)

von Jan (Gast)


Lesenswert?


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.