Imagine que você deseja acender uma lâmpada por meio do controle remoto. Além do circuito para detectar o controle, você vai precisar de usar um relé. Porém, podem aparecer muitas dúvidas na hora de criar o circuito e calcular os parâmetros necessários para essa aplicação. Portanto, vamos ver como fazer para acionar um relé com o Arduino.

Para um melhor entendimento, sugiro que leia o post sobre o que é e como funciona o relé. Além do post sobre transistor.


Circuito

Detalhes importantes

Vamos fazer um projeto para acionar uma lâmpada com um simples toque em um botão. Devemos ficar atentos a alguns detalhes:

O relé, normalmente, puxa muita corrente (cerca de 70mA) e as portas digitais do Arduino não são capazes de fornecer essa corrente. Porém, o pino 5v do Arduino é capaz de fornecer até 200mA. Portanto, é necessário utilizar um transistor sendo alimentado pelo 5v. Desse modo, a porta digital vira apenas um botão: ela atua na base do transistor e manda ele acionar ou não. E assim, o transistor deixa a corrente passar ou não para o relé.

Outra informação importante é que a bobina do relé produz uma tensão inversa quando é desligada. Isso, porque o indutor cria um campo magnético contrário para tentar equilibrar a falta do campo magnético que existia anteriormente, porém é um campo que aparece rapidamente. Dessa forma, somos obrigados a usar um diodo em paralelo com o relé para poder evitar que algum componente seja danificado. Esse diodo servirá para “absorver” essa corrente.

Montagem

Arduino controlando relé

De acordo com a imagem acima, temos: um botão conectado no pino digital 3 de um lado e no GND do outro. Portanto é um botão que enviará um sinal de nível baixo quando for pressionado.

Além disso, vamos precisar de um transistor NPN (pode ser o BC547), um diodo, um resistor (VEJA COMO CALCULAR ABAIXO) e, claro, de um relé 5V. Em uma ponta da bobina do relé, ele recebe o 5v do Arduino e na outra ele liga no coletor do transistor.

O pino digital 2 liga em um ponta do resistor e a outra ponta dele liga na base do transistor (servindo como botão). Por fim, o emissor do transistor fica ligado ao GND. E, como ditor anteriormente, o diodo fica em paralelo com o relé, sendo que o anodo fica ligado no mesmo lado que o 5v.

Em relação as chaves do relé, basta ligar a lâmpada na chave normalmente aberta do relé. Para ter certeza de qual é o pino certo, é só fazer um teste de continuidade com o multímetro ou testar na prática. Ou então, recorrer aos pinos comuns dos relés:

configuração pinos rele

Como calcular valor do resistor

Para saber o valor do resistor, precisamos de seguir algumas etapas:

1- Ache o valor da resistência da bobina do relé com um multímetro

No meu caso foi de 80Ω

2- Calcule a corrente de funcionamento do relé segundo a lei de Ohm. Relé 5v e resistência de 80Ω:

I=\frac{V}{R}

I=\frac{5}{80}I=62,5mA

3- Descobrir o beta do transistor

Basta olhar o datasheet ou procurar em algum site na internet. Vou utilizar o transistor BC547 e o beta mínimo dele é 110.

4- Agora é só usar a fórmulas do transistor para calcular a resistência de base.

R = \frac{(Vpino-Vt)*\beta min}{Irele}

Sendo que Vpino é a tensão que sai do pino do Arduino (5v); Vt é a queda de tensão da base do transistor para o emissor; Bmin é o beta mínimo e Irele é a corrente de funcionamento do relé calcula acima. Resolvendo para os meus valores:

R = \frac{(5-0,7)*110}{62,5m}

R = 7568\Omega

Pronto, agora é só usar um resistor com um valor que seja o mais próximo abaixo do valor calculado. De acordo com o circuito, eu optei por usar um que está um pouco mais abaixo (4,7K).


Programação

A programação é a parte mais simples de todas, pois basta mandar um sinal de nível alto (5v) no resistor para ligar o relé ou de nível baixo para desliga-lo. Como dito anteriormente, o projeto consta em acionar uma lâmpada ao apertar um botão.

Explicação

Primeiro definimos as entradas e saídas. Observe que vou configurar um Pull-up para o botão.

1
2
3
4
5
6
7
#define rele 2
#define botao 3

void setup(){
  pinMode(rele, OUTPUT);
  pinMode(botao, INPUT_PULLUP);
}

Precisamos criar uma variável de controle. Essa variável serve só para saber se o relé deve ser acionado ou não.

1
bool liga = false;

Agora basta testar se o botão foi pressionado e comutar o estado do relé.

1
2
3
4
5
6
7
8
9
10
11
12
13
void loop(){
  if(digitalRead(botao) == LOW){ // Se o botao foi pressionado
    if(liga == false){ // Se a variavel de controle estiver falsa
      digitalWrite(rele, HIGH); // Liga o rele e comuta a variavel de controle
      liga = true;
      delay(500); // Adiciona um delay para dar um tempo do botão ser despressionado
    }else{ // Se a variavel de controle for verdadeira
      digitalWrite(rele, LOW); // Desliga o rele e comuta a variavel de controle
      liga = false;
      delay(500); // Adiciona um delay para dar um tempo do botão ser despressionado
    }
  }
}

Pronto. Agora, quando apertamos o botão, o relé aciona, e, quando apertamos novamente, o relé desliga.

Código completo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define rele 2
#define botao 3
bool liga = false;

void setup(){
  pinMode(rele, OUTPUT);
  pinMode(botao, INPUT_PULLUP);
}

void loop(){
  if(digitalRead(botao) == LOW){ // Se o botao foi pressionado
    if(liga == false){ // Se a variavel de controle estiver falsa
      digitalWrite(rele, HIGH); // Liga o rele e comuta a variavel de controle
      liga = true;
      delay(500); // Adiciona um delay para dar um tempo do botão ser despressionado
    }else{ // Se a variavel de controle for verdadeira
      digitalWrite(rele, LOW); // Desliga o rele e comuta a variavel de controle
      liga = false;
      delay(500); // Adiciona um delay para dar um tempo do botão ser despressionado
    }
  }
}

 

Com base neste tutorial, você é capaz de acionar qualquer carga que utilize corrente alternada. Seja um ventilador, uma lâmpada, uma televisão etc.

Relé – O que é e como funciona