- Descrição: O Módulo Interruptor (Chave) de Mercúrio é uma placa extremamente…
Arduino – Utilizando o Sensor de Tensão AC
Nesta prática você vai aprender a utilizar o Sensor de Tensão AC 127V / 220V com o Arduino para detectar se uma carga em rede alternada está ligada ou desligada.
O uso do Arduino cresce mais a cada dia e em diversos tipos de áreas. Uma das áreas de maior aplicabilidade é na automação residencial. A partir da implementação de um projeto de automação residencial utilizando o Arduino, é possível controlar e obter informações de praticamente tudo que está na residência.
Das tarefas diárias de uma residência, a primeira a ser inserida no projeto de automação residencial com Arduino, por exemplo, é a iluminação. O controle da iluminação através de uma página web, smartphone ou tablet é algo essencial no projeto, contudo, você deve se fazer a seguinte pergunta antes de começar:
“Se meu sistema de automação residencial ficar off-line, como eu vou controlar as lâmpadas?”
A resposta para esta pergunta é simples: através do interruptor. Para controle virtual da lâmpada basta utilizar o módulo relé junto ao Arduino. Porém, para fazer o controle da lâmpada externamente ao sistema, será necessário o uso de um interruptor em paralelo com o módulo relé. Neste caso, será necessário substituir o interruptor convencional (liga / desliga) por um Interruptor Three Way, que também é conhecido como interruptor paralelo. Esta implementação nos leva a outro questionamento:
“O relé está conectado diretamente ao Arduino e consigo facilmente identificar se a lâmpada está acesa ou apagada. Contudo, ao inserir o interruptor three way para fazer o acionamento da lâmpada manualmente e conectá-lo ao módulo relé, não consigo mais identificar o estado atual dela, pois estou controlando de dois pontos distintos e um deles é externo ao Arduino. Como resolver esta questão?”
A resposta para esta outra pergunta é: Sensor de Tensão AC 127V / 220V. Ao utilizar o sensor de tensão ac, será possível capturar o estado atual da lâmpada independente se ela está sendo controlada virtualmente (página web / smartphone / tablet) ou pelo interruptor paralelo e informar ao Arduino.
O Sensor de Tensão AC fabricado pela MasterWalker Shop aceita uma faixa de tensão de 0 a 220VAC e o mesmo suporta uma tensão de pico igual a 311VAC.
Neste tutorial o sensor será utilizado para identificar o estado atual de uma lâmpada que será controlada através do monitor serial da IDE do Arduino e pelo interruptor three way. Você pode utilizá-lo para identificar o estado atual de outros tipos de cargas em rede alternada que operam dentro das limitações do mesmo.
A seguir, vamos ligar o Sensor de Tensão AC ao Arduino para ver na prática a sua funcionalidade.
Abaixo está a lista dos itens necessários para esta prática:
– Arduino
– Módulo Relé 5V de 1 Canal
– Chave Gangorra KCD1-102 Preta 3T (Three Way)
– Sensor (Detector) de Tensão AC 127V / 220V
– Cabo Jumper Macho-macho
– Cabo Jumper Macho-fêmea
– Protoboard
– Cabos com Garra Jacaré (Opcional)
– Lâmpada
– Receptáculo (boquilha)
– Cabo paralelo de 1,5mm ou 2,5mm
– Tomada (Rede alternada de 127V)
Utilizei a Chave Gangorra 3T nesta prática, contudo você pode utilizar qualquer interruptor three way.
Abaixo está o esquema de ligação que você deve montar:
ATENÇÃO: MUITO CUIDADO AO EXECUTAR PRÁTICAS QUE ENVOLVAM TENSÃO / CORRENTE ALTERNADA! FAÇA TODAS AS LIGAÇÕES COM O CIRCUITO COMPLETAMENTE DESLIGADO E ANTES DE FAZER OS TESTES VERIFIQUE CADA UMA DAS LIGAÇÕES PARA ELIMINAR A POSSIBILIDADE DE CURTO ENTRE FASE / NEUTRO OU FASE / FASE.
(Clique na imagem para ampliar)
Note que o Sensor de Tensão AC é ligado em paralelo com o circuito, logo, a corrente do circuito é irrelevante para o sensor. Além disso, o sensor foi instalado junto ao retorno da lâmpada, pois ali só vai existir presença de tensão quando o circuito estiver fechado através do módulo relé ou pelo interruptor paralelo.
Feito o esquema de ligação, basta carregar o código no Arduino. Se ainda não tem a IDE do Arduino instalada e configurada, basta acessar o link abaixo e em seguida retorne para continuar:
Arduino – Instalação e Configuração da IDE no Windows
O código para testes está abaixo e todo comentado. Basta copiar o mesmo, colar na IDE, salvar e carregar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
const int pinoRele = 8; //PINO DIGITAL UTILIZADO PELO MÓDULO RELÉ const int sensorTensao = A2; //PINO ANALÓGICO UTILIZADO PELO SENSOR DE TENSÃO AC int status = 0; //VARIÁVEL QUE CONTROLA O STATUS DO MÓDULO RELÉ (LIGADO / DESLIGADO) String statusLamp = "DESLIGADA"; //VARIÁVEL PARA CONTROLE DE STATUS MOSTRADO NO MONITOR SERIAL void setup(){ pinMode(pinoRele, OUTPUT); //DEFINE A PORTA COMO SAÍDA pinMode(sensorTensao, INPUT); //DEFINE A PORTA COMO ENTRADA digitalWrite(pinoRele, LOW); //MÓDULO RELÉ INICIA DESLIGADO Serial.begin(9600); //INICIALIZA A SERIAL } void loop(){ verificaStatusLamp(); //CHAMA A FUNÇÃO RESPONSÁVEL POR VERIFICAR SE A LÂMPADA ESTÁ ACESA OU APAGADA char c = Serial.read(); //VARIÁVEL RESPONSÁVEL POR RECEBER O CARACTERE DIGITADO NA JANELA SERIAL if (c == 'a'){ //SE CARACTER DIGITADO FOR IGUAL A "a", FAZ if (status == 0){ //SE VARIÁVEL FOR IGUAL A 0, FAZ digitalWrite(pinoRele, HIGH); //RELÉ ACIONADO (LIGADO) status = 1; //VARIÁVEL RECEBE O VALOR 1 }else{ //SENÃO, FAZ digitalWrite(pinoRele, LOW); //RELÉ ACIONADO (DESLIGADO) status = 0; //VARIÁVEL RECEBE O VALOR 0 } } Serial.print("LAMPADA: "); //IMPRIME O TEXTO NO MONITOR SERIAL Serial.println(statusLamp); //IMPRIME NO MONITOR SERIAL O ESTADO ATUAL DA LÂMPADA } //FUNÇÃO RESPONSÁVEL POR VERIFICAR SE A LÂMPADA ESTÁ ACESA OU APAGADA void verificaStatusLamp(){ for (int i = 0; i < 100; i++){ //PARA "i" IGUAL A 0, ENQUANTO "i" MENOR QUE 100, INCREMENTA "i" if(analogRead(sensorTensao) > 70){ //SE LEITURA FOR MAIOR QUE 70, FAZ statusLamp = "LIGADA"; //VARIÁVEL RECEBE O TEXTO }else{ //SENÃO statusLamp = "DESLIGADA"; //VARIÁVEL RECEBE O TEXTO } } } |
Após o carregamento do código abra o monitor serial na IDE do Arduino e veja que a informação de “LAMPADA DESLIGADA” ou “LAMPADA LIGADA” está sendo mostrada. Ainda no monitor serial, digite no campo de entrada de dados a letra “a” (sem aspas) e clique no botão “ENVIAR”. Nesse instante o relé vai alterar o estado para ligado ou desligado e a lâmpada irá acender ou apagar. Digite novamente a letra “a” e clique em “ENVIAR” para que o relé mude de estado novamente. Agora pressione o interruptor paralelo e veja que a lâmpada vai mudar de estado (ligada / desligada). Se pressionar novamente o interruptor paralelo, a lâmpada alterna o estado. Note que no monitor serial a atualização do estado da lâmpada é feito independente se você controla via entrada de dados do monitor ou pelo interruptor paralelo.
O Sensor de Tensão AC pode ser utilizado com ESP8266, NodeMCU, Raspberry e outras plataformas.
E antes de finalizar, gostaria de reforçar: para capturar o estado atual de uma carga, o Sensor de Tensão AC deverá ser instalado no retorno que vai para esta carga. Lembre-se que se o circuito está conectado à rede alternada, a tensão vai estar presente em todo o circuito, exceto quando houver um interruptor seccionando parte do circuito e este trecho em questão será o retorno da carga.
Gostou deste tutorial? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Arduino – Utilizando a Matriz de LED 5mm 8X8
Próxima postagem: Arduino ou Raspberry: Qual a melhor plataforma para o meu projeto?
Gostaria de saber como fazer um circuito para simular a proteção diferencial de um transformador ou gerador, proteção contra sobrecarga e sobrecorrente instantânea e temporizada, proteção antimotorização atravez do arduino.
Olá. Posso usar o sensor acs712 com esse mesmo esquema?
Vi um vídeo que o sensor é ligado em série com o circuito. Existe alguma diferença no final, caso o sensor tenha algum problema em paralelo não afetaria em nada o projeto ao contrário do ligado em série né?
Olá posso fazer o uso do sensor ACS712 com esse mesmo esquema, esse sensor tem diferença para o indicado? Irei usar em tensão AC 220v e 110v localidades diferentes.
Euler blz?
Você conhece algum circuito que poderia me informar somente a passagem de tensão e enviar um digital somente?
Olá Fabio.
Agradeço pelo comentário!
Infelizmente desconheço.
Ele funciona com 12v ou 5v?
Olá Gabriel.
Funciona com alimentação em 5VDC.
Onde consigo o esquema elétrico desse sensor, caso eu queira fazer um igual ou alguma modificação? É para um TCC
Olá Ailton.
Este sensor é fabricado pela MasterWalker Shop e vendido em nossa loja virtual.
Não temos disponível o esquema elétrico.
Boa noite!
Para o Raspberry, que comando eu uso para obter a saída do sensor?
Olá Guilherme.
Infelizmente não cheguei a usar este sensor com o Raspberry, logo, não sei te falar como proceder.
Boa tarde!
Eu não compreendi: ele apenas detecta a presença ou não de tensão ou ele informa o valor atual da tensão eficaz em volts na saída para o arduino?
Olá Otávio.
Apenas detecta se existe ou não tensão AC no circuito.
Qual é o consumo desse módulo?
ola Euler.
poderia me passar o código para eu tentar fazer aqui?
ou alguém se puder por favor.
lucianooliveira370@gmail.com
Olá Luciano.
Desculpe, mas de qual código está falando?
O código desta postagem já está disponível no texto.
Como utiliza esse sensor com ESP8266?
Como se faz a ligacao fisica? alimentacao? etc… pois o sensor parece ser alimentado por 5v, o esp8266 trabalha com 3.3v e sua porta analogica recebe apenas 1v
Olá Elizeu.
Ainda não fiz testes com o ESP8266, logo, não consigo te dizer se vai funcionar sem problemas.
Testei aqui e funciona beleza com o ESP8266, alimentando o sensor com 3V.
A única coisa diferente é que o analogRead tá mostrando uma escala de 1024, então fiz o map pra 255:
int leituraAtual = map( analogRead(SensorTensao), 0, 1024, 0, 255 );
Obrigado pelo post, Euler!
Esse código é muito pesado para o arduino? Pergunto isso pois a minha intenção é utilizar umas 16-20 unidades desse detector. Será que ele aguentaria? Obrigado!
Olá Gabriel.
O código é leve, pois não faz uso de nenhuma biblioteca.
Olá Euler, obrigado pelo tutorial. Existe alguma diferença básica entre esse sensor e o zmpt101b ? Agradeço antecipadamente.
Olá Gerson.
Agradeço pelo comentário!
O ZMPT101B além de detector de tensão pode ser utilizado como voltímetro.
Pretendo utilizar vários detectores mas minha dúvida é quantos amperes um módulo desse consome. Para ligar 16 módulos desse, como ficaria? A própria alimentação de uma Placa MEGA 2560 R3 seria suficiente?
Teria alguma pra indicar que realiza as medições de tensão?
Olá Matheus.
Para a função voltímetro recomendo:
https://www.masterwalkershop.com.br/sensor-de-tensao-ac-0-a-250vac-zmpt101b
Olá Euler,
Tem alguma recomendação de sensor para fazer a medição da tensão alternada até 220V?
Obrigado
boa noite Euler !
comprei de vocês o sensor de tenção AC e instalei conforme o diagrama, estou utilizando para sinalizar led no blynk e o que acontece ,é que o led fica sempre aceso mesmo com a lâmpada apagada. então testei os contatos e notei que o gnd da retorno quando o circuito não está alimentado, e consequentemente o led mantem aceso.
então fiz alguns testes e notei que se deixar o GND na posição correta e colocar o retorno do sinal no VCC o led funciona piscando lentamente, quando a lâmpada é acionada.
o que será que está acontecendo? estou trabalhando com 127v.
Olá Alexandre.
Poderia tirar 2 fotos (uma da parte superior da placa e outra da parte inferior) do Sensor de Tensão AC e encaminhar para o e-mail vendas@masterwalkershop.com.br? Desta forma vamos conseguir te auxiliar melhor.
Quando voce mede uma tensao de 127v a saida mostra qual valor aproximadamente? So para mim ter uma nocao de acerto. pois preciso que acione uma carga mas so se for superior a 100v e inferior a 135V. Obrigado
Olá Mario.
Este sensor é utilizado apenas para fazer detecção se existe tensão ou não em um circuito.
Não deve ser utilizado para medição de tensão, pois não acompanha as variações da rede AC e com isso não existe precisão na leitura.
Posso usá-lo para acionar um sinal sonoro (tipo bip) quando houver tensão? Adicionaria simples fonte sonora?
Olá Jesus.
Agradeço pelo comentário!
Este sensor é utilizado apenas para fazer detecção se existe tensão ou não em um circuito.
Olá Euler, posso usar esse sensor com um ESP8266-01, que só tem portas digitais?
No meu projeto, quero usar essa placa por ser menor e mais barata, montando exatamente o interruptor theeway para controlar lampadas.
Olá Flavio Benedini.
O sensor funciona com entrada analógica e o ESP-01 não possui.
Existe alguma biblioteca específica para usar mais de um sensor em um esp32??
Prezado, qual o range de valores na porta analógica, enviados pelo sensor? quais caracterizam a presença de tensão ou não? Por que foi feita uma leitura 100 vezes como no laço
for (int i = 0; i 70)
?
Olá Luís Augusto.
O valor mínimo seria 0 bits e o valor máximo é indefinido, pois isso envolve vários fatores (desde a composição dos materiais de cada componente da placa até a faixa de tensão AC em que o sensor está conectado). Se o sensor for ligado em uma rede de 127V, a leitura máxima será um valor X e se ligado em 220V será um valor maior que X. No caso deste código do artigo, se a leitura na porta analógica for maior que 70 bits, significa que há presença de tensão AC. Qualquer valor abaixo de 70 bits significa que não há tensão.
No laço “for” é feito a leitura durante 100 vezes para efeitos de comparação e exatidão. O valor lido no pino analógico aumenta gradativamente e diminui gradativamente, ou seja, leva alguns milissegundos para ultrapassar o valor de 70 bits e alguns milissegundos para retornar a 0.
Olá, Euler Oliveira!
Entendi sua resposta, muito obrigado!
Por nada.
Olá Euler. Preciso fazer um projeto que identifique se existe energia em uma tomada. Posso ligar o sensor em uma tomada sem ter nada ligado à tomada em paralelo? No caso, apenas o sensor estaria na rede, sem passar nenhuma corrente necessária à algum outro equipamento.
Olá Danilo.
Se precisa apenas identificar se existe tensão AC em uma tomada, o sensor irá atender perfeitamente, para isto, basta conectá-lo a aos cabos da tomada e fazer a leitura com o microcontrolador.
Olá! Euler, eu consigo armazenar os dados gerador em um pequeno servidor de autoria própria? Preciso transferir meus dados do arduíno para o servidor, nesse caso um uno shield wi-fi, certo? Aí no caso modifico o código fornecido para o envio. Salientando que mesmo assim eu gostaria do armazenamento sem internet para uma “precaução”.
Olá Angélica Valeze.
Para armazenamento offline você pode utilizar um módulo de cartão de memória para o Arduino ou se estiver utilizando um Ethernet Shield W5100, poderá usar um micro sd no slot de cartão dele para registrar as informações.
O armazenamento dos dados em um servidor poderá ser feito sim. Para isto, será necessário a criação do servidor, utilizar o Arduino com algum módulo ou shield que atribua a função ethernet / internet a placa e fazer a programação para envio das informações ao seu servidor.
COMO FAÇO para monitorar via internet com ethernetshild? como ficaria o codigo ?
Olá Elindoval.
Ainda não temos nenhuma postagem relacionada ao Sensor de Tensão AC e o Ethernet Shield.
como seria o codigo apenas para medição da tensão ?
Olá Antonio.
Este sensor é utilizado apenas para fazer detecção se existe tensão ou não em um circuito.
Não deve ser utilizado para medição de tensão, pois não acompanha as variações da rede AC e com isso não existe precisão satisfatória na leitura.