Tabla de contenido:

Cómo manejar muchos LED desde unos pocos pines de microcontrolador: 6 pasos (con imágenes)
Cómo manejar muchos LED desde unos pocos pines de microcontrolador: 6 pasos (con imágenes)

Video: Cómo manejar muchos LED desde unos pocos pines de microcontrolador: 6 pasos (con imágenes)

Video: Cómo manejar muchos LED desde unos pocos pines de microcontrolador: 6 pasos (con imágenes)
Video: Secuencial de leds con Arduino | 8 Secuencias, Explicacion paso a paso 2024, Mes de julio
Anonim
Cómo manejar muchos LED desde unos pocos pines de microcontrolador
Cómo manejar muchos LED desde unos pocos pines de microcontrolador

Utilizando el hecho de que muchos pines del microcontrolador tienen tres estados (+ V, GND o "alta impedancia", puede manejar N * (N-1) LED desde N pines. Por lo tanto, el pequeño microcontrolador de 8 pines como un PIC12Fxxx o un ATtiny11 puede manejar 20 LED en sus cinco pines de salida disponibles, y todavía le queda un pin para algún tipo de entrada. Consulte también

Paso 1:20 LED en 5 pines

20 LED en 5 pines
20 LED en 5 pines

La cosecha actual de microcontroladores de bajo número de pines (6 pines a 20 pines en

todo el paquete) tienen un precio atractivo y son `` bonitos '', pero surge la pregunta de cómo puede hacer el mejor uso de esos pines para aplicaciones comunes como la conducción de LED. Un enfoque de conexión directa para controlar los LED consume un pin por cada LED. Un esquema de multiplexación tradicional en el que las filas de ánodos LED son impulsadas por un juego de N pines y el cátodo común de cada fila es impulsado por otro juego de pines M logra encender N * M LED con N + M pines. Sin embargo, en un procesador con solo 5 o menos salidas (como es el caso de la mayoría de los microcontroladores de 8 pines), esto apenas le brinda más salidas que la unidad directa.

Paso 2: Charlieplexing

Charlieplexing
Charlieplexing

Suponiendo que los pines de salida son en realidad triestados (activo alto, activo bajo y alta impedancia (entrada)), también es posible compartir los controladores de fila y columna y controlar N * (N-1) LED con solo N pines. Un pin está conectado a cátodos comunes de una fila de LED y se conduce bajo, y los pines N-1 restantes se conectan a los ánodos y se colocan en alto para iluminar esa columna, o se dejan como entradas para dejar el LED apagado. Maxim llama a esta técnica "Charlieplexing" y la describe en (1); Microchip también menciona esto en su documento (2) (e implementaciones en la placa PICKit 1 también.) (1) "Charlieplexing - Multiplexación de pantalla LED con recuento de pines reducido" https://www.maxim-ic.com/appnotes. cfm / appnote_number / 1880 (2) "Consejos y trucos Microcontroladores FLASH PIC de 8 clavijas" https://ww1.microchip.com/downloads/en/DeviceDoc/40040b.pdf(3) LED de Charlieplexing: la teoría y las instrucciones de rgbphil

Paso 3: Ponlo en funcionamiento

Poniéndolo a trabajar
Poniéndolo a trabajar
Poniéndolo a trabajar
Poniéndolo a trabajar

Esto impulsa 20 LED de un ATtiny11. Una versión anterior de esta placa fue

realmente construido y aparece como la foto de la página principal. Me temo que la imagen del esquema es bastante desesperada; Necesitas que Eagle te diga qué señales están conectadas y dónde.

Paso 4: más pequeño y más versátil …

Más pequeño y más versátil …
Más pequeño y más versátil …

Dado que la mayor parte de la placa está ocupada por la matriz de LED, podemos hacer espacio

para un chip Attiny O un chip microchip PIC12F. Reduzca los LED a 3 mm y vaya a una placa de doble cara, y obtenemos algo de 27x44 mm. Por desgracia, esta placa aún no ha sido probada …

Paso 5: Itty Bitty

Itty Bitty
Itty Bitty

Microchip, por supuesto, tiene sus chips PIC10F de 6 pines, capaces de conducir un

solo 6 LED de los 3 pines de salida. Esto tiene aproximadamente 16 mm de diámetro. Pasar a 603 LED te permite ser un poco más pequeño, pero no estoy seguro de cuál es el punto.

Paso 6: software

El software se vuelve un poco complicado por varias razones:

1) para los PCB mostrados, los LED están dispuestos de una manera que es conveniente para el diseño del PCB, en lugar de en el orden de bits "correcto". En mi opinión, esta es la forma de hacer las cosas, pero significa que Fila 1 no necesariamente significa bit 1, o coluimn 3 no significa bit 3. Esto requiere un nivel de mapeo entre el direccionamiento habitual de fila / columna y el bits que necesitan configuración. 2) Dado que se utilizan los mismos bits para ánodos y cátodos, la conexión común (fila) para algunos bits puede estar en el medio de bits controlados (columna). Eso significa que debe cambiar los bits de columna dependiendo de si están antes o después del bit de fila para ese conjunto de columnas. 3) Tiene que derivar palabras de salida tanto para el ioport como para el registro de dirección del puerto. El código ASM adjunto para ATtiny11 es una "prueba de concepto". Es vergonzosamente no optimizado y mal comentado, pero es todo lo que tengo escrito hasta ahora.

Recomendado: