¿Es posible controlar LED con pines arudino combinados con PWM de IC?

Lo que estoy buscando hacer es una cuadrícula LED multiplexada de 16x16 con 2 bits de brillo (también conocido como 4 niveles de brillo). Puede haber una mejor manera de hacer esto.

Construí un prototipo de cuadrícula de 8x8 con un Arduino Nano, funciona muy bien. Tengo 8 pines para conectar los ánodos y 8 pines para los cátodos. Estoy usando LED de 3v 20ma 5mm

Pero como arduino solo tiene 6 pines PWM, no puedo obtener la resolución que quiero. Estoy buscando obtener más pines pwm

Estoy viendo el CONTROLADOR LED PWM DE 24 CANALES Y 12 BITS DE ADAFRUIT, que proporciona 24 pines de PWM sobre SPI. Mientras que 8x8 puedo hacer en el tablero, si quisiera hacer una matriz de 16x16 mientras estaba conectado al Arduino. ¿Es posible usar pines del controlador LED para ejecutar los ánodos (16 de los 24 pines) con PWM mientras usa 16 pines GPIO en el arduino para ejecutar los cátodos (para obtener más pines para multiplexación)? De mis experimentos, solo el ánodo necesita PWM, mientras que el cátodo solo necesita estar alto o bajo para la multiplexación. ¿El VCC para el controlador debe provenir de una fuente de alimentación?

¡Gracias!

Eso suena como que debería funcionar bien. Si necesita más cátodos, también puede usar un tipo similar de "expansor de puertos" para los cátodos.
@immibis bien genial! Gracias. Soy totalmente consciente de que necesito volver a trabajar en el controlador. Solo me estaba asegurando de que usar un ALTO/BAJO en el arduino funcionaría con una placa que opera en su canal SPI. Pensé que funcionaría ya que todos comparten un terreno común, solo quería asegurarme. Si esta pregunta es demasiado específica, no dude en votar para eliminar/cerrar. Agregaré el esquema una vez que esté hecho a esta pregunta
@immibis acaba de editar la pregunta para que sea más general.

Respuestas (1)

Cuando crea una cuadrícula de LED que deben multiplexarse, no podrá hacer que PWM funcione para establecer el nivel de brillo para todos y cada uno de los LED. La razón es que la multiplexación ya está recortando el tiempo visible de cada LED a un ciclo de trabajo bajo. Con su cuadrícula de 8x8, eso ya significa que cada LED solo está ENCENDIDO durante 1/8 del tiempo.

Si PWM tuviera algún efecto significativo durante el intervalo en que el LED está encendido, tendría que (a) estar sincronizado con la tasa de multiplexación y (b) ejecutarse en algún factor más rápido que la tasa de multiplexación. Dado que ya desea que la velocidad de multiplexación sea bastante rápida para que los LED no parezcan parpadear, parece que la idea de PWM no será particularmente útil.

Creo que un mejor enfoque será ejecutar los ánodos multiplexados de fila de matriz con un transistor que atrae los ánodos LED al riel de suministro. Luego, tenga dos conjuntos de bits de columna, cada uno con una resistencia de diferente tamaño seleccionada para que los dos bits de columna puedan establecer las 4 combinaciones posibles de las resistencias en serie a GND. Esto permitirá que cada LED a tiempo tenga una configuración actual adecuada para la selección de brillo para ese LED. (Curiosamente, probablemente querrá admitir un estado LED apagado, por lo que, en realidad, con dos conjuntos de bits de columna, solo obtendrá tres niveles de brillo posibles).

Otro par de cosas a tener en cuenta:

  1. Al multiplexar los LED donde terminan teniendo un ciclo de trabajo bajo como 1/8, es necesario sobrecargar los LED con una corriente mayor que su corriente nominal de estado estable.
  2. Previsiblemente, podría usar tres conjuntos de bits de columna para llegar a 7 niveles de brillo totales más el nivel de apagado.
  3. El brillo del LED no es lineal con el ciclo de trabajo.

Esto muestra el concepto en forma esquemática:

ingrese la descripción de la imagen aquí

¡Enfoque inteligente! ¡Tiene sentido, lo intentaré!