Tengo un microcontrolador con un pin digital disponible.
¿Cómo puedo controlar 25 LEDs?
Tengo un microcontrolador con un pin digital disponible.
¿Cómo puedo controlar 25 LEDs?
I2C IO Expander : - Algunos gastos generales de protocolo, pero deberían poder ampliarse hasta Gran cantidad (miles) de LEDs.
Registro de desplazamiento simple - Interfaz simple muerta, los LED pueden parpadear cuando se actualiza si el cambio Registrar el reloj no es bastante rápido. El uso de un registro de desplazamiento con doble búfer solucionará esto.
Shift Register e I2C es bueno, pero solo si hay al menos 2 pines libres. Sugiero que el extensor de puerto de 1 cable de Dallas DS2408 será una solución óptima. El código para el acceso a dispositivos de 1 cable de Dallas no es tan complicado y hay muchos ejemplos en la web.
Puedes usar varios DS2408 conectados a un pin o implementar más lógica después de un solo DS2408, lo que quieras.
Con solo 1 pin IO, puede usar un expansor / registro de 1 cable o agregar otro dispositivo a su bus I2C, como ya se indicó. Lo único que aún no se ha mencionado es la posibilidad de agregar otro esclavo a su puerto SPI.
SPI se denomina protocolo de 4 hilos: tiene dos líneas de datos, una línea de reloj y una línea de selección (así como una conexión a tierra común, pero eso no suele contar). Sin embargo, los tres primeros se comparten entre todos los dispositivos en el bus, por lo que cada dispositivo después del primero toma solo un rastro / cable más. SPI también aumenta su bus a dúplex completo, pero eso no importará para esta aplicación.
Acabo de encadenar unos pocos registros de turnos juntos. (Esto reduce la frecuencia con la que puede alternar los LED, por supuesto ..)
Si realmente tiene solo 1 pin disponible, el bus Dallas de 1 cable parece lo más obvio. Sin embargo, dado que esto es solo de salida, hay soluciones más baratas. Un bus serie PWM que transporta datos y reloj es fácil de configurar; Consulte, por ejemplo, la página de Roman Black como también lo menciona davidcary. Solo necesita registros de desplazamiento de salida en paralelo de entrada en serie como 74VHC164 , que puede conectar en cascada para tantos Salidas como quieras (una '164 tiene 8 salidas).
En esta solución los LED se accionan estáticamente.
Si tiene otras E / S que puede compartir, como SPI de I2C, puede buscar soluciones más lujosas, como las de Maxim MAX6950 . El MAX6950 tiene control de brillo y parpadeo, y limitación de velocidad de giro, por nombrar algunas características. Los LED son multiplexados, lo que significa que solo necesita un controlador de 16 pines.
La respuesta es probablemente "una serie de registros de turnos", pero ¿puedes ser más específico en tu pregunta? ¿Qué microcontrolador? ¿Qué quiere decir con "puerto digital"? ¿Un solo pin?
25 LED dependiendo del tamaño pueden consumir mucha energía para un solo pin IO digital en un microcontrolador. En lugar de conducirlos directamente, probablemente debería usar un simple interruptor FET (para que el IO esté conectado a la compuerta) para controlar la alimentación de la cadena de LED.
Dependiendo de su aplicación, hay otras formas más robustas de lograr esto. Pero lanzar un feto probablemente te hará trabajar más rápido.
Por ejemplo, si desea transmitir una señal variable, existen dispositivos más complicados, a veces llamados relés digitales, que le brindan una manera de cambiarlo digitalmente.
En cuanto a individualmente que controla 25 LED con un solo puerto IO. Como otros sugirieron, puede usar algunos registros de turnos. Existen soluciones más complicadas que involucran la comunicación con otro IC mediante un protocolo serie (I2C por ejemplo).
Roman Black describe el sistema shift1 que le permite controlar de forma independiente cualquier número de LED desde un solo pin del microcontrolador.
@Fake Name, @Tim, @pingswept sugirieron encadenar algunos registros de desplazamiento juntos, el pin de salida de datos DO en uno alimentando el pin de entrada de datos DI en el siguiente. El 74HC595 funcionaría bien. (Quizás algún otro chip funcionaría ligeramente mejor ).
(@reemrevnivek, con este tipo de SPI encadenado, cada dispositivo después del primero no requiere más pines en el microcontrolador, al contrario de lo que mucha gente dice: ¿por qué los escucha? :-).
Normalmente, esto requiere 4 pines en el microcontrolador: MISO, MOSI, SCLK y pestillo. Ya que solo estás haciendo salida, no necesitas un pin de entrada MISO.
Roman Black ha descubierto que con una temporización muy cuidadosa en una sola salida del microcontrolador, y con algunos ajustes cuidadosos de un circuito analógico, un solo pin del microcontrolador puede controlar un circuito analógico de aspecto simple que separa el SCLK común , el pin DI del primer chip en la cadena (MOSI) y la señal de cierre común.
Luego, ese microcontrolador puede controlar 25 LED desde un solo pin.
Puede conectar otro microcontrolador a través de ese pin único y hablar con él a través de 1wire (o su propio protocolo si necesita alta velocidad). Luego ese otro microcontrolador se ocupa de los LEDs.
Lea otras preguntas en las etiquetas led microcontroller multiplexer