¿Conduciendo matriz de 10x10 LED con AVR?

4

Estoy diseñando un PCB controlador para un reloj de matriz de 10x10 LED blanco (inspirado en el tutorial here ). 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 10x10 LED personalizada no estándar. Originalmente, iba a utilizar un Maxim MAX7219 / 7221 IC, pero solo puede manejar matrices de 8x8 LED. Luego estaba buscando algún tipo de solución de 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 uso):

AquíhayunejemplodeesquemadecableadodemimatrizdeLED(NOTA:eldiagramadeejemploacontinuaciónsolomuestraunamatrizde8x8.Mimatrizes10x10.)

¿Cuál es la mejor manera de conducir mi matriz de 10x10 LED con el AVR ? (Además, PWM no es un requisito, pero sería bueno).

¡Gracias!

    
pregunta mr_schlomo

2 respuestas

6

El mejor ejemplo que se me ocurre es la "Peggy", una pantalla de pizarra de emisión de luz . Es una pantalla matricial de 25x25 LED accionada por un ATmega168 (que es compatible con pin con el ATmega328)

La página wiki tiene mucha buena información. Incluyendo un esquema detallado.

Hay algunas cosas que notar en su diseño.

Por un lado, usan una configuración de ánodo común de fila. Esa es la fuente actual está en la fila, y se hunde en la columna. Tienes el tuyo en fila cátodo común. No hay nada inherentemente correcto o incorrecto en ninguno de los dos diseños. Solo algo a tener en cuenta a la hora de diseñar tu circuito. Si usa leds discretos, solo significa voltear las conexiones de led. Si utiliza una matriz de LED precompilada, es algo importante que debe saber. (Supondré que puede cambiar fácilmente el orden para que coincida con el esquema de peggy. Si no, simplemente cambie la columna por fila en su cabeza)

Utilizan 74HC154 4-16 decodificadores / demux chips para la selección de fila. Ya que solo necesitas 10 filas (o cols) puedes salir con solo una. Por supuesto, está el tema de la corriente. En su caso, a 10 x 30mA = 300mA mínimo. Para resolver ese problema, utilizaron 2STX2220 transistores PNP que serán capaces de obtener una fuente a 1.5A por fila. Un poco más de matar en tu caso. Ya que solo usará estos como interruptores de selección de fila, 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 las operaciones completas de encendido / apagado.

En el tablero de Peggy, para el controlador de sumidero de columna utilizan un STP16DP05 . Pero he encontrado estos difíciles de encontrar y caros. Hay muchas otras alternativas, como las TLC5916 , que utilizan una entrada en serie y se pueden conectar en cascada fácilmente. Si no es así, una búsqueda digital de un controlador de fregadero led dará muchos resultados.

De forma alternativa, como ya tiene arrays ULN2803 , puede usar dos de estos con una Resistencia de límite de corriente única por columna. Eso es un montón de pines, así que tendrás que ser creativo, pero también podría funcionar para el sumidero de la columna.

Avago publicó una buena nota de aplicación titulada "Introducción a las matrices de LED de conducción" . Cubre esto y algunas otras cosas.

    
respondido por el Pablo Maurin
3

Al conducir 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 los pines del puerto N3 (alto / bajo / flotante) pasen a los LED de los controladores (N * (N-1)). aquí es un ejemplo de 4 pines de puerto para controlar 12 LED. Los interruptores del lado izquierdo son momentáneos y alcanzarán una salida alta. Los interruptores del lado derecho están enganchados y cambiarán a una salida baja. Tenga en cuenta que el interruptor del lado izquierdo asociado con una salida solo funcionará si el interruptor del lado derecho para esa salida se encuentra en la posición inferior ("off").

El alcance en la parte inferior muestra la corriente a través del segundo pin; como se muestra, se solicitará a los pines que se hundan unos 15 mA conduciendo una columna, o la fuente unos 5 mA conduciendo una fila (un transistor suministrará el saldo 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 diagonal faltante, y "empujaría" la parte superior derecha hacia la izquierda un punto (obteniendo un 11x10 rejilla) y deshacerse de la fila inferior.

    
respondido por el supercat

Lea otras preguntas en las etiquetas