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