Como usar com Arduino – Sensor de Tensão AC 0 a 250V Voltímetro ZMPT101B

Como usar com Arduino – Sensor de Tensão AC 0 a 250V Voltímetro ZMPT101B

img00_como_usar_com_arduino_sensor_de_tensao_ac_0_a_250v_voltimetro_zmpt101b_lm358_calibracao_analogico

– Descrição:

Sensor de Tensão AC 0 a 250V Voltímetro ZMPT101B é um módulo de alta precisão que tem como finalidade detectar a existência de tensão alternada em um circuito ou fazer a medição do valor de tensão.

Para aqueles que estão desenvolvendo algum projeto de automação residencial o Sensor de Tensão AC 0 a 250V Voltímetro ZMPT101B é de extrema importância, pois ele é capaz de informar se uma lâmpada está acesa ou apagada, se um motor está ligado ou desligado independente se o circuito está sendo controlado por uma aplicação / página web ou por interruptor / botão. Além disso, este sensor permite a implementação de um projeto que tenha como finalidade monitorar os valores de tensão na rede alternada, logo, você pode utilizá-lo como um voltímetro.

– Especificações e características:

– Transformador: ZMPT101B
– Tipo de sensor: detector de tensão / voltímetro
– Tensão de alimentação do módulo: 5 a 30VDC
– Tensão de entrada: 0 a 250VAC
– Corrente de entrada nominal: 2mA
– Corrente de saída nominal: 2mA
– Proporção: 1000:1000
– Faixa linear: 0-1000V
– Linearidade: 0,2%
– Isolamento tensão: 4000V
– Precisão de leitura: ±1%
– Temperatura de operação: -40º a 70º celsius

– Aplicações:

Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário fazer a detecção de tensão AC ou medir o valor de tensão AC (voltímetro). Este sensor é comumente aplicado em projetos de automação residencial, onde é necessário monitorar o consumo de energia de uma casa, por exemplo. Para isto, o mesmo deve ser aliado a um Sensor de Corrente AC de forma que seja possível fazer o cálculo de potência.

– Proposta da prática:

Utilizar o Sensor de Tensão AC 0 a 250V Voltímetro ZMPT101B em conjunto com o Arduino e medir a tensão AC.

– Lista dos itens necessários:

01 – Arduino com Cabo USB
01 – Sensor de Tensão AC 0 a 250V Voltímetro ZMPT101B
03 – Cabos Jumper macho-fêmea
01 – Multímetro
01 – Tomada (Rede alternada de 127V ou 220V)

– Calibração da forma de onda do sensor:

Para que o Arduino possa ter o máximo de precisão nas medições de tensão AC, é necessário fazer a calibração da forma de onda na saída do sensor a partir de um osciloscópio. O sensor pode vir de fábrica com parte da forma de onda cortada no semiciclo positivo, tendendo a formar uma onda quadrada e isto vai comprometer a leitura feita pelo pino analógico do Arduino. Com o uso de um osciloscópio, é possível ver a forma da onda e através do trimpot que se encontra no sensor, fazer o ajuste da forma de onda para que a mesma fique o mais próximo possível de uma senoide.

No vídeo abaixo você pode ver a comparação entre a forma de onda do sensor sem estar calibrado e a forma de onda da rede AC em 60Hz. Note que, ao girar o trimpot a forma de onda do sensor foi se aproximando da forma de onda da rede AC e consequentemente obtendo o formato de uma senoide:

No vídeo é possível ver também que existe uma pequena defasagem entre as duas formas de onda, onde ambas começam e terminam em tempos distintos.

OBS: pode haver outros meios de fazer esta calibração da forma de onda do sensor, contudo, o uso do osciloscópio é o jeito mais simples. Se você não possui um osciloscópio, peça ajuda de alguém que tenha um e faça a calibração. Se você faz curso técnico de eletrônica ou faculdade voltada para elétrica, automação ou computação, peça a ajuda de algum professor e use o equipamento da instituição para fazer a calibração.

– Esquema de ligação da prática:

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.

img01_como_usar_com_arduino_sensor_de_tensao_ac_0_a_250v_voltimetro_zmpt101b_lm358_calibracao_analogico

– Tutorial de instalação e configuração do ambiente de programação do Arduino:

Arduino – Instalação e Configuração da IDE no Windows

– Biblioteca:

Download EmonLib

– Importando bibliotecas para o ambiente de programação do Arduino:

Arduino – Importando bibliotecas para a IDE

– Código:

1) No código há a variável de calibração VOLT_CAL. Esta variável tem como função fazer uma compensação no cálculo, pois os componentes utilizados na construção de cada sensor podem ter valores um pouco diferente do especificado (considerar a tolerância do componente).

2) No código, a variável VOLT_CAL está com o valor de 211.6, contudo, pode ser necessário que você altere ela para um valor menor ou maior. Isto vai depender do valor de tensão AC que será apresentado no monitor serial do ambiente de programação do Arduino.

3) Após efetuar o primeiro carregamento do código no Arduino e verificar os valores de tensão apresentados na medição, pegue um multímetro, insira na rede AC para medir a tensão e em seguida faça o ajuste do valor de VOLT_CAL até que consiga uma medição no monitor serial, próxima da medição mostrada pelo multímetro.

– Resultado final:

Gostou desta prática? 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:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação, Técnico em Eletroeletrônica, Fundador e Diretor da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 25 comentários para esta postagem
  1. gutyerre às 20:51

    esse cod ai não funciona no esp 32 né pq eu queria pra fazer um usando esp
    aquele nodemcu 8266

  2. joe às 19:07

    Estou usando este sensor na saida de um inversor de senoidal pura, quando mede o OUT dele, sai tudo com ruido, impossivel de ler.
    Percebo que até na rede eletrica ele sai com ruido,.

    Tem algo que eu possa fazer para limpar este sinal

  3. Matheus Mendes às 20:27

    Boa noite!

    Uma duvida na programação:

    1- O que seria mudança de fase ? E por que o valor em 1.7?
    2- Na parte “emon1.calcVI(20,2000)” o 20 semiciclos é obtido pela formula do F=1/T ? 1 ciclo = 16,67 ms… 1/2 ciclo = 8,335 ms.. 20 semiciclos = 166,7 ms ?
    3- Na parte “emon1.calcVI(20,2000)” o 2000 que está comentado como o “tempo para fazer a medição” está relacionado com o que? Conta 2 ms e faz uma medição?

    Poderia sanar essas duvidas?

    Obrigado!!

    • Euler Oliveira Autor às 20:51

      Olá Matheus.

      Agradeço pelo comentário!

      Para entender o que é phase shift (mudança de fase), como é calculado e para compreender o porque dos valores padrões adotados pela emonlib (inclusive o intervalo de 2000ms / 2 segundos), recomendo que acesse o link abaixo e leia todos os passos apresentados:

      https://learn.openenergymonitor.org/electricity-monitoring/ac-power-theory/introduction

      Neste link a todas informações acerca da biblioteca.

      • Bruno Loyola às 18:26

        Boa tarde Euler, analisando o artigo do link que você referenciou, o valor 20 semiciclos diz respeito à frequência elétrica de 50hz (20msx50Hz = 1 segundo) para nossa realidade (60hz) o correto seria utilizar 17 semiciclos pois a conta seria uma dízima periódica (16,666666667).

        Ao utilizarmos um valor maior que 17 semiciclos estaríamos medindo parte do novo ciclo oq geraria uma leitura equivocada dos valores.

        • Euler Oliveira Autor às 18:34

          Olá Bruno.

          Agradeço pelo comentário e observação!

          Vlw!!!

  4. José às 21:56

    ola, eu preciso usar 6 deles em um projeto, como eu identifico cada um no programa?

    • Euler Oliveira Autor às 09:22

      Olá José.

      Agradeço pelo comentário!

      Você deve criar novas instâncias de acordo com a quantidade que deseja utilizar (EnergyMonitor emon2; EnergyMonitor emon3;… e assim sucessivamente).

      Em seguida basta replicar o restante do código, mudando o nome da instância (emon2, emon3… e assim sucessivamente).

  5. Cassio às 23:02

    Olá Euler, vc faz projetos personalizados? Não entendo em montar esses projetos. Preciso de um medidor de tensão AC, porém ele precisa ter algumas funções. Por favor me passe seu contato para te explicar melhor.

    • Euler Oliveira Autor às 12:11

      Olá Cassio.

      Agradeço pelo comentário!

      Não faço projetos sob encomenda.

      Os projetos que desenvolvo são apenas para serem compartilhados aqui no Blog.

    • Euler Oliveira Autor às 11:14

      Olá Aldair.

      Agradeço pelo comentário!

      Que tipo de barulho seria? Está utilizando em rede AC de quantos volts?

  6. Douglas às 09:36

    Olá,
    gostaria de saber como funciona este sensor, em relação a conexão a rede AC.
    Ele deve estar ligado em paralelo ao circuito, ou em serie (como o ACS712)?

    Pois tenho um situação que gostaria de utilizar um sensor para saber se um lampada está acesa, onde tenho dois interruptores que ligam uma lampada (chave hotel) e um destes interruptores foi substituído por um relé, para poder ligar pela automação ou manualmente pelo interruptor.

    E agora gostaria de saber se a lampada está ligada (indiferente se foi ligada pela automação ou interruptor) e o lugar que tenho acesso é ao relá, no qual entra a FASE…

    Por isto teria que ser algo que fosse ligado em serie e não em paralelo para conseguir determinar o estado da lampada…

    • Euler Oliveira Autor às 11:25

      Olá Douglas.

      Agradeço pelo comentário!

      Para fazer detecção de status da carga, a conexão é feita em paralelo. Mesmo ligado em paralelo o sensor funciona para fazer a detecção de status da carga, pois a conexão será feita no neutro e no retorno que chega na lâmpada.

      Acredito que utilizar o sensor da postagem abaixo, irá ser mais adequado e mais barato, além da postagem mostrar na prática a detecção de status da lâmpada:

      https://blogmasterwalkershop.com.br/arduino/arduino-utilizando-o-sensor-detector-de-tensao-ac/

  7. junior às 22:36

    boa noite, sobre esse teste , vc esta lendo a entrada e a saida do sensor com o scope, minha duvida é, voce esta medindo as duas saidas em AC? e o scope tem os gnds juntos internamente, não tem nenhum risco unir o neutro do 220v com o gnd do arduino?
    desde ja grato

    • Euler Oliveira Autor às 08:17

      Olá Junior.

      Utilizei o Soundcard Scope para o Windows, que é um software que funciona como um osciloscópio utilizando a entrada de microfone do computador.

      Tanto a entrada quanto a saída é medida em AC. O neutro da entrada é conectado a uma das pontas de prova e na saída o GND é conectado a uma das pontas de prova. O neutro e o GND são comutados para conectar ao plug P2 estéreo e em meus testes não teve nenhum problema. Lembrando que tudo foi testado na protoboard e em seguida prossegui na montagem junto ao Arduino e ao computador.

      Há vários vídeos no Youtube ensinando a montar o cabo para usar a entrada de microfone do PC junto ao Soundcard Scope. Nestes vídeos ensinam a montar um cabo de 2 canais voltado para ser usado em cargas DC. Para cargas AC é necessário fazer alguns cálculos para dimensionar os resistores corretos para um dos canais do cabo, de forma que a corrente AC que vai chegar a um dos canais da entrada de microfone seja extremamente baixa.

      Só recomendo o uso do Soundcard Scope como osciloscópio com a finalidade de uso em cargas AC, caso o usuário tenha conhecimento de elétrica.

  8. Ivan às 21:39

    boa noite, o nosso amigo Euler tem razão o ajuste da forma de onda é muito importante, fiz o ajuste utilizando o osciloscópio e um reostato de 0 vc a 250 vac, o primeiro ajuste fiz em 127 vac quando elevei p 250 vac ocorreu deformação da forma de onda, refiz o ajuste e a forma de onda estabilizou, ainda não fiz o teste com o código fonte no Arduino, mas tudo indica q funciona, preciso dar uma verificada na biblioteca emolib qual a referencia que ela usa, pois em algumas aplicações em que usei a referencia interna sempre precisa de ajuste no valor da variável de referencia, pois o valor de vcc que alimenta o arduino influência nela, recomendo usar referencia externa oriunda de um tl431 que é muito estavel.

  9. Demarques Ribeiro da Silva às 18:03

    Euler . Boa tarde.
    eu estou querendo medir uma tensão alternada quadrada de 15,00 V Ac.
    Não estou obtendo sucesso. Minha pergunta seria se este sensor de tensão é compatível com que gostaria de fazer, ou teria algum especifico.
    Agradeço a sua atenção

  10. CARLOS D ALEXANDRIA BRUNI às 16:32

    Estou testando o sensor de tensão ac 0-250V e quando ajusto a calibração para 127V e tranfiro para uma tomada de 220V as leituras não batem idem quando calibro para 220V e ao substituir a tomada por uma de 127 não batem com o multimetro.
    Resumindo, não há uma linearidade em toda a faixa de 0-250V .
    onde posso obter maiores informações para resolver?

    Carlos Bruni
    IFBA campus Salvado – Bahia

    • Euler Oliveira Autor às 17:27

      Olá Carlos.

      Você fez a calibração da forma de onda do sensor conforme mencionei na postagem? Após calibrado através do trimpot, fez a calibração de VOLT_CAL no código?

      Durante os testes com este sensor (os mesmos testes foram aplicados em cinco unidades), fiz a calibração da forma de onda e deixei o mais próximo da senoide (conforme pode ser visto no vídeo disponível nesta postagem). Utilizei 127VAC na entrada do sensor para fazer a calibração da forma de onda. Testei a medição do sensor em paralelo com a medição feita pelo multímetro e fui ajustando o valor de VOLT_CAL no código até deixar a medição do sensor igual a do multímetro.

      Sem fazer nenhuma alteração na calibração (tanto da forma de onda quanto do valor de VOLT_CAL), apliquei 220VAC na entrada do sensor e a leitura que o mesmo fez foi igual a mostrada no multímetro.

      • Daniel às 10:22

        O osciloscópio que vc usou é fisico ou por software/Arduino? Se foi a segunda opção, como se faz?

        • Euler Oliveira Autor às 11:03

          Olá Daniel.

          Utilizei o Soundcard Scope para o Windows, que é um software que funciona como um osciloscópio utilizando a entrada de microfone do computador.

          Há vários vídeos no Youtube ensinando a montar o cabo para usar a entrada de microfone do PC junto ao Soundcard Scope. Nestes vídeos ensinam a montar um cabo de 2 canais voltado para ser usado em cargas DC. Para cargas AC é necessário fazer alguns cálculos para dimensionar os resistores corretos para um dos canais do cabo, de forma que a corrente AC que vai chegar a um dos canais da entrada de microfone seja extremamente baixa.

          Só recomendo o uso do Soundcard Scope como osciloscópio com a finalidade de uso em cargas AC, caso o usuário tenha conhecimento de elétrica.

          • leandro às 17:53

            Qual foi as cargas utilizadas no circuito do osciloscópio? Usou apenas diodo zenner com resistores na entrada?

          • Euler Oliveira Autor às 19:05

            Olá Leandro.

            Já faz um tempo que implementei esta prática e não consigo lembrar qual o diodo e resistores que foram utilizados para confecção das pontas de prova. Depois que finalizei a prática eu desmontei o cabo, pois foi feito exclusivamente para esta prática.