¿Hacer que un anillo LED se ilumine sin problemas?

Estoy trabajando en un proyecto que se vería muy bien si pudiera poner un anillo de LED (algo así como el de los TRON Identity Discs) que se iluminan suavemente en un círculo, en lugar de tener secciones de los LED que se iluminan uno. por uno. Sé que el cable EL logrará ese aspecto suave y uniforme que quiero, pero no puedo hacer que el cable EL se encienda poco a poco en un bucle.

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

¿Quiere decir que todos los LED deben encenderse juntos instantáneamente (paralelos), deben encenderse en una rampa de intensidad creciente lineal visual (tengo una respuesta publicada anteriormente para eso) o encenderse en secuencia pero con un aumento suave perfil para cada uno consecutivo?
Comprobaré la rampa de intensidad creciente visualmente lineal. Supongo que no pude encontrar las palabras para ello. Gracias Anindo.
Vea la última parte de esta respuesta , la curva PWM que desea es y = x ^ 2.5. Puedo escribirlo en una respuesta a esta pregunta si lo desea.
Nunca he visto a Tron, pero parece que Anindo lo tiene cubierto.
Sparkfun vende algunos tubos de luz que podrías iluminar desde un lado.
¿Puedes publicar un enlace/video que muestre el efecto que estás buscando? Nunca he podido sentarme en Tron :(
@angelatlarge Aquí hay uno que captura un poco el efecto del disco Tron, aunque es discreto en lugar de una transición suave. Mira las luces del anillo interior.

Respuestas (1)

Dividir el problema en varios bloques:


Hardware:

  • LED:

    La implementación más simple implicaría 16 LED. Si se desea una transición más suave, se pueden usar 32 o incluso un mayor número de LED, con los circuitos integrados de controlador de LED adecuados.

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

    El controlador LED Texas Instruments TLC5940 admite 16 LED, cada uno con atenuación PWM de 12 bits (4096 pasos). El IC genera internamente el ciclo de trabajo de PWM para cada LED, lo que libera al microcontrolador del intenso esfuerzo de sincronización y generación de PWM. La pieza está controlada por una interfaz serial y existen bibliotecas de código abierto para muchos microcontroladores y placas 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 matriz de controladores LED.

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

  • Microcontrolador:

    Casi cualquier microcontrolador capaz de manejar una línea serial (típicamente SPI) con una tasa de datos razonablemente alta sería suficiente. Un Arduino Uno, por ejemplo, sería suficiente.

  • Fuerza:

    Tenga en cuenta que si bien los LED individuales aparentemente no son bestias hambrientas de energía, poner 16 o 144 de ellos en paralelo se traduce en cualquier lugar desde un vatio hasta 10 o más vatios, suponiendo que los LED indicadores de 20 mA sean normales. 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 altos.


Software:

  • Momento:

    El microcontrolador debe ser capaz de transmitir los paquetes de control de LED para todos los controladores de LED, a una tasa de visión mejor que la persistencia: preferiblemente más de 20 veces por segundo para una pantalla estática, y 200 veces por segundo o mejor para algo que está destinado a moverse. Además, el ojo humano es muy sensible incluso a fallas menores en una transición suave de la intensidad de la luz, por lo que la transmisión de datos de control idealmente debe realizarse desde una interrupción de contador estable, y no se debe permitir que ninguna otra tarea del microcontrolador se adelante a 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: donde la intensidad deseada y = (x ^ 2.5) / kpara yel número de paso es una constante derivada de la profundidad de bits disponible (resolución) del PWM generador.xk

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

    64 pasos de intensidad distintos deberían ser suficientes para una transición suave razonable, 256 si exagerar es el sabor de la semana. Para 64 pasos asignados a 4096 valores PWM (PWM de 12 bits), la fórmula anterior da como resultado:

    PWMvalue = (StepNumber ^ 2.5) x 0.125

    No es perfecto, pero está bastante cerca.

    Para 256 pasos y PWM de 12 bits, la fórmula esPWMvalue = (StepNumber ^ 2.5) x 0.00390625

    Si bien este cálculo es lo suficientemente trivial, para obtener 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 valiosos ciclos durante el tiempo de ejecución, recuperando 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 64 / 4 = 16 stepsentre los LED consecutivos. Por lo tanto, el primer LED pasará suavemente de cero a completo dentro de 64 ciclos de actualización, el segundo LED comenzará en el ciclo de actualización 16 y el 3er LED en el ciclo de actualización 32, y así sucesivamente. Para 16 LED, 64 x 4 = 256 cyclesdejará todos los LED completamente iluminados. Calcule el tiempo máximo por actualización dividiendo el tiempo de transición deseado para el "anillo Tron" completo por 256, y configure su contador de interrupción de actualización en consecuencia.


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

¿Podría proporcionar algunas referencias de dónde tomó esta fórmula: y = (x ^ 2.5) / k?
@m.Alin Consulte esto y su consulta anterior sobre el mismo tema y mis respuestas. :-)
Gracias Anindo y perdón, se me olvidó que ya te hice la misma pregunta.. :)