Buscando crear 36 canales de control PWM para escultura LED

Soy un escultor, no un EE, pero estoy tratando de incorporar LED controlables en una pieza en la que estoy trabajando, y me vendría bien algún consejo para descubrir un enfoque práctico. Me gustaría poder controlar 12 canales separados (la pieza es un dodecaedro) de tiras RGB, y eso significa que necesitaré 36 salidas PWM, que es más de lo que tengo acceso en un Arduino. Por lo que puedo decir, necesitaré un escudo, algo como TLC5940 Breakout , aunque eso solo me da 16 PWM, así que necesitaría conectar en cadena tres de ellos, lo cual sé que se puede hacer, pero me gustaría saber qué problemas pueden resultar. Algo como Brilldea LED Painter también podría ser una solución, pero estoy relativamente presionado por el tiempo, por lo que algo preensamblado sería una buena ventaja.

Soy nuevo en esto, así que no estoy seguro de la precisión de lo que acabo de decir, pero espero que algunos de ustedes puedan informarme sobre lo que podría ser un enfoque razonable. Gracias por tu ayuda.

¿Pero realmente necesita manejar todas las tiras y todos los colores de forma independiente? Si encuentra una regla que disminuya el número de variables, puede simplificarla.
Es un proyecto de arte, así que no "necesito" hacer nada. Pero sí, en un escenario ideal (y parece que es un escenario realista) podré controlar cada tira de forma independiente para crear los efectos que quiero. Reducir la escala restringirá las visualizaciones que puedo crear.

Respuestas (7)

En mi opinión, su enfoque al usar esta placa de conexión de sparkfun suena muy bien :)

Las grandes ventajas son que esta placa proporciona 16 canales PWM que son programables a través de una interfaz serie conectable en cadena, todas las entradas LED son fácilmente accesibles y fáciles de rastrear.

Además, probablemente ya lo sepa, si planea usar Arduino, ya existe una biblioteca que lo ayudará a manipular el controlador.

En caso de que no lo hayas hecho, también deberías consultar su proyecto de inicio .

Como dijiste que estás presionado, creo que esta solución te permitiría trabajar rápido y fácilmente para que esos LED funcionen de la manera que deseas. ¡Buena suerte con tu proyecto! :)

El pintor LED se ve perfecto para su proyecto.
Gracias, me gusta el aspecto del TLC5940. De hecho, el pintor LED en realidad usa tres de ellos (NT, a diferencia de RHB en la ruptura). Lo mejor que puedo decir es que el pintor divide los colores entre los tres controladores, mientras que con la ruptura los canales no estarían divididos. ¿Puede decirme si hay desventajas en cualquiera de los enfoques y, lo que es más importante, cuál sería más difícil de programar? ¡Gracias por toda la ayuda!
(parte 1): Sí, tiene razón, el pintor de LED divide RGB entre los tres TLC, pero no hay ninguna razón por la que no pueda usar las placas de conexión de la misma manera, de hecho, creo que es una muy buena idea. Con respecto a la placa de conexiones, probablemente ya sepa que en las fotos, los conectores 0,1,2 ... 15 son como están para acomodar las conexiones del servo RC. Una TIERRA, una BATERÍA (+5V) y una salida PWM. Al realizar el cableado, solo necesitará usar la salida PWM y, por supuesto, la TIERRA de una placa (siempre que la TIERRA sea común para las 3 placas).
(parte2): Sobre ventajas y desventajas... Creo que dividir los colores te permitiría trabajar mucho más organizado y eso es algo realmente bueno, tanto desde el punto de vista del software como del hardware, aparte de eso, no puedo pensar sobre algo que decir como "esto es mucho mejor porque ..." Finalmente, dividir RGB en los 3 TLC, usando las placas de ruptura parece ser el camino a seguir desde mi punto de vista. El pintor LED también es genial, pero están agotados :)
La razón principal para manejar cada color en su propio TLC5940 es que puede manejar cada color con una cantidad diferente de corriente (todos los disipadores de corriente constante en un solo TLC5940 absorberán la misma cantidad de corriente). No es más difícil programar de una forma u otra.

Hay una elegante biblioteca Arduino para hacer PWM a través de registros de desplazamiento, llamada ShiftPWM . Fue desarrollado más o menos específicamente para lo que quieres hacer (controlar muchos LED RGB con un Arduino). Vi esto en Hack-a-Day hace varios meses. Se ve muy bien y cuenta con el potencial de controlar 768 LED (o 256 LED RGB) a 5 bits (es decir, 32 niveles de brillo) por canal de color (es decir, >32000 colores posibles). Tengo muchas ganas de usar esta biblioteca en algún momento. Y solo ocupará tres pines en su Arduino: para serie, reloj y pestillo en el registro de desplazamiento inicial (en la cadena). Esta biblioteca está diseñada para manejar algo como el registro de desplazamiento 74HC595, que es mucho más barato que el TLC5940.

El TLC5940 no es "mucho más caro" que los 3 registros de desplazamiento 74HC595 (comprados en pequeñas cantidades) que necesitaría para reemplazarlo, y el TLC5940 usa la misma cantidad de pines y elimina muchas restricciones de tiempo del microcontrolador.
Para obtener 256 niveles de brillo, ¿realmente es necesario alimentar las palancas de cambio 256 veces por cuadro? Algunos otros enfoques parecen permitir que uno se las arregle con mucho menos.
Me gusta esta idea, pero tengo suficiente apoyo financiero para que el costo del TLC5940 no sea un gran problema. También me gustaría tener 256 niveles, ya que estoy escribiendo un programa que convertirá el movimiento (convertirá datos de un Kinect) en un color, por lo que tener un rango mayor hace que el algoritmo sea más interesante. Aunque gracias Todavía podría ser útil.

No necesitas PWM. Cualquier pin de salida (IO) en un microcontrolador funcionará.

Un PWM le permite establecer un ciclo de trabajo (tiempo de encendido/apagado) y luego lo repite indefinidamente, lo que da como resultado un brillo variable. Los pines IO se pueden encender y apagar en función de un temporizador para lograr el mismo resultado. El PWM es técnicamente más preciso y puede cambiar más rápido que los pines IO, pero el ojo humano no puede ver la diferencia. El resultado será exactamente el mismo.

Entonces necesita un microcontrolador con 36 pines IO.

Si está tratando de evitar el hardware externo, también tendría que poder absorber suficiente corriente para impulsar esos 36 LED...
Sí, 100 Hz más o menos sería lo suficientemente rápido como para no producir un parpadeo visible. El reloj de un Arduino funciona a 8 000 000 Hz, por lo que puede hacerlo en el software.
Es útil saberlo, pero mi Arduino todavía no tiene 36 pines de salida, por lo que todavía necesito encontrar la mejor manera de unir todos esos pines. ¡Gracias de cualquier forma!
@the_koo: Los Arduinos son bastante pequeños; tal vez podría encontrar espacio para apretar 3 o 4 Arduinos, cada uno controlando algunas de las tiras RGB. O tal vez actualice a un Arduino Mega 2560 que tiene 54 pines de salida.

(Disculpas por la publicación publicitaria, pero no pude encontrar ninguna forma de contactar al usuario directamente) Fabrico un atenuador DMX de 48 canales diseñado para controlar tiras de LED, lo que puede brindarle una solución estándar. envíeme un correo electrónico a través de whitewing.co.uk

Otra opción que puede considerar es:

http://thingm.com/products/blinkm

No tengo conexiones con esta empresa, acabo de usar el producto.

Sugeriría usar registros de desplazamiento de corriente controlada y permitir que el cable de control de corriente sea controlado por la CPU (posiblemente al incluir uno o más cambiadores no controlados por corriente en la cadena y hacer que controlen los divisores de resistencia). Si desea un control de brillo de 6 bits y una velocidad de recarga máxima de 10 veces la tasa de PWM (por ejemplo, un máximo de una recarga por milisegundo para lograr una frecuencia de cuadro de 100 Hz), sugeriría que se dividan los seis bits de cada valor de PWM entre seis búferes de cambio (por lo que el bit N del búfer B sería el bit B del brillo del LED N). Luego, cada 10 ciclos, el patrón de recarga sería:

Ciclo 0: carga todos los cambiadores con el búfer 5, corriente completa
Ciclo 1-3: Mantener los mismos datos en los cambiadores
Ciclo 4: Cargue todas las palancas de cambios con el búfer 4, corriente completa
Ciclo 5: mantener los mismos datos en los cambiadores
Ciclo 6: Cargue todos los cambiadores con el búfer 3, corriente completa
Ciclo 7: Cargue todos los cambiadores con el búfer 2, la mitad de la corriente
Ciclo 8: Cargue todos los cambiadores con el búfer 1, un cuarto de corriente
Ciclo 9: Cargue todos los cambiadores con buffer 0, 1/8 actual

Este enfoque permitiría establecer la corriente promedio desde 1/80 del pico máximo hasta 63/80 del pico máximo, en unidades de 1/80, usando una tasa de recarga que es solo 10 veces la tasa de cuadros. Si desea 256 niveles de brillo, podría agregar recargas a 1/16 y 1/32 de corriente (12 recargas por cuadro en lugar de 10). Eso permitiría establecer la corriente promedio de 1/384 a 255/384 con solo un modesto aumento en la tasa de recarga.

Este http://www.adafruit.com/products/306 podría ser una opción. Tiene 32 LEDS direccionables RGB por tira y puede cortar la tira (sí, este es un tutorial para eso) para que los coloque

Si bien esto puede responder teóricamente a la pregunta, sería preferible incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia.
No estoy tratando de abordar los LED individuales en una tira. Necesito abordar un montón de tiras separadas.