Medidor de corrente não invasivo com Arduino

Medidor de corrente não invasivo com Arduino

Já vimos no post Como Fazer um Medidor de Energia Elétrica com Arduino o esquema de utilização de um sensor de corrente não invasivo de 20A. Neste post, vamos apresentar um projeto muito parecido, um medidor de corrente utilizando o Sensor de Corrente Não Invasivo 100A SCT013:

Esse sensor também é do tipo não invasivo, ou seja, você não precisa interromper o circuito para realizar a medição, bastando envolver um dos fios de energia para medir a corrente.

Cálculo do resistor de carga

Segundo informações do datasheet, o sensor de corrente SCT-013-020 (20A) tem na saída uma variação de tensão, e o SCT-013-000 (100A), tem na saída uma variação de corrente.

Assim, no microcontrolador conseguimos ler quase que diretamente a variação de tensão, mas no de 100A vamos precisar de um componente adicional: o “burden resistor” (“resistor de carga”), para gerar a variação de tensão que precisamos para efetuar a leitura no Arduino.

Para calcular o resistor de carga, vamos seguir alguns passos:

1 – Determinar a corrente máxima que vamos medir
No nosso caso, é um sensor de 100A, logo vamos determinar esse valor como corrente máxima

2 – Converter a corrente máxima RMS para corrente de pico, multiplicando-a por √2

Primary peak-current = RMS current × √2 = 100 A × 1.414 = 141.4A

3 – Dividir a corrente de pico pelo número de voltas do CT (2000) para determinar a corrente de pico na bobina secundária:

Secondary peak-current = Primary peak-current / no. of turns = 141.4 A / 2000 = 0.0707A

4 – Para melhorar a resolução da medição, a voltagem através do resistor de carga no pico de corrente deve ser igual a metade da tensão de referência do Arduino (AREF/2). Como a tensão de referência no Arduino é de 5V, teremos:

Ideal burden resistance = (AREF/2) / Secondary peak-current = 2.5 V / 0.0707 A = 35.4 Ω

Resumindo o cálculo anterior:

Burden Resistor (ohms) = (AREF * CT TURNS) / (2√2 * max primary current)

Se preferir  pode utilizar uma ferramenta online que faz o cálculo deste resistor, neste link.

Circuito sensor de corrente 100A

Agora que já temos o valor do resistor de carga, vamos montar o circuito para ligação do sensor, que basicamente é o mesmo circuito do sensor de 20A, mas agora adicionando o resistor de carga. Temos então a seguinte lista de material:

  • Sensor de Corrente SCT-013-000
  • 2 resistores de 10K
  • Display Nokia 5110
  • 1 resistor de 33 Ω (para o  resistor de carga)
  • Capacitor 10 µF

Como não temos um resistor de 35.4 Ω disponível , o valor mais próximo é o de 33 Ω. Vamos usar esse valor para a montagem do circuito:

Circuito_Arduino_Sensor_Corrente_SCT013

Esse sensor vem com um plug P2 e você pode conectá-lo ao Arduino usando um adaptador, ou pode retirar o plug e ligar os fios diretamente, como fizemos no circuito acima.

Medidor de corrente com o sensor SCT-013-000 100A

Carregue o programa abaixo, que usa a biblioteca EmonLib (download). Descompacte a pasta e coloque dentro da pasta LIBRARIES da IDE do Arduino. Para utilizar o display gráfico, faça o download também das bibliotecas Adafruit_GFX (download) e Adafruit_PCD8544 (download).

//Programa : Medidor de corrente com Arduino e SCT-013 100A
//Autor : FILIPEFLOP

//Baseado no programa exemplo da biblioteca EmonLib

//Carrega as bibliotecas
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include "EmonLib.h"
#include <SPI.h>

EnergyMonitor emon1;

Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);

//Tensao da rede eletrica
int rede = 220;

//Pino do sensor SCT
int pino_sct = A1;

void setup()
{
  Serial.begin(9600);
  //Pino, calibracao - Cur Const= Ratio/BurdenR. 2000/33 = 60
  emon1.current(pino_sct, 60);
  //Ajuste iniciais display
  display.begin();
  //Ajusta o contraste do display
  display.setContrast(48);
  //Apaga o buffer e o display
  display.clearDisplay();
  //Define tamanho do texto e cor
  display.setTextSize(1);
  display.setTextColor(BLACK);

  //Retangulo principal
  display.drawRect(0, 0, 84, 48,  2);
  //Retangulo corrente
  display.fillRect(0, 0, 84, 15,  2);
  display.setTextColor(WHITE, BLACK);
  display.setCursor(18, 4);
  display.println("Corrente");
  display.setTextColor(BLACK, WHITE);
  display.setTextSize(2);
}

void loop()
{
  //Calcula a corrente
  double Irms = emon1.calcIrms(1480);
  //Mostra o valor da corrente no serial monitor e display
  Serial.print("Corrente : ");
  Serial.print(Irms); // Irms

  display.fillRect(4, 15, 55 , 20, 0);
  display.setCursor(8, 22);
  display.println(Irms, 2);
  display.display();
  display.setCursor(67, 22);
  display.println("A");
  delay(1000);
}

Para realizar a medição, abra o sensor e envolva um dos fios de energia. Será mostrado no display o valor da corrente que está passando naquele momento:

Circuito Medidor de Corrente com Arduino

Não esqueça de ajustar o valor da rede elétrica (110 ou 220V), na linha 17 do programa.

Gostou ? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP !

6
Medidor de corrente não invasivo com Arduino
45 votos, 4.73 classificação média (94% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

75 Comentários

  1. Clécio Silva - 18 de junho de 2017

    Boa tarde Filipe,
    Utilizando mais de um medidor de corrente é possível aproveitar o mesmo circuito do divisor de tensão (resistores de 10K e Capacitor 10 µF)?
    Este circuito é usado para manter a corrente alternada entrando no arduino sobre um nível de 2,5Vdc correto?

    Obrigado.
    Clécio Silva.

  2. Fabio - 12 de maio de 2017

    Boa tarde,

    Existe a possibilidade de utilizar um sensor de corrente para monitorar o uso de uma pulseira antiestática?

    • Aislan - 12 de junho de 2017

      Mano com esse sensor ai não tem como. Ele só mede correntes alternadas e altas. Essas pulseiras vão apenas fazer uma descarga estática pra terra, é corrente DC e baixíssima. Você vai precisar de um sensor de corrente DC ou amperímetro DC de alta precisão.

  3. Matheus - 10 de maio de 2017

    Existe um sensor de tensao 110/220 que converte para leitura no arudino? O funcionamento é o mesmo de um tp( transformador de potencia) ele transforma uma tensao alta pra uma tensao baixa variando de 0 a 100%. Esse sensor ajudaria a precisar a potencia consumida, ja que a tensao varia muito. 127v x 10a = 1270 w ou 110v x 10a = 1100 w. Uma diferença de 13% a menos.

  4. Joaquim Rodrigues Ramos - 14 de abril de 2017

    Boa noite Adilson!
    Adquiri um sensor de corrente 100A, porém não estou conseguindo copiar a biblioteca Emonlibe.
    Outra dúvida será que eu conseguiria utilizar o display de 16×2 com I2C neste projeto?
    Se alguém puder me ajudar, estou a mais de seis meses com o meu projeto parado por falta de informação.
    Se alguém puder me enviar o arquivo da biblioteca EmoLibe e também o Sckat utilizando o display citado ficarei muito grato. Depois posto para dizer se tudo deu certo.
    Meu email: rodriguespatos@yahoo.com.br

    • Alessandro - 5 de julho de 2017

      Tem sim Amigo, é só substituir o display, ultilizar a biblioteca certa, e a biblioteca do sensor vc pode copiar ela desse codigo acima e pesquisar, vc baixa e coloca ela no librairi que fica na pasta do Aplicativo do arduino, logo após isso, vc vai em uma opção do aplicativo, não lembro ao certo qual mais dá um procurada não é difícil de achar, e ativa ela para o codigo. E pronto…

  5. Rafael Wandekoken - 8 de abril de 2017

    ola boa tarde.

    No datasheet não consegui ver onde estava o numero de voltas do sensor que foi usado para calcular . por favor pode me mostrar?

  6. bernardo - 17 de março de 2017

    estou usando o fritizing mas não tenho o sensor sct-013 na lista de parts(componentes) . onde voce conseguiu esta parte? estou fazendo um projeto e gostaria muito de ter esse sensor no fritizing.

  7. Luiz - 27 de fevereiro de 2017

    Ola pessoal, gostaria de saber como faço para realizar a leitura de 40 tensões simultâneas com arduino, alguém pode me ajudar?
    Obrigado!

    • Aislan - 12 de junho de 2017

      Luiz, o arduino só tem um conversor analógico-digital, embora tenha mais de uma entrada para leitura analógica. Ele multiplexa esse conversor e faz uma leitura de cada vez, por isso na prática ele nunca fara uma leitura simultânea. Porém ele faz essa multiplexação bem rápido, e para muitos casos parece que são leituras simultâneas separadas. Se no seu caso o sinais que você vai ler não fiquem variando bem rápido como sinal de áudio por exemplo, você pode usar um ou mais multiplexadores analógicos para fazer a mesma coisa que o arduino. Usa um multiplexador com várias entradas e lé um sinal por vez, fazendo essa leitura bem rápido pode parecer que a leitura é simultânea (lembrando de respeitar os limites do auduino, dá uma olhada no datasheet).

  8. Bruno Oliveira - 15 de fevereiro de 2017

    Boa tarde.
    Fiquei em dúvida em por que foi escolhido 1480 amostras no comando da função:
    double Irms = emon1.calcIrms(1480);
    Gostaria de entender o motivo dessa escolha, desde já agradeço.

  9. VICTOR PANITZ MAGALHAES - 21 de dezembro de 2016

    Olá, verifiquei o datasheet do mesmo no site da fabricante, e lá consta que a bobina é 1800 voltas e não 2000.

  10. Pablo Gomes - 21 de dezembro de 2016

    Ola, preciso de uma informaçao, o sensor SCT-013 pode ser utilizado em um rede de 24v com amperagem acima de 100A deve chegar a 180A, vou explicar o motivo:
    Preciso apenas medir se ha corrente no cabo para contar o tempo que existe corrente e não preciso exatamente medir a corrente que esta trafegando no cabo.

  11. Cleodon - 20 de dezembro de 2016

    Boa Tarde,

    Estou com dificuldade com a calibragem do sensor de corrente, estou utilizando SCT-013-100.
    Quando desligo a lampada ele continuar marcando entre 2 a 3 A.
    Obrigado

  12. Joaquim Rodrigues Ramos - 5 de dezembro de 2016

    Boa noite meus caros amigos!
    Estou tentando montar um medidor de energia utilizando o sensor não invasivo SCT 100A com um display lcd 16X2 com o módulo I2C.
    Porém não consigo baixar e gravar na IDE do ARDUÍNO a biblioteca EmonLib, também não encontrei uma programação compatível com este display.
    Peço aos amigos encarecidamente, se puder me enviar o arquivo já baixada do biblioteca EmonLib, e também a programação para que eu possa tentar dar continuidade ao meu projeto. Preciso apenas de medir a potência Ativa e também a Corrente.
    E-mail para contato: rodriguespatos@yahoo.com.br
    Desde já agradeço a todos.

  13. Sergio Nakahara Costa - 23 de outubro de 2016

    Felipe boa tarde.

    Gostaria de saber se consigo medir a potência com o projeto aqui proposto? Você poderia me orientar?

  14. Isac Pereira - 16 de outubro de 2016

    Bom dia,

    Teria como passar uma imagem com esquema do display vermelho do nokia 5110 para este projeto?

    Abraço!

  15. cassio neiva - 10 de outubro de 2016

    Olá, esse medidor só serve para equipamentos que usam corrente AC?
    Grato.

  16. anderson xavier - 28 de setembro de 2016

    Usando Arduino Nano é o mesmo esquema?
    Outra Pergunta é Considerando portas Analógicas de 3.3V e 1V é o mesmo esquema?

    Obrigado!

  17. Lyandra - 15 de setembro de 2016

    Olá, gostaria de saber se pode usar o display LCD de 16 pinos?

  18. Guilherme Sanches Pereira - 13 de setembro de 2016

    Olá! Eu repliquei o circuito e deu tudo certo. Gostaria de saber como eu coloco 2 sensores nesse circuito? Os dois de 100A. Desde já agradeço. Ótimo post :)

  19. Marcelo Moura - 21 de agosto de 2016

    Caro Adilson Thomsen,

    Gostaria de saber se o amigo postou os componentes Fritzing relativo ao sensores YHDC SCT-013 20A e YHDC SCT-013 100A. Em caso positivo, como posso encontrá-los? Em caso negativo, você poderia enviá-los para mim?

    Ocorre que estou treinando com o Fritzing e não os encontrei, até agora.

    Desde já, agradeço sua ajuda.

    Parabéns pelo belo trabalho.

  20. Jorge Lucas Dionisio Marques Silon - 17 de agosto de 2016

    Olá, gostaria de saber se como faço para ao invés de calcular a Corrente gostaria de calcular a potencia Ativa.

  21. Edenilson - 16 de julho de 2016

    Esse medidor de corrente serve para corrente continua? preciso de um para medir 200 A, tem como me indicar um??

  22. Bruno Wesley - 3 de julho de 2016

    Boa Noite, Galera.

    Estou desenvolvendo um projeto parecido e estava achando estranho esses cálculos.

    Lendo o datasheet desse sensor, o modelo de 100A, gera uma corrente na saida, segundo o datasheet de 33mA.
    Bom, se a corrente maxima de saida é 33mA, para se ter 5V, deve-se colocar um resistor de 150R(aproximado) na saida do sensor.
    Não testei ainda, mas vou testar e colocarei os resultados aqui.

  23. jader - 12 de maio de 2016

    Ola bom dia!!

    Estou fazendo um projeto com esse medidor e o arduino para medir a corrente e potência de um chuveiro e apresentar essa informação no lcd 4×16, ( estou realizando teste com uma lampada em uma rede de 127V e a mesma possui 60W) o sensor quando estar em volta da fase ler a corrente normalmente (208 mA) , POREM quando tiro o O SENSOR do A1 continua aparecendo no LCD um valor de mais o menos 130 mA.
    MINHA PERGUNTA É… TEM COMO ESSE VALOR SER ZERO QUANDO TIRO O SENSOR DO PINO A1?? O QUE FAZER PARA ZERAR?? E DE ONDE VEM ESSE VALOR??

    • Mauro Ferrari da Rocha Filho - 12 de maio de 2016

      Olá Jader.

      Também tenho o mesmo problema. No meu caso, se tirar o TC da fase em medição o display ainda apresenta um determinado nível de corrente, muito baixo mas diferente de zero. Vou fazer uns testes com algum tipo de filtro ou alterando aquele capacitor de 10uF.

  24. Bianca Castro - 11 de maio de 2016

    Boa noite, eu estou realizando o desenvolvimento de um projeto no frizing e não estou achando a biblioteca do SCT, vocês poderiam me informar como acha-la?

  25. Mauro - 14 de abril de 2016

    Olá

    Com eu faço para ler três sensores de corrente ao mesmo tempo.

    Obrigado

  26. Eduardo - 2 de abril de 2016

    Por quantos volts deve ser esse capacitor de 10 Micro.

  27. Elisandro Murliky - 22 de março de 2016

    Montei este mesmo circuito e a leitura sem algo no sensor fica em torno de 0,15 de corrente, com uma lampada fica na base de 0,20 de corrente com os 5v do arduino, usando uma fonte externa de 5v os valores ficam muito alto casas de 100 de corrente, alguém aqui conseguiu deixar os valores zerados quando não possui nada e a leitura correta ou bem proxima quando algo no sensor?
    Se alguém poder deixar o email seu para trocarmos ideias ficaria grato.
    Abraços

  28. Diogo moura - 12 de março de 2016

    Boa tarde estou fazendo o mesmo projeto e suspeito que os dados gerados são inconsistentes, quando o sensor esta conectado gera valores absurdos e quando desconectado continua gerado valores, estou alimentando a placa pela saida usb.
    poderia me ajudar?

  29. Cicero P.Holanda - 12 de março de 2016

    Gostaria de saber se existe alguma forma de medir tensão continua -48 estou com dificuldade realizar essa automação.Atenciosamente Obrigado.

  30. Marcos - 7 de março de 2016

    Como construir com Arduino e sensores um medidor de consumo de energia doméstica?
    Grato
    Marcos

  31. José Mauro Morais Mani - 4 de março de 2016

    Olá,
    Gostaria de saber qual a distância que consigo ter do sensor de corrente até o circuito.
    Preciso desenvolver uma aplicação onde o sensor ficaria a uns 25 metros de distância do circuito.
    O que preciso é desenvolver uma solução onde grave de tempo em tempo a corrente e envie para um banco de dados na internet ou em uma rede local.
    Seria melhor levar o circuito até próximo do roteador ou levo um cabo de rede até a instalação ?
    Att.
    José Mauro

    • Adilson Thomsen - 4 de março de 2016

      Boa tarde José,

      25 metros me parece uma distância bem grande para esse sensor, que tem uma saída de corrente máxima de 33mA, segundo o datasheet. Qualquer interferência no meio do caminho pode causar uma grande variação na leitura.

      Você tem a opção também de usar um módulo wireless como o ESP8266 para enviar os dados pela rede.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  32. Lunara Freitas - 2 de março de 2016

    Boa noite. Gostaria de saber qual o simulador que vocês usam no teste desses circuitos. Pela foto, o esquema aparenta ter sido reproduzido em um. Gostaria muito de saber pois necessito realizar alguns testes e não encontro nenhum simulador que contenha o bloco do sensor citado no post. Abraços !!

  33. Klinger - 25 de fevereiro de 2016

    Bom dia! A minha dúvida é que todos os exemplos com o uso desse sensor foi utilizando equipamentos AC, gostaria de saber, se ele também mensura correntes DC?

  34. Rodrigo - 10 de fevereiro de 2016

    olá tenho uma duvida!
    fiz o teste com o sensor e com um alicate amperímetro e deu estes resultados:
    alicate — sensor (SCT-013-000)
    10,4 A——9.90 A
    7.2 A——– 6.9 A
    1.37 A—— 1.23 A
    14.25 A—–13.57 A

    é normal dar esta variação?

    • FILIPEFLOP - 11 de fevereiro de 2016

      Bom dia Rodrigo,

      O circuito mostrado no post serve para fins didáticos e demonstração do uso do sensor, não é possível comparar a precisão do circuito com o de um alicate amperímetro sem alguns ajustes no circuito do post.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  35. Guilherme - 19 de janeiro de 2016

    Ola, queria saber se consigo ligar mais de um sensor como este em uma mesma placa Arduino e o Arduino mandar os resultados para uma Raspberry Pi 2.. Tem como? ou preciso de varios Arduinos ?
    Obrigado, muito bom o post!

    • FILIPEFLOP - 19 de janeiro de 2016

      Boa tarde Guilherme,

      Não testamos com mais de um sensor, mas como ele utiliza somente uma porta analógica, creio que não haveria problema em utilizar vários no mesmo Arduino.

      Abraço e obrigado!

      Adilson – Equipe FILIPEFLOP

  36. sidnei - 10 de janeiro de 2016

    fiz esse projeto e incrementei algumas funções como somar o potencia total utilizada e tbm o soma em reais gastos desde o inicio da contagem , porém tenho um problema quando não há carga no sensor ele não zera, continua lendo corrente. alguém tem uma sugestão.

    • Fabio - 10 de janeiro de 2016

      Olá amigo Sidnei,
      Aconteceu o mesmo comigo. O que eu fiz foi imprimir a leitura do sensor direto no serial.
      O meu parava em 0,0008 depois de 5s. Entao coloquei uma programação pra captar o valor acima disso.
      Sei que está errado, mas foi a unica forma de zerar.
      Outra coisa que vc deve ter cuidado que o sensor gerar um valor ligado na porta USB do PC e outro qndo ligado direto em uma fonte Vcc.
      Espero ter ajudado.

      Abraço

    • Caíque Carvalho - 11 de fevereiro de 2016

      Essa eu sei… é por causa da corrente parasita nos condutores, já neste caso tu tem que analisar qual o valor dado no fio sem carga e estabelecer um parâmetro de zero, pois o mesmo feito em alicates amperímetros.

  37. elindoval - 7 de dezembro de 2015

    qual o melhor sensor para eu ler uma corrente de 600mA que sai de uma porta POE de 160v cc (me indiquem pois precisarei comprar 10 sensores para monitorar via arduiino e ethernet shield

  38. Marcos - 3 de dezembro de 2015

    Ola amigos !

    alguém pode me explicar para quer serve esse capacitor aqui nesse projeto? obrigado

  39. Fabio - 16 de novembro de 2015

    Parabens amigos…. sempre recorro a vcs com relação a tutoriais pra arduino e pra comprar produtos.
    Me tira uma dúvida, como faço pra zerar meu display? Sem nenhuma carga, ele lê 0,23A, colocando carga, ele muda.
    Coloquei uma carga de 40W, tensão de 127V,.. apareceu 0,34A, acredito está calibrado. Alguem sabe o q precisa fazer?

    Abraço a todos

  40. Leandro Salvador Heredia - 11 de novembro de 2015

    Ola, muito bom saber que esse blog esta sempre ativo e com pessoas postando soluções e tentando ajudar uns aos outros.
    Minha duvida é no blog tem um esquema para medidor 20a e agora um para medidor 100a. Eu tenho um medidor de 30a eu devo seguir o esquema do medidor de 20a correto ? Pois tem a saida em volts, ou devo seguir esse de 100a ?

    obrigado

  41. Alesaandro - 9 de novembro de 2015

    Fiz um ajuste que funciona no sensor de 20A em prevê posto

  42. Douglas - 9 de novembro de 2015

    Alguém conseguiu uma medição Boa ? Quando não tem carga de qualquer jeito continua contando, alguém conseguiu fazer uma,programação Boa ?

    Tava rezando que viesse esse post

    Vocês são ótimos!!

    • Wesley - 10 de novembro de 2015

      Boa tarde.
      Já verificou a fonte?
      Tive o mesmo problema quando o Arduíno tava sendo alimentado por USB.
      Utilize uma fonte com boa filtragem para prevenir ruídos de saída na fonte.
      Boa sorte.

  43. Wesley - 9 de novembro de 2015

    Vcs são os melhores!
    Estava almejando este post pois tenho tudo o que precisa para montagem.
    Muito obrigado. Qualquer dúvida volto.
    Grande abraço!

Deixe uma resposta