Autor Tema: Efecto de desvanecimiento (fadding) a un LED RGB  (Leído 5721 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Efecto de desvanecimiento (fadding) a un LED RGB
« en: 05 de Mayo de 2015, 18:14:45 »
Hola,

Tengo un LED RGB ánodo común. El pin de anodo común va a +5V y los tres pines restantes van, independientemente, a un generador pwm a través de una resistencia cada uno. Si ya tengo el color definido y puesto en el LED, ¿Como hago para prender o apagar el led poco a poco a ese mismo color? Es aquí donde entra el canal alpha o transparencia, RGBA? Necesito un pwm adicional?

Gracias.



Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #1 en: 05 de Mayo de 2015, 18:37:01 »
Por que no lo manejas con el PWM de cada color ?

Con el mismo PWM que sale a cada color :
Si son anodo comun, eso quiere decir que cuando tu PWM tenga un duty de 0% sera el maximo tiempo que se encuentre encendido tu LED de ese color. si vas modificando ese PWM hasta llegar al 100% de duty es como si lo estuvieras apagando (va pasando menos tiempo enecendio y mas tiempo apagado).
Mientras mas pasos sean llegar desde el 0% al 100% menos se notaran los escalones en el LED y sera un cambio mas suave.

Es la misma tecnica que usas para generar los colores.
« Última modificación: 05 de Mayo de 2015, 18:41:48 por KILLERJC »

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #2 en: 05 de Mayo de 2015, 18:58:56 »
No entiendo la técnica que quieres aplicar KILLERJC.

Digamos que tengo al led con valores en los pwm (de 8bit) así: r=255, g=128 y b=64; que es como un color crema. ¿Como hago un desvanecimiento de ese color?

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #3 en: 05 de Mayo de 2015, 19:15:29 »
Hola jeremy imagina que tienes 3 led distintos, en cada led ,cuando le aplicas el PWM al maximo (que en tu caso seria con duty cicly 0) el led  esta encendido a su máxima intensidad, cuando quieres que se vaya apagando le vas bajando el pwm.

Bien pues cuando juntas los 3 led tienes eso, 3 led que juntandolos forman otro color distinto, pero no olvides que son 3 led,

 pues bien para bajar la intensidad de ese nuevo color lo único que debes hacer es bajar el pwm de los 3 led al mismo tiempo, para que lleguen, en tu caso, al 100 % del duty cicle al mismo tiempo. Esto hará que tu nuevo color se vaya apagando, sin variar el color.

Un saludo.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #4 en: 05 de Mayo de 2015, 22:41:39 »
Hola jeremylf, complicado el tema....

Primero deberás disponer de un fotómetro.

Luego medir las intensidades lumínicas que forman el color deseado, pero para cada color RGB independientemente. O sea, crear el color deseado, sin mover las corrientes de cada led hacer lo siguiente:

Apagar verde y azul, para medir intensidad de rojo
Apagar rojo y azul para medir intensidad de verde
Apagar rojo y verde para medir intensidad de azul

Ya con esto sabrás que intensidades y porcentajes de cada color forman el color que tu deseas.

Luego debes hacer una gráfica de intensidad luminosa con respecto a intensidad de corriente para cada color, por ejemplo:

colocar 20mA al led rojo y mides la intensidad luminosa que será XX
luego bajas la intensidad a 19mA y mides nuevamente
luego a 18 y así hasta 1mA

Esto anterior lo debes de hacer para cada color, o sea obtendrás 3 tablas...

Luego con los primeros datos que obtuviste (las intensidades lumínicas para el color deseado) sabes que porcentaje de corriente debes aplicar de cada color para crear el color que deseas.

Interpolas estos porcentajes con las tres tablas que tienes y calculas los PWM para obtener las intensidades en decremento para conseguir la dimmerización que deseas...

Y todas estas mediciones debes de hacerlas usando un control por corriente para cada led, ya que el PWM no servirá porque la frecuencia es muy probable que interfiera el fotómetro

Muchas, pero muchas horas de trabajo. Realmente deseas hacer esto? El resultado justifica el esfuerzo?

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #5 en: 06 de Mayo de 2015, 08:08:42 »
Exactamente como dice Carlos, el tema es que la relacion "luz"/mA de cada color no es ni lineal ni similar entre los colores. Entonces disminuir los 3PWM en igual proporcion no funciona. También es cierto que los led para poder hacer un control presiso de su luminosidad lo tenes que controlar por corriente ya que la luminosidad es funcion de la corriente y es la Vf del led que queda determinada por la corriente.
Una alternativa es ir probando "a mano" los valores de los PWM para obtener 3 o 4 grados de intensidad del mismo color y almacenar en una tabla. El tema es que si lo necesitas para muchos colores....

sds.
-
Leonardo Garberoglio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #6 en: 06 de Mayo de 2015, 10:07:04 »
Eso o algun driver de led rgb que permita ajustar el brillo, aunque meter un IC para controlar un solo led, lo siento como matar a una mosca con un cañon.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #7 en: 06 de Mayo de 2015, 10:38:25 »
Eso o algun driver de led rgb que permita ajustar el brillo, aunque meter un IC para controlar un solo led, lo siento como matar a una mosca con un cañon.

claro, pero la pregunta acá es si el IC sabe como bajar el brillo sin cambiar el color.... voy a consultar con el gurú de los led (BrunoF) haver si ha probado algo de esto...

sds.
-
Leonardo Garberoglio

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #8 en: 06 de Mayo de 2015, 10:50:27 »


No debe de ser tan complicado, cuando tienes controladoras chinas con mando a distancia, que te permiten fijar un color y variar su brillo con tiras de led RGB 5050 ó 3528. Me extraña que variando proporcionalmente las coordenadas RGB de un color hasta llegar a 0,0,0 (o hasta que una de las tres coordenadas llegue a cero) no puedas variar el brillo manteniendo el color con un apagado progresivo, y de la misma manera al alza hasta que una de las 3 coordenadas llegue a 255.

Yo he utilizado el fotómetro con filtros rojo, verde y azul, para hacer mediciones básicas del espectro de varios tipos de luz, pero en este caso la composición RGB se conoce, la del color que uno quiera sacar, incluso hay por internet páginas con deslizadores gráficos para seleccionar las coordenadas RGB de un color. Otra cosa será que la variación del brillo sea lineal, variando las coordenadas RGB, pero si no lo es, seguro que hay una fórmula matemática, que siempre será mejor que crear una tabla de puntos a mano.
« Última modificación: 06 de Mayo de 2015, 10:54:14 por planeta9999 »

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #9 en: 06 de Mayo de 2015, 13:21:47 »
Hola a todos, acá el gran problema es que la relación PWM/brillo luminoso no está ni cerca de ser lineal, de hecho, con un PWM de bajo duty el led ni brilla, o por lo menos no lo hace con una luminosidad perceptible en plena oscuridad.

Hace unos días justamente estaba probando esto, led azul, a la salida del PWM con control desde 0 hasta 255 y hasta un duty de 5 o 6 no era visible su luz.

Con lo anterior queda literalmente destruida la posibilidad de reducir proporcionalmente los correspondientes PWM para mantener el color deseado.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #10 en: 06 de Mayo de 2015, 14:33:07 »
La no linealidad de los LEDs aplicando PWM es real. Ahora, saliendo de la complejidad adicional que requeriría lograr un luminosidad lineal, tanto para el PWM como para el Alpha (Carlos explicó parte del proceso de calibración, aunque incluso los LEDs varían entre tandas, e incluso entre sí) hay varias formas de lograr el efecto de Fadding variando un cuarto canal que llamaremos Alpha. Menciono 4 posibles:

Método 1: ARGB sin agregar bits de PWM:
Asumamos un PWM de 8 bits por color. Supongamos que mi PWM permite entonces elegir un color entre los 256 posibles. Ahora agregaré otro canal llamado Alpha (0 a 100), de manera que el color final saldrá de la siguiente ecuación:

pwmR = colorR * Alpha / 100
pwmG = colorG * Alpha / 100
pwmB = colorB * Alpha / 100

Debido a la limitación de bits del PWM, este método (que no requiere nada adicional sobre un PWM común, excepto un par de cuentas matemáticas más) resulta bastante bueno para valores de color alto, pero muy malo o nulo para los colores bajos.

Método 2: ARGB agregando bits de PWM:
Idéntico al previo, excepto que ahora nuestro PWM, supongamos, es de 15 bits y sólo 8 de ellos (0 a 255) son dedicados al color. Los otros 7 serán dedicados al canal Alpha.

pwmR = colorR * Alpha * 128 / 100
pwmG = colorG * Alpha * 128 / 100
pwmB = colorB * Alpha * 128 / 100

En este caso, la cosa mejora. Ahora lo que logramos es que por cada valor de color, haya 128 posibles valores de brillo. No necesariamente va a mantener la linealidad, pero al menos va a variar o debería variar, tanto en valores bajos como altos de colores.

Método 3: RGB mediante PWM y Alpha mediante variación de corriente:
Este método requiere de hardware adicional para variar la corriente enviada al LED. Los integrados específicos para controlar LEDs suelen traerlo, como los famosos TLC de Texas con los que varios del Foro hemos trabajado. Por ejemplo, el TLC5944 de TI, trae 16 salidas PWM de 12 bits de resolución cada una y 6 bits por canal de Dot Correction. El PWM varía el tiempo de encendido de cada canal, mientras el Dot Correction varía la cantidad de corriente enviada a cada salida. De esa forma se obtiene una linealidad mucho más cercana. Incluso los 12 bits de resolución del PWM suelen exceder los 8 bits por canal utilizado en la mayoría de monitores, pantallas, etc. Y es porque si nos sobran bits de resolución, podremos aprovecharlos para calibrar los LEDs o ciertos rangos de colores. Si estamos justos de resolución PWM, no es posible calibración alguna. La calibración puede provenir de tablas, fórmula matemática, etc.

Método 4: ARGB mediante PWM independientes:
Respondiendo a la pregunta original de jeremy, sería posible agregar un cuarto PWM al ánodo del LED. Si bien economiza el hardware necesario para modificar el brillo de los 3 colores, también elimina la posibilidad de variar el brillo de cada canal de forma independiente. Igualmente, para cumplir con lo que se desea, alcanza. El único detalle importante a implementar, es que los 4 PWM deben estar perfectamente en fase.

Eso o algun driver de led rgb que permita ajustar el brillo, aunque meter un IC para controlar un solo led, lo siento como matar a una mosca con un cañon.

claro, pero la pregunta acá es si el IC sabe como bajar el brillo sin cambiar el color.... voy a consultar con el gurú de los led (BrunoF) haver si ha probado algo de esto...

sds.

El IC técnicamente no sabe si está manteniendo o no el color. Lo único que sabe hacer es permitirte variar el PWM y la cantidad de corriente a enviar a cada canal. Luego estará en cada uno implementar algoritmos que ajusten y combinen ambas cosas para lograr intentar mantener (o no) la linearidad de los LEDs.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #11 en: 08 de Mayo de 2015, 00:45:36 »
Gracias a todos por sus comentarios.

Chaly, es mucho trabajo todo el procedimiento que comentas. Tampoco necesito tanta exactitud, el efecto fadding no debe ser preciso. Ademas de que no tengo un fotómetro  :lol:

Realmente estoy usando el TLC5940 para la generación de los pwm. Aunque la opción de usar sus 6 bit de Dot Correction es tentadora, no me es posible, pues a cada salida del TLC va un transistor y luego va el led.

Bruno, estoy implementando tu primer método pero con una resolución mayor para alpha:
pwmR = colorR * Alpha / 255
pwmG = colorG * Alpha / 255
pwmB = colorB * Alpha / 255

Si esto no resulta bien, me parece que lo mejor será usando un pwm adicional conectado al anodo común del led rgb. Será más hardware pero creo que es los más real de todas las alternativas no?.


Gracias nuevamente, saludos.
« Última modificación: 08 de Mayo de 2015, 00:53:47 por jeremylf »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #12 en: 08 de Mayo de 2015, 11:16:40 »
Hola, no he leído completamente el tema, pero te comento que en este video yo difuminé un LED. Es el PWM de uno de los 3 colores.


Espero que te sirva un poquito como ayuda visual a qué debes lograr con cada uno de los 3 colores.

Saludos!

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #13 en: 08 de Mayo de 2015, 23:03:59 »
Hola jeremylf,  :oops:  :oops: , bueno, esa sería la manera correcta de hacerlo, lo otro que puedes implementar es, conseguir el color deseado para varias intensidades de luminosidad distintas, y tomas los datos de los valores PWM para cada color del led.

Con los datos en mano, los introduces en una gráfica para cada color, realizas la curva y ya puedes obtener el valor de PWM para cualquier intensidad luminosa del color deseado.

Un saludo.

Atte. CARLOS.

Pda. Este es bastante más sencillo, verdad?  :D
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: Efecto de desvanecimiento (fadding) a un LED RGB
« Respuesta #14 en: 09 de Mayo de 2015, 11:34:51 »
Un inconveniente del PWM es la imposibilidad de asociar sus valores a un porcentaje de luminosidad determinado. Una lógica lineal nos lleva fácilmente a creer que un valor de 127 equivale a un 50% de brillo pero eso está muy lejos de ser así y, para colmo, varía de un led a otro. Para obtener un resultado próximo al deseado hay que dejar a un lado la linealidad del PWM y centrarnos en el modo en que nuestros ojos perciben el brillo o luminosidad.

Como es un tema que me apasiona voy a tratar de contenerme y no empezar a largar sobre conos, bastones, visión escotópica, fotópica, mesópica y un largo etcétera. Si os apetece ahí está la wikipedia para un resumen o esta web que lo trata con detalle.

Mejor me centro en las prácticas que hice...
- Coloqué un led blanco (5mm, alto brillo, 20º) en el interior de un bote de plástico negro (de los que contenían los carretes de fotos) y lo dispuse sobre el sensor de un luxómetro de manera que no recibiera otra luz que no fuera la del led.
- Usé un Arduino y fue variando los valores del PWM para crear una tabla en Excel con las mediciones que me daba el luxómetro.
- Repetí la operación con un led tipo piraña (5mm, 100º) y un led Straw Hat (8mm, 120º).

Resultado: No fui capaz de encontrar una pauta que me permitiera extrapolar los datos a la práctica de manera más o menos fíable. Yo buscaba un sistema que me permitiera fraccionar los pasos en valores concretos, de forma similar a como se hace, por ejemplo, al compensar la exposición en una cámara para evitar la sub o sobre exposición de la fotografía.
La intención era rescatar aquellos valores del PWM que implicaran un incremento/disminución exponencial de luminosidad y descartar todos los demás. Por ejemplo: aquellos valores que supusieran 1/16 más de luminosidad que el paso anterior y 1/16 menos que el paso siguiente, entre el apagado y el brillo máximo. Si esta pauta estaba en las tablas yo fui incapaz de verlo.

Y este mismo problema se tiene con el método que propones Chaly, acentuado además por el echo de que el ojo percibe de forma diferente la luminosidad en función del color.
Si se quiere probar, un fotómetro no es el instrumento adecuado. Lo sería un luxómetro o, en su defecto, una simple LDR.

Después fui encontrando por la red algunos modelos que consiguen más o menos lo que en un principio buscaba, partiendo de fórmulas para crear las tablas. Os dejo unos ejemplos:
- función exponencial
Partiendo de una fórmula se crea una tabla de valores (de los 256 posibles del pwm) que suponen un porcentaje de aumento/disminución de luminosidad del led. Por ejemplo podemos indicarle que cada paso irradie 1/3 más de luz que el paso anterior (o 1/8, 1/16... etc) consiguiendo de esta manera que el efecto de fadding sea regular en todo el recorrido. Es similar a la compensación de exposición de las cámaras fotográficas.
http://electromotiveforces.blogspot.com.es/2011/10/led-fading-using-exponentially-changing.html

- corrección de Gamma
Si bien la corrección de gamma no sería lo correcto en este caso, la curva resultante es muy similar a la de la percepción de brillo por parte del ojo humano y de ahí que no sea difícil asociarla. Algo de info para crear una tabla:
https://learn.adafruit.com/led-tricks-gamma-correction

- espacio de color CIE1931
Es el espacio de color que más se asemeja a nuestra percepción. Info:
https://ledshield.wordpress.com/2012/11/13/led-brightness-to-your-eye-gamma-correction-no/
http://jared.geek.nz/2013/feb/linear-led-pwm

Estos tres modelos generan tablas con valores muy similares en un pwm de 8bits, tanto que, en la práctica, resulta indiferente usar uno u otro.

También sería posible crear una tabla a partir de una función logística, pero el enlace que tengo es el de una web que ya no está en línea y no localizo la información que tenía guardada.

Un inconveniente del uso de tablas es que éstas se generan mediante fórmulas cuyos resultados contienen decimales, que para ser usados por el pwm han de convertirse en enteros, viéndose así reducido notablemente el número de valores diferentes. En un pwm de 8 bits, con un fadding a baja velocidad se aprecian saltos. La relación, si no recuerdo mal, sería de número_de_pasos_pwm/8. Es decir: para un pwm de 8 bits tenemos 256/8 = 32 valores diferentes como máximo.
Para conseguir una transición de luminosidad suave o un control sobre el color medianamente preciso el pwm debería ser al menos de 12bits.

un saludo