Índice:

Como acionar muitos LEDs com alguns pinos de microcontrolador: 6 etapas (com imagens)
Como acionar muitos LEDs com alguns pinos de microcontrolador: 6 etapas (com imagens)

Vídeo: Como acionar muitos LEDs com alguns pinos de microcontrolador: 6 etapas (com imagens)

Vídeo: Como acionar muitos LEDs com alguns pinos de microcontrolador: 6 etapas (com imagens)
Vídeo: Video 3 - TASMOTA - Gerando sinais nos pinos do microcontrolador ESP 2024, Julho
Anonim
Como acionar muitos LEDs com alguns pinos do microcontrolador
Como acionar muitos LEDs com alguns pinos do microcontrolador

Usando o fato de que muitos pinos do microcontrolador têm três estados (+ V, GND ou "alta impedência", você pode acionar LEDs N * (N-1) dos pinos N. Assim, o pequeno microcontrolador de 8 pinos como um PIC12Fxxx ou um ATtiny11 pode acionar 20 LEDs em seus cinco pinos de saída disponíveis e ainda tem um pino restante para algum tipo de entrada. Consulte também

Etapa 1: 20 LEDs em 5 pinos

20 LEDs em 5 pinos
20 LEDs em 5 pinos

A safra atual de microcontroladores de baixa contagem de pinos (6 pinos para 20 pinos em

todo o pacote) têm um preço atraente e são 'bonitos', mas surge a questão de como você pode fazer o melhor uso desses pinos para aplicações comuns, como LEDs de condução. Uma abordagem de conexão direta para acionar LEDs consome um pino para cada LED. Um esquema de multiplexação tradicional onde as fileiras de ânodos de LED são acionadas por um conjunto de pinos N e o cátodo comum de cada fileira é acionado por outro conjunto de pinos M consegue acender LEDs N * M com pinos N + M. No entanto, em um processador com apenas 5 ou menos saídas (como é o caso da maioria dos microcontroladores de 8 pinos), isso quase não oferece mais saídas do que o drive direto.

Etapa 2: Charlieplexing

Charlieplexing
Charlieplexing

Supondo que os pinos de saída sejam realmente capazes de tri-state (ativo alto, ativo baixo e alta impedância (entrada)), também é possível dividir os drivers de linha e coluna e controlar N * (N-1) LEDs com apenas N pinos. Um pino é conectado a cátodos comuns de uma fileira de LEDs e acionado, e os pinos N-1 restantes são conectados aos ânodos e são acionados para iluminar aquela coluna ou deixados como entradas para deixar o LED apagado. Maxim chama essa técnica de "Charlieplexing" e a descreve em (1); A Microchip também menciona isso em seu documento (2) (e também implementa na placa PICKit 1.) (1) "Charlieplexing - Multiplexação de tela LED com contagem de pinos reduzida" https://www.maxim-ic.com/appnotes. cfm / appnote_number / 1880 (2) "Tips 'n Tricks Microcontroladores FLASH PIC de 8 pinos" https://ww1.microchip.com/downloads/en/DeviceDoc/40040b.pdf(3) LEDs Charlieplexing- A teoria An instrutível por rgbphil

Etapa 3: Colocando para funcionar

Colocando para funcionar
Colocando para funcionar
Colocando para funcionar
Colocando para funcionar

Isso aciona 20 LEDs de um ATtiny11. Uma versão anterior desta placa era

realmente construído e aparece como a foto da página principal. Receio que a imagem do esquema seja bastante desesperadora; você precisa do Eagle para lhe dizer quais sinais estão conectados e onde.

Etapa 4: menor e mais versátil …

Menor e mais versátil …
Menor e mais versátil …

Uma vez que a maior parte da placa é ocupada pela matriz de LED, podemos abrir espaço

para um chip Attiny OU um chip microchip PIC12F. Reduza os LEDs para 3 mm e vá para uma placa de dupla face, e obteremos algo em torno de 27x44 mm. Infelizmente, esta placa ainda não foi testada …

Etapa 5: Itty Bitty

Itty Bitty
Itty Bitty

A Microchip, é claro, tem seus chips PIC10F de 6 pinos, capazes de conduzir um

meros 6 LEDs dos 3 pinos de saída. Tem cerca de 16 mm de diâmetro. Ir para 603 LEDs permite que você fique um pouco menor, mas não tenho certeza de qual é o ponto.

Etapa 6: Software

O software fica um pouco confuso por motivos de servidor:

1) para os PCBs mostrados, os LEDs são dispostos de uma forma que seja conveniente para o layout do PCB, em vez de estar na ordem de bits "correta". IMO, esta é a maneira de fazer as coisas, mas significa que a linha 1 não significa necessariamente o bit 1, ou a coluna 3 não significa o bit 3. Isso requer um nível de mapeamento entre o endereçamento usual de linha / coluna e o bits que precisam de configuração. 2) Uma vez que os mesmos bits são usados para ânodos e cátodos, a conexão comum (linha) para alguns bits pode ser no meio dos bits acionados (coluna). Isso significa que você tem que mudar os bits da coluna dependendo se eles estão antes ou depois do bit de linha para aquele conjunto de colunas. 3) Você deve derivar palavras de saída para o ioport e o registrador de direção da porta. O código ASM anexado para ATtiny11 é uma "prova de conceito". É embaraçosamente não otimizado e mal comentado, mas é tudo o que escrevi até agora.

Recomendado: