Estoy en el proceso de diseñar un PCB controlador para un reloj de matriz de LED blanco de 10x10 (inspirado en el tutorial aquí ). Se basa en un ATmega328 AVR IC y Maxim DS3234 SPI RTC.
Sin embargo, estoy atascado: no tengo idea de cómo controlar mi matriz de LED 10x10 no estándar personalizada. Originalmente, iba a usar un IC Maxim MAX7219/7221, pero solo puede manejar matrices LED de 8x8. Luego estaba buscando algún tipo de solución charlieplexing con una matriz de transistores darlington ULN2803. Los LED blancos brillantes que estoy usando necesitan al menos 30 mA de corriente.
Aquí está mi esquema preliminar (lo siento, no está muy claro, pero tenga en cuenta que las líneas I2C y UART están disponibles para su uso):
Aquí hay un esquema de cableado de ejemplo de mi matriz LED ( NOTA: el diagrama de ejemplo a continuación solo muestra una matriz de 8x8. Mi matriz es 10x10) .
¿ Cuál es la mejor manera de controlar mi matriz LED 10x10 con el AVR ? (Además, PWM no es un requisito, pero estaría bien).
¡Gracias!
El mejor ejemplo que se me ocurre es "Peggy", una pantalla de tablero perforado que emite luz . Es una pantalla de matriz LED de 25x25 impulsada por un ATmega168 (que es pin compatible con el ATmega328)
La página wiki tiene mucha buena información. Incluyendo un esquema detallado .
Hay pocas cosas que notar en su diseño.
Por un lado, utilizan una configuración de ánodo común de fila. Es decir, la fuente actual está en la fila y el fregadero en la columna. Tienes el tuyo en fila de cátodo común. No hay nada intrínsecamente correcto o incorrecto en ninguno de los diseños. Solo algo a tener en cuenta al diseñar su circuito. Si usa ledes discretos, solo significa voltear las conexiones de los leds. Si usa una matriz de LED preconstruida, es algo importante que debe saber. (Supongo que puede cambiar fácilmente el orden para que coincida con el esquema de Peggy. Si no, simplemente cambie la columna por la fila en su cabeza)
Utilizan chips decodificadores/demux 74HC154 4-16 para la selección de filas. Como solo necesita 10 filas (o columnas), puede salirse con la suya con solo una. Por supuesto, está el tema de la corriente. En tu caso, a 10 x 30mA = 300mA mínimo. Para resolver ese problema, utilizaron transistores 2STX2220 PNP que podrán generar hasta 1.5A por fila. Un poco más de matar en tu caso. Dado que solo los usará como interruptores de selección de fila, casi cualquier otro transistor pnp que pueda generar su corriente máxima debería funcionar igual de bien. Eche un vistazo a Circuitos de transistores para averiguar qué valores de resistencia necesitará para operaciones completas de encendido/apagado.
En el tablero Peggy, para el controlador del fregadero de la columna usan un STP16DP05 . Pero he encontrado estos difíciles de encontrar y caros. Hay muchas otras alternativas como el TLC5916. Estos usan una entrada en serie y se pueden conectar en cascada fácilmente. De lo contrario, una búsqueda digikey de mouser para el controlador del disipador LED arrojará muchos resultados.
Alternativamente, dado que ya tiene arreglos ULN2803 , podría usar dos de estos con una sola resistencia de límite de corriente por columna. Son muchos alfileres, por lo que tendrá que ser creativo, pero también podría funcionar para el fregadero de la columna.
Avago publicó una bonita nota de aplicación titulada "Introducción a la conducción de matrices LED" . Cubre esto y algunas otras cosas.
Cuando se conducen los LED desde los pines del puerto, una técnica a veces llamada "Charlieplexing" puede ser útil. Aunque algunas descripciones parecen ser más bien ad hoc, permite que N pines de puerto de 3 estados (alto/bajo/flotante) controlen (N*(N-1)) LED. Aquí hay un ejemplo que usa 4 pines de puerto para controlar 12 LED. Los interruptores del lado izquierdo son momentáneos y generarán una salida alta. Los interruptores del lado derecho están enclavados y cambiarán una salida a nivel bajo. Tenga en cuenta que el interruptor del lado izquierdo asociado con una salida solo funcionará si el interruptor del lado derecho para esa salida está en la posición inferior ("apagado").
El alcance en la parte inferior muestra la corriente a través del segundo pin; como se muestra, se pedirá a los pines que hundan aproximadamente 15 mA que impulsan una columna, o generan aproximadamente 5 mA que impulsan una fila (un transistor suministrará el equilibrio de la corriente).
En la práctica, si uno quisiera construir algo como este circuito para una matriz de 10x10, uno conectaría eléctricamente una matriz de 11x11 con la falta de la diagonal, y "empujaría" la parte superior derecha hacia la izquierda un punto (produciendo una cuadrícula de 11x10) y deshacerse de la fila inferior.
Chris Laplante