Forum: Mikrocontroller und Digitale Elektronik rgb led Probleme


von Fly (Gast)


Lesenswert?

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?

von Michael U. (Gast)


Lesenswert?

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

von Magnus Müller (Gast)


Lesenswert?

>> 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

von Fly (Gast)


Lesenswert?

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.

von Fly (Gast)


Lesenswert?

@Magnus
War zulangsam :) Hmm guter Anstatz. Dann reicht wohl 8Bit Auflösung
nicht? Mit 16Bit probieren?

von Magnus Müller (Gast)


Lesenswert?

>> 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

von Magnus Müller (Gast)


Lesenswert?

>> 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

von Michael U. (Gast)


Lesenswert?

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

von Magnus Müller (Gast)


Lesenswert?

>> 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? ;)

von Fly (Gast)


Lesenswert?

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...

von D. W. (dave) Benutzerseite


Lesenswert?

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.

von D. W. (dave) Benutzerseite


Lesenswert?

Nachtrag:
Diese zweite PWM sollte natürlich nicht irgendwie phasengleich mit der
andren kommen.

von Magnus Müller (Gast)


Lesenswert?

>> 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

von Karl H. (kbuchegg)


Lesenswert?

> 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.

von Günther S. (guenther)


Lesenswert?

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

von Thorsten L. (tlauf79)


Lesenswert?

abo

von Magnus Müller (Gast)


Lesenswert?

>> 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

von Günther S. (guenther)


Lesenswert?

Aber er hat schon einen Vorwiderstand in der PWM. Also tut es ein
einfacher Spannungteiler auch.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>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?

von Fly (Gast)


Lesenswert?

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!

von Karl H. (kbuchegg)


Lesenswert?

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.

von emil (Gast)


Lesenswert?

abo

von Fly (Gast)


Lesenswert?

Jo hab ich alles begriffen, danke!
Ich meld mich wieder wenn ich Zeit hatte das ganze zu testen...

Bis dann!

von Chris (Gast)


Lesenswert?

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.

von Fly (Gast)


Angehängte Dateien:

Lesenswert?

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.

von emil (Gast)


Lesenswert?

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.

von emil (Gast)


Lesenswert?

sorry für die Tippfehler, gerade aufgestanden :(

von Fly (Gast)


Angehängte Dateien:

Lesenswert?

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...

von Magnus Müller (Gast)


Lesenswert?

@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 ;)

von Axel R. (Gast)


Angehängte Dateien:

Lesenswert?

mist... ich klick da auch noch drauf - bin ich zu blöd?
Welcher Datenträger??

von Hauke Radtki (Gast)


Lesenswert?

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

von Läubi (Gast)


Lesenswert?

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?

von Axel R. (Gast)


Lesenswert?

habs gespeichert und mitm realplayer angesehen. so gehts.

von Dirk (Gast)


Lesenswert?

http://www.videolan.org/ mit diesem Player kann man eigentlich jedes
Format wiedergeben.

Gruß,
Dirk

von Dirk (Gast)


Lesenswert?

PS.: Würdest du deine Umrechnung der HSV Werte in RGB vielleicht Publik
machen ?

von Fly (Gast)


Lesenswert?

Ja, ich werde das ganze dokumentieren und in der Codesammlung
veröffentlichen.

von emil (Gast)


Lesenswert?

@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!

von emil (Gast)


Lesenswert?

ü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 ?

von Fly (Gast)


Lesenswert?

Soooo
Hab mal dokumentiert und gewerkelt...
Das ganze zieht jetzt in die Codesammlung um :)
Das mit dem braun muss ich mal probieren.

von Axel R. (Gast)


Lesenswert?

Nich schlecht, Herr Specht. Sieht gut aus :-))
Respekt!

AxelR.

von Axel R. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.