Tengo un microcontrolador con un pin digital disponible.
¿Cómo puedo controlar 25 LED?
Tengo un microcontrolador con un pin digital disponible.
¿Cómo puedo controlar 25 LED?
Respuestas:
I2C IO Expander : - Alguna sobrecarga de protocolo, pero debería expandirse a una cantidad muy grande (miles) de LED.
Registro de desplazamiento simple: interfaz simple muerta, los LED pueden parpadear al actualizar si el reloj del registro de desplazamiento no es bastante rápido. El uso de un registro de desplazamiento con doble búfer solucionará esto.
Shift Register e I2C son buenos, pero solo si hay al menos 2 pines libres. Sugiero que el extensor de puerto de 1 cable Dallas DS2408 será una solución óptima. El código para el acceso al dispositivo de 1 cable de Dallas no es tan complicado y hay muchos exámenes en la web.
Puede usar varios DS2408 conectados a un pin o implementar más lógica después de un solo DS2408, lo que desee.
Con solo 1 pin IO, puede usar un expansor de 1 cable / registro de desplazamiento o agregar otro dispositivo a su bus I2C, como ya se señaló. Lo único que no se ha mencionado aún 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 (además de una conexión a tierra común, pero eso generalmente no cuenta). Sin embargo, los primeros tres se comparten entre todos los dispositivos en el bus, por lo que cada dispositivo después del primero solo toma un rastro / cable más. SPI también aumenta su bus a dúplex completo, pero eso no importará para esta aplicación.
Si realmente solo tiene 1 pin disponible, el autobús de 1 cable de Dallas parece lo más obvio. Sin embargo, dado que esto es solo de salida, existen soluciones más baratas. Un bus serie PWM que transporta datos y reloj es fácil de configurar; ver, por ejemplo, la página de Roman Black como también lo menciona davidcary. Solo necesita registros de desplazamiento de salida en paralelo en serie como el 74VHC164 , que puede conectar en cascada para tantas salidas como desee (un '164 tiene 8 salidas).
En esta solución, los LED se controlan estáticamente.
Si tiene otras E / S que puede compartir, como SPI de I2C, puede optar por soluciones más lujosas, como Maxim's MAX6950 . El MAX6950 tiene control de parpadeo y brillo, y limitación de velocidad de respuesta, por nombrar algunas características. Los LED están multiplexados, lo que significa que solo necesita un controlador de 16 pines.
La respuesta es probablemente "una serie de registros de desplazamiento", pero ¿puede ser más específico en su pregunta? ¿Qué microcontrolador? ¿Qué quieres decir con "puerto digital"? Un solo pin?
25 LEDs dependiendo del tamaño pueden consumir mucha energía para un solo pin digital IO en un microcontrolador. En lugar de conducirlos directamente, probablemente debería usar un simple interruptor FET (para que el IO esté atado a la puerta) para controlar la potencia de la cadena de LED.
Dependiendo de su aplicación, hay otras formas más sólidas de lograr esto. Pero arrojar un fet probablemente te hará trabajar más rápido.
Por ejemplo, si desea activar una señal variable, existen dispositivos más complicados, a veces llamados relés digitales, que le brindan una forma de cambiarla digitalmente.
En cuanto a controlar individualmente 25 LED con un solo puerto IO. Como otros sugirieron, puede usar algunos registros de desplazamiento. Hay soluciones más complicadas que implican comunicarse con otro IC utilizando un protocolo serie (I2C por ejemplo).
Roman Black describe el sistema shift1 que le permite controlar independientemente cualquier número de LED desde un solo pin del microcontrolador.
@Fake Name, @Tim, @pingswept sugieren encadenar algunos registros de desplazamiento juntos, el pin de salida de datos DO en uno alimenta el pin de entrada de datos DI en el siguiente. El 74HC595 funcionaría bien. (Quizás algún otro chip funcionaría un poco 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 escuchas? :-).
Normalmente esto requiere 4 pines en el microcontrolador: MISO, MOSI, SCLK y pestillo. Como solo está haciendo salida, no necesita un pin de entrada MISO.
Roman Black ha descubierto que con una sincronización muy cuidadosa en una sola salida de microcontrolador, y con algunos ajustes cuidadosos de un circuito analógico, un solo pin de microcontrolador puede controlar un circuito analógico de aspecto simple que separa el SCLK común, el DI pin del primer chip de la cadena (MOSI) y la señal de bloqueo común.
Entonces ese microcontrolador puede controlar 25 LED desde un solo pin.