¿Cambiar la intensidad de los leds RGB?

Lo siento si esto es demasiado básico, pero no entiendo este problema.

En este momento, usando una MCU, cambio los colores RGB de una tira de LED con 3 señales PWM. Todos los colores funcionan muy bien. El caso es que cuando trato de ajustar la intensidad de la luz, no sé cómo hacerlo.

Entonces, si, por ejemplo, tengo RGB (15,170,230), entonces quiero reducir lentamente la intensidad de la luz, manteniendo el mismo color, ¿cómo cambiaría el RGB para obtener eso?

¿Qué le dice la hoja de datos de los LED sobre esto?
nada, es una tira de led que compre en aliexpress no dan ficha tecnica pero es una tira de led normal con 4 lineas, una de 12v y las demas son lineas rgb.
¿Reducir el ciclo de trabajo del PWM no funciona?
Nunca compro nada como esto sin una hoja de datos. Es una regla de oro.
Puede verificar si hay algún número de serie/id/tipo/construcción/detalles del fabricante, verificar si tienen una hoja de datos, pero creo que entonces debería ser algo bastante básico. Piensa, ¿cómo se baja la intensidad de un led normal con PMW? Y luego intente si funciona en esta ocasión ... Además, ¿está seguro de que esta no es una pregunta duplicada? electronics.stackexchange.com/questions/50417/…
¿Qué MCU estás usando? Intente consultar los tutoriales como waitforfriday.com/index.php/… , solo busque en Google: "Intensidad de cambio de led PWM"
Incluso si este es un hilo antiguo, me topé con él porque también estaba interesado en esto. Hice al menos 8 valores de brillo para cada uno de esos colores, que aún lucen bastante similares: amarillo, cian, rojo, naranja aquí: github.com/CodingSpiderFox/WS2812BRGBBrightnessColorCorrection/… Esta podría ser una solución para aquellos que están de acuerdo con cambiar el brillo en pasos

Respuestas (3)

Comience escalando R, G y B por el valor de intensidad, para su ejemplo, al 50 % de intensidad, establecería 15*0,5, 170*0,5, 230*0,5 (7, 85, 115).

Los LED pueden tener diferentes respuestas no lineales, por lo que es posible que deba modificar la escala para el color percibido

En particular, en niveles muy bajos, sufrirá un error de redondeo. No hay una forma fácil de evitar esto, excepto aumentando la resolución de color (por ejemplo, a 0-1000 en lugar de 0-250) o seleccionando dispositivos con un rango dinámico más apropiado para la aplicación (LED más brillantes o más tenues).

Otra alternativa si está utilizando varios dispositivos es encender un subconjunto de dispositivos para dar diferentes niveles de intensidad, por ejemplo, si tiene 6 LED RGB, puede cambiar 3 a (1,10,10) y 3 a (0,10). ,10) para agregar resolución, efectivamente (0.5, 10, 10) en general.

realmente no funciona, para algunos colores, si su valor se convierte en 0 para el rojo antes que los demás, entonces cambia el color original.
Respuesta actualizada, pero desafortunadamente no hay una manera fácil de evitarlo, está limitado por la resolución de los LED. Hacer coincidir un color con LED RGB siempre tendrá un elemento subjetivo, por lo que es posible que pueda encontrar una solución que "se vea lo suficientemente bien". Cómo lo haga depende de la aplicación (la medición científica necesita un enfoque diferente a la iluminación arquitectónica, por ejemplo)
Si es PWM, la respuesta del LED no debería importar, solo la respuesta del ojo, que es mucho más lineal. Todavía estás limitado por la resolución de tiempo del PWM, el brillo de 256x no es un gran cambio para el ojo humano.
Cuando dije 'resolución de los LED', quise decir la 'resolución de lo que controla la corriente a través de los LED', no los dispositivos en sí. Nada en la pregunta original sugería que la resolución PWM era de 256 pasos, solo lo usé como una ilustración de resolución creciente. Lo siento por cualquier confusión.
@rolinger ¿Cómo funcionó esto? En su caso: (1) Establecería la unidad ACTUAL de hardware + software proporcional al valor de salida PWM. (2) Establecería la corriente máxima permitida por color y (3) el brillo de cada uno en esa corriente. (4) Entonces establecería el brillo por paso de PWM. | Esto permite usar el brillo deseado por paso de PWM para seleccionar una mezcla RGB. Usted enrolla la escala en el software para que todos los colores usen un valor, digamos 0-100 para 0-100% de brillo, o 0-100 para intensidades absolutas (configurando el color más sensible a 100 en mx brillo para que no se sobrecargue O use datos "en el volar". | p. ej., SAY

En su caso:
(1) Establecería la unidad ACTUAL de hardware + software proporcional al valor de salida PWM. El control de corriente y no de voltaje es esencial ya que los lúmenes: mA son APROXIMADAMENTE constantes, pero los lúmenes: voltios son muy no lineales. Muy.

(2) Establecería la corriente máxima permitida por color y

(3) brillo de cada uno en esa corriente.

Tenga en cuenta que la medida puede ser lumen/mA. Dado que los lúmenes son una unidad basada en la respuesta del ojo, incluso si los LED tuvieran la misma luz_mW/mA, los valores de lúmenes por mA serían diferentes. Además, al mezclar colores, incluso cuando el sol de (Red) lumen + green_lumen + blue_lumen) es constante a medida que cambian las magnitudes, es posible que el brillo percibido varíe. Sin embargo, cuando se observan dos LED uno a la vez, se necesita una diferencia en la salida luminosa de casi 2:1 antes de que la mayoría de la gente pueda discernir un cambio de brillo. Lado a lado tal vez 1.5:1. Lavado de paredes adyacentes - quizás 1.2:1.

(4) Entonces establecería el brillo por paso de PWM.

Esto permite usar el brillo deseado por paso de PWM para seleccionar una mezcla RGB.
Tú podrías

  • escala en el software para que todos los colores usen un valor, digamos 0-100 para 0-100% de brillo, o

  • 0-100 para intensidades absolutas (configurando el color más sensible a 100 con brillo máximo para que no se sature O

  • utilizar datos "sobre la marcha".

ej., SAY
Rojo = brillo máximo 200 unidades a 25,0 mA
Verde = brillo máximo 120 unidades a 20,0 mA
Azul = brillo máximo 80 unidades a 20,0 mA

So Red = 8 brillos por mA, 25 mA max So Green = 6 brillos por mA, 20 mA max So Blue = 4 brillos por mA, 20 mA max

Hay varias formas de controlar esto.
Si SIEMPRE desea que la parte superior pueda usar RGB igual, entonces el azul (siendo menos brillante) el rojo establece el límite en 80bu, 20 mA.
Entonces Green max = 80bu/6 ma/bu= 13.333 mA max
Red max = 80bu/8 = 10 mA Azul = 80bu/4 = 20 mA (como arriba).

Puede usar estos valores de escala sobre la marcha O si dice PWM max = 250 = 25 mA, entonces podría usar brillos 0-100 por color para que: Rojo 100 = 10 mA -> Factor de escala = 1 Verde 100 = 13.333 mA -> valores de escala ARRIBA en 1,33
Azul 100 = 20 mA -> valores de escala arriba en 2,0

Entonces, un valor de, digamos, RGB 50 50 50 produce luz "blanca" con el mismo brillo RGB.
Los valores PWM reales son 50 67 100.
Los mA reales son 5 6,7 10.

Así también 25 25 25 brillos produce blanco a la mitad de los brillos y corrientes generales anteriores.

Cambiar a 50 20 80 o a 50 80 20 produce un color nuevo y un brillo APROXIMADAMENTE sin cambios SI se agregan valores de lúmenes independientes. Lo que ve el sistema ojo-cerebro puede diferir.


¿Cómo funcionó su experimentación original?
Estoy por intentar 'jugar' con unas tiras de LED que adquirí.

Solo haz una interpolación lineal. Digamos, más de 100 pasos de tiempo, comience con el color original y luego reduzca cada componente en un 1 % en cada paso de tiempo. Debe conservar la proporción entre los componentes para conservar el color general. Siempre que escale todos los elementos en la misma cantidad, el color seguirá siendo el mismo.

En realidad, la interpolación lineal no es el camino a seguir. Reducir el brillo linealmente produce un brillo aparente que no cambia mucho hasta que cae bruscamente a nada. La interpolación logarítmica es la clave. Por eso se inventaron los dBs (decibelios, no bases de datos).
Tampoco se respeta el sesgo de color. Los LED no tienen las mismas curvas de eficiencia para R, G y B. Por lo tanto, la escala lineal cambiará el amarillo hacia el rojo, por ejemplo.