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. A alternativa muitas vezes é a troca por outro Arduino com 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 um Arduino com maior capacidade de memória e outros recursos, onde essas características não são necessárias em seu projeto. Neste artigo vamos 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

 

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Fábio Souza
Engenheiro com experiência no desenvolvimento de projetos eletrônicos 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 pelo Brasil. É entusiastas do movimento maker, da cultura DIY e do compartilhamento de conhecimento, publica diversos artigos sobre eletrônica e projetos open hardware, como o projeto Franzininho Participou da residência hacker 2018 no Redbull Basement. Quando não está ministrando palestras, cursos ou workshops, dedica seu tempo “escovando bits” ou projetando placas eletrônicas.

13
Deixe um comentário

avatar
 
11 Comment threads
2 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
João Luiz Vilar DiasFabio_Souza_EmbarcadosGustavo ToigoAumentando as portas digitais do Arduino com CI 74HC595 – Blog da Robótica!Braço robótico programável – Introdução – MJRoBot.org Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Gustavo Toigo
Visitante
Gustavo Toigo

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
Visitante
Fabio_Souza_Embarcados

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
Visitante
Gustavo Toigo

Certo! Obrigado pela Resposta!

trackback

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

trackback

[…] 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

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

trackback

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

trackback

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

trackback

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

trackback

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

trackback

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

Fabio_Souza_Embarcados
Visitante
Fabio_Souza_Embarcados

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