Intensität der RGB-LEDs ändern?

Tut mir leid, wenn das zu einfach ist, aber ich verstehe dieses Problem nicht.

Im Moment ändere ich mit einer MCU die RGB-Farben eines LED-Streifens mit 3 PWM-Signalen. Alle Farben funktionieren super. Die Sache ist, wenn ich versuche, die Intensität des Lichts einzustellen, weiß ich nicht, wie ich das machen soll.

Wenn ich also zum Beispiel RGB (15,170,230) habe, möchte ich die Intensität des Lichts langsam reduzieren und dabei die gleiche Farbe beibehalten. Wie würde ich das RGB ändern, um das zu erreichen?

Was sagt dir das Datenblatt der LED(s) dazu?
nichts, es ist ein LED-Streifen, den ich bei Aliexpress gekauft habe. Sie stellen kein Datenblatt zur Verfügung, aber es ist ein normaler LED-Streifen mit 4 Linien, eine 12-V-Linie und die anderen sind RGB-Linien.
Das Senken des Tastverhältnisses der PWM funktioniert nicht?
Ich kaufe sowas nie ohne Datenblatt. Es ist eine goldene Regel.
Sie könnten überprüfen, ob Seriennummer/ID/Typ/Build/Herstellerdetails darauf sind, überprüfen Sie, ob sie ein Datenblatt haben, aber ich denke, es sollte dann eine ziemlich grundlegende Sache sein. Überlegen Sie, wie Sie die Intensität einer normalen LED mit PMW verringern? Und dann versuchen Sie, ob es in diesem Fall funktioniert ... Sind Sie sicher, dass dies keine doppelte Frage ist? electronic.stackexchange.com/questions/50417/…
Welche MCU verwendest du? Versuchen Sie, Tutorials wie waitforfriday.com/index.php/… zu überprüfen , googeln Sie einfach: "PWM led change Intensität"
Auch wenn dies ein alter Thread ist, bin ich darüber gestolpert, weil mich das auch interessiert. Ich habe mindestens 8 Helligkeitswerte für jede dieser Farben erstellt, die immer noch ziemlich ähnlich aussehen: Gelb, Cyan, Rot, Orange hier: github.com/CodingSpiderFox/WS2812BRGBBrightnessColorCorrection/… Dies könnte eine Lösung für diejenigen sein, die mit dem Ändern der Helligkeit zufrieden sind in Schritten.

Antworten (3)

Beginnen Sie damit, R, G und B mit dem Intensitätswert zu skalieren, für Ihr Beispiel bei 50 % Intensität würden Sie 15*0,5, 170*0,5, 230*0,5 (7, 85, 115) einstellen.

Die LEDs haben möglicherweise unterschiedliche nichtlineare Reaktionen, sodass Sie möglicherweise die Skalierung für die wahrgenommene Farbe anpassen müssen

Insbesondere bei sehr niedrigen Pegeln treten Rundungsfehler auf. Es gibt keine einfache Möglichkeit, dies zu umgehen, außer die Farbauflösung zu erhöhen (z. B. auf 0-1000 statt 0-250) oder Geräte mit einem geeigneteren Dynamikbereich für die Anwendung auszuwählen (hellere oder dunklere LEDs).

Eine andere Alternative, wenn Sie mehrere Geräte verwenden, besteht darin, eine Teilmenge der Geräte einzuschalten, um unterschiedliche Intensitätsstufen zu geben. Wenn Sie beispielsweise 6 RGB-LEDs haben, können Sie 3 auf (1,10,10) und 3 auf (0,10) umschalten ,10), um die Auflösung effektiv (0,5, 10, 10) insgesamt hinzuzufügen.

Es funktioniert nicht wirklich, für einige Farben, wenn Ihr Wert für das Rot vor den anderen 0 wird, dann ändert es die ursprüngliche Farbe.
Aktualisierte Antwort, aber leider gibt es keinen einfachen Weg, Sie sind durch die Auflösung der LEDs begrenzt. Das Anpassen einer Farbe mit RGB-LEDs hat immer ein subjektives Element, sodass Sie möglicherweise eine Lösung finden können, die „gut genug aussieht“. Wie Sie das tun, hängt von der Anwendung ab (wissenschaftliche Messungen erfordern beispielsweise einen anderen Ansatz für die Architekturbeleuchtung).
Wenn es PWM ist, sollte die LED-Reaktion keine Rolle spielen, nur die Reaktion des Auges, die viel linearer ist. Sie sind immer noch durch die zeitliche Auflösung des PWM begrenzt, 256 x Helligkeit ist keine große Veränderung für das menschliche Auge.
Als ich „Auflösung der LEDs“ sagte, meinte ich die „Auflösung der Sache, die den Strom durch die LEDs steuert“, nicht die Geräte selbst. Nichts in der ursprünglichen Frage deutete darauf hin, dass die PWM-Auflösung 256 Schritte betrug. Ich habe dies nur als Veranschaulichung der zunehmenden Auflösung verwendet. Entschuldigen Sie die Verwirrung.
@rolinger Wie hat das geklappt? In Ihrem Fall: (1) Ich würde den AKTUELLEN Antrieb der Hardware + Software proportional zum PWM-Ausgangswert festlegen. (2) Ich würde den maximal zulässigen Strom pro Farbe und (3) die Helligkeit von jedem bei diesem Strom festlegen. (4) Dann würde ich die Helligkeit pro PWM-Schritt festlegen. | Dadurch kann die gewünschte Helligkeit pro PWM-Schritt verwendet werden, um eine RGB-Mischung auszuwählen. Sie skalieren in der Software, sodass alle Farben den Wert 0-100 für 0-100 % Helligkeit oder 0-100 für absolute Intensitäten verwenden (setzen Sie die empfindlichste Farbe auf 100 bei mx-Helligkeit, damit sie nicht übersteuert wird ODER verwenden Sie Daten "auf der fliegen". | zB SAGEN

In Ihrem Fall:
(1) Ich würde den AKTUELLEN Antrieb der Hardware + Software proportional zum PWM-Ausgangswert festlegen. Strom- und nicht Spannungssteuerung ist wichtig, da Lumen: mA ungefähr konstant ist, Lumen: Volt jedoch sehr nicht linear ist. Sehr.

(2) Ich würde den maximal zulässigen Strom pro Farbe festlegen und

(3) Helligkeit von jedem bei diesem Strom.

Beachten Sie, dass das Maß Lumen/mA sein muss. Da Lumen eine auf der Augenreaktion basierende Einheit sind, würden sich die Lumenwerte pro mA unterscheiden, selbst wenn LEDs gleich light_mW/mA hätten. Auch - wenn Sie Farben mischen, selbst wenn die Sonne von (Red)lumen + green_lumen + blue_lumen) konstant ist, wenn sich die Helligkeit ändert, werden Sie möglicherweise feststellen, dass die wahrgenommene Helligkeit variiert. Wenn jedoch zwei LEDs einzeln betrachtet werden, ist ein Unterschied in der Lichtleistung von fast 2:1 erforderlich, bevor eine Helligkeitsänderung von den meisten Menschen wahrgenommen werden kann. Nebeneinander vielleicht 1,5:1. Wallwashing angrenzend - vielleicht 1,2:1.

(4) Dann würde ich die Helligkeit pro PWM-Schritt festlegen.

Dadurch kann die gewünschte Helligkeit pro PWM-Schritt verwendet werden, um eine RGB-Mischung auszuwählen.
Sie könnten

  • Skalieren Sie in der Software so, dass alle Farben den Wert 0-100 für 0-100% Helligkeit verwenden, oder

  • 0-100 für absolute Intensitäten (Einstellung der empfindlichsten Farbe auf 100 bei mx-Helligkeit, damit sie nicht übersteuert wird ODER

  • Daten "on the fly" nutzen.

B. SAY
Rot = maximale Helligkeit 200 Einheiten bei 25,0 mA
Grün = maximale Helligkeit 120 Einheiten bei 20,0 mA
Blau = maximale Helligkeit 80 Einheiten bei 20,0 mA

So Rot = 8 Helligkeiten pro mA, max. 25 mA So Grün = 6 Helligkeiten pro mA, max. 20 mA So Blau = 4 Helligkeiten pro mA, max. 20 mA

Es gibt verschiedene Möglichkeiten, dies zu steuern.
Wenn Sie IMMER wollen, dass oben gleiches RGB verwendet werden kann, dann setzt Blau (das weniger hell ist) Rot die Grenze auf 80bu, 20 mA.
Also Grün max = 80bu/6 mA/bu = 13,333 mA max
Rot max = 80bu/8 = 10 mA Blau = 80bu/4 = 20 mA (wie oben).

Sie können diese Skalierungswerte im laufenden Betrieb verwenden ODER wenn beispielsweise PWM max = 250 = 25 mA ist, können Sie Helligkeiten von 0 bis 100 pro Farbe verwenden, sodass: Rot 100 = 10 mA -> Skalierungsfaktor = 1 Grün 100 = 13,333 mA -> Skalenwerte um 1,33 aufwärts skalieren
Blau 100 = 20 mA -> Skalenwerte um 2,0 aufwärts skalieren

Ein Wert von beispielsweise RGB 50 50 50 erzeugt also "weißes" Licht mit gleicher RGB-Helligkeit.
Tatsächliche PWM-Werte sind 50 67 100.
Tatsächliche mA sind 5 6,7 10.

Also ergibt auch 25 25 25 Helligkeiten Weiß bei der Hälfte der oben genannten Gesamthelligkeiten und Ströme.

Ein Wechsel auf 50 20 80 oder auf 50 80 20 erzeugt eine neue Farbe und UNGEFÄHR unveränderte Helligkeit, WENN unabhängige Lumenwerte hinzugefügt werden. Was das Auge-Hirn-System sieht, kann unterschiedlich sein.


Wie hat Ihr ursprüngliches Experimentieren funktioniert?
Ich bin dabei, mit einigen LED-Streifen, die ich erworben habe, zu "spielen".

Führen Sie einfach eine lineare Interpolation durch. Angenommen, über 100 Zeitschritte beginnen Sie mit der ursprünglichen Farbe und verringern Sie dann jede Komponente um 1 % bei jedem Zeitschritt. Sie müssen das Verhältnis zwischen den Komponenten beibehalten, um die Gesamtfarbe zu erhalten. Solange Sie alle Elemente um denselben Betrag skalieren, bleibt die Farbe gleich.

Eigentlich ist lineare Interpolation nicht der richtige Weg. Das lineare Reduzieren der Helligkeit erzeugt eine scheinbare Helligkeit, die sich nicht wesentlich ändert, bis sie steil auf nichts abfällt. Logarithmische Interpolation ist der Schlüssel. Aus diesem Grund wurden dB (Dezibel, keine Datenbanken) erfunden.
Auch Farbverzerrungen werden nicht berücksichtigt. LEDs haben nicht die gleichen Effizienzkurven für R, G und B. Daher verschiebt eine lineare Skalierung beispielsweise ein Gelb in Richtung Rot