Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi LED Lichtmischung? (https://www.delphipraxis.net/182564-led-lichtmischung.html)

sx2008 2. Nov 2014 05:11

AW: LED Lichtmischung?
 
Wenn man von allen 4 LEDs das Leistungsspektrum hätte dann könnte man diese doch addieren.
Jedes Einzelspektrum nehmen und mit einem Faktor zwischen 0% bis 100% multiplizieren.
Die Einzelspektren sehen ungefähr so aus:
http://www.leds-com.de/Media/Shop/Sh...ngen_led_2.gif
Man nimmt ein
Delphi-Quellcode:
array[350..780] of double
um das Gesamtspektrum zwischenzuspeichern.

Dann braucht man das Empfindlichkeitsspektrum des menschlichen Auge:
http://de.wikipedia.org/wiki/Datei:Cone-response.svg
Für jedes der 3 Zäpfchenarten berechnet man die wahrgenommene Intensität.
Diese 3 Intensitäten entsprechen dem Farb- und Helligkeitseindruck den das Auge bekommt.

Dann nimmt man das Emissionsspektrum eines schwarzen Körper bei verschiedenen (Farb-)Temperaturen.
Das kann man auch über eine Formel erzeugen:
http://de.wikipedia.org/wiki/Plancks...rahlungsgesetz

Für jede Temperatur berechnet man die Intensität der 3 Zäpfchenarten und speichert diese als Referenzwerte.
Um mit den 4 LEDs eine Farbtemperatur von z.B. 4000K zu mischen muss man nur so lange an den 4 Leistungsparametern rumspielen und berechnen was die Zäpfchen sehen würden bis die abgespeicherten Referenzwerte getroffen werden.

Viel Spass beim Programmieren.

Mavarik 2. Nov 2014 10:11

AW: LED Lichtmischung?
 
hab das was gefunden...

Code:
void hsi2rgbw(float H, float S, float I, int* rgbw) {
  int r, g, b, w;
  float cos_h, cos_1047_h;
  H = fmod(H,360); // cycle H around to 0-360 degrees
  H = 3.14159*H/(float)180; // Convert to radians.
  S = S>0?(S<1?S:1):0; // clamp S and I to interval [0,1]
  I = I>0?(I<1?I:1):0;
 
  if(H < 2.09439) {
    cos_h = cos(H);
    cos_1047_h = cos(1.047196667-H);
    r = S*255*I/3*(1+cos_h/cos_1047_h);
    g = S*255*I/3*(1+(1-cos_h/cos_1047_h));
    b = 0;
    w = 255*(1-S)*I;
  } else if(H < 4.188787) {
    H = H - 2.09439;
    cos_h = cos(H);
    cos_1047_h = cos(1.047196667-H);
    g = S*255*I/3*(1+cos_h/cos_1047_h);
    b = S*255*I/3*(1+(1-cos_h/cos_1047_h));
    r = 0;
    w = 255*(1-S)*I;
  } else {
    H = H - 4.188787;
    cos_h = cos(H);
    cos_1047_h = cos(1.047196667-H);
    b = S*255*I/3*(1+cos_h/cos_1047_h);
    r = S*255*I/3*(1+(1-cos_h/cos_1047_h));
    g = 0;
    w = 255*(1-S)*I;
  }
 
  rgbw[0]=r;
  rgbw[1]=g;
  rgbw[2]=b;
  rgbw[3]=w;
Muss ich mal testen...

mensch72 2. Nov 2014 12:28

AW: LED Lichtmischung?
 
mathematisch, also in der Theorie habt ihr alle Recht... wenn man eine Großbildleinwand zur Bilddarstellung realisieren will, kann und sollte man auch so herangehen.

Ich vermute allerdings, das es um eine "simple" Beleuchtungslösung geht.
Da muss man nicht "jede" Farbe realisieren können, denn das menschliche Auge erkennt Farbunterschiede nur relativ grob, nicht lineare Helligkeitsunterschiede fallen den meisten Leuten aber sofort auf.

Ich kenne viele Beleuchtungssysteme die nur mit 16*16*16 = 4096 möglichen Farben arbeiten und diese jeweils auch nur in 16 Helligkeiten realisieren. "Zufällig" ist 16(R)*16(G)*16(B)*16 = 65536 = 2^16 = 16Bit (Hardware) PWM.

Die "Trimmung" solcher Systeme erfolgt simpel über die Stromstärke, denn LED's ind "Rot" & "Blau" leuchten nun mal gefühlt intensiver als grüne LED's. Per Stromreduzierung werden also Rot&Blau soweit zurückgenommen das man zusammen mit Grün ein brauchbares Weiß hat. Der Rest ist dann PWM&Software.

Wenn man es schnell genug macht, reichen 16Helligkeitsstufen völlig um dem Anwender noch ein gutes SoftDimmErlebnis vorzugaukeln, solange die Farbe gefühlt konstant bleibt und sich nur die Helligkeit merklich ändert.

Einfach und simpel funktioniert da wirklich besser wie 24Bit/16Mio Farben, wenn's dann mit dem purem Dimmen der Helligkeit nicht klappt.
Wer's nicht glaubt, der frage mal bei Innenarchitekten und Lichtdesignern: Die legen oft pro "Szene" nur die Farben der Leuchtmittel fest, der Nutzer/Anwender kann/will/darf dann aber "nur" noch die Helligkeit nach seinen Bedürfnissen selbst anpassen.
Eigene "freie Farbwahl im RGB Würfel" ist praktisch bei Beleuchtungslösungen nach der Inbetriebnahme völlig irrelevant.

Mavarik 3. Nov 2014 08:51

AW: LED Lichtmischung?
 
Da hast Du sicherlich Recht.

Bei mir geht es wie gesagt um RGBWW Spotts. Die sind per DALI pro Kanal 0..255 zu steuern.

Es gibt da so eine "Wohlfühltheorie"... Das die Farbtemperatur im Tagesverlauf dem Sonnenlicht nachgebildet werden sollte...

Zum Duschen nehme ich sowieso 100% ROT/BLAU. :lol:

Mavarik

hathor 3. Nov 2014 10:03

AW: LED Lichtmischung?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Mavarik (Beitrag 1278455)
Es gibt da so eine "Wohlfühltheorie"... Das die Farbtemperatur im Tagesverlauf dem Sonnenlicht nachgebildet werden sollte...
Mavarik

Software gibt es fast nur für C# und C++:
http://developer.mbed.org/users/fran.../HSI2RGBW_PWM/

Hast Du eine Tabelle Farbtemperatur im Tagesverlauf des Sonnenlichtes?

Ausserdem:
http://de.wikipedia.org/wiki/Chronotyp
http://www.lumedo.de/balance-light-t...led-steuerung/

mikhal 3. Nov 2014 11:22

AW: LED Lichtmischung?
 
Aus unser Elektronikentwicklung / Messtechnik:

Zitat:

Hallo Micha,

wenn du ein nettes Mitglied sein möchtest, poste ihm einfach,
er solle zur Warmweißen LED einfach eine 6500K Kaltweiße LED gleicher Stärke dazu nehmen, dann gibt’s immer einen schönen WW-KW Verlauf…
Die Mischung von RGBW ist immer aufwendiger und komplizierter, zumal die rote LED deutliche Helligkeitsverluste bei Temperaturerhöhung hat… damit würde seine Farbe dann mit zunehmender Eigenerwärmung weglaufen….

Da kann man mal sehen, wie man es umständlich macht, wenn es auch einfach geht ;-)

Grüße
Tom
Grüße
Mikhal

Mavarik 3. Nov 2014 13:03

AW: LED Lichtmischung?
 
Zitat:

Zitat von mikhal (Beitrag 1278493)
Da kann man mal sehen, wie man es umständlich macht, wenn es auch einfach geht ;-)
Grüße
Mikhal

Danke, aber ich habe RGBW Spots, also stellst sich die Frage nicht!

Zitat:

Zitat von hathor (Beitrag 1278463)
Software gibt es fast nur für C# und C++:
http://developer.mbed.org/users/fran.../HSI2RGBW_PWM/

Das ist die Routine die ich oben gepostet habe, trotzdem Danke...


Die Ansteuerung ist super simpel...

Einfach per UDP ein Kommando an den Gira-Server senden. ("LICH1R 55%") und schon leitet die rote LED mit 55%.
Oder "LICH1RGBW 55%,66%,10%,80%" schaltet alle Werte...
(Ist auch deutlich einfacher als ein KNX-Telegramm ab zu setzen)

Zitat:

Zitat von hathor (Beitrag 1278463)
Hast Du eine Tabelle Farbtemperatur im Tagesverlauf des Sonnenlichtes?

Bisher nicht.

Zitat:

Zitat von hathor (Beitrag 1278463)

Genau das ist die Theorie...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz