Expandindo os I/O do Arduino

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. 

 

 

Para aprender mais

 

Arduino - Primeiros Passos

Arduino - O documentário

Placas Arduino - trajetória até o UNO

Arduino UNO

Arduino - Entradas/Saídas digitais

Arduino - Entradas Analógicas

Arduino - Saídas PWM

Arduino - Comunicação Serial

 

Arduino Leonardo

Arduino MEGA 2560

Acionamento de uma lâmpada com Arduino

Arduino - Controle de uma lâmpada com LDR

Criando suas próprias bibliotecas para Arduino

 

Medindo o nível de água com Arduino

Comunicação Serial com C# e Arduino - Parte 1

Comunicação Serial com C# e Arduino - Parte 2

Arduino Esplora

 

 

 

 

Referências

 

Serial to Parallel Shifting-Out with a 74HC595

Microcontroller input / output expander

 

Engenheiro com experiência no desenvolvimento de projetos eletrônicos embarcados. Também atuou no ensino técnico de eletrônica e programação. Hoje é responsável pelo operacional do Embarcados, onde trabalha para levar conteúdo de eletrônica, programa de sistemas embarcados e IoT para o Brasil. Entusiastas do movimento maker, DIY e do compartilhamento de conhecimento, publica diversos artigos sobre eletrônica e sistemas Embarcados, além de projetos open hardware. Realiza palestras e workshops onde leva conhecimento para as pessoas de forma presencial.

Deixe um comentário

13 Comentários em "Expandindo os I/O do Arduino"

Notificar
avatar
 
Ordenar por:   recentes | antigos | mais votados
nahart
Membro
nahart

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?

trackback
Aumentando as portas digitais do Arduino com CI 74HC595 – Blog da Robótica!

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

trackback
Braço robótico programável – Introdução – MJRoBot.org

[…] 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
Acionamento de uma lâmpada com Arduino - Embarcados

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

trackback
Arduino - Entradas e Saídas digitais - Embarcados

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

trackback
Arduino: Como utilizar o TIMER do ATmega328 - Embarcados

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

trackback
Arduino: RS-232/RS-485 - Hardware

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

trackback
Bargraph LEDS utilizando Arduino

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

trackback
Placa Arduino da Robocore - BlackBoard - Embarcados - Sua fonte de informações sobre Sistemas Embarcados

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

wpDiscuz