Um conceito importante de eletrônica digital ensinado em muitos cursos é a demultiplexação. Dependendo dos sinais enviados ao demultiplexador ele é capaz de conectar um canal a outros, como se fosse uma chave seletora ou um roteador. Neste post, vamos falar sobre demultiplexação e fazer um projeto para ilustrar o conceito.
A partir desse conceito é possível, por exemplo, multiplicar as entradas ou saídas de um microcontrolador, como o Arduino. Você pode ligar a porta analógica na entrada do demultiplexador e selecionar os sinais que serão lidos, isso pode aumentar consideravelmente o número de portas analógicas da sua placa.
O mesmo conceito pode ser utilizado em um roteador. É possível colocar um sinal na entrada do dispositivo e selecionar qual dos dispositivos vai receber esse sinal do outro lado.
Projeto prático
Para a montagem do projeto que ilustra o conceito de demultiplexação, vamos precisar de:
- Módulo Multiplexador/Demultiplexador 8 Canais 74HC4051 Sparkfun
- Fonte Ajustável Protoboard
- Fonte com plug P4
- Chave 4 vias
- Jumpers
- 8 x LEDs
- Resistores
- Protoboard
A montagem dos componentes é feita da seguinte forma:
Na entrada do Módulo Multiplexador/Demultiplexador 8 Canais 74HC4051 Sparkfun uma tensão de 5 V para alimentar um dos LEDs, que serão selecionados pela chave.
Na chave foi colocado um resistor de pull-down para forçar os sinais de comando para 0 quando não estiver acionado. O resistor utilizado foi de 10 k mas pode ser outro nessa faixa.
É importante ressaltar que, apesar de não utilizarmos nenhuma placa de desenvolvimento, os sinais enviados ou recebidos do módulo poderiam ser facilmente controlados por um microcontrolador.
Demultiplexador
Existem 3 tipos de sinais que passam por um demultiplexador: entrada, saída e comando. O demultiplexador conecta o pino de entrada a um dos pinos de saída. Qual pino vai ser selecionado depende do estado dos pinos de comando.
A quantidade de pinos de comando varia de acordo com a quantidade de pinos de saída. Os pinos de comando têm apenas 2 estados, ou nível alto (1) ou baixo (0). Por isso, o número de pinos de comando é a quantidade de bits que são necessários para escrever o número de saídas.
Por exemplo, para um demultiplexador de 2 saídas, seria necessário somente um pino de comando. Se for 0, ele liga o pino de entrada com o pino de saída0. Se for 1, ele liga com o pino de saída 1. Para um demultiplexador de 4 saídas, são necessários 2 pinos de comando.
No caso do demultiplexador de 8 canais são 3 pinos de comando (de comando0 a comando2) que possibilita a seleção de 8 saídas (de saída0 a saída7).
No nosso projeto, o valor dos pinos é selecionado através da chave, dependendo da posição o demultiplexador vai receber 0 ou 1, o que define qual saída vai receber a entrada. Dar uma revisada em números binários pode ajudar a entender melhor essa seleção.
A tabela abaixo explica qual saída é selecionada a partir de qual configuração de entrada:
comando2 | comando1 | comando0 | saída |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 2 |
0 | 1 | 1 | 3 |
1 | 0 | 0 | 4 |
1 | 0 | 1 | 5 |
1 | 1 | 0 | 6 |
1 | 1 | 1 | 7 |
Portanto, para selecionar qual porta vai receber o sinal, basta colocar os pinos de comando nos estados correspondentes. Essa seleção pode ser feita por uma chave, como fizemos aqui, ou por uma placa de desenvolvimento, como Arduino, Raspberry Pi, ESP, entre outros.
No nosso exemplo, cada configuração das chaves de comando faz com que um determinado LED receba a tensão aplicada na entrada e acenda.
Em alguns multiplexadores, como no nosso caso, junto do comando existe um pino que habilita ou não a demultiplexação, caso não queira que nenhuma saída receba a entrada.
Com demultiplexador 8 canais é possível utilizar o pino de entrada como saída e o de saída como entrada, fazendo com que ele seja um multiplexador. Desse modo você pode multiplicar as entradas analógicas da sua placa, por exemplo, fazendo com que seja um módulo bidirecional.
E aí, curtiu aprender sobre demultiplexação? Você pode nos ajudar a melhorar o blog comentando abaixo.
Muito bem resumido, detalhado, fácil entendimento. Muito bom!
Eu entendi e preciso de ajuda para programação no Arduino,preciso de ajuda no código pra mandar informações para o meu multiplexador,alguém pode me ajudar?
Luiz,
Aconselho você a encaminhar sua dúvida para o nosso fórum, detalhando-a o máximo possível para que possamos te ajudar a saná-la!
Abraços!
Diogo – Equipe MakerHero
Tô na dúvida.. Não se trata de um Demultiplexador?
Danilo,
Um demultiplexador faz o contrário. Você possui várias entradas e sai com apenas uma saída.
Abraços!
Diogo – Equipe MakerHero
Ola, tenho uma duvida, sera que eu posso ligar um multiplexador em outro multiplexador, utilizando os canais do primeiro como comando do segundo e assim aumentar mais ainda o numero de saidas de meu sistema? se sim, utilizando apenas 4 pinos do arduino, poderia ter 80 saidas ao ligar cinco multiplexadores de 16 canais desta forma?
Olá Neto!
Gostei da pergunta 🙂
Para cada multiplexador que você colocasse, ‘gastaria’ 4 saídas para o acionamento. Então com 5, um deles seria só para acionar os outros 4. Sobrariam só 64 saídas no fim das contas.
Mas acho que não daria muito certo porque o multiplexador tem uma saída só por vez, enquanto para ser acionado, as 4 entradas precisariam estar acionadas ao mesmo tempo.
Poderia ficar trocando rapidamente para “parecer” que as entradas são ao mesmo tempo, mas não sei se daria certo.
Se você testar, avisa pra gente aqui se funcionou ou não?
Abraços!
André Rocha – Equipe MakerHero
Excelente explicação, clara e objetiva
Olá Napoleao!
Bom saber que nosso conteúdo ajuda as pessoas! Você pode dar uma olhada no nosso fórum. Lá você pode tirar algumas dúvidas e postar seus projetos. Colaborar e aproveitar a comunidade:
https://www.makerhero.com/forum/
Abraços!
André – Equipe MakerHero
Bem simples de entender. Obrigado!
Olá!
Ficamos felizes em saber que o nosso trabalho realmente ajuda as pessoas.
Abraços!
André – Equipe MakerHero
Muito bom o artigo. Fácil entendimento, bem detalhado.
Muito obrigado, Samuel!
Fiz o post com bastante cuidado, tentando ser o mais objetivo possível mesmo.
Abraços!
André – Equipe MakerHero