Controlando um relé no Arduino com segurança: Blink, diodo e transistor

A reação do público experiente ao artigo anterior, em que conectei um relé diretamente ao Arduino, mostra o quanto isso deve ser evitado – agora veremos as razões, e como resolvê-las com maior segurança.

Já vimos no artigo anterior o que é o relé, e o princípio básico do seu funcionamento: ele é uma chave que liga/desliga um circuito (possivelmente de tensão elevada), sob o comando de outro circuito (possivelmente de tensão mais baixa, como um Arduino).

Para demonstrar seu funcionamento com maior clareza, eu o descrevi funcionando "nu": ligado diretamente a um pino digital do Arduino, para controlar um circuito com 2 leds conectados a uma bateria de 9V.

Na ocasião, escrevi que provavelmente jamais voltaria a fazer algo assim, e é verdade: para operar de forma segura, aquele circuito exigia proteção. Agora chegou o momento de detalhar a razão.

Parte 1: o relé é uma carga elevada

Mesmo o relé de 5V que eu usei no experimento consegue ficar acima do limite da especificação de corrente dos pinos digitais do Arduino. Relés eletromecânicos funcionam internamente como eletroimãs que puxam ou liberam uma chave e, segundo a documentação do relé que eu usei, a resistência da bobina dele é de 70Ω, o que – conforme a lei de Ohm – significa que a carga que chega a ela considerando os 5V dos pinos do Arduino é de 0,07A, ou 70mA – bem acima dos 40mA nominais que os pinos de entrada e saída do Arduino suportam1.

Temos, então, uma situação curiosa: queremos usar o relé para controlar com segurança um circuito acima da tensão de operação do circuito do nosso Arduino, mas o próprio relé é uma carga superior à que nosso pino de saída suporta com segurança.

Existem várias saídas para essa situação, e eu escolhi uma das tradicionais: substituí o relé por um modelo cuja tensão de controle é compatível com os 9V do circuito dos leds que eu quero controlar, e instalei mais um intermediário no circuito: um transistor 2N2222, que pode ser controlado confortavelmente pelos 5V do Arduino, e que consegue controlar também confortavelmente a corrente que o relé demanda.

Como já vimos nos comentários do artigo sobre alimentação do Arduino com bateria, o Marcos Kazan Fleury Silveira apontou mais uma vantagem em usar um transistor para chavear (além da funcionalidade, que ele também mencionou): o preço. Ele observou: “Com o transistor do jeito que falei, por 20 centavos a mais você pode chavear qualquer sensor com a sua lógica.” E de fato é fácil encontrar esse transistor a preços bastante inferiores a R$ 1, então, se queimar, é barato e simples de substituir (ao contrário do que ocorreria com a queima do pino 13 do Arduino).

Antes de vermos o esquema de montagem, entretanto, vamos ver a outra causa principal da necessidade de proteção, e a solução para ela, reduzindo a chance de que o transistor queime ;-)

Parte 2 - A bobina do relé induz corrente perigosa

Quando publiquei no grupo Arduino Brasil do Facebook uma chamada para o artigo anterior, que não protegia o Arduino contra os efeitos do relé, o leitor Tamnil Saito Junior simpaticamente sugeriu: “Põe esse circuito no osciloscópio para ver o tranco que a bobina vai dar em reverso”.

Não disponho de osciloscópio para fazer a visualização, mas posso explicar do que ele estava falando. Sem entrar no detalhamento da relação entre magnetismo e eletricidade, o que precisamos ter em mente é que o acionamento e liberação do eletroimã interno do relé induzem cargas sobre o nosso circuito, e essas cargas que retornam podem ser bem superiores aos limites suportados pelo Arduino – ou, no caso do nosso circuito protegido, pelo transistor.

Várias das formas recomendadas de proteção contra esse retorno quando se controla relés envolvem colocar um diodo (IN4001 ou similar) em paralelo com a bobina do relé:


Fonte: Relay Driving Basics

Assim, foi o que eu fiz. O transistor agradece!

Como ficou o circuito

Os aspectos relacionados ao controle dos leds podem ser consultados no artigo anterior.

Vale destacar: o programa que está rodando no Arduino é o exemplo Blink que veio pré-instalado nele, e que acende/apaga o led interno conectado à porta 13. Assim, eu conectei a porta 13 ao circuito que montei, para que ele abra/feche continuamente o transistor e, por meio deste, o relé.

No diagrama esquemático simplificado acima, você vê os pinos do Arduino no quadro verde: o 13 – alternando entre HIGH e LOW a cada segundo devido à execução do exemplo Blink – e o GND (terra), que precisa ser conectado ao terra da bateria de 9V.

No quadro vermelho você vê os 2 terminais da bateria de 9V: o positivo e o terra. E em azul eu destaquei o relay (RY1): note que os 5 terminais dele estão presentes, sendo que os 2 de controle (conectados à bobina) estão na parte de baixo, e os outros 3 (comum, NC/NF e NO/NA2) estão na parte de cima.

As conexões novas são as que seguem:

O pino 13 está conectado, por meio de um resistor, ao pino base3 do transistor Q1 (que é um 2N2222).

O pino emissor do transistor está conectado ao terra, e o seu pino coletor está conectado ao diodo D1 (modelo IN4001) e a um dos terminais de controle da bobina do relé. Quanto ao efeito prático, o transistor está funcionando como uma chave controlada pelo pino 13 do Arduino.

A outra extremidade do diodo D1 está conectada ao positivo da bateria de 9V, e o segundo terminal da bobina do relé também está conectado (em um ponto posterior ao diodo D1) ao positivo da bateria de 9V.

Note que, com a conexão descrita acima, o diodo D1 efetivamente está em paralelo à bobina, e evitará que o retorno induzido por ela danifique o nosso transistor.

As conexões entre os terminais NC e NO, os leds L1 e L2, os resistores R2 e R3, e o terra já foram explicadas no artigo anterior, e são a parte que efetivamente faz os 2 leds do circuito se alternarem de acordo com o estado do relé.

O efeito, em termos de o relé ser operado e controlar os 2 leds, permanece o mesmo. A complexidade adicional serviu para justificar a demanda pela inclusão de proteção neste circuito, e exemplificar como ela pode ser implementada.

 
  1.  Para referência, vale lembrar que o pino 5V e o pino GND têm um limite maior: 200mA

  2.  NC é abreviatura em inglês que corresponde a Normalmente Fechado, e NO corresponde a Normalmente Aberto.

  3.  O transistor tem 3 pinos: base, emissor e coletor. No caso do que eu usei no experimento, o pino base é o do meio. Verifique a pinagem específica do modelo que você usar na datasheet do mesmo.

Comentar

Dos leds ao Arduino, ESP8266 e mais

Aprenda eletrônica com as experiências de um geek veterano dos bits e bytes que nunca tinha soldado um led na vida, e resolveu narrar para você o que descobre enquanto explora esse universo – a partir da eletrônica básica, até chegar aos circuitos modernos.

Por Augusto Campos, autor do BR-Linux e Efetividade.net.

Recomendados

Livro recomendado


Artigos já disponíveis

Comunidade Arduino

O BR-Arduino é integrante da comunidade internacional de entusiastas do Arduino, mas não tem relação com os criadores e distribuidores do produto, nem com os detentores das marcas registradas.

Livros recomendados