Usando um relé para controlar dispositivos elétricos

Usando um relé no Arduino, podemos controlar dispositivos  ligados na rede elétrica de nossa casa (110/220 Volts). Um relé é basicamente um interruptor eletromecânico, onde uma corrente baixa aplicada a uma bobina faz com que o contato do interruptor se desloque, abrindo ou fechando um circuito elétrico. No caso do Arduino, uma tensão de 5v aplicada no relé faz com que acionemos um interruptor ligado a dispositivos ligados a uma tensão de 110v ou 220v.

Os exemplos mais comuns que vemos na internet é para o acionamento de uma lâmpada, mas podemos acionar qualquer dispositivo que trabalhe dentro dos limites de tensão e amperagem do relé, que normalmente são:

  • 250v – 10A em corrente alternada (CA)
  • 125v – 10A em corrente alternada(CA)
  • 30v -10A em corrente contínua(DC)

Nos sites de compra encontramos diversos modelos de relés, com a principal diferença entre eles sendo o número de canais (ou relés) disponíveis.

1 channel Arduino Relé

Placa com 1 Relé

2 Channel Arduino Relay

Placa com 2 Relés

4 Channel Arduino Relay

Placa com 4 Relés

8 Channel Arduino Relay

Placa com 8 Relés

16 Channel Arduino Relay

Placa com 16 Relés

A escolha do número de canais vai depender muito do projeto em questão. Vamos falar disso no final, mas por hora vamos ver como utilizar o relé de 1 canal.

Como podemos ver na imagem do relé de 1 canal, temos 3 conectores no relé propriamente, e 3 pinos. Os pinos normalmente são identificados com +, – e S(S de Sinal), ou então identificados como vcc, gnd e INX (X sendo um número correspondente ao canal). O pino S ou INX é o que controla efetivamente o relé, sendo que quando aplicamos sinal neste pino o relé comuta sua posição.

Os conectores são identificados por NC(Normal Close) e NO(Normal Open).  Estas marcações, olhando os conectores de frente, estarão uma do lado direito e outra do lado esquerdo. O conector do meio é que recebe o fio comum. A posição NC é a posição do relé quando nenhum sinal é aplicado no pino S (ou INX), ou seja, o fio comum esta conectado ao fio ligado no conector NC. Neste caso, pino sem sinal, a posição NO esta aberta, ou seja, o fio conectado aqui não esta ligado a nada.

Já quando aplicamos um sinal no pino S, o relé comuta e o fio comum passa a fechar circuito com o fio na posição NO, deixando o fio NC aberto.

Para entender isso na prática, vamos ver como ligar/desligar uma lâmpada utilizando um relé e o Arduino. O esquema de ligação é bem simples:

Arduino Relay Controlling a Lamp

Controlando uma lâmpada com um Relé e Arduino

O código para fazer o Arduino ligar e desligar a lâmpada é mais simples ainda. Estando na IDE do Arduino, inicie um novo sketch clicando em “File” –> “New”. Uma janela em branco vai se abrir e cole o seguinte código:

void setup(){
 pinMode(7,OUTPUT);
}
void loop() {
 digitalWrite(7, HIGH);
 delay(2000);
 digitalWrite(7,LOW);
 delay(2000);
}

O pino 7 esta ligado ao pino S do relé, e o  que o sketch faz é simplesmente enviar um sinal no pino 7, esperar 2 segundos  e então parar de enviar sinal por mais 2 segundos. Como a lâmpada esta ligada no fio comum e na posição NO, notem que enquanto o Arduino não estiver enviando sinal na porta 7 a lâmpada estará apagada, pois a posição default do relé(sem sinal) é a NC. Resumindo, esse sketch liga a lâmpada, deixa ela ligada por 2 segundos, então a desliga por 2 segundos, infinitamente enquanto alguma coisa não queimar  😉

Sendo bem prático e realista, isso não tem nenhum utilidade prática.  Se alguém tiver uma utilidade, por favor deixe nos comentário. Para darmos utilidade ao uso do relé controlando uma lâmpada ou algum dispositivo elétrico, precisamos fazer com que o Arduino envie sinal ao relé de alguma forma mais inteligente, entre as idéias que tenho, e que pretendo fazer um post a respeito, estão:

  • Acionamento a partir de alterações em sensores. Por exemplo quando o Arduino receber a informação de um sensor de luminosidade de que esta escuro, ele aciona o relé ligando uma lâmpada.
  • Acionamento a partir da Internet. Fazendo o uso de um shield/módulo ethernet, podemos remotamente acender uma lâmpada ou acionar algum dispositivo elétrico

Para tornamos este exemplo um pouco mais prático, vamos inserir um botão ao nosso projeto e atualizar o sketch

Arduino Relay Controlling a Lamp

Adicionando um Push Button ao circuito

Código para com o uso de um Push Button. Certifique-se que o push button é do tipo NO, ou seja, sem pressionar ele esta aberto.

 

int rele = 7;
int botao = 2;

void setup(){
 pinMode(rele,OUTPUT);
 pinMode(botao,INPUT);
 digitalWrite(botao,HIGH);
}
void loop() {
 int valor = digitalRead(botao);
 if (valor == HIGH) {
 digitalWrite(rele, LOW);
 }
 else {
 digitalWrite(rele,HIGH);
 }
}

Conecte o push button ao Arduino, e faça upload do código acima para o Arduino. Agora ao pressionarmos o interruptor,  a lâmpada acende e permanece acessa enquanto estivermos pressionando o interruptor. Como estamos usando um pull-up resistor,  a tensão na leitura (pino 2) fica alta(+5v ou HIGH) enquanto o push button não for pressionado. Veja pelo circuito que ao pressionarmos o push button, estamos curto-circuitando o pino 2, em alta, ao GND, e então a tensão no pino 2 cai para 0, ou LOW. Notem também que neste sketch eu “dei nome” aos pinos, chamando o pino 7 de rele e o pino 2 de botão, e me referi a eles no código. O sketch acima pode ser simplificado, vejam o sketch abaixo e percebam que ele faz exatamente a mesma coisa:

int rele = 13;
int botao = 2;

void setup(){
 pinMode(rele,OUTPUT);
 pinMode(botao,INPUT);
 digitalWrite(botao,HIGH);
}
void loop() {
 int valor = digitalRead(botao);
 digitalWrite(rele, !valor);
}

Adicionar um push button ao esquema melhorou um pouco, mas ainda assim não é lá muito útil acionar um dispositivo/lâmpada tendo que ficar pressionado um botão, vamos melhorar o código mais um pouco:

int rele = 13;
int botao = 2;
boolean estado = false;

void setup(){
 pinMode(rele,OUTPUT);
 pinMode(botao,INPUT);
 digitalWrite(botao,HIGH);
}
void loop() {
 int valor = digitalRead(botao);
 if (valor == HIGH) {
 while (digitalRead(botao) == HIGH){
 delay(100);
 }
 estado = !estado;
 digitalWrite(rele, estado);
 
 }
}

Bom, agora ao pressionarmos o push butto, a lâmpada ou dispositivo irá ligar, e permanecer ligada até pressionarmos novamente o botão. Mais útil né?

Bom, mesmo com um botão adicionado ao esquema, e ainda considerando os posts futuros(controle via Internet e resposta a sensores), tem uma coisa que me incomoda, depender sempre do Arduino para acender a luz da minha casa não é exatamente uma boa ideia. O Arduino pode travar, eu posso ficar sem comunicação com o Arduino, e mais um monte de outros problemas pode surgir. Bem, isso é fácil de resolver. O relé, com a posição NC e NO, se comporta exatamente como um interruptor paralelo, sim, aqueles que você acende a luz aqui e apaga ali, e vice versa. O relé pode até mesmo ser utilizado em instalações paralelas já existentes, ou seja, posso acender ou apagar a luz a partir de qualquer interruptor que eu quiser, contando o relé.

O esquema de uma lâmpada ligada em interruptor paralelo é muito simples:

esquema

 

No primeiro circuito veja que o circuito elétrico esta aberto, ou seja, a lâmpada vai estar apagada, pois é como se o fio que a liga estivesse cortado. Nesta situação, se eu acionar o interruptor ou se eu enviar um sinal ao relé, veja que em qualquer uma destas situações o circuito se fecha, e o fio deixa de estar “cortado”, acendendo a luz.

No segundo circuito eu acionei o relé, e a eletricidade encontrou o caminho, fazendo a luz acender. Tanto se eu parar de enviar sinal ao relé, quanto se eu virar o interruptor, o circuito se abrirá e a luz vai se apagar.

Estou usando uma lâmpada neste exemplo, mas qualquer dispositivo elétrico poderia estar sendo utilizado.

Bem, por enquanto é isso que temos para falar sobre relé. Embora seja um dispositivo muito simples, a utilidade dele em projetos envolvendo Arduino é muito grande.  A escolha da placa com determinado número de relés vai depender muito do seu projeto. Se for controlar vários dispositivos e possui um lugar centralizado para ligar uma placa de 16 canais, considerando ainda que os fios elétricos de todos os dispositivos deverão chegar nesse local, perfeito. Mas na maioria das vezes é inviável levar todos os fios a este local central, então a opção é distribuir os relés e fazer a conexão do Arduino até cada relé.

Abraços.

20 thoughts on “Usando um relé para controlar dispositivos elétricos

  1. luana

    mas se eu quiser manda um sinal para o rele trancar a eletrecidade, ou seja mesmo se eu aperta o interruptor nao acenda a luz sera que tem como ?

    Reply
    1. Valdinei Rodrigues dos Reis Post author

      Boa noite Luana.
      Obrigado pela visita e pelo prazer de ter uma mulher interessada no assunto.

      Neste post eu falo um pouco mais sobre esse tipo de ligação.
      O relé efetivamente mantem a luz acesa ou apagada, dependendo da forma de ligação e se o pino de sinal esta ativado ou desativado. Se você quer impedir que o relé não acenda a lampada, seria apenas questão de não enviar sinal para o pino. Isso pode ser feita de várias formas, por exemplo você pode ter um outro interruptor, que quando acionado faria com que o Arduino ignorasse pressionamentos no interruptor “de verdade”. Outra forma seria você condicionar a leitura do interruptor a um sensor de luminosidade por exemplo. Se estiver claro o suficiente, o sensor informaria ao Arduino, e este ignoraria pressionamentos no interruptor.

      Consegui esclarecer? Caso não, por favor fique a vontade.

      Abs.

      Reply
    2. Rodrigo

      1 Se vc quer que a energia que aciona a lampada seja independente do relé, que é acionado pelo arduino; vc deixa a instalação da lampada como esta, apenas acrescenta mais uma ligação a lampada após o interruptor.

      2 se vc quer que o arduino impeça o acionamento pelo interruptor: Desligue o interruptor e faça a ligação diretamente pelo circuito, mas para acionar uma lampada fica mais pratico usar uma central de radio frequencia de 400 mhz, mais facíl.

      Goestei desse projeto pois pensei em uma forma de desligar uma central de alarme pela internet que não possui essa funcção.

      Reply
    3. Rodrigo

      1 Se vc quer que a energia que aciona a lampada seja independente do relé, que é acionado pelo arduino; vc deixa a instalação da lampada como esta, apenas acrescenta mais uma ligação a lampada após o interruptor.

      2 se vc quer que o arduino impeça o acionamento pelo interruptor: Desligue o interruptor e faça a ligação diretamente pelo circuito, mas para acionar uma lampada fica mais pratico usar uma central de radio frequencia de 400 mhz, mais facíl.

      Gostei desse projeto pois pensei em uma forma de desligar uma central de alarme pela internet que não possui essa função.

      Reply
  2. Roberto Aparecido Santos

    Olá meu nome é Roberto e estou começando aprender sobre Arduíno mas,uma coisa curiosa que você mencionou sobre aquele esquema de ligar e desligar lampadas não tem nenhuma utilidade pratica,não sei se da certo em incrementar isso com um timer e variar todos os tempos de ligar e desligar,seria útil para pessoas que viajam e deixam a residência sozinha,as luzes intercalariam dando a impressão que tem alguém na casa,igual ao filme “Esqueceram de Mim”.
    Não sei se é possível pois estou iniciando ainda e,gostaria de uma opinião,desde já um grande abraço.

    Reply
    1. Gustavo Oliveira

      Ele mostrou apenas a ponta do iceberg, pode-se acrescentar módulos para acionar ele por comando de voz, Bluetooth ou internet ou mesmo GSM pelo celular. Infravermelho. Já pensou vc com o controle dá TV ligar a televisão acender as lâmpadas abrir as portas ativar a cascata dá piscina entre milhares de possibilidades. Basta apenas elaborar o que lhe convém acionar, depois que modo de comunicação pretende usar, ver a viabilidade. E depois trabalhar no código para ele ficar enxuto.

      Reply
      1. Valdinei Rodrigues dos Reis Post author

        Ola Gustavo. Obrigado pela contribuição.
        É exatamente isso. É enorme o número de possibilidades. Desde situações pré-definidas como um timer ou a saída de um sensor, até praticamente qualquer tipo de interface: Internet; bluetooth; comando por voz; etc.

        Abs.

        Reply
  3. Cleiton Silva

    Bom dia,

    Como faço para acionar a lâmpada pelo rele sem utilizar a fase ou neutro da rede eléctrica da residência? Tem como?

    Obrigado.

    Reply
    1. Rodrigo

      Lampada acionada por bateria de 12 vca ou 220 com inversor de potência ainda tem como por uma placa solar de 12 vcc, vai sair tão caro que vc não vai querer fazer…

      Reply
  4. Daniel

    Olá Valdinei,
    Muito boa a idéia do interruptor pulsador. Tão boa que resolvi testar e deu certo. Consegui pegar o sinal do interruptor quando precionado e com isso ligar uma lampada através do rele. Usando uma ethernet shield criei ainda um pequeno site que posso ligar e desligar a lampada pela web. Ou até mesmo ligar pelo interruptor e desligar pelo celular ou vice versa.
    Parabens pelas dicas.

    Reply
    1. Valdinei Rodrigues dos Reis Post author

      Opa Daniel.

      Que legal! Não sei você, mas eu sinto um prazer enorme quando consigo fazer essas coisas.

      Reply
    1. Valdinei Rodrigues dos Reis Post author

      Ola Allan.

      Pode ligar quantas lâmpadas quiser, desde que não ultrapasse a amperagem máxima suportada pelo relé, e sem esquecer que TODAS as lâmpadas devem estar em série, ou seja, acendeu uma, acendeu todas.
      Para controlar individualmente as lâmpadas, ai não tem jeito, tem que usar um relé para cada lâmpada.

      Abs.

      Reply
  5. Márcio

    Bom Dia
    Tenho uma placa Arduino UNO ema placa de 8 reles, liguei como no esquema, liguei o pino 7 ao IN1 que é o rele 1 liguei os 5V… passei o código… liguei a lâmpada aos 230V… a placa sinal porque o rele1 pisca mas a lâmpada não dá porque será?

    Reply
  6. Luciana Serpa

    Olá Valdinei!
    Gostaria de usar o relê e o arduíno para acender uma lâmpada que fica embaixo/ atrás de um espelho. No entanto, deixei os fios para uma tomada atrás do espelho. O que ocorre é que eu não quero colocar na lateral do espelho um botão on off. Preciso que quando for acionado o interruptor da luz geral, que esse espelho acenda, mas não consigo fazer com que o circuito da tomada chegue no circuito do interruptor ( os caminhos são diferentes ), Tomada passam pelo meio da parede e os interruptores sobem para o forro. ou seja, a tomada não tem caminho para o forro.
    Não entendo nada, mas sou muito curiosa para tentar resolver algumas situações fora do habitual.
    obrigada desde já pela sua atenção

    Reply
    1. Valdinei Rodrigues dos Reis Post author

      Ola Luciana.

      Seu problema é apenas elétrico. Entendo o que se passa, não prever algo e depois aquela dor de cabeça para resolver.
      Não dá para descer os fios do forro escondendo-os utilizando alguma decoração?

      Utilizar alguma alguma solução wireless(RF por exemplo) é possível, mas será que valeria a pena o custo?
      Outra possibilidade seria um sensor de luminosidade instalado de forma a captar quando o luz geral estivesse acessa, acionando a luz atrás do espelho…

      Abs.

      Reply
  7. Luckson Louis

    Eu quero montá 1 rele 24 VDC pra fazer uma porta abre e fecha ,como eu pode faze este instalação ?

    Reply
  8. Jean

    Uma aplicação do primeiro exemplo mostrado no inicio do artigo é programar, no meu caso, uma geladeira, minha geladeira faz muito gelo então eu programo para que o Arduino fique ligado pela manhã, deliga a tarde, religa a noite e desliga na madrugada. Abraço…

    Reply
  9. Denilson

    Olá amigos tentei ligar o relé no caso o meu e de dois canais em um led e o outro em uma lâmpada com bocal na rede 220v mais não deu certo e quando colocava outro led dava certo será que liguei fios errado,por que liguei na tomada alguém tem foto dos fios exato para ligar na residência e dar certo?se tiverem me mandem e me ajuda porfavor.

    Reply

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

vinte + 19 =