Bueno, estoy comenzando a plantear los cálculos previos para el diseño de un POV RGB y quería ver si me ayudan un poco.
La idea es una varilla vertical con unos 16 led RGB para empezar, luego veremos si lo puedo aumentar.
Los led son con encapsulado 5050 (5mmx5mm) por lo que la distancia entre pixel vertical será de unos 6mm (separando los led 1mm uno de otro).
Para mantener la simetría pitch horizontal será entonces de 6mm.
Para que sea mas o menos fácil de construir el brazo de giro deberá tener mas o menos 200mm (dado el motorcito que tengo para moverlo). Puede ser un poco mas o menos, supongamos esa medida.
El perímetro del circulo formado es de 1256mm (2*pi*r), si tenemos un pitch de 6mm tendremos 200 pixeles horizontales o columnas.
Supongamos ahora que queremos obtener unos 50fps, tendremos un período de revolucion de 20mSeg y con 200 pixeles tendremo un tiempo entre columna y columna de 100uSeg. En ese tiempo, tendremos que poder hacer algunos ciclos de PWM sobre cada color y algunas otras cosas... ese tiempo es el más importante creo que necesitamos para seleccionar el driver.
Como driver creo que hay 2 grandes opciones (ustedes me corregiran):
- Usar un micro con muchos pines (16*3=48 salidas) y tratar de hacer PWM por software sobre cada pin
- Usar Drivers para led como el TLC5940 y manejarlo con un micro cuya principal característica sería la de poder manejar una buena velocidad en el SPI
Me parece que el primer caso es más viable con un micro tipo ARM en cambio el segundo calculo que con algun PIC de 32 bits es posible de resolver.
Veamos un poco el segundo caso.
El TLC5940 tiene dos partes para funcionar, una parte que hace el PWM de cada una de sus 16 salidas, el cual tiene una resolucion de 12bits y por lo tanto necesita 4096 pulsos para cada ciclo de PWM. La otra parte es la que se encarga de cargar los valores de 12bits de cada PWM y por lo tanto hay que enviarle 192 bits.
Aquí el principal problema creo que es la necesidad de 4096 pulsos para el PWM!!!! Para esto la solucion puede pasar por reducir la resolucion del PWM y hacerlo de por ejemplo 8 bits (255 tonos para cada color con lo que obtenemos 65K colores). Para ello simplemente enviamos una señal de BLANK en el pulso 255 (en vez de esperar a llegar a 4096). Trabajar con 8 bits de PWM no nos evita tener que enviar los 192 bits para cada PWM, eso es fijo en el TLC.
Bueno, trabajando de esta forma tenemos 100uSeg para hacer por lo menos 2 o 3 ciclos de PWM (esto es algo que me imagino, digo, antes de que pase a la siguiente columna quisiera hacer por lo menos 2 o 3 ciclos de PWM) o sea que tenemos que enviar 765 pulsos en 100us o lo que es lo miso 7,65 pulsos por uSeg lo que nos da una frecuencia de 130Khz... me parece que no es gran cosa... por otra parte, mientras estamos enviando los 765 pulsos, por otra parte estamos precargando los registros del PWM (192 bits).
Incluso pienso en un 18F4550, con el SPI puedo enviar los 192 bits de los registros del PWM y luego con otro pin generar la señal de 130KHz para el timing del PWM... creo que puede funcionar, no?
Bueno, escucho sugerencias y correcciones a esta previa.
Saludos!