www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik rgb led Probleme


Autor: Fly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Fly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fly (Gast)
Datum:

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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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? ;)

Autor: Fly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: D. W. (dave) Benutzerseite
Datum:

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

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Günther Schmidt (guenther)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thorsten Lauf (tlauf79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Günther Schmidt (guenther)
Datum:

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

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Fly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
abo

Autor: Fly (Gast)
Datum:

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

Bis dann!

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fly (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry für die Tippfehler, gerade aufgestanden :(

Autor: Fly (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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...

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Axel R. (axelr) Flattr this
Datum:
Angehängte Dateien:

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

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habs gespeichert und mitm realplayer angesehen. so gehts.

Autor: Dirk (Gast)
Datum:

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

Gruß,
Dirk

Autor: Dirk (Gast)
Datum:

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

Autor: Fly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ich werde das ganze dokumentieren und in der Codesammlung
veröffentlichen.

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: emil (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Fly (Gast)
Datum:

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

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nich schlecht, Herr Specht. Sieht gut aus :-))
Respekt!

AxelR.

Autor: Axel R. (axelr) Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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 ;-))

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.