¿Hacer que un anillo LED se ilumine suavemente?

3

Estoy trabajando en un proyecto que se vería genial si pudiera poner un anillo de LED (como el de los discos de identidad de TRON) que se encienden suavemente en un círculo, en lugar de tener secciones de los LED. Ilumina uno por uno. Sé que EL wire logrará el aspecto uniforme y uniforme que quiero, pero no puedo hacer que EL wire se ilumine poco a poco en un bucle.

¿Hay alguna idea? He pensado en escribir algún script en un microcontrolador que los ilumine sin problemas, pero no estoy seguro de qué tipo de LED necesitaría para eso, o si puede haber una solución más fácil.

    
pregunta M. Choi

1 respuesta

1

Rompiendo el problema en múltiples bloques:

Hardware:

  • LEDs:

    La implementación más simple involucraría 16 LEDs. Si se desea una transición más suave, se podrían usar 32 o incluso un mayor número de LED, con los IC de controlador de LED adecuados.

  • Controlador de LED de corriente constante con soporte de atenuación PWM incorporado

    El href="http://www.ti.com/lit/ds/symlink/tlc5940.pdf"> controlador de LED TLC5940 de Texas Instruments admite 16 LED, cada uno con 12 bits (4096 pasos) PWM oscurecimiento. El ciclo de trabajo de PWM para cada LED es generado internamente por el IC, liberando al microcontrolador del tiempo intenso y el esfuerzo de generación de PWM. La parte está controlada por una interfaz en serie, y existen bibliotecas de código abierto para muchos microcontroladores y tableros de desarrollo comunes. Las salidas son sumideros de corriente constante, por lo que se ahorra en las resistencias de control de corriente por LED.

    Si se desean 32 LED o más para una transición más suave, el TLC5940 admite la conexión en cascada, por lo que un solo conjunto de líneas de control puede programar toda la gama de controladores de LED.

    Si uno quiere ir muy por encima con una pista suave de iluminación LED, entonces Austria MicroSystems AS1130 132 controlador LED , o incluso su controlador 144 LED ( AS1119 ) con su bomba de carga integrada para conducir los LED desde un riel eléctrico inferior al voltaje directo de su LED, podría ser de interés.

  • Microcontrolador:

    Bastaría con cualquier microcontrolador capaz de conducir una línea serie (típicamente SPI) con una velocidad de datos razonablemente alta. Un Arduino Uno, por ejemplo, sería suficiente.

  • Poder:

    Tenga en cuenta que mientras que los LED individuales aparentemente no son bestias hambrientas de poder, poner 16 o 144 de ellos en paralelo se traduce en cualquier lugar desde un vatio a 10 o más vatios, suponiendo que los LED indicadores normales de 20 mA. Agregue a esto el consumo de energía de los propios controladores LED (por ejemplo, 60 mA típicos por TLC5940), y los requisitos de energía se vuelven bastante elevados.

Software:

  • Tiempo:

    El microcontrolador debe ser capaz de transmitir el (los) paquete (s) de control de LED para todos los controladores de LED, a una mejor velocidad de visión: más de 20 veces por segundo para una pantalla estática, y 200 veces por segundo o más Por algo que está destinado a moverse. Además, el ojo humano es muy sensible incluso a fallas leves en una transición de intensidad de luz suave, por lo que la transmisión de datos de control debería ser conducida idealmente desde una interrupción de contador estable, y ninguna otra tarea del microcontrolador debe permitir una actualización del controlador LED.

  • Cálculo de intensidad:

    El cálculo de una secuencia razonablemente lineal (para el ojo humano) de ciclos de trabajo de PWM para una transición suave implica aproximadamente la siguiente fórmula simplificada: y = (x ^ 2.5) / k donde y es la intensidad deseada para el número de paso x , k es una constante derivada de la profundidad de bits (resolución) disponible del generador de PWM.

    En términos simples: se requiere un aumento más pequeño en el ciclo de trabajo a bajas intensidades, saltos más grandes a alta intensidad, para aparecer en transición lineal.

    64 pasos de intensidad distinta deberían ser suficientes para una suavidad de transición razonable, 256 si over-the-top es el sabor de la semana. Para los 64 pasos asignados a 4096 valores PWM (PWM de 12 bits), la fórmula anterior funciona para:

    PWMvalue = (StepNumber ^ 2.5) x 0.125

    No es perfecto pero está bastante cerca.

    Para 256 pasos y 12 bit PWM, la fórmula es PWMvalue = (StepNumber ^ 2.5) x 0.00390625

    Si bien este cálculo es lo suficientemente trivial, para el mejor rendimiento tiene sentido calcular los valores de PWM para cada paso por adelantado e incorporarlos como una matriz estática, una tabla de búsqueda (LUT) dentro del código. Esto ahorra ciclos valiosos durante el tiempo de ejecución, recuperándose de una matriz en lugar de calcular valores exponenciales.

  • Lógica de implementación:

    En cada ciclo de actualización, actualice los ciclos de trabajo de PWM para cada LED según la LUT, dejando un espacio de, por ejemplo, 64 / 4 = 16 steps entre los LED consecutivos. Por lo tanto, el primer LED pasará sin problemas de cero a lleno dentro de 64 ciclos de actualización, el segundo LED comenzará en el ciclo de actualización 16 y el tercer LED en el ciclo de actualización 32 y así sucesivamente. Para 16 LED, 64 x 4 = 256 cycles dejará todos los LED encendidos. Calcule el tiempo máximo por actualización dividiendo el tiempo de transición deseado para el "timbre Tron" completo por 256, y configure el contador de interrupciones de actualización en consecuencia.

Si realmente implementas un anillo de Tron, comparte un video. Los videos de las implementaciones de iluminación de discos DIY Tron que se encuentran actualmente en YouTube son demasiado rudimentarios.

    
respondido por el Anindo Ghosh

Lea otras preguntas en las etiquetas