4 Relay Module

Um relé é um interruptor eletromecânico composto por uma bobina e um conjunto de contatos. Ao ser energizado, uma corrente percorre a bobina fazendo com que os seus contatos abram ou fechem.

O módulo apresentado aqui é um dispositivo com  quatro canais independentes e é ativado com nível lógico baixo. Uma grande vantagem deste módulo é que cada canal utiliza um acoplador ótico, garantindo que não exista nenhum contato elétrico entre o pino da placa Arduino com o circuito de acionamento do relé.

 

Quando o pino de entrada do canal (IN1 a IN4)  vai ao nível lógico baixo (LOW) , o acoplador ótico (U1 a U4) conduz e aciona o transistor (Q1 a Q4) que por sua vez energiza a bobina do relé (K1 a K4) fechando os contatos 2 e 3. Parece confuso com muitos elementos 😀 , porém veja o esquema a seguir.

 

Teste do módulo

Monte o circuito abaixo observando os pinos de ligação.

 

pino módulo Relé pino Arduino
IN1 D7
IN2 D8
IN3 D9
IN4 D10
VCC 5V
GND GND

 

 

 

Aqui vamos criar dois arquivos: o rele.ino que é o código principal e o Rele.h (atente para o primeiro caractere maiúsculo) com a declaração das macros (#define) e a função de tratamento do módulo. A separação, na prática, não é necessária. Estamos sugerindo a separação para que o código seja o mais reutilizável possível. Deste modo você poderá utilizar um mesmo módulo em diversos projetos e ser poupado de escrever tudo novamente 😎 .

Obs.:  toda diretiva de pré-processamento começa com o símbolo #. As diretivas não são comandos da linguagem C ou Arduino. São instruções que antes da compilação efetiva, são tratadas (processadas) no código fonte (sketch) e posteriormente entregues ao compilador.  Ah, a sintaxe também difere dos comandos/declarações C/Arduino. Não temos o ponto e virgula (;) ao termino de uma diretiva. Por convenção, o nome das constantes da diretiva #define são escritas em maiúsculas.

Copie e cole no IDE do Arduino e salve como rele.ino

#include "Rele.h"

void setup() {
  byte arrPinos[] = {RELECH1, RELECH2, RELECH3, RELECH4};

  for ( byte indice = 0; indice < sizeof(arrPinos); indice++ ) {
    pinMode( arrPinos[indice], OUTPUT );
   acionaRele( arrPinos[indice], RELEOFF );
  }

  for ( byte indice = 0; indice < sizeof(arrPinos); indice++ ) {
    acionaRele( arrPinos[indice], RELEON );
    delay(1000);
    acionaRele( arrPinos[indice], RELEOFF );
    delay(1000);
  }
}

void loop() {
}

 

Copie e cole no IDE do Arduino e salve como Rele.h

#define RELEON LOW
#define RELEOFF (! RELEON)
#define RELECH1 7
#define RELECH2 8
#define RELECH3 9
#define RELECH4 10

void acionaRele( byte canal, boolean estado ) {
  digitalWrite( canal, estado );
}