Expandindo os I/O do Arduino

Conheça alguns Circuitos de expansão de I/Os do Arduino Arduino UNO para ter mais pinos disponíveis para sua aplicação, com o uso de alguns CIs.
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

Engenheiro, especialista em sistemas embarcados. Hoje é diretor de operações do portal Embarcados, onde trabalha para levar conteúdos de eletrônica, sistemas embarcados e IoT para o Brasil.

Também atua no ensino eletrônica e programação. É entusiasta do movimento maker, da cultura DIY e do compartilhamento de conhecimento, publica diversos artigos sobre eletrônica e projetos open hardware.

Com iniciativas como o projeto Franzininho e projetos na área de educação, leva a cultura maker para o Brasil capacitando e incentivando professores e alunos a usarem tecnologia em suas vidas. Participou da residência hacker 2018 no Red Bull Basement.

Notificações
Notificar
guest
13 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!

trackback
13/03/2016 17:11

[…] Expandindo os I/Os do Arduino, Fábio Souza […]

trackback
05/02/2016 18:07

[…] Para o projeto, optarei pelo Arduino MEGA para não ter que me preocupar com o número de portas I/Os. O UNO funcionaria sem problemas, mas se deveria utilizar algum método de expansão de portas. Existem várias opções que podem ser facilmente encontradas na internet, como um decodificador 74138 por exemplo (veja o site: “Expandindo os I/Os do Arduino”). […]

trackback
02/06/2015 15:31

[…] Arduino: Expandindo os I/Os – Parte 1 […]

trackback
02/06/2015 15:20

[…] Arduino: Expandindo os I/Os – Parte 1 […]

trackback
16/05/2015 18:31

[…] Arduino: Expandindo os I/Os – Parte 1 […]

trackback
09/04/2015 15:36

[…] Arduino: Expandindo os I/Os – Parte 1 […]

trackback
09/04/2015 11:51

[…] Arduino: Expandindo os I/Os – Parte 1 […]

WEBINAR

Imagens de Ultrassom: Princípios e Aplicações

DATA: 26/10 ÀS 19:30 H