Como usar com Arduino – Sensor de Corrente (AC e DC) ACS712 (5A / 20A / 30A)

Como usar com Arduino – Sensor de Corrente (AC e DC) ACS712 (5A / 20A / 30A)

img00_como_usar_com_arduino_sensor_de_corrente_ac_e_dc_acs712_5a_20a_30a_medidor_amperimetro_potencia

– Descrição:

Sensor de Corrente (AC e DC) ACS712 possibilita realizar a leitura de corrente alternada (AC) e contínua (DC). Este sensor utiliza efeito hall para fazer a detecção do campo magnético que é gerado pela passagem da corrente e no pino de saída do mesmo é identificado uma tensão proporcional à entrada. Os terminais de ligação são totalmente isolados da saída do MCU (microcontrolador).

OBS: para esta prática foi utilizado o ACS712-30A, contudo, os passos mencionados aqui são válidos para o ACS712-5A e ACS712-20A.

– Especificações e características (ACS712-30A):

– Controlador: ACS712-30A
– Tensão de operação: 5VDC
– Faixa de medição: -30A a +30A
– Tempo de resposta: 5µs
– Saída analógica proporcional: 66mV/A
– Largura de banda: 80KHz

– Aplicações:

Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário fazer a detecção de corrente AC ou medir o valor de corrente AC (amperímetro). Este sensor é comumente aplicado em projetos de automação residencial, onde é necessário monitorar o consumo de um equipamento elétrico (dentro das especificações do sensor), por exemplo. Para isto, o mesmo deve ser aliado a um Sensor de Tensão AC de forma que seja possível fazer o cálculo de potência.

– Proposta da prática:

Utilizar o Sensor de Corrente (AC e DC) ACS712 (5A / 20A / 30A) em conjunto com o Arduino e medir a corrente AC consumida por uma lâmpada.

– Lista dos itens necessários:

01 – Arduino com Cabo USB
01 – Sensor de Corrente (AC e DC) ACS712 (5A ou 30A)
03 – Cabos Jumper macho-fêmea
01 – Lâmpada
01 – Receptáculo (boquilha)
01 – Cabo paralelo de 1,5mm ou 2,5mm
01 – Tomada (Rede alternada de 127V)

– 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_corrente_ac_e_dc_acs712_5a_20a_30a_medidor_amperimetro_potencia

– 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 (Calibração):

1) No código há a variável de calibração CURRENT_CAL. Esta variável tem como função fazer uma compensação no cálculo de forma que o sensor possa ficar calibrado e efetuar medições o mais próximo do real.

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

3) Após efetuar o carregamento do código abaixo no Arduino, vai ser necessário o uso do multímetro para fazer a medição da corrente que está sendo consumida pela carga. Se você não sabe medir corrente com o multímetro, recomendo que assista alguns vídeos no Youtube que ensinam a fazer a medição de corrente. Em seguida com a lâmpada acesa faça o ajuste do valor de CURRENT_CAL até que consiga uma medição no monitor serial, próxima da medição mostrada pelo multímetro:

4) O ACS712 possui um pequeno ruído no sinal de leitura, logo, o ideal é encontrar este valor. Para isto, utilizando o código anterior já com a variável CURRENT_CAL calibrada, deixe a lâmpada desligada e veja no monitor serial o valor de corrente que está sendo apresentado mesmo com a lâmpada apagada. O valor que estiver sendo mostrado é o ruído produzido na saída do sensor. Este valor você deverá colocar no lugar do 0.08 que está definido na variável ruído no código que está mais abaixo.

– Código (Final):

5) Na variável float ruído substitua o valor 0.08 pelo valor de ruído que você encontrou anteriormente.

6) Para esta prática, foi utilizado uma lâmpada de 70W. No momento em que a medição da lâmpada estava sendo feita pelo sensor, o multímetro estava apresentado uma corrente de 570mA e no monitor serial a corrente RMS estava variando entre 550mA e 570mA. A tensão AC medida pelo multímetro foi de aproximadamente 121V. Logo, fazendo o cálculo de potência (P = V * I à P = 121 * 0,57 à P = 68,97W), temos que a potência da lâmpada estava se mantendo em 68,97 watts.

– 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 31 comentários para esta postagem
  1. Renan Pissarra Tessarolo às 21:02

    Eu coloquei o timestamp para acompanhar de quanto em quanto tempo fica dando a amostragem e esse tempo fica variando mais do que de 1 em 1segundo.

    Precisava alterar isso, como eu faço para mostrar a corrente sem essa linha de codigo? Tem como?

  2. Renan Pissarra Tessarolo às 21:00

    Mais uma dúvida:

    emon1.calcVI(17, 100); //FUNÇÃO DE CÁLCULO (17 SEMICICLOS / TEMPO LIMITE PARA FAZER A MEDIÇÃO)

    Eu estou tentando alterar isso já tem um tempo, mas está complicado, eu preciso que registre de 1 segundo em 1 segundo. Poderia me dar um norte?

    • Euler Oliveira Autor às 08:41

      Você está confundindo.

      Se está utilizando uma rede 60Hz não deverá alterar este parâmetros.

  3. Renan Pissarra Tessarolo às 13:41

    Boa tarde, eu procurei no seu texto sobre esse valor de 18.40, ele é um valor padrão que você tem ou você calculou e chegou nele?

    Estou tentando medir a corrente de um led, não tá muito calibrado. Pode ser o problema da carga pequena?

    • Euler Oliveira Autor às 14:51

      Olá Renan.

      Agradeço pelo comentário!

      Está informado no texto: “No código, a variável CURRENT_CAL está com o valor de 18.40, contudo, pode ser necessário que você altere ela para um valor menor ou maior. Isto vai depender do valor de corrente AC que será apresentado no monitor serial do ambiente de programação do Arduino.

      Correntes muito baixas não serão identificadas pelo sensor.

  4. Amauri às 16:47

    Na descrição fala +30A/-30A significa que ele mede a corrente nos dois sentidos? Então ele inverte a polarização quando muda o sentido da corrente? Isso é muito interessante para projetos de medidores de duas vias.

  5. Amauri às 16:38

    Obrigado por compartilhar este exemplo de utilização do ACS712. No caso eu queria monitorar o consumo geral da minha casa. Vi que o sensor fica em série. Acredito que desde que a corrente não ultrapasse o limite estabelecido deve dar certo ne? Os parafusos de fixação desse sensor suportam cabo de 10 mm2?

  6. Filipe às 20:21

    Consigo medir correntes na faixa de 4 a 20 mA? Com uma boa confiabilidade?

    • Euler Oliveira Autor às 09:20

      Olá Filipe.

      Agradeço pelo comentário!

      Para uma corrente tão baixa o ideal é usar junto ao sensor e o Arduino, um CI ou módulo de portas analógicas externas e com resolução de 16 bits.

  7. Kleber às 18:24

    Olá, preciso verificar 21 lampadas da minha (se estão ligadas ou apagadas) residencia. comprei 21 sensor de 5a. parece que essa ligação é com a porta analógica minha placa não tem essas 21 portas o que devo fazer?

          • Kleber às 17:31

            Olá, Euler Oliveira. Estou tendo problemas para verificar o estado da lâmpada com o acs712.
            Baseado 100% no seu código (Estou sem multímetro para alterar o VALOR DA CALIBRAÇÃO ) deixei o console rodando por uns 10 minutos. Com a lâmpada de led desligada as medidas no console ficaram assim: Valor menor de 0.13 e valor maior de 0.31. Então eu só teria que verificar se o valor lido é menor do que 0.31 se for a lâmpada está apagada.
            Ex: com a lâmpada desligada. https://i.imgur.com/YSVWm6g.gif

            Então fiz os testes com a lâmpada ligada, primeiro fui colher os dados do valor menor e maior. O valor menor teria que ser maior do que o valor maior com a lâmpada desligada ou seja maior do que 0.31. Para minha surpresa o valor menor foi de 0.16 e o maior de 0.36. Então terá momentos que a lâmpada está acesa e o programa achará que está apagada 🙁
            Ex: com a lâmpada ligada. https://i.imgur.com/JknZlJQ.gif

            Se eu partir para lâmpadas fluorescentes consigo verificar o estado das lâmpadas por essa consumir um pouco mais.

            Alguma dica?

          • Euler Oliveira Autor às 09:23

            Olá Kleber.

            Agradeço pelo comentário!

            Você vai precisar de um multímetro para fazer a calibração no código e precisa verificar certinho o valor do ruído produzido no sensor enquanto a lâmpada estiver desligada para que este valor seja inserido no código (variável “ruido”.

            Outro ponto importante é que para lâmpadas de potência inferior a 50W (em 127V) o sensor não irá conseguir fazer leituras confiáveis ou pode até mesmo nem conseguir fazer a leitura.

  8. otoniel rodrigues às 12:12

    bom dia obrigado por repassar conhecimento,uma duvida como seria a ligação se fosse usar só o acs ou seja sem o modulo pra montar em outra placa no caso

    • Euler Oliveira Autor às 13:26

      Olá Otoniel.

      Agradeço pelo comentário!

      Nesse caso o ideal é que você leia o datasheet do ACS712 e em seguida prossiga nas implementações desta placa própria.

      Não temos nenhum tutorial similar a este tipo de projeto que quer implementar.

  9. Luiz Henrique às 00:01

    Oi, tudo bem Euler Oliveira , então queria saber ae esta medindo AC , queria saber quasi ajustes pra eu medirem DC, pq quero medir e ter resultados em mah… pra possivel calculo do projeto com bateria….

    • Euler Oliveira Autor às 09:09

      Olá Luiz Henrique.

      Agradeço pelo comentário!

      Conforme informado no tutorial, foi medido corrente AC.

      No momento não temos nenhum tutorial usando o sensor para medir corrente DC.

  10. PEDRO às 15:39

    Olá. Eu preciso instalar um sensor de corrente que meça em 127v quando a corrente atingir 1ah para ligar e desligar um inversor de tensão on-grid num sistema fotovoltaico. Ou seja, o inversor só vai ligar quando a corrente exigida pela carga ultrapassar 1ah. Essa paquinha faz isso?? Dá para acionar um relê de estado sólido ou daqueles comuns com ela??

    • Euler Oliveira Autor às 08:08

      Olá Roberto.

      Agradeço pelo comentário!

      Fazendo a devida programação para ambos é possível sim.

  11. Geovanna às 09:33

    Bom dia, poderia me auxiliar em um projeto que estou desenvolvendo com estes equipamentos?

    • Euler Oliveira Autor às 09:46

      Olá Geovanna.

      Agradeço pelo comentário!

      Auxilio em projetos nós não fazemos, apenas compartilhamos tutoriais ensinando a montar práticas específicas para que o usuário possa ter um norte e começar a implementar o próprio projeto.

  12. varley gianini às 13:16

    Olá, Boa Tarde gostaria de saber como faço para adicionar mais de um sensor preciso adicionar 5 sensores. Aguardo sua resposta Obrigado!!

    • Euler Oliveira Autor às 14:14

      Olá Varley.

      Agradeço pelo comentário!

      Recomendo que leia a documentação da biblioteca para entender como a mesma funciona e como adicionar novas instâncias e variáveis no código para gerenciar mais de um sensor de corrente.

  13. AGDA ALOHA às 23:35

    Olá, tudo bem?

    Muito legal o projeto, parabéns!

    Poderia, por gentileza, me explicar, como chegou em 18,40 para a current_call?

    Obrigada

    • Euler Oliveira Autor às 08:31

      Olá Agda.

      Na postagem foi explicado o porque e como deve ser ajustada a variável CURRENT_CAL.

      Releia as informações a partir do “– Código (Calibração):”.

      • Augusto às 08:55

        Olá Euler.

        Ainda não consegui compreender o motivo desse valor

        • Euler Oliveira Autor às 19:07

          Olá Augusto.

          Agradeço pelo comentário!

          Neste caso, recomendo que leia a documentação da biblioteca EmonLib, pois nela é falado a respeito e pode ser que fique mais fácil de compreender.