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.
@Magnus War zulangsam :) Hmm guter Anstatz. Dann reicht wohl 8Bit Auflösung nicht? Mit 16Bit probieren?
>> 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.
Nachtrag: Diese zweite PWM sollte natürlich nicht irgendwie phasengleich mit der andren kommen.
>> 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.
>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.
Jo hab ich alles begriffen, danke! Ich meld mich wieder wenn ich Zeit hatte das ganze zu testen... Bis dann!
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?
PS.: Würdest du deine Umrechnung der HSV Werte in RGB vielleicht Publik machen ?
@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 ?
Soooo Hab mal dokumentiert und gewerkelt... Das ganze zieht jetzt in die Codesammlung um :) Das mit dem braun muss ich mal probieren.
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 ;-))
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.