gleichmäßiger Farbverlauf bei RGB-LED mit PWM

OP #1436084
Lesenswert?

Ich möchte die Farben  rot, gelb, grün, cyan ,blau, magenta bei einer 
RGB-LED durchlaufen
dazu gehe ich wie folgt vor ich beginne mit rot bei PWM =255 fade dann 
immer in einer Schritten:

G von 0-255
R von 255-0
B von 0-255
G von 255-0
R von 0-255
B von 255-0
 und wieder von vorne

aber irgendwie ist das Ergebnis nicht so zu frieden stellend. Habe das 
Gefühl, dass die LED´s gerade im niedrigen PWM bereich mehr schalten als 
faden. Sind etwa andere PWM-Werte notwendich um einen gleichmäßigen 
Farbverlauf zu bekommen anstelle des linearen Anstieges der Werte ??

Gruß aus Berlin
Ingo
OP #1436089
Lesenswert?

Pete K. schrieb:
> Die PWM wird unter die Mindestspannung der LEDs gehen.

Wie das ?? Der Impuls hat doch immer 5 Volt. Es ändert sich doch nur das 
Tastverhältnis..oder ?

Also auf deutsch, anstatt des linearen Anstiegs folgende Werte benutzen

uint16_t pwmtable_8D[32]  PROGMEM = {0, 1, 2, 2, 2, 3, 3, 4, 5, 6, 7, 8, 
10, 11,13,16, 19, 23, 27, 32, 38, 45, 54, 64, 76, 91, 108, 128, 152, 
181, 215, 255};
Gast #1436097
Lesenswert?

Morgen,

eine LED die mittels 8bit PWM angesteuert wird, wird im unteren Bereich 
IMMER stufig sein.
Selbst mit 16 bit und ohne entsprechende Kennlinie (Regelung) sieht man 
noch die unteren ca. 3% (kommt auf die LED an und ob Strom oder 
Spannungsgeregelt).
BTW: schau dir mal den Link von docean genauer an...

ciao,
Ber
OP #1436104
Lesenswert?

Mike schrieb:
> http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM
> http://www.mikrocontroller.net/articles/Pulsweitenmodulation

Hallo Mike,

wie das mit der PWM funktioniert ist mir schon klar, ansonsten hätte ich 
wohl das Programm nicht hin bekommen. Es ist nur so, dass ich keinen 
gleichmäßigen Farbverlauf hinbekomme.
Denke mal das docean mich auf den richtigen Weg gebracht hat.
Gast #1436140
Lesenswert?

Ich denke, dasss Du eventuell eine Umrechnung des RGB-Frabraums in den 
HSV-Farbraum suchst, bzw. in diesem Fall umgekehrt: Du gibst den 
HSV-Farbraum vor und musst dass auf deine RGB-LED umrechnen. Dazu kommt 
die nichtlinieare Kennlinie des menschlichen Auges :-)
OP #1436158
Lesenswert?

micha schrieb:
> Ich denke, dasss Du eventuell eine Umrechnung des RGB-Frabraums in den
> HSV-Farbraum suchst, bzw. in diesem Fall umgekehrt: Du gibst den
> HSV-Farbraum vor und musst dass auf deine RGB-LED umrechnen. Dazu kommt
> die nichtlinieare Kennlinie des menschlichen Auges :-)


ähhhh Bahnhof....??..hab ich mit fast gedacht..ja so wird es gehen  ;-)
#1436340
Lesenswert?

Such mal in der Codesammlung nach "HSV", gibt's nen ausführlichen Thread 
drüber incl. Codebeispielen.

Auch hilfreich: "HSV Farbraum" googlen, Wikipedia-Artikel anklicken, 
lesen, verstehen, Formeln zur Umrechnung HSV -> RGB programmieren und 
fertig. ;)

Die nicht-lineare Kennlinie des Auges spielt da auch mit rein, kann man 
aber auch wunderbar einbauen... ;)
#1436400
Lesenswert?

Ingo Laabs schrieb:
> micha schrieb:
>> Ich denke, dasss Du eventuell eine Umrechnung des RGB-Frabraums in den
>> HSV-Farbraum suchst, bzw. in diesem Fall umgekehrt: Du gibst den
>> HSV-Farbraum vor und musst dass auf deine RGB-LED umrechnen. Dazu kommt
>> die nichtlinieare Kennlinie des menschlichen Auges :-)
>
>
> ähhhh Bahnhof....??

HSV ist einfach nur ein anderer Farbraum.
Was'n das?

Stell dir einfach mal vor, du müsstest Farben irgendwie sinnvoll 
anordnen. Bei RGB würde es sich zb. anbieten einen Würfel zu nehmen und 
auf eine Achse Rot, auf eine Grün und auf eine Blau zu legen. Alle 
Farben, die mit RGB darstellbar sind, wären dann innerhalb dieses 
Würfels. Nun ist es aber so, dass in diesem Würfel beanchbarte 
'Kooridnaten' physioligisch recht wenig miteinander zu tun haben. Zb. 
sind dann die Grauwerte von Schwarz bis Weiß entlang der Raumdiagonalen 
des Würfels angeordnet aber ansonsten kann man nur sehr wenig aus dem 
Würfel ableiten.

Jetzt hast du aber zb sicherlich auch schon mal so ein Farbrad gesehen, 
bei dem die Farben von Rot nach Grün nach Blau nach Rot entlang eines 
360° Kreises angeordnet sind. Sowas ist super, wenn man einen Farbton 
aufuchen will. Nur in einem RGB Würfel findet sich dieser Kreis 
nirgends.

Aber mann muss ja nicht einen RGB Würfel nehmen. Man kann zb einen 
Kegel/Doppelkegel aufbauen, bei dem entlang des Kreisumfangs genau jener 
Farbkreis sitzt und die Höhenachse zb die Farbsättigung angibt. An der 
Spitze des Kegels wäre dann weiß/schwarz.

Und ganau das macht zb HSV. Das ist ein Farbschema, bei dem eine Farbe 
eben nicht durch RGB sondern durch andere Kennzahlen beschrieben ist. H, 
oder ausgeschrieben Hue, ist dabei zb die Position im 360° Farbkreis. 
Variiert man in diesem Farbschema Hue von 0 bis 360, so geht man dadurch 
ganz einfach alle Farben von Rot nach Grün nach Blau nach Rot durch.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren