Expandindo os I/O do Arduino

Circuitos de expansão

Muitas vezes em um desenvolvimento de projeto com Arduino UNO os pinos de I/O podem não ser suficientes para sua aplicação. Uma alternativa muitas vezes utilizada é a troca por outra placa com um microcontrolador que possua maior quantidade de pinos, como por exemplo o Arduino MEGA. Porém essa troca aumenta muito o custo do projeto, já que se vai usar uma placa/microcontrolador com maior capacidade de memória e outros recursos, onde essas características não são necessárias em seu projeto. Neste artigo vou apresentar alguns circuitos de expansão que podem aumentar a quantidade de entradas e saídas, dando maiores possibilidades ao seu projeto sem a necessidade de trocar o microcontrolador ou a plataforma de desenvolvimento, como por exemplo, uma Arduino UNO por um Arduino MEGA.

Circuitos de expansão de I/Os 

Existem diversos CIs que podem ser utilizados como circuitos de expansão de I/Os do Arduino. Neste artigo vamos abordar apenas alguns para aumentar a quantidade de saídas, focando na técnica utilizada para a expansão com exemplos.

Vamos iniciar com o 74HC138, que é um decodificador / demultiplexador de alta velocidade. Com esse CI pode-se expandir os pinos de 3 para 8 saídas, porém só é possível acionar uma saída por vez. Pode se utilizar para aplicações onde necessite de acionamento de uma saída por vez, um sequencial de saídas por exemplo. Outra aplicação seria a varredura de displays de 7 segmentos. A seguir é apresentada a ligação desse CI ao Arduino UNO.

Circuitos de expansão de I/Os do Arduino

Para escolha da saída (Y0 –  Y7) é necessário fazer a combinação nas entradas A, B e C com o endereço em binário, onde A é o bit menos significativo. Note que a saída é ativa em nivel 0. Veja a tabela verdade desse CI:

Circuitos de expansão de I/Os do Arduino

Para exemplificar o uso do 74HC138, vamos aproveitar o esquemático apresentado e criar um programa para acionamento das saídas em intervalos de 1 segundo:

Outra opção interessante para expandir o número de saídas de um microcontrolador é o uso do CI 74HC595. Trata-se de um registrador de deslocamento, ou seja, um conversor serial para paralelo de 8 bits. Neste CI os bits são inseridos um a um até completar o byte, e depois é enviado um comando para atualização das saídas. Diferentemente do 74HC138, com este CI podemos acionar qualquer saída a qualquer momento. Ele pode ser utilizado para expandir os pinos do microcontrolador para acionamentos de reles, display LCDs e uma infinidade de aplicações. São necessários apenas 3 pinos do microcontrolador para controle das saídas, conforme exibido na figura abaixo:

Arduino_74HC595

No pino 14 será onde inserimos o bit a ser deslocado, já no pino 11 será o pulso de clock e quando os 8 bits forem inseridos é dado um pulso no pino 12 para escrever na saídas. Abaixo é exibida a tabela verdade e o diagrama de tempo para funcionamento do 74HC595:

tabela verdade 74hc595
diagrama de tempo 74hc595

Para exemplificar vamos aproveitar o esquemático apresentado e criar um programa para acionamento das saídas, escrevendo valores de 0 a 255:

Conclusão

O uso de circuitos de expansão de saídas no Arduino pode ser uma opção interessante quando a quantidade de portas torna-se limitada em uma placa Arduino. Aliado com um boa biblioteca você pode facilmente acionar saídas ampliando as possibilidades da sua placa. O CI 74HC595 é uma ótima opção para a expansão de pino e pode-se ligar outros e aumentar a quantidade para 16 saídas. 

Saiba mais

Arduino – Primeiros Passos

Arduino – O documentário

Arduino UNO

Referências

Serial to Parallel Shifting-Out with a 74HC595

Microcontroller input / output expander

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Home » Arduino » Expandindo os I/O do Arduino
Comentários:
Notificações
Notificar
guest
6 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
03/03/2015 20:55

Bacana João Luiz!

Confira também este Application note:
http://www.st.com/web/en/resource/technical/document/application_note/CD00165404.pdf

Precisando de alguma informação dá um toque.

Abraço

João Luiz Vilar Dias
João Luiz Vilar Dias
03/03/2015 19:52

Ja procurei bastante por isso. Obrigado pela postagem!

Gustavo Toigo
Gustavo Toigo
19/07/2016 12:00

Parabéns pelo post Fabio! Muito bom! Uma curiosidade minha, neste exemplo você trabalha com o acionamento onde poderiam ser atuadores simples, porem se por exemplo fosse um numero “n” de sensores, Sejam sensores LDR ou temperatura, posso utilizar este MUX/DEMUX para ler valores analógicos? Ou formulando melhor a pergunta, existe algum demultiplexador capaz de ler valores analógicos e transferir sem interferir no sinal?

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Gustavo Toigo
19/07/2016 12:43

Olá Gustavo. Existem mux/demux analógicos, como por exemplo o 4051: http://www.nxp.com/documents/data_sheet/74HC_HCT4051.pdf

ou o 4067: http://www.ti.com/product/cd74hc4067

Já usei bastante o 4051 e funciona muito bem.

Obrigado pelos comentários.

Gustavo Toigo
Gustavo Toigo
Reply to  Fabio_Souza_Embarcados
19/07/2016 12:49

Certo! Obrigado pela Resposta!

Bruno
Bruno
Reply to  Fabio_Souza_Embarcados
25/03/2022 09:12

Valew, tinha essa msma dúvida.

Talvez você goste:
Menu