Eu tenho um microcontrolador com um pino digital disponível.
Como posso controlar 25 LEDs?
microcontroller
led
multiplexer
archgoon
fonte
fonte
Respostas:
I2C IO Expander : - Alguma sobrecarga de protocolo, mas deve ser expansível para um número muito grande (milhares) de LEDs.
Registro de turno simples - interface simples morto, os LEDs podem piscar durante a atualização se o relógio do registro de turnos não for razoavelmente rápido. O uso de um registro de turno com buffer duplo corrigirá isso.
fonte
O Shift Register e o I2C são bons, mas apenas se houver pelo menos 2 pinos livres. Sugiro que o extensor de porta de 1 fio Dallas DS2408 seja uma solução ideal. O código para acesso a dispositivos de 1 fio em Dallas não é tão complicado e há muitos exames na web.
Você pode usar vários DS2408 conectados a um pino ou implementar mais lógica após um único DS2408, conforme desejar.
fonte
Com apenas 1 pino de E / S, você pode usar um registrador de expansão / deslocamento de 1 fio ou adicionar outro dispositivo ao seu barramento I2C, como já indicado. A única coisa que ainda não foi mencionada é a possibilidade de adicionar outro escravo à sua porta SPI.
O SPI é chamado de protocolo de 4 fios - você tem duas linhas de dados, uma linha de relógio e uma linha de seleção (além de um terreno comum, mas que geralmente não conta). No entanto, os três primeiros são compartilhados entre todos os dispositivos no barramento, portanto, cada dispositivo após o primeiro recebe apenas mais um rastreio / conexão. O SPI também aumenta seu barramento para full duplex, mas isso não importa para este aplicativo.
fonte
Eu apenas encadernaria alguns registros de turno juntos. (Isso reduz a frequência com a qual você pode alternar os LEDs, é claro ..)
fonte
Se você realmente possui apenas 1 pino disponível, o barramento de 1 fio de Dallas parece a coisa mais óbvia. No entanto, como isso é somente saída, existem soluções mais baratas. Um barramento PWM serial que transporta dados e relógio é fácil de configurar; veja, por exemplo, a página de Roman Black, como também mencionado por davidcary. Você só precisa de registradores de turno de entrada serial em paralelo, como o 74VHC164 , que pode ser conectado em cascata para quantas saídas desejar (um '164 tem 8 saídas).
Nesta solução, os LEDs são acionados estaticamente.
Se você tiver outras E / S que possa compartilhar, como o SPI do I2C, poderá optar por soluções mais luxuosas, como o MAX6950 da Maxim . O MAX6950 possui controle de piscar e brilho e limitação de taxa de rotação, para citar alguns recursos. Os LEDs são multiplexados, o que significa que você só precisa de um driver de 16 pinos.
fonte
A resposta é provavelmente "uma série de registros de turno", mas você pode ser mais específico em sua pergunta? Qual microcontrolador? O que você quer dizer com "porta digital"? Um único alfinete?
fonte
25 LEDs, dependendo do tamanho, podem consumir muita energia para um único pino de E / S digital em um microcontrolador. Em vez de direcioná-los diretamente, você provavelmente deve usar um simples interruptor FET (para que o IO esteja vinculado à porta) para controlar a energia da cadeia de LEDs.
Dependendo do seu aplicativo, existem outras maneiras mais robustas de fazer isso. Mas jogar um feto provavelmente fará você trabalhar mais rápido.
Por exemplo, se você deseja bloquear um sinal variável, existem dispositivos mais complicados, às vezes chamados de relés digitais, que permitem alternar digitalmente.
Quanto ao controle individual de 25 LEDs com uma única porta IO. Como outros sugeriram, você pode usar alguns registros de turno. Existem soluções mais complicadas que envolvem a comunicação com outro IC usando um protocolo serial (I2C, por exemplo).
fonte
Roman Black descreve o sistema shift1 que permite controlar independentemente qualquer número de LEDs de um único pino do microcontrolador.
@Fake Name, @Tim, @pingswept sugerem o encadeamento de alguns registros de turno, o pino de saída de dados DO em um alimentando o pino de entrada de dados DI no próximo. O 74HC595 funcionaria bem. (Talvez algum outro chip funcione ligeiramente melhor ).
(@reemrevnivek, com esse tipo de SPI em cadeia, cada dispositivo após o primeiro não requer mais pinos no microcontrolador, ao contrário do que muitas pessoas afirmam - por que você os ouve? :-).
Normalmente, isso requer 4 pinos no microcontrolador - MISO, MOSI, SCLK e trava. Como você está apenas produzindo saída, não precisa de um pino de entrada MISO.
Roman Black descobriu que, com um tempo muito cuidadoso em uma única saída de microcontrolador e com alguns ajustes cuidadosos de um circuito analógico, um único pino de microcontrolador pode acionar um circuito analógico de aparência simples que separa o SCLK comum, o DI pino do primeiro chip da cadeia (MOSI) e o sinal de trava comum.
Então esse microcontrolador pode controlar 25 LEDs de um único pino.
fonte
Você pode conectar outro microcontrolador através desse único pino e conversar com ele via 1wire (ou seu próprio protocolo, se precisar de alta velocidade). Então esse outro microcontrolador lida com LEDs.
fonte