Halle @ all!
Ich hab grad ne Denkblockade...
Möchte mittels rgb-led das Farbspektrum durchlaufen.
PWM, 8Bit pro Farbe -->ergibt additive Farbmischung
Dazu habe ich paar Unklarheiten:
Leider habe ich kein Datenblatt der led :(
Wie viel Strom soll ich je durch die 4 Leds jagen damit alle ungefähr
die gleiche Lichtleistung abgeben, wie gehe ich vor?
und
Wie kriege ich die Helligkeit der Farbe hin?
Hallo,
Kennlinien gibt es im Datenblatt...
Sonst hilft nur probieren.
Additive Farbmischung hast Du schon erkannt.
Wenn wir annehmen, Dein Wertebereich geht von 0...255 (1 Byte), wenn Du
dann alle Kombinationen durchlaufen läßt, hast Du alle rund 16,7
Millionen Farbtöne, die theoretisch damit darstellbar sind. Wenn die
LED 2x blau drin haben, kannst Du theoretisch auch 32 Bit nehmen und
bekommst noch ein paar blaue Zwischentöne mehr.
Gruß aus Berlin
Michael
>> Wie kriege ich die Helligkeit der Farbe hin?
Indem du die Helligkeitsstufe der einzelnen Farbanteile (R,G,B) um den
selben Faktor erhöhst bzw. verringerst.
Gruß,
Magnetus
Danke Michael!
Nehmen wir an ich habe meinen Farbton zbsp: r=240, g=120, b=56
(frei erfunden).
Diesen Ton behalte ich jetz konstant aber möchte die Leuchtstärke
regulieren... Da happerts momentan in meinen Gedanken...
Ich hab folgende Anstätze welche mir nicht passen:
-Mittels PWM und RC die Betriebsspannung der Leds anpassen
-Mittels variabler Zeit alle Leds ausschalten. Dies ergibt aber zuwenig
auflösung, resp. es flackert.
>> Dann reicht wohl 8Bit Auflösung nicht? Mit 16Bit probieren?
Bist du mit der Farbvielfalt deines PCs (ca. 16 Millionen verschiedene
Farben) auch unzufrieden? --> Bleib ruhig bei 8 Bit PWM.
Gruß,
Magnetus
>> Ich hab folgende Anstätze welche mir nicht passen:>> -Mittels PWM und RC die Betriebsspannung der Leds anpassen
1. Was gefällt dir an der PWM nicht?
2. Du sollst nicht die Betriebsspannung anpassen (also auch kein
RC-Glied erforderlich). Zwischen den PWM-Ausgängen (evt. noch über
einen weiteren Treiber) und den LEDs kommt nur ein Längswider-
stand, der den Strom durch die LEDs begrenzt. Die Helligkeit ergibt
sich durch das Tastverhältnis der PWM (das "Flackern" wird vom
Auge oberhalb einer gewissen Frequenz nicht mehr wahrgenommen).
>> -Mittels variabler Zeit alle Leds ausschalten. Dies ergibt aber
zuwenig auflösung, resp. es flackert.
Wovon sprichst du da? Was willst du uns damit sagen?
Gruß,
Magnetus
Hallo,
@Magnus:
kommt auf die Absichten an... ;-))
Mach einen Farbverlauf z.B. Grün von 0 bis 255 von links nach rechts
über eine 1024x768 Auflösung ohne Raster-/Interpolationshilfen und es
gibt nette Farbstreifen von rund 4 Pixel Breite...
Nimm dagegen ein schönes buntes Foto und zähle die Farben, sind meist
nur wenige tausend.
Ich kann aber trotzdem mit den 24Bit leben. :-)
Gruß aus Berlin
Michael
>> Mach einen Farbverlauf z.B. Grün von 0 bis 255 von links nach>> rechts über eine 1024x768 Auflösung ohne Raster->> /Interpolationshilfen und es gibt nette Farbstreifen von rund>> 4 Pixel Breite...
Ich glaube nicht, dass Fly ein großflächiges RGB-Array realisieren
will... oder? ;)
Also wenn ich jetz die PWM laufe lasse
r=240, g=120, b=56..
ergibt das irgend eine Farbe, das habe ich verstanden. Nun möchte ich
diese Farbe mit weniger Leuchtkraft, so müsste ich die entsprechenden
Werte im Verhältnis zu einander kürzen und es wird dunkler, logisch.
Aber ich hätte gern 8 Bit für die Helligkeitseinstellung und da
happerts. Durch das teilen / multiplizieren eines Faktors mit den 8 Bit
rgb Werten ergben sich Farbveränderungen beim Dimmen, da Bei 8 Bit
Auflösung die Verhältnisse nicht mehr genau stimmen vom Runden? Je
kleiner der Wert desto grösser der Rundungsfehler...
Wenn du den Common-Anschluss mit ner 4-6bit-PWM auf hoher Frequenz
anschließt?
Ich denke nicht, dass du viel mehr als diese 4bit brauchst. Kannst ja
noch in den Farbkanälen runterregeln.
>> Wenn du den Common-Anschluss mit ner 4-6bit-PWM auf hoher Frequenz>> anschließt?
Das ist Nonsens. Die PWM macht nix Anderes als die LEDs hochfrequent
an- und auszuschalten (mit variablem an/aus Verhältnis). Die LEDs
zwischen zwei PWMs zu schalten bringt rein gar nix.
Gruß,
Magnetus
> so müsste ich die entsprechenden Werte im Verhältnis zu einander> kürzen und es wird dunkler, logisch.> Aber ich hätte gern 8 Bit für die Helligkeitseinstellung und da> happerts.
Durchforste mal das Web nach dem HLS Farbsystem und Umrechnungen
zu RGB,
HLS = Hue Farbton
Lightness Helligkeit
Saturation Farbsättigung
Du interpolierst also im HLS System, rechnest jede Zwischenstufe
aus dem HLS nach RGB um, un damit die Werte zu haben, die du
der PWM vorgibst.
Nur mal ne ganz andere Idee:
Wenn du deine Farben per PWM lässt und noch zusätzlich einen regelbaren
Spannungsteiler einbaust, welcher mit digitalen Potis einstellbar ist,
dann hast du unabhägig voneinander Helligkeit und Farbe. Digitalpotis
haben meist ein SPI-artige Schnittstelle und man bekommt sie als
Samples.
Dann brauchst du keine aufwändigen Rechnereien im Controller machen.
Günther
>> Wenn du deine Farben per PWM lässt und noch zusätzlich einen>> regelbaren Spannungsteiler einbaust, welcher mit digitalen Potis>> einstellbar ist, dann hast du unabhägig voneinander Helligkeit und>> Farbe
Die Helligkeit der LEDs wird bei dauerhafter Bestromung durch den
Strom bestimmt. Wenn dann bräuchte er eine einstellbare
Stromquelle.
Gruß,
Magnetus
>Aber er hat schon einen Vorwiderstand in der PWM. Also tut es ein>einfacher Spannungteiler auch.
Was mag uns diese Aussage mitteilen wollen?
Der Vorwiderstand ist zur Strombegrenzung da, falls die PWM ausfällt
und die LED konstant leuchtet. Durch die PWM wird der maximale Strom
dann auch noch mal begrenzt: Er fliesst nur bei einem 100%-Puls.
Man kann sich natürlich auch den ganzen "PWM-Quatsch" sparen und die
Einstellungen mit Potis (digitale werden kaum die Leistung vertragen,
die die LED fordert) machen.
Karl Heinz hat doch schon einen Lösungsansatz beschrieben: Das HLS in
RGB umwandeln. Das ist ein wenig Rechnerei - der Controller hat aber
vermutlich eh nichts besseres vor...Und warum noch mehr Bausteine
verwenden, wenn man das auch in Software lösen kann?
Danke Karl Heinz, du hast mich ein grosses Stück weiter gebracht!
Ich muss ganz umdenken, da ich vorher noch nie von diesem Farbraum
gehört habe :)
Frage:
Wenn ich jetzt das gesamte Farbspektrum durchlaufen möchte könnte ich
z.Bsp bei H=0° (rot) konstant halten und mit der Sättigung S rauffahren
bis zum Anschlag, somit wäre ich mit Rot durch und das gleiche könnte
ich jetzt mit verändertem H wiederholen...
Das V ergibt mir die Helligkeit, endlich eine Lösung für mein
Problem...
Mit einer Formel nach Wikipedia kann ich meine HSV Werte in RGB
umrechnen. Mal schauen wie es klappt!
Mit Hue (Farbe) veränderst du die Farbe selbst
Stell dir einen Regler vor, der einmal rund um den Farbkreis
geht: Von Rot über Gelb nach Grün und weiter zu Blau und wieder
zurück zu Rot
Lightness: Die Helligkeit. Bei Lightness = 0.0 sind alle Farben
schwarz, egal welche Hue sie haben. Selbiges am anderen Ende:
Bei 1.0 sind alle Farben weiss. Bei einer Lightness von 0.5
landest du wieder beim bekannten Farbkreis.
Saturation: Die Farbsättigung. Bei eine Sat. von 1.0 sind
alle Farben intensiv. Bei eine Sät. von 0.0 ist überhaupt keine
Farbe mehr vorhanden und dein Lightness steuert nur noch einen
Grauwert von Schwarz nach Weiss.
Wenns nicht klappt, grab ich mal meine Umrechnungen aus dem
Fundus aus.
Übrigens: HSV ist nicht dasselbe wie HLS.
Bei HSB umgesetzt auf eine RGB-LED ist es so, dass B (brightness) bei
einem Wert von 1 keinesfalls nur weiss anzeigt sondern einfach die
maximale Leuchtstärke der jeweiligen Farbe, bei 0 dementsprechend
nichts. Weiss lässt sich nur durch das reduzieren der Sättigung
erreichen.
Ist eben nicht ganz wie in einem Grafikprogramm, Grauwerte, die in dem
Sinne als Grauwerte empfunden werden, gehen einfach nicht. Man nimmt
statt den erwartetetn Grauwerten eher mehr oder weniger gedimmtes weiss
wahr.
So, nun der aktuelle Stand:
- HW aufgebaut
- Software geschrieben, HSV nach RGB Konvertierung ohne float Rechnung
hingekriegt :)
Nun durchlaufe ich mittels erhöhung von H das "ganze" Farbspektrum
und das ganze funktioniert auch. Ich habe aber noch das Gefühl, dass
der blau / grün-Anteil zu hoch ist.
Wie würdet ihr die r g b Vorwiderstände dimensionieren? ("DB" siehe
Anhang)
Momentan habe ich r 100 Ohm, g 120 Ohm, b 180 Ohm.
Hi Fly,
solltest du nicht eigentlich HLS (und nicht HSV) nach RGB umrechnen?
Und OK, HSV->RGB, deine ursprüngliche Vorgabe war, den Farbton
beizubehalten, wenn du die Helligkeit runterfährst, also die LED
dimmst. Hast du das jetzt geschaft? Mit HSV? Kansst du vielleicht ein
Movie machen, das Ergebnis würde mich interessieren?
Und für die Widerstandsauswahl: ich würde einfach r=g=b=255 fest
einstellen und die Widestände solange adjustieren (Trimmpoti) bis ich
ein vernünftiges Weiss möglichst ohne Farbstich sehe.
So da bin ich wieder.
Ich habe einen Fehler in meiner Konvertierung gehabt... Leider
funktioniert meine ohne float konv. nicht. Naja, hab es jetzt mit float
in C geproggt. Dank float sind es 5kB Code aber egal, der uC hat ja eh
nichts zu tun.
Video im Anhang dimmt rgb-led, ich bin ziemlich zufrieden mit meinem
Ergebnis :)
Ich dimme H=30, S=100% und V von 100% runter bis nach 0% (orange)
http://www.csgnetwork.com/csgcolorsel4.html kann man dies
nachvollziehen.
Dank meiner super handycam sieht es nicht so doll aus. (File mit VLC
abspielbar)
Anregungen/Kritik willkommen...
@Fly:
>> Anregungen/Kritik willkommen...
Du könntest den anderen Forumsmitgliedern den Gefallen tun,
gängige/übliche Dateiformate zu verwenden. Die allerwenigsten sind
scharf drauf, sich für jedes Format einen extra Player zu
installieren.
Gruß,
Magnetus
P.S.: bitte nicht übel nehmen ;)
Naja das is Quicktime ... aber die diskussion hatten wir schon mal :)
für alle die sich nich real/quicktime drauf hauen wollen:
Mediaplayer classic, der spielt auch quicktime und real ab
Das geht aber auch nur mit Installiertem Codec!
Und der neue Quicktime COdec geht nur ab WinXP --> fall für den Müll
Was ist so schwer dadran mpeg1 oder standard AVI codecs zu verwenden?
@all:
ah, Leute, der Mann hat doch gesagt, spielt es einfach mit VLC ab, ist
ja eigentlich ein sehr guter Video-Player; ausserdem geht's ja auch
mit RealPlayer/Quicktime; habt ihr denn keinen von denen???
@ Fly:
gratuliere, schaut eigentlich genau so aus, wie es sein soll, der
Farbton ist unabhängig vom Dimmen, soweit ich das anhand des Videos
einschätzen kann. Sehr gut gemacht!
Und du hast mich ein ziemliches Stück weiter gebracht, ich bastle
gerade an einer RGB-Led-Leiste (oder Matrix, mal sehen). Und das Dimmen
einer RGB LED ist in der Tat nicht ohne...
Vielen Dank Fly!
übrigens,
irgendwo habe ich gelesen, dass die Farbe "braun" mit dem RGB-Modell
am schwersten zu synthesieren ist.
Fly, meinst du, du kannst jetzt sowas wie "braun" mit deiner LED
machen ?
nochmal gaanz kurz zum Videoformat:
habd die Dateiendungen 3GP und 3G* mit Firefox verknüpft. Geht perfekt
mit Bordmitteln...
HSV->RGB Gutes Hilfsmittel für alle Ambilightbastler - Dankeschön ;-))