Manera eficiente de controlar muchos LEDs

1

Estoy trabajando en un proyecto que tendrá aproximadamente 50 LED. Estos serán los LED de estado para mostrar si un dispositivo está encendido / apagado. También necesitaré un control de brillo para los LED, por lo que PWM es un requisito en los pines.

¿Cuál será la forma más eficiente (bajo costo, bajo área de PCB y bajo número de componentes) para lograr tal cosa?

Tuve un par de ideas, pero luego encontré algunos problemas con todas ellas:

1) Obtenga un microcontrolador con demasiados GPIO: los controladores con 55 GPIO parecían proporcionar la mejor relación GPIO / precio. He seleccionado uno con 55 GPIO pero incluso ese controlador podría no ser capaz de manejar todo. Poner dos microcontroladores complica las cosas.

2) Utilice expansores de puertos i2c: son muy costosos. Prefiero comprar otro microcontrolador.

3) Use los IC de desplazamiento hacia fuera (595) - Falta de PWM. Implementar PWM en el lado del código no parece ser una buena idea para mí (tal vez me equivoque, pero siento que estoy haciendo las cosas difíciles innecesariamente de esta manera).

    
pregunta Whiskeyjack

3 respuestas

1

Otra posibilidad es usar leds RGB direccionables, basados en el WS2812 o similar. Este es un led RGB con un controlador PWM incorporado. Se pueden comprar en tiras, o individualmente. Estos son muy populares en la comunidad Arduino. (Busque en NeoPixel o APA102). Puede conectar un gran número de ellos en serie y luego controlarlos con dos pines de salida en un microcontrolador. Dependiendo de lo que obtenga, es posible que necesite un suministro externo de 12v. Pero tiene capacidad para varios colores, lo que podría ayudar a los indicadores.

Un posible inconveniente es que si el microcontrolador se apaga en la maleza, los LED continuarán mostrando sus últimos datos, lo que podría ser un problema de seguridad.

    
respondido por el Carl Raymond
0

Puede usar chips de controladores led dedicados como 7216 o su equivalente moderno.

  

3) Utilice los IC de desplazamiento hacia fuera (595) - Falta de PWM.

falta de PWM independiente de pin. puede aplicar pwm al pin OE y controlar el brillo de todos esos leds. Sin embargo, no leds individuales.

    
respondido por el dannyf
0

Su solución 3 (usar registros de desplazamiento con pestillo) es bastante barata y absolutamente viable para el número dado de LED.

Puede usar una interfaz SPI para generar los flujos de bits. Necesitará 7 registros de desplazamiento y, por lo tanto, tendrá que enviar 56 bits seguidos de un pulso de retención (use la señal de selección de chip SPIs) x veces dentro de T, donde x es la resolución PWM deseada y T es el período. Ambos valores determinan la tasa de transmisión de SPI necesaria.

Por supuesto, el micro tiene que ser lo suficientemente rápido para calcular los flujos de bits y transmitirlos al SPI.
El tipo de micro que elija dependerá de los requisitos de rendimiento de su PWM. La frecuencia de atenuación del LED de 250Hz a una resolución de 8bit PWM no debería ser un gran problema para ningún dispositivo estándar de 32 bits, solo para dar un número.

Puede ver aquí para ver un ejemplo de implementación.

Sin embargo, la solución 1 puede ser la mejor opción. Por ejemplo, el Renesas RH850 F1L (carcasa de 100 pines) puede generar hasta 48 señales PWM individuales, y estoy seguro de que quedan algunos periféricos para generar los 2 restantes.
Si su controlador deseado no tiene suficientes salidas PWM dedicadas, debe tener una unidad DMA y poder escribir al menos puertos de salida de 16 bits de ancho. Depende de su aplicación, pero dejar que la CPU haga todo lo que la transmisión puede sobrecargar.

    
respondido por el mic

Lea otras preguntas en las etiquetas