TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: xootraoox en 11 de Septiembre de 2008, 02:05:23

Título: Controlador RGB (TLC5940)
Publicado por: xootraoox 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.

Título: Re: Controlador RGB (TLC5940)
Publicado por: stk500 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
Título: Re: Controlador RGB (TLC5940)
Publicado por: Khronos_Nieto 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




Título: Re: Controlador RGB (TLC5940)
Publicado por: Nocturno 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
Título: Re: Controlador RGB (TLC5940)
Publicado por: Khronos_Nieto 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 (http://www.micropic.es) 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..  :-/ :-/ :-/ :-/

Título: Re: Controlador RGB (TLC5940)
Publicado por: Nocturno 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.
Título: Re: Controlador RGB (TLC5940)
Publicado por: Khronos_Nieto 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.

Título: Re: Controlador RGB (TLC5940)
Publicado por: xootraoox 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
(http://www.testxootraoox.net84.net/todopic/pb6.JPG)

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?




 
Título: Re: Controlador RGB (TLC5940)
Publicado por: xootraoox 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.
Título: Re: Controlador RGB (TLC5940)
Publicado por: RALF2 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
Título: Re: Controlador RGB (TLC5940)
Publicado por: xootraoox 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.
Título: Re: Controlador RGB (TLC5940)
Publicado por: RALF2 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
Título: Re: Controlador RGB (TLC5940)
Publicado por: xootraoox 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.
Título: Re: Controlador RGB (TLC5940)
Publicado por: xootraoox 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
Título: Re: Controlador RGB (TLC5940)
Publicado por: xootraoox 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....
Título: Re: Controlador RGB (TLC5940)
Publicado por: LABmouse en 29 de Octubre de 2008, 23:34:28
xootraoox..Pues se muy muy bien!! Felicidades!
Título: Re: Controlador RGB (TLC5940)
Publicado por: xootraoox en 31 de Octubre de 2008, 03:28:22
mmm... es posible obtener los 48Mhz con un PIC18F4550 usando el oscilador interno?...

bueno, lo que pasa es que la forma en que manejo este (TLC5940) es con el OSC interno del micro sacando la el reloj de sistema por el micro por el pin dedicado para eso (OCS2/CLKOUT), es la unica forma que encontre y logre de hacerlo trabajar...

lo que pretendo hacer, es conseguir mas memoria y velocidad para cascadear la mayor cantidad de TLC's posible para ver hasta donde se puede llegar con este y los micros..... ya dije que podia controlar 5 leds en 8bits con un micro muy basico, ahora con un micro muy basico, manejo 224 leds en 12bits, y si es asi, me surge la idea de hacer una matriz RGB en el cielo de mi Dpto. en vez de los discos que tengo...
Título: Re: Controlador RGB (TLC5940)
Publicado por: J1M en 25 de Enero de 2009, 17:12:28
Enhorabuena por el proyecto! Hace unos días me crucé con una matriz RGG de 8x8 y estaba buscando el como meterle mano... He visto varias posibilidades de control. Una sería la que se comenta en este post, otra forma es tal y como lo hacen los compañeros de sparkfun: http://www.sparkfun.com/commerce/product_info.php?products_id=760
La que creo es más sencilla ( aunque no he visto nada montado ) es con un chip de Maxim de la familia MAX6960:
http://datasheets.maxim-ic.com/en/ds/MAX6960-MAX6963.pdf
Me parece una pequeña maravilla, ya que con un solo chip se puede controlar una matriz RGB 8x8 y encima tiene entrada/salida serie! :)
En el foro del Arduino hay un pequeño ejemplo:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1227289029/5

un saludo!

pd: Creo que me he colado el MAX6960 es para matrices Bicolor no RGB, ya que tiene salida para 8 filas y 16 columnas... ejem! Parece que el MAX6974 y 75 si que servirían para el propósito, aunque sin entrada/salida serie ... http://datasheets.maxim-ic.com/en/ds/MAX6974-MAX6975.pdf
Título: Re: Controlador RGB (TLC5940)
Publicado por: gera en 25 de Enero de 2009, 17:30:10
Aprovecho a sacarme una duda q me tiene mal. Con esos integrados podemos controlar cierta cantidad de canales pwm, pero los carteles de leds pueden llegar a tener muchos de estos, asiq no nos queda otra q multiplexar. No entiendo como puede ser posible multiplexar una señal pwm, ya que mientras al estamos sacando por un canal, los demas quedan en un solo estado. No se si me explico.
gracias!
Título: Re: Controlador RGB (TLC5940)
Publicado por: diogoc en 19 de Febrero de 2009, 23:48:47
i need help with tlc5940 interface.
anyone can give me some code example or ideas for implementation?

thanks
Título: Re: Controlador RGB (TLC5940)
Publicado por: gera en 20 de Febrero de 2009, 13:07:33
In this topic Khronos attached a pdf with an explanation (in spanish), and some code in C http://www.todopic.com.ar/foros/index.php?topic=23031.msg186746#msg186746
Título: Re: Controlador RGB (TLC5940)
Publicado por: jacrmr en 23 de Febrero de 2009, 17:53:09
Citar
need help with tlc5940 interface.
anyone can give me some code example or ideas for implementation?

thanks

The datasheet is straight and pretty self-explanatory. What other kind of information do you need? You could interface them with basic serial SDIN, CLK, LATCH signals to enter simple data to the serial engine (either ON/OFF or RGB PWM data), or use more advanced methods like feeding data output directly from a video decoder IC, which gives to you the real power of these RGB controllers, since they were mainly manufactured for the full-color video LED sign industry. If you are interested about information how to use this last method of feeding the TLC5940 signals, send me a private message.
Título: Re: Controlador RGB (TLC5940)
Publicado por: jorsh en 12 de Marzo de 2010, 03:10:31
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....




COMO RESOLVISTE LO DEL GSCLK? YO ESTOY INTENTANDO HACER FUNCIONAR EL CIRCUITO PERO CON EL 16F877A
Título: Controlador RGB (TLC5940)
Publicado por: dom124 en 22 de Septiembre de 2010, 21:12:35
Buenas! quiero preguntarles como se puede resolver el tema del GSCLK que hay que enviarle al TLC... ya que en el codigo que se adjunta eesta como que sale del pinC0 pero lo configura como reloj interno al timer1 y de ahi que no se puede tener ninguna salida... me pueden dar una guia de como encararlo??? gracias!
Título: Re: Controlador RGB (TLC5940)
Publicado por: Chipcon en 23 de Septiembre de 2010, 17:34:21
que tal dom124 y a todos los amigos que siguen este proyecto este circuito trabaja con una comunicacion serial sincrona utiliza 3 señales datos,reloj y habilitacion para poder cargar los 16 canales se deben transmitir 192 bits ya que 12 bits de resolucion x 16 canales = 192 bits.
y empiezas enviando el bit mas significativo y tambien del canal mas significativo.

Cuando termina la transmision se genera la habilitacion entonces los datos son cargados en unos registros que tiene internamente el TLC 5940

Para el grayscale counter entonces generas la señal GSCLK que deben ser 4096 pulsos.
La señal blank es el output enable entonces mientras generas el GSCLK la señal blank debe estar en bajo y terminado el ciclo pwm
subir la señal esto provoca el reset en el grayscale counter para el siguiente ciclo pwm.

Ahora bien para no tener ningun parpadeo en los leds la frecuencia en GSCLK como valor minimo recomendado es de 409.6 KHZ por que este valor?
bueno tenemos una resolucion de 12 bits es decir 4096 pasos de intensidad en el led, entonces como ejemplo: queremos 100HZ como minimo en un ciclo pwm multiplicamos 100 x 4096 = 409600HZ.
Este es un punto importante ya que una frecuencia menor  a 245,760HZ nos daria un ciclo pwm menor a 60 HZ provocando el leve parpadeo en los leds.

Y ya para terminar esta pequeña explicacion la velocidad con la cual se transmiten los datos puede ser diferente a la del GSCLK pero solo se puede cargar los datos hasta que el ciclo pwm termine ya que si escribes datos y los cargas mientras se esta generando un ciclo pwm los datos son sobreescritos perdiendo la sincronizacion del pwm.
Bueno seguiremos este proyecto interesante saludos
Título: Re: Controlador RGB (TLC5940)
Publicado por: dom124 en 25 de Septiembre de 2010, 01:14:31
Antes que nada, gracias por responder Chipcon... es muy buena la explicacion que das... de hecho tambien he leido el pdf que esta aqui que tambien tiene una buena explicacion de como funciona el integrado...
tal vez me exprese mal a lo que quise preguntar antes... a ver si ahora puedo.. jeje
 
Lo que yo necesito es saber como, desde su experiencia con estos integrados, hacen para generar los 4095 pulsos.... si es por pwm, por una salida del timer como lo ponen en el codigo citado mas arriba (que creo que eso no funciona, pero me gustaria que me lo expliquen si funciona)... es decir... necesito una guia a nivel de codigo del uC de cual es la mejor forma y la mas conveniente de generar estos pulsos...

muchas gracias y saludos!  :mrgreen:
Título: Re: Controlador RGB (TLC5940)
Publicado por: Chipcon en 27 de Septiembre de 2010, 20:10:51
Saludos dom124 bueno asi cambia la cosa jeje, en experiencia personal la utilización del PWM del pic o utilizar alguno de los timer
no genera la velocidad suficiente para el ciclo pwm.
Xootraoox expuso mas arriba que utilizo el oscilador interno y el pin dedicado CLKOUT para generar una frecuencia mas alta
y muy claro comenta que fue la única forma de que trabaje.

Creo que también se podría generar el GSCLK en el main pero sin mucha garantía de que los 4096 pulsos sean estables,tal vez se obtengan mejores resultados con un PIC18 y utilizando el HSPLL para mayor velocidad.

Dejame realizar pruebas hoy y comento los resultados el dia de mañana saludos

Título: Re: Controlador RGB (TLC5940)
Publicado por: Chipcon en 29 de Septiembre de 2010, 15:29:17
Saludos dom124 realice pruebas utilizando un pic16f877 con Xtal de 20MHZ y obtuve un ciclo pwm de casi 90 HZ solo es una pequeña prueba que espero sirva de orientación para el manejo de los drivers TLC5940, con la tabla se carga el valor de cada canal no utilizo interrupciones. Yo utilice el compilador PICC.

Como opinión utilizando un pic18 se tendrán mejores resultados
Y bueno quedamos en espera de los resultados del compañero xootraoox.

Título: Re: Controlador RGB (TLC5940)
Publicado por: dom124 en 04 de Octubre de 2010, 16:34:41
Muchas gracias por compartir tu idea Chipcon, estoy bajando el codigo que pusiste para darle una mirada y probarlo... estoy de acuerdo con vos en usar un pic18... actualmente no tengo ninguno a mano como para probar. pero ni bien me consiga uno comento los resultados...
Lo que yo decia anteriormente sobre el codigo que expuso xootraoox es que no se puede sacar el gsclk por el CLKOUT del micro... o bien si se puede necesitaria que me lo expliquen por favor...
A alguien le anduvo el codigo ese???

saludos y gracias nuevamente por tu opinion chipcon
Título: Re: Controlador RGB (TLC5940)
Publicado por: Edson G. en 03 de Noviembre de 2011, 02:33:12
Buenas, he intentado controlar el TLC5940 pero mis intentos no funcionan  :?. He escrito varios códigos y nada me resulta aún  :5]. Utilizo compilador CCS (4.104) y programo un PIC18F4685. Adjunto mi último código. Podria alguien experimentado decirme: Que estoy haciendo mal?

Código: [Seleccionar]
#include<18F4685.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock = 800000)
#use fast_io (B)
#use spi(DI=PIN_C4,DO=PIN_C5, CLK=PIN_C3, BITS=12, MODE=0, MSB_FIRST, STREAM=envio)

#define GSCLK PIN_C0
#define BLANK PIN_C1
#define XLAT  PIN_C2

//EN 18f4685
// SDO   ---> C5
// SDI   ---> C4 NO USADO
// SCK   ---> C3
// XLAT  ---> C2
// BLANK ---> C1
// GSCLK ---> C0
//EN TLC5940
//VPRG---> 27 ----> GND    (SOLO GS)
//DCGRG--> 19 ----> +5     

void main(){

  SET_TRIS_B( 0x80 );
  output_low(XLAT);
  output_high(BLANK);
  output_low(GSCLK);
 
int16 count;
int first;
unsigned int inf;

unsigned char a;
const unsigned int CHANNELS[16] =  {0x000,0xfff,0x000,0xfff,0x000,0xfff,0x000,0xfff,
                                   0x000,0xfff,0x000,0xfff,0x000,0xfff,0x000,0xfff};
const unsigned int CHANNELSA[16] = {0xfff,0x000,0xfff,0x000,0xfff,0x000,0xfff,0x000,
                                    0xfff,0x000,0xfff,0x000,0xfff,0x000,0xfff,0xfff};
first=1;

while(TRUE){

 if (input(PIN_B7)){
       for (a = 16;a > 0;a --)     // 16 ciclos
        { inf = CHANNELS[a-1];  // Carga el canal MSB
          spi_xfer(envio, inf, 12);}}
         
 else {
           for (a = 16;a > 0;a --)     // 16 ciclos
        { inf = CHANNELSA[a-1];  // Carga el canal MSB
          spi_xfer(envio, inf, 12);}
          }
     

output_high(XLAT);
output_low(XLAT);
output_low(BLANK);
 
     if (first == 1){ //PRIMERA VEZ
         output_high(GSCLK);
         output_low(GSCLK);
         first++;
          }
         
for (count = 1; count <= 4096;count ++) {
 
  output_high(GSCLK);
  output_low(GSCLK);
  }
     
output_high(BLANK);

}
}

Gracias  8)
Título: Re: Controlador RGB (TLC5940)
Publicado por: Chipcon en 03 de Noviembre de 2011, 13:05:16
Por el momento solo veo que tienes un pulso extra en GSCLK es decir generas 4097 relojes, yo recuerdo que si te pasas de pulsos el contador se pierde
y no se ve nada o se ven tonos erróneos en las salidas.

PRIMER PULSO
if (first == 1)
{ //PRIMERA VEZ
         output_high(GSCLK); 
         output_low(GSCLK);
         first++;
 }

4096 PULSOS = 4097 PULSOS
 for (count = 1; count <= 4096;count ++) {
 
  output_high(GSCLK);
  output_low(GSCLK);
  }

 Yo no estoy familiarizado con CCS pero me imagino que la transmisión serial si esta correcta es decir enviar el MSB de cada canal y solo 12 bits.
Saludos
Título: Re: Controlador RGB (TLC5940)
Publicado por: Edson G. en 05 de Noviembre de 2011, 00:30:52
Gracias por la respuesta :)
Pulsé 4097 veces la primera vez porque lo recomendaban en la datasheet del TLC5940. La verdad hay salida, pero no correcta (literalmente actua aleatoriamente, incluso hay algunos que encienden con menor intensidad y otros que no encienden haga lo que haga. Tengo 20 de estos chips y nada
Título: Re: Controlador RGB (TLC5940)
Publicado por: Chipcon en 10 de Noviembre de 2011, 12:02:38
mmm creo que solo se aplica cuando modificas el dot correction,  siempre se deben generar 4096 pulsos,
como te comente no utilizo ccs y entonces deberías checar si tu función de transmisión opera bien,
puede ser que se esten escribiendo mal los registros de datos recuerda que primero se transmite el canal mas significativo
asi como se transmite el MSB de cada dato.

Unos cuantos post arriba deje un código de prueba que funciona bien, yo utilizo HITECH pero no veo prblema para que
las emigres a ccs solo etiqueta los pines que tu utilizas y prueba nuevamente
saludos
Título: Re: Controlador RGB (TLC5940)
Publicado por: elgarbe en 30 de Septiembre de 2012, 10:53:36
Hola, disculpen que reflote este tema, pero quería el pdf del post http://www.todopic.com.ar/foros/index.php?topic=23031.msg186746#msg186746
Alguien lo tiene? no lo puedo bajar del post original....
Título: Re: Controlador RGB (TLC5940)
Publicado por: Suky en 30 de Septiembre de 2012, 14:11:33
Intenta nuevamente, yo lo descargue sin problemas  ;-)


Saludos!
Título: Re: Controlador RGB (TLC5940)
Publicado por: MGLSOFT en 31 de Diciembre de 2012, 08:57:56
Alguien tiene un esquema de como conecto este Circuito integrado a los leds RGB y que le haya funcionado ??
Podrán subirlo aquí ??
Título: Re: Controlador RGB (TLC5940)
Publicado por: Suky en 31 de Diciembre de 2012, 09:32:00
Yo en su momento probé así: DCPRG lo podes poner a GND, después BLANK, VPRG, XLAT, SCLK y SIN a cualquier pin del micro. GSCLK debe ir a pin que genera PWM. Luego en IREF se debe colocar una resistencia adecuada para controlar la corriente, en el datasheet esta la formula para calcularla.

El código que probé fue:

Código: C
  1. #include <p33FJ128GP802.h>
  2. // *********************************************************************************
  3. _FOSCSEL(FNOSC_PRIPLL & IESO_OFF)
  4. _FOSC(FCKSM_CSECMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT) // Conmutación de Clock habilitada, Fail-Safe Clock des-habilitado, OSC2 Clout, Cristal XT.
  5. _FWDT(FWDTEN_OFF);// Watchdog des-habilitado.
  6. _FPOR(ALTI2C_OFF & FPWRT_PWR2);// Power-on Reset  2ms.
  7. _FICD(JTAGEN_OFF)
  8. // *-----------------------------------------------------------------------------*
  9. #include "main.h"
  10. #include "GenericTypeDefs.h"
  11. #include <pps.h>
  12. #include <timer.h>
  13. #include <outcompare.h>
  14. // *-----------------------------------------------------------------------------*
  15. extern void __delay32(unsigned long cycles);
  16. #define FCY 40000000UL
  17. #define _delay_ms(d)     __delay32((unsigned long long)(d)*(FCY)/1000)
  18. #define _delay_us(d)     __delay32((unsigned long long)(d)*(FCY)/1000000)
  19. #define _delay_s(d)     __delay32((unsigned long)(d)*(FCY))
  20.  
  21.  
  22. void vSendDataTLC5940(void);
  23. // *-----------------------------------------------------------------------------*
  24. UINT16 CountPWM;
  25. BOOL UpdateData=0;
  26. UINT16_VAL Data[16];
  27. // *-----------------------------------------------------------------------------*
  28. void __attribute__((__interrupt__, no_auto_psv)) _T2Interrupt(void){
  29.  
  30.  
  31.     if(++CountPWM==4096){
  32.         CountPWM=0;
  33.         PIN_BLANK=1;
  34.         if(UpdateData==1){
  35.             UpdateData=0;    
  36.             PIN_XLAT=1;Nop();PIN_XLAT=0;
  37.         }
  38.         PIN_BLANK=0;
  39.     }
  40.     IFS0bits.T2IF = 0;
  41. }
  42. // *-----------------------------------------------------------------------------*
  43. int main(void){
  44.     UINT8 k;
  45.     UINT16 Temp=0;
  46.  
  47.  
  48.     // Configuramos PLL para trabajar a 40 MIPS
  49.     PLLFBD = 0x004E; // M=80.
  50.      CLKDIV = 0x0000; //N1=2, N2=2.    
  51.     // Cambiamos clock para incroporar PLL.-
  52.     __builtin_write_OSCCONH(0b011); // Indicamos cambio a clock primario con PLL.-
  53.     __builtin_write_OSCCONL(0x01); // Iniciamos cambio.-
  54.     while(OSCCONbits.OSWEN == 1) {}; // Esperamos a que se termine el cambio de clock.
  55.        
  56.     AD1PCFGL=0xFFFF; // Todos los pines digitales.-
  57.     TRISBbits.TRISB5=0;
  58.     LATBbits.LATB5=0;
  59.    
  60.     __builtin_write_OSCCONL(OSCCON & ~(0x40));    // Habilitamos escritura sobre registros RPINRx y RPORX.
  61.     // ** Asignamos pin a módulo PWM 1 **
  62.     iPPSOutput(OUT_PIN_PPS_RP10,OUT_FN_PPS_OC1);
  63.     // Bloqueamos escritura sobre registros RPINRx y RPORX.
  64.     __builtin_write_OSCCONL(OSCCON |0x40);    
  65.  
  66.  
  67.     // DCPRG a GND
  68.     PIN_BLANK_DIR=0;
  69.     PIN_VPRG_DIR=0;
  70.     PIN_XLAT_DIR=0;
  71.     PIN_GSCLK_DIR=0;
  72.     PIN_SCLK_DIR=0;
  73.     PIN_SIN_DIR=0;
  74.    
  75.     PIN_BLANK=1; // Todos apagados.
  76.     PIN_VPRG=0; // GS Modo.
  77.     PIN_XLAT=0; //
  78.     PIN_GSCLK=0;
  79.     PIN_SCLK=0;
  80.     PIN_SIN=0;
  81.    
  82.     for(k=0;k<16;k++){
  83.         Data[k].Val=0x0000;
  84.     }    
  85.     vSendDataTLC5940();
  86.    
  87.     CloseOC1();
  88.     OpenOC1(OC_IDLE_CON & OC_TIMER2_SRC & OC_PWM_FAULT_PIN_DISABLE ,60,60); // C.T. 50%
  89.     // ** Configuramos Timer2 para generar PWM de 250kHz ** *
  90.     OpenTimer2(T2_ON & T2_IDLE_STOP & T2_GATE_OFF & T2_PS_1_1 & T2_32BIT_MODE_OFF & T2_SOURCE_INT, 159); //159
  91.     WriteTimer2(0);    
  92.     INTCON1bits.NSTDIS=0; // Enable interrupciones anidadas!  
  93.     ConfigIntTimer2(T2_INT_PRIOR_3 & T2_INT_ON);
  94.     CountPWM=0;
  95.     while(1){
  96.         _delay_ms(100);
  97.         LATBbits.LATB5=!PORTBbits.RB5;
  98.         Temp+=50;
  99.         if(Temp>0xFFF){
  100.             Temp=0;
  101.         }
  102.         for(k=0;k<16;k++){
  103.             Data[k++].Val=Temp;
  104.             Data[k].Val=~Temp;
  105.         }
  106.         vSendDataTLC5940();
  107.     }
  108.    
  109.    
  110. }
  111. // *-----------------------------------------------------------------------------*
  112. void vSendDataTLC5940(void){
  113.     UINT8 k,j;
  114.  
  115.  
  116.     for(k=0;k<16;k++){
  117.         for(j=0;j<12;j++){
  118.             PIN_SIN=Data[k].b11;
  119.             PIN_SCLK=1;
  120.             Data[k].Val<<=1;
  121.             PIN_SCLK=0;
  122.         }
  123.     }    
  124.     UpdateData=1;
  125. }


Saludos!
Título: Re: Controlador RGB (TLC5940)
Publicado por: MGLSOFT en 31 de Diciembre de 2012, 09:51:53
Gracias Suky !!
Una pregunta mas:

Los leds RGB se conectan a la patilla del TLC sin resistencia limitadora ??

De eso no encuentro información, y tengo miedo de hacer macanas...
Título: Re: Controlador RGB (TLC5940)
Publicado por: Suky en 31 de Diciembre de 2012, 12:09:57
Si, sin resistencias. La resistencia en IREF establece la corriente. En el datasheet podes verlo en la sección SETTING MAXIMUM CHANNEL CURRENT


Saludos!
Título: Re: Controlador RGB (TLC5940)
Publicado por: BrunoF en 31 de Diciembre de 2012, 14:27:53
Los leds RGB se conectan a la patilla del TLC sin resistencia limitadora ??

Si, sin resistencias. La resistencia en IREF establece la corriente. En el datasheet podes verlo en la sección SETTING MAXIMUM CHANNEL CURRENT

Excelente pregunta. Ahora, pensé en primera instancia igual que Suky, sin resistencias. Luego me puse a pensar que trabajamos casi siempre con fuentes de alimentación de voltaje constante, y los TLC son de corriente constante. Para no poner resistencias, se supone que alguien tiene que hacerse cargo de disipar la potencia restante entre el voltaje de alimentación de la fuente y la caida de voltaje en los LEDs. Por ejemplo, mi caso real con TLC5944:

Tengo IREF fijada para 60mA. Mi voltaje de alimentación de los LEDs es de 12V, y los LEDs trabajan a 6V y 60mA. Quién se hace cargo de la potencia restante que hay que disipar? Es decir, los 6V restantes a 60mA? En dónde caen? todo me hace pensar que en los TLC, siendo que la fuente de alimentación es de voltaje constante. Los TLC5944 que controlo(muy similares a los TLC5940) soportan hasta  15V de alimentación de los LEDs a 60mA por salida. Si los someto al peor caso de 100% duty, alimentación de 15V y LEDs con 2V solamente de caída, tendría que el TLC disiparía : 13V * 0.06A * 16 (salidas) = 12.5W. Será capaz de disipar esa potencia?

Tal vez alguien pueda explicarmelo.

Saludos.
 
Título: Re: Controlador RGB (TLC5940)
Publicado por: elgarbe en 31 de Diciembre de 2012, 15:57:06
Bruno, viste la fórmula de la página 26, no? ahí podes calcular cuál es la potencia que necesita disipar tu integrado. Entiendo que no podrías alimentar los led de 2V con una fuente de 15V y trabajar a 60mA sin más.

quizá estoy entendiendo mal la duda....
Título: Re: Controlador RGB (TLC5940)
Publicado por: BrunoF en 31 de Diciembre de 2012, 16:56:02
Hola Leo,

la pregunta creo que es si hace falta o no resistencias limitadoras en la salida de cada LED, cuando uno alimenta dichos LEDs con un voltaje superior al necesitado por los LEDs, como sucede la mayoría de las veces. Es lógico que si el voltaje suministrado a los LEDs es igual o inferior al recomendado en el datasheet del LED en uso, no haría falta dicha resistencia limitadora.

Cuando calculamos una resistencia limitadora utilizando la ley de ohm, nuestros dos datos son: el voltaje suministrado(por ser con fuente de voltaje constante), y el voltaje y corriente del LED.

En este caso donde aparecen los TLC, tenemos a mi parecer, dos valores impuestos: por un lado, en ausencia de resistencia limitadora, el voltaje suministrado a los LEDs permanecerá constante(por continuar utilizándose fuente de alimentación de voltaje constante), y por otro lado tenemos la corriente de cada nodo fijada por los TLC.

Supongamos que tengo un LED de 2V de voltaje directo de trabajo, y 60mA de corriente recomendada. Si alimento el ánodo del LED con 12V de una fuente de alimentación de voltaje constante, tengo una d.d.p. de 12V y una corriente de 60mA dada por el TLC. He conectado LEDs directos a los TLC, sin resistencia, y la d.d.p. entre ánodo y cátodo del LED es precisamente la correcta (siempre y cuando la corriente del nodo sea la adecuada para el LED), pero esto implica que el excedente de potencia está siendo disipado en algún otro punto del nodo, y todo parece apuntar que dicho punto es dentro del TLC.

Por lo tanto, recurriendo nuevamente a la ley de ohm y sabiendo que nuestra d.d.p. es de aprox. 12V y la corriente de 60mA, podríamos calcular la resistencia limitadora necesaria para que disipe el resto de la potencia haciendo:

(Vfuente - Vled) / Iref = (12 - 2)V / 0.06A = 166 ohms.

La potencia máxima disipada por la resistencia sería de 10V * 0.06A = 0.6W, lo que es bastante. Eso sería por cada salida del TLC.

En caso que no haga falta resistencias limitadoras, el TLC me parece que es el que tendría que disipar esos 0.6W por salida. Esto aplicaría para el TLC5944.

Para el TLC5940 la disipación total necesaria sería aún mayor ya que permite voltaje de alimentación de los LEDs de hasta 17V y máximo 120mA por salida.
Es decir que podríamos llegar a tener circuitos que requerirían del TLC disipando más de 30W, lo que no me parece viable aún portando su famoso PowerPAD en el pecho.

Las resistencias limitadoras permitirían disipar esa potencia fuera del TLC, manteniendo al TLC disipando sólo la potencia mínima necesaria para operar.

Espero sus opiniones, puedo estar radicalmente equivocado. Si no hacen falta las resistencias, bienvenido sea. Menos componentes y rediseño de placa por delante.
Título: Re: Controlador RGB (TLC5940)
Publicado por: elgarbe en 31 de Diciembre de 2012, 18:41:55
Ok, entiendo. Bueno, para mi es como vos decís, si queres alimentar 1 solo led con 15V y setear la corriente en 60mA, toda esa potencia restante la disiparán los componentes de la fuente de corriente interna del TLC. Si la potencia es excesiva se quemará o saltará el limite de temperatura, no queda otra. Ahora si colocas resistencia en serie con la salida podes hacer, como vos decís, que esa potencia se disipe en la R serie y no en el TLC.

Mi duda es porque alimentas con una tension bastante más alta que la necesaria. No podrías hacer una fuente para alimentar los LED más cercana a la necesaria? Me parece un desperdcio de energía poner esa R en serie...

Saludos!
Título: Re: Controlador RGB (TLC5940)
Publicado por: BrunoF en 31 de Diciembre de 2012, 19:04:19
Mi duda es porque alimentas con una tension bastante más alta que la necesaria. No podrías hacer una fuente para alimentar los LED más cercana a la necesaria? Me parece un desperdcio de energía poner esa R en serie...

Saludos!

Era un caso muy radical. En mi caso real, alimento los LEDs con 12V y tengo configurada IREF a 60mA.En cada salida del TLC hay 9 LEDs. Están agrupados en 3 grupos en paralelo de 3 LEDs en serie c/u. Esto me da un total de 6V y 60mA para los LEDs Rojos, 9.6V y 60mA para los Verdes y 10.2V y 60mA para los Azules.

Como podrás ver, en el caso del Rojo habrá mucho desperdicio de potencia, pero en los Verdes y Azules, el voltaje requerido es muy cercano al suministrado. Es por ello que las resistencias de los rojos disiparán bastante más potencia que las otras, pero tuve que colocarle las resistencias, porque si bien como decía Marcos, no hay información disponible sobre el uso o no de resistencias limitadoras, me parece que los cálculos que hice pueden ser los correctos, y en dicho caso la presencia de resistencias es inminente en casi todos las aplicaciones.

Mis cálculos reales:

Características de los LEDs(según Datasheet):
Red:   20mA   2.0V
Green:   20mA   3.2V
Blue:    20mA   3.4V

Total de voltaje y corriente por grupo de 9 LEDs(3 grupos en paralelo de 3 LEDs en serie c/u):   
Red    =   6V   @60mA
Green    =   9.6V   @60mA
Blue   =   10.2V   @60mA

Resistencias limitadoras:
Red   =   100R   potencia disipada(max):   .360W
Green   =   40R   potencia disipada(max):   .144W
Blue   =   30R   potencia disipada(max):   .108W
Título: Re: Controlador RGB (TLC5940)
Publicado por: MGLSOFT en 31 de Diciembre de 2012, 19:11:52
Mira que buena informacion me terminan dando con una pregunta tan simple !!! :D :D ((:-)) ((:-)) ((:-))

Gracias !! Y feliz Año 2013 !!
Título: Re: Controlador RGB (TLC5940)
Publicado por: Nocturno en 01 de Enero de 2013, 05:53:35
Según la data, en el mejor de los casos disipa aproximadamente 4W.

¿No será que al gestionar los leds mediante switching no necesita disipar esa potencia porque la mayor parte del tiempo están desconectados?, así es como los reguladores switching son capaces de gestionar bastantes amperios sin levantar apenas la temperatura.
Título: Re: Controlador RGB (TLC5940)
Publicado por: Chipcon en 02 de Enero de 2013, 00:06:18
Que tal compañeros, me disculpo por andar de entrometido en el tema, pero quiero aportar un poco de experiencia al tema.

En el caso de estos drivers de corriente constante, si es necesario colocar las resistencias limitadoras, en la practica y al utilizar por primera vez estos chips a mi, a mis compañeros nos surgió la duda
es necesario colocar las resistencias?? el driver podrá disipar el exceso??

Bueno nos fuimos por lo simple, el data dice que si soporta "hablamos del encapsulado DIP", 17v. de caída de voltaje 120mA por salida mmm solo requerimos 60mA maximo (cálculos), perfecto sin resistencias esto se aplico en un marcador electrónico para uso exterior los resultados; bueno si se calientan un poco =)

Al encontrarse al exterior se comenzó a sumar la temperatura ambiente que aumento sin dudar la temperatura de operación comenzando a quemarse los drivers en algunos casos solo pocos pines, en otros todo el driver, y el voltaje de caída no rebasaba los 5v.

Entonces se cambio el pcb de control y se incluyeron resistencias de limitación, ahora bien si se fijan en el data el mejor vdrop es de .4v a .7v. por pin
y esto es verdad, incluso con un voltaje de caída de 2v. a una ILED de 60mA créanme que los chips se calientan bastante en paquete DIP así que lo ideal fue bajar a .7v por salida o mosfet.

hay métodos de incluir una sola resistencia para las 8 salidas, con la desventaja de ser una resistencia grande o utilizar diodos rectificadores en serie para absorber el exceso de voltaje de VLED eliminando
la colocación de resistencias por salida. sin embargo depende de la aplicación.

Por ultimo ya solo reafirmando los cálculos, para saber el valor de RLED es ejemp. (VCC - VLED) = (12v - 6.6v) = 5.4v - Vdrop(.7v)  = "4.7v" R = 4.7/.06 = 78.33R (82R).
espero haber aportado lo suficiente para sus dudas
Saludos Cordiales
Título: Re: Controlador RGB (TLC5940)
Publicado por: MGLSOFT en 02 de Enero de 2013, 08:58:53
Me encanta conocer estas experiencias antes de ponerme siquiera a diseñar con este chip.
Es muy tentador y realmente saca muchos problemas el hecho de no tener que poner resistencias, pero me llamo la atención que en la placa demo de TI, hay solo un led RGB por salida, y tres TLC (uno por color) para controlar solo 16 leds RGB.
Título: Re: Controlador RGB (TLC5940)
Publicado por: xocas en 02 de Enero de 2013, 13:12:19
En los drivers para leds de potencia usados en iluminación de acuarios o cultivo en interiores no suelen usarse resistencias limitadoras. Entregan una corriente constante y en función del voltaje suministrado se aconseja un número determinado de leds conectados en serie.

Solamente en los datasheet de Mean-Well (por ej: ELN-60 (http://www.shoptronica.com/images/eln-60-spec.pdf)) he visto que contemplan el uso de la resistencia, pero nunca en la práctica. Si el voltaje aplicado no sobrepasa en exceso la suma de voltajes de los leds la disipación del driver no es problemática.
A excepción del encapsulado PDIP todos tienen un pad térmico, de manera que debería descartarse este formato (que por cierto ya no está presente en el TLC5944).

En pruebas que hice con algunos drivers de corriente no aprecié diferencia de temperatura en voltajes superiores en 2-3V con respecto a Vled. Un led de 3w mantiene sus 3.3v y 700mA aún variando el voltaje de entrada en 2.5v.

... me llamo la atención que en la placa demo de TI, hay solo un led RGB por salida, y tres TLC (uno por color) para controlar solo 16 leds RGB.
16 leds = 48 canales, de ahí tres drivers

un saludo
Título: Re: Controlador RGB (TLC5940)
Publicado por: elgarbe en 02 de Enero de 2013, 13:54:47
Bueno nos fuimos por lo simple, el data dice que si soporta "hablamos del encapsulado DIP", 17v. de caída de voltaje 120mA por salida mmm solo requerimos 60mA maximo (cálculos), perfecto sin resistencias esto se aplico en un marcador electrónico para uso exterior los resultados; bueno si se calientan un poco =)
El encapsulado DIP el 5940 soporta como máximo 2,5W. Se lo podes sacar a una sola salida (17V*120mA=2W) o dividirlo en varias salidas (ver figura 4 del datasheet). Pero no le podes sacar nunca 2W por salida....

Según la data, en el mejor de los casos disipa aproximadamente 4W.
¿No será que al gestionar los leds mediante switching no necesita disipar esa potencia porque la mayor parte del tiempo están desconectados?, así es como los reguladores switching son capaces de gestionar bastantes amperios sin levantar apenas la temperatura.
El tema es que hay que calcular todo para que soporte el 100% de duty cicle en cada salida por si queremos tener el panel con color blanco por mucho tiempo... El PWM es en este caso para conseguir los diversos colores.

hay métodos de incluir una sola resistencia para las 8 salidas, con la desventaja de ser una resistencia grande o utilizar diodos rectificadores en serie para absorber el exceso de voltaje de VLED eliminando
la colocación de resistencias por salida. sin embargo depende de la aplicación.
Disipar la potencia en resistencias o diodos es lo mismo. En el diodod será Vf * Iled lo que se disipe y con resistencia será Iled*Iled*R, pero es lo mismo...

Coincido con xocas, no es común colocar las R en serie para limitar la potencia. Pero claro, que no sea común no significa que no se use o que no sea útil. Por supuesto que si uno tiene una fuente de alimentacion para los LED y no quiere/puede tocar la misma y ésta es superior a la V de la serie de los led no va a quedar otra que limitar la potencia con R en serie. Igual, tener en cuenta que la potencia que puede manejar el TLC no está dada por lo que dice las características al principio en el datasheet, hay una curva de Potencia vs. T ambiente y hay una fórmula para calcular la potencia según los canales usados, el dot correction, etc.

Tambien muy cierto el tema del encapsulado DIP, no sirve para disipar potencia, los HTSSOP con power pad pueden disipar casi el doble de potencia. Tambien es fundamental hacer un buen diseño (según las recomendaciones de TI) del power pad. Trabajo con led de potencia desde hace un tiempo y usar placas doble faz con vias conducir el calor hacia el otro lado del PCB (o usar metal core PCB) es básico y totalmente necesario si queremos disipar potencia.

Bueno, solo mi opinión.

Saludos!
Título: Re: Controlador RGB (TLC5940)
Publicado por: xocas en 02 de Enero de 2013, 14:02:03
Olvido: los rojos...

En acuarios se usan blancos y azules, que tienen un voltaje similar y no hay problema. En el cultivo de marihua.. de interior, si no recuerdo mal, se usan azules en la floración y rojos para el crecimiento (o puede que al revés), y solucionan el tema del voltaje aumentando el número de rojos en serie o -bastante frecuente por lo que he visto- se alimentan desde drivers con diferente voltaje.

El motivo, si no me equivoco, tiene que ver con la eficiencia, que se reduce con el uso de resistencias limitadoras.

Título: Re: Controlador RGB (TLC5940)
Publicado por: Chipcon en 02 de Enero de 2013, 16:55:05
ahhh perdón si claro, hay buenas observaciones como el aumento de leds para reducir el vdrop, o el power pad. en versiones de montaje superficial.
algo que se me olvido comentar es que esto fue sobre un chip TLC5916 driver de corriente constante de 8 bits.
también de TI. no es exactamente el tlc5944 con PWM.
saludos
Título: Re: Controlador RGB (TLC5940)
Publicado por: MGLSOFT en 02 de Enero de 2013, 17:34:09
En el cultivo de marihua.. de interior, si no recuerdo mal, se usan azules en la floración y rojos para el crecimiento (o puede que al revés), y solucionan ...


Sera que el aroma les cambia la ansiedad de electrones a los leds ?? :D :D :D
Título: Re: Controlador RGB (TLC5940)
Publicado por: chavaroon en 15 de Marzo de 2013, 23:49:49
A ver, a ver. Yo tengo una duda, Ojala me la puedan aclarar...  :-/

¿El TLC5940 necesita recibir los datos en SPI o en SERIAL? ¿O es lo mismo? ¿O se transmite poniendo a '1' o '0' el SIN?

¿O como está ese asunto?  :shock:


Por cierto, yo me topé con este PDF, que muestra el flujo de programación!  ;-)
Título: Re: Controlador RGB (TLC5940)
Publicado por: BrunoF en 16 de Marzo de 2013, 01:57:43
Hola. Los datos son por protocolo serie y síncrono. Podés adaptar el SPI para que envíe los datos.

Título: Re: Controlador RGB (TLC5940)
Publicado por: BrunoF en 16 de Marzo de 2013, 17:23:35
Y mucho, mucho cuidado en el cálculo de la disipación máxima de los integrados y el diseño de la PCB.

Es imprescindible soldar el PowerPad para obtener el doble de disipación. En cuanto el integrado excede la temperatura máxima, algunas salidas comienzan a apagarse(parpadear). Si el calor sigue acumulándose en el integrado, las salidas comienzan a apagarse permanentemente.

Hay AP Notes de TI para el diseño del pad y agujeros donde debe conectars el PowerPad.