Autor Tema: Controlador RGB (TLC5940)  (Leído 36278 veces)

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

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
Controlador RGB (TLC5940)
« en: 11 de Septiembre de 2008, 02:05:23 »
Hola... bueno, tiempo que no posteaba, pero ahora si me ha quedado tiempo y empiezo nuevamente... en fin.... en mi hogar he instalado una iluminacion poco habitual (Con Led) y ahora viene la parte en que deseo tomar el control de los mismos... en realidad deseo tomar el control de toda la iluminacion de mi hogar y prefiero comenzar por esto que es lo mas complicado...

lo que deseo en realidad es hacer en cierta forma de red en donde todo este comunicado y lo que se me ocurre inicialmente es DMX, ademas poseo muchos integrados de la casa de TI (TLC5940) que me gustaria aplicarlos a esto.... antes de seguir quiero mencionar que la iluminacion que poseo es del tipo RGB... bueno ya veran en las imagenes que adjunto...

en realidad lo que pretendo es tomar dos canales DMX modificado e inyectarselo a los integrados, ya que estos trabajan con una resolucion de 12bits...

bueno, he buscado un poco de info he tratado de aplicar un poco de lo obtenido y ya he logrado dominar una de las caracteristicas de los TLC5940, que es la correccion de pixel (DOT CORRECTION), pero aun me falta dominar la parte de control de escala de grises... comento ademas que este integrado es capaz de controlar hasta 16 canales de forma independiente el brillo de un led en 4096 pasos y ademas tiene una correccion de pixel de 64 pasos mas, osea con 3 de estos, se puede controlar de forma totalmente aliviada 16 led RGB con una resolucion de 12bits con un micro muy basico.

en fin... por ahora comienzo adjuntando una imagenes de lo que pretendo controlar y ademas si alguien ya tiene experiencia con este integrado, se le agradece los aportes a este para ir complementandolos con el resultado final.


Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4917
Re: Controlador RGB (TLC5940)
« Respuesta #1 en: 11 de Septiembre de 2008, 08:28:57 »
muy buen la idea! Hay que pensar en Ahorra Corriente y los LED es una manera muy ahorrativas, yo te recomiendo sino tiene ningun panel de control(Dmx512 transmisor) el que tengo en mis projecto, que son 64 canales yo lo uso y va de maravilla,  :P
Estare pendiente por aqui de tus resultados
Saludo

Desconectado Khronos_Nieto

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 40
Re: Controlador RGB (TLC5940)
« Respuesta #2 en: 03 de Octubre de 2008, 22:56:04 »
Buenas compañero Xootraoox, me ha llamado la atención tu post porque yo estoy liado con un proyecto muy parecido por no decir igual...!

En mi caso he construido 3 tiras de leds con 15 leds RGB cada una de ellas para colocarlas en una pequeña "discoteca" que tengo montada en el sótano de mi casa. Al igual que tu, mi idea es la de controlar los leds con el TLC5940 y este a su vez por DMX.
Por lo que veo, llevas el tema bastante controlado, no obstante será un placer ayudarte en lo que sea.

Te comento lo que yo llevo hecho:

He montado en una protoboard 6 leds RGB, el TLC5940, un pic 16F876 y un MAX232 para comunicacion con el PC. Antes de adjuntarle el control por DMX he querido probar el integrado TLC5940 por si solo.

Los 6 leds estan conectados en paralelo cada uno con su correspondiente color, es decir, todos los rojos juntos por un lado, todos los verdes por otro y los azules por otro. Para atacar esta combinación y no sobrecargar el integrado, lo hago mediante un transistor PNP al cual le ataco la base con un pin de salida del TLC5940. De esta forma del TLC5940 solo uso 3 salidas. No obstante el programa que le cargo al pic permite el control de las 16.

Para cambiar los distintos parámetros utilizo el puerto serie y el "siow" o hyperterminal.

A dia de hoy consigo controlar el GrayScale (GS) y el DotCorrection(DC) de cada una de las 16 salidas. También he hecho una pequeña rutina que actúa sobre las 3 salidas que atacan a los transistores para que vaya haciendo transiciones de color a una velocidad ajustable y según un patrón tambien seleccionable (entre 12).

Los principales problemas que he tenido han sido de parpadeo cuando la intensidad de los leds es muy debil. La frecuencia de la señal GSCLK es determinante en esto. Yo tengo el pic corriendo a 12 Mhz y por lo que la máxima frecuencia que le puedo inyectar es de 3 MHz (a instrucciones de 4 ciclos). Estuve probando distintas velocidades y vi que a partir de una frecuencia alta (1 MHz mas o menos) el parpadeo apenas mejora, sin embargo la luminosidad de los leds a plena potencia disminuye. Esto se puede corregir cambiando la resistencia de seteo de corriente pero bueno, no veo la ventaja.

Según mis experiencias lo que mejora el parpadeo de los leds, es que cuentes exactamente 4096 flancos de GSCLK antes de la señal de BLANK ,o a lo sumo menos, es decir, que no te pases, es preferible activar BLANK uno o dos flancos antes que pasarse.

Otra cosa buena es aprovechar el periodo de BLANK activo para actualizar los datos de colores. Me explico, los nuevos valores de GrayScale o DotCorrection se pueden enviar al TLC5940 cuando mejor venga, estos se quedarán almacenados en un buffer, sin embargo no se actualizan hasta que no exista un flanco de bajada de XLAT.
Este flanco de bajada de XLAT interesa hacerlo mediante el periodo inactivo de GSCLK, para que no se note el corte y se produzca parpadeo. Esto me ocurria sobretodo en transiciones contínuas de color, para colores fijos que cambian de vez en cuando no es necesaria esta precaución.

Quizás ya sepas todo esto que te comento (incluso puede que tengas terminado el proyecto!!) pero quizás pueda ayudar a otros compañeros.

Si alguien lo solicita cuelgo el código, tengo que buscarlo.. :mrgreen: :mrgreen:

Un saludo compañeros.  :P :P :P




"Camaradas, ni nuestro propio conocimiento conoce nuestro potencial"
- La caza del Octubre Rojo -

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: Controlador RGB (TLC5940)
« Respuesta #3 en: 04 de Octubre de 2008, 01:14:30 »
Pues a mí me vendría bien que postearas el código, paisano.
Estoy intentando arrancar con un TLC5940 y me vendría bien una referencia.
Gracias

Desconectado Khronos_Nieto

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 40
Re: Controlador RGB (TLC5940)
« Respuesta #4 en: 05 de Octubre de 2008, 07:38:44 »
Muy buenas Manolo!

En primer lugar mi enhorabuena por la buena nueva. Os deseo toda la salud y felicidad del mundo para ti y los tuyos.

Relativo al proyecto...

Me alegra poder serte útil. Por cierto, agradecerte la información que aportas en tu página Micropic al respecto del control de un led RGB, me fué tremendamente útil para comprender como se genera y controla un led con PWM y los PIC, y por otra parte me sirvió de punto de partida en este proyecto.

A continuación adjunto el código en c y un pdf de ayuda para comprender el manejo del TLC5940.

He intentado comentar el código de forma que quede lo mas claro posible, aun así puede resultar un poco lioso. Hay que tener en cuenta que el código es de prueba, una prueba bastante avanzada, pero no esta depurado ni optimizado. Si alguna parte no se entiende, ruego me lo indiques para aclararla.

Espero sea de utilidad.

Un saludo Manolo!

Y un saludo a todos los compañeros del foro..  :-/ :-/ :-/ :-/

« Última modificación: 05 de Octubre de 2008, 07:41:27 por Khronos_Nieto »
"Camaradas, ni nuestro propio conocimiento conoce nuestro potencial"
- La caza del Octubre Rojo -

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: Controlador RGB (TLC5940)
« Respuesta #5 en: 05 de Octubre de 2008, 09:42:52 »
Desde luego te has lucido con los comentarios; ha quedado de lujo.

Lamentablemente la parte donde estoy más atascado es en la lectura del registro "Status Information Output" porque necesito detectar si falta algún led o hay sobrecalentamiento, los dos errores que detecta ese integrado.

Pero en fin, con lo que has escrito has dejado claras algunas cosas que yo no tenía del todo claras, así que muchas gracias.

Desconectado Khronos_Nieto

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 40
Re: Controlador RGB (TLC5940)
« Respuesta #6 en: 05 de Octubre de 2008, 21:44:08 »
Vaya lástima..!   :? :? :?

Esa es precisamente la parte que no he tocado del micro, la recepción de errores.
Bueno, y la grabación en la eeprom tampoco la he probado.

Si tengo un poco de tiempo, probaré esas funciones, y si consigo cualquier avance lo comunico.

Un saludo.

"Camaradas, ni nuestro propio conocimiento conoce nuestro potencial"
- La caza del Octubre Rojo -

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
Re: Controlador RGB (TLC5940)
« Respuesta #7 en: 15 de Octubre de 2008, 11:21:18 »
Holas.... sorry pero la falta de tiempo me hace alejarme de aqui y de mis cosas personales... he tratado de probar el codigo adjuntado pero llevo un dia ya tratando de entender y buscar informacion... bueno el micro que uso es distinto (16F88) pero aparentemente compatible, exepto que no se si es distinto el modulo Timer1, ya que por lo que veo en el codigo debiera salir un tren de 4095 pulsos por interrupcion por el pin PB6 del micro (PC0 en el codigo original), pero no consigo que asi sea, me he leido y recontraleido los datasheets erratas ejemplos y mas para no llegar a un resultado valido


He machacado el codigo para ver solo ese punto y nada, no logro que salga nada por PB6
Código: [Seleccionar]
#include <16F88.h>
#fuses INTRC,NOWDT,NOPROTECT,NOLVP,NOPUT,NOBROWNOUT,NOMCLR,NOCPD,NOWRT
#use delay(clock=8000000)                     //8MHz
#use rs232(baud=9600, xmit=PIN_B5, rcv=PIN_B2)

////////////////////////////////////////////////////////////////////////////////
////////////////////////   Rutina del Temporizador 1  //////////////////////////
////////////////////////////////////////////////////////////////////////////////
// Esta interrupción se activa cuando hemos transmitido 4095 pulsos de GSCLK (a través de PORTC0) //
// y nos avisa de que debemos generar el pulso de reseteo BLANK //

#INT_TIMER1
void inter1(){
set_timer1(0xF000);    // Recarga el TIMER1 para una nueva cuenta de 4095
output_toggle(PIN_A1); // solo para mirar en el osciloscopio para asegurarme que este funcionando la INT_TIMER1
}

////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////  PRINCIPAL  //////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void main(){
setup_oscillator(OSC_8MHZ);
SETUP_ADC(ADC_OFF);
setup_timer_1 (T1_INTERNAL | T1_CLK_OUT | T1_DIV_BY_1); // Configuracion de TIMER1, reloj interno, preescaler de 1 y salida por PORTC0.
enable_interrupts(INT_TIMER1);   // Habilita el flag de interrupción de TIMER1
enable_interrupts(GLOBAL); // Activamos interrupciones globales
set_timer1(0xF000);   // Recarga el TIMER0 para contar 4095 pulsos
printf("Test");
for(;;){
output_toggle(PIN_A2); //solo para mirar en el osciloscopio para asegurarme que este funcionando el Micro
delay_ms(10);
}
}

estoy haciendo algo mal?
es el micro el que no hace lo que se espera?




 

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
Re: Controlador RGB (TLC5940)
« Respuesta #8 en: 19 de Octubre de 2008, 01:56:04 »
mmmm... definitivamente no logro conseguirlo, encuentro que seria muy buen método el controlarlo de esta forma, ya que liberaría de mucho al micro, alguien puede rectificarme si es posible de hacerlo!!! por mas que trato no lo consigo, ya creo que estoy tratando algo que no lo puede hacer el micro.

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Controlador RGB (TLC5940)
« Respuesta #9 en: 19 de Octubre de 2008, 02:33:08 »
Que tal amigos!
Muy interesante ese integrado TLC5940.
No lo conocia vere donde lo puedo comprarlo para hecharle mano a la continuacion del proyecto por dmx que hice anteriormente con ese chip :mrgreen:

xootraoox!
 Yo te recomiendo que para el manejo de led rgb utilices el pic16F777 este posee tres pwm por hardware  :mrgreen:
lo que te permite manejar los led rgb de una manera muy sencilla y utilizando el protocolo dmx512, yo he pedido unos y la semana que viene cuando me lleguen comienzo a ponerlo en practica  :mrgreen:
Para luego realizar las pruebas con el dmx  :shock:

Saludos

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
Re: Controlador RGB (TLC5940)
« Respuesta #10 en: 19 de Octubre de 2008, 02:57:47 »
RALF2, Los micros se ven muy limitados para el control del RGB, si te fijas ese micro que comentas solo tiene 3 PWM dedicados, yo por software logro sin problema 9 PWM's con lo cual controlo independientemente 3 Leds RGB de forma autónoma a 8bits, si te fijas, con 3 TLC5940, conecto 16 Leds RGB a 12bits, y la carga que le entrego al micro seria extremadamente menor que generando solo 3 PWM's por software, lo que me hace seguir descartando usar micros para esta tarea y solo tenerlos en cuenta para el control de un externo que haga esto.

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2059
Re: Controlador RGB (TLC5940)
« Respuesta #11 en: 19 de Octubre de 2008, 16:21:43 »
Que tal xootraoox!
Yo te decia porque vi que querias hacerlo con pic16f88 y ese si es muy limitado para lo que quieres, y por eso te queria dar otra opcion si lo pretendias hacer el control con pic :shock:  ahora bien por supuesto, si utilizas el tlc5940 puedes lograr aun mayor control sobre los led rgb sin recargar al pic de trabajo :mrgreen:

Bueno era solo otra opcion  :(

Saludos

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
Re: Controlador RGB (TLC5940)
« Respuesta #12 en: 20 de Octubre de 2008, 00:59:03 »
si... totalmente valido, lo que pasa es que busco un control mas avanzado... ya he tenido tiempo jugando con micros para esta tarea y la verdad es que se ven muy limitados... es un duro y constante trabajo para el micro realizar esta tarea.

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
Re: Controlador RGB (TLC5940)
« Respuesta #13 en: 22 de Octubre de 2008, 00:30:59 »
En fin, creo que lo que pretendo no es posible, por mas que he buscado la forma no lo he coneguido, si ha alguien se le ocurre como, le agradesco los comentarios

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
Re: Controlador RGB (TLC5940)
« Respuesta #14 en: 29 de Octubre de 2008, 19:36:23 »
Ok.... al fin he logrado hechar a correr este Bicho de 28 patas, los resultados son muy buenos y prueba de ello es el video que adjunto. (aunque se puede notar un pequeño flickering ante la camara, frente al ojo humano, la vision es perfecta, nada pero absolutamente nada de flickering.... incluso en movimiento fisico de la matriz)


en este muestro como cubro una matriz completa de forma multiplexada y heciendo un fade muy rapido, luego se ven unos destellos los que acusan de una reprogramacion para disminuir el tiempo de escaneo que hago en las filas y dar a mostrar el multiplexado, y por ultimo vuelvo a subir el mismo para mostrar un fade mas lento cubriendo la gama completa que me permite este, osea 4096 pasos...

de momento esto esta todo hecho solo con estos acompañantes....

1 -> PIC16F887
2 -> TLC5940
7 -> IRF9540
1 -> PICKIT2 (este esta encargado de programar y alimentar todo esto, si incluyendo la matriz por el puerto USB =P...  que abuso, no...)

cuando tenga algo mas ordenado todo el codigo y tiempo lo subire como una libreria para ir depurandola y ampliandola con la ayuda de sus comentarios...

Saludossss....