Medidor de corrente e energia com Arduino: Sensor de corrente e tensão

Sensor de Corrente

Sensor de Corrente

Neste artigo vamos montar um medidor de energia usando o Arduino UNO. Medidores de energia fazem parte do dia a dia de qualquer residência, prédio ou comércio. Vários modelos de empresas tradicionais como a Clamper e Nansem estão disponíveis no mercado com faixas de preço variadas.

Os componentes chave do medidor são os sensores de corrente e tensão. Dependendo da tecnologia e das especificações de medição, o produto final pode ficar mais caro ou mais barato. Para essa montagem vamos utilizar um sensor de corrente não invasivo 100A SCT-013.

Introdução

O medidor de energia consiste basicamente em um sensor de corrente e um de tensão conectados a um circuito microprocessado, que no caso é o Arduino UNO. Fazemos a leitura das duas variáveis elétricas básicas e a partir delas determinamos a potência elétrica instantânea e a energia consumida em um determinado intervalo de tempo, que é dado  pela potência instantânea integrada no período de tempo de medição.

Caso a potência elétrica seja constante, basta multiplicar a potência pelo tempo de consumo. Assim, uma lâmpada de 100W ligada por 2 horas irá consumir 200 Wh(watt-hora). Caso a potência elétrica seja dada por uma função, digamos p(t), a energia é calculada fazendo-se a integral de p(t) no período de medição.

No nosso caso, vamos medir a potência instantânea a partir dos sensores de tensão e corrente. A energia será calculada por meio de um somatório(que na prática é o  que uma integral faz). Assim, vamos considerar um passo de integração de 1 segundos. Para cada passo vamos medir a potência elétrica e encontrar a energia correspondente a esse intervalo e  ir somando todos esses valores em uma variável, que será apresentado na LCD.

Vamos apresentar em um display LCD os valores de corrente e energia calculada a partir do momento que o Arduino é energizado.

Sensor de Corrente

Sensor de Corrente

Sensor de corrente 100A SCT-013

O sensor de corrente SCT-013-000 tem capacidade para medir correntes até 100A RMS. É um sensor não invasivo, ou seja, ele não é eletricamente conectado ao circuito medido. Na prática, trata-se de uma transformador de corrente com razão de 100 para 0.05(no caso do sensor usado nesse exemplo, verifique a razão de espiras do seu próprio exemplar), ou seja, uma corrente no primário de 100 A aparece no secundário como uma corrente de 50 mA.

Sempre lembrando que quando falamos de corrente, estamos falando dos valores RMS, ou seja, o pico de corrente medido pelo sensor é maior, cerca de 142 A, o que corresponde ao valor RMS multiplicado por 1.4142(raiz quadrada de dois). Consulte o seu livro de circuitos CA para rever esses conceitos, caso necessário.

O sensor possui uma abertura por onde o fio com a corrente a ser medida deve ser passado(em uma casa, seria ou a fase ou o neutro). Esse fio funciona como o primário do transformador, gerando no secundário uma corrente proporcional, de acordo com a razão de transformação do circuito.

Uma diferença importante é que este sensor tem sinal de saída de corrente e não de tensão. Assim, é preciso um circuito adicional na saída para converter a corrente de saída em uma tensão passível de ser lida pelo Arduino(vamos falar mais sobre isso logo abaixo).

Especificações:

  • Corrente de entrada: 0-100A;
  • Corrente de saída: 0-50mA;
  • Material do Core: Ferrite;
  • Dimensão abertura: 13 x 13mm;
  • Temperatura de trabalho: -25 a +70°C;

O site openenergymonitor possui um artigo completo sobre como funcionam os sensores baseados em CTs(Current Transformers). Confira aqui!

Aplicações

Medidores de energia são usados em qualquer projeto em que seja necessário monitorar o consumo energético de uma instalação ou circuito. O sensor de corrente  100A SCT-013 e o sensor de tensão P8 podem ser usados, por exemplo:

  • Pequenos projetos de automação residencial;
  • Desenvolvimento e prototipação de medidores de energia;
  • Sistemas de proteção contra surtos de corrente e tensão;
  • Sistemas de iluminação;
  • Estudos de eficiência energética;

Descrição do Projeto

O nosso projeto de hoje consiste no seguinte:

Usar um sensor de corrente e  apresentar na tela do computador os valores de corrente e energia consumida desde que o circuito de medição foi ligado até aquele instante.

Aspectos de Hardware

Um circuito adicional que vamos usar para converter a corrente para um valor de tensão que possa ser lido pelo Arduino é explicado nessa referência. Basicamente, primeiro precisamos saber qual a relação entre a entrada e saída. Para isso, apenas dividimos a corrente de entrada pela razão de transformação. No nosso caso, 100/0,05 = 2000. Assim, sabemos que a corrente medida é a corrente de saída multiplicada por 2000.

Para podermos ler o sinal de saída, temos que converter a corrente de saída para uma tensão dentro da faixa de medição do arduíno. Para isso vamos usar um resistor de carga em conjunto com um circuito. Aqui temos um detalhe, a corrente é alternada, ou seja ela tem ciclos positivos e negativos. Como o arduino não lê tensões negativas, temos que garantir também que a tensão seja sempre positiva.

Dimensionando resistor de carga

Para calcular o resistor de carga, vamos determinar que a tensão máxima sobre ele tem que ser 2,5V(tensão máxima lida pelo arduino dividido por dois).  Para garantir que a tensão no pino do arduino varie entre 0-5V, vamos usar um pequeno divisor de tensão para somar 2,5V à tensão do resistor de carga. Assim, teremos uma tensão variando em torno de 2,5V.

Temos que saber também o pico de corrente ao qual o resitor de carga será submetido. Sabendo que a tensão RMS máxima de saída é 0,05A, o pico de corrente é 0,0707 A. Assim, o resistor de carga que vamos usar é de:

Rcarga = Vmaxsensor/Imaxsensor = 2.5V / 0.0707A = 35.4Ω

O valor comercial mais próxima é 33Ω. Esse será nosso resistor de carga.

Nos valores de pico, a potência instantânea dissipada pelo resistor será 2,5*0,0707 = 0,177 W.  Saber esse valor é importante para comprar um resistor que seja capaz de suportar a potência que será dissipada. Com esses valores, a tensão no resistor vai variar de 2,33V no pico positivo(33*0,0707) e -2,33V no pico negativo(33*-0,05). E a tensão no pino do arduino vai variar de 2,5-2,33=0,17V até 2,5+2,33=4,83V. Ou seja, garantimos que a corrente alternada senoidal seja convertida em um tensão senoidal que varia no intervalo de medição do arduino.

Todos esses valores são sugeridos pelo openenergymonitor, que desenvolveu uma biblioteca que calcula o valor de corrente medido a partir desse sinal de tensão que acabamos de construir.

Temos ainda que encontrar um valor de calibração, que é passado como argumeto da função emon1.current(pino, calibracao) que nós vamos usar. O cálculo desse parâmetro é feito da seguinte forma:

Valor_Calibração = 2000/33 = 61

Em que 2000 é a relação de transformação(de 100 A para 50mA, a corrente é dividida por 2000) e 33 é o valor do nosso resistor de carga, calculado logo mais acima. Assim, estamos prontos para usar a função no nosso programa. Para mais detalhes, veja essas duas referências: artigo 1 e artigo 2.

Repare que esse é um “baita sensor”, com capacidade de medir até 100A. A corrente de saída é bem pequena, 50 mA. O que significa que corrente menores, como 1 A por exemplo, resultaram em variações de tensão na porta do Arduino extremamente pequenas. Se tivermos uma corrente de 1A por exemplo. A corrente no secundário do TC será 50mA divido por 100, ou seja, 0,5mA. No resistor de carga esse corrente gera uma queda de tensão de 16,5mV, muito difícil de ser medida e extremamente vulnerável a ruídos de circuito e externos. Assim, o SCT-103 100A é adequado principalmente para cargas maiores.

Caso você queira validar um projeto em bancada ou uma carga de potência pequena, por exemplo, recomendamos usar um SCT com uma relação de transformação diferente. Por exemplo, o SCT-013-020, que transforma correntes de até 20A em tensões de 1V.

Lista de componentes

Os componentes necessários para o projeto são:

  • Arduino Uno;
  • Sensor de corrente 100A SCT-013;
  • Resistor de 33R e pelo menos 1/4 W;
  • 2 resistores de 100K;
  • 1 capacitor de 10uF;

Circuito

Um componente adicional que poderia ser adicionado ao circuito é um amplificador de tensão entre o divisor de tensão o resistor de carga. Ao utilizar resistores de valores elevados, o efeito de carga diminui, mas idealmente, para desacoplar os dois circuitos(divisor de tensão e resistor de carga), é mais recomendado usar um amp-op na configuração seguidor de tensão ou um optoacoplador adicional.

Feito essas ressalvas, o circuito fica da seguinte forma:

Montagem do circuito com sensor de corrente e LCD

Aspectos de Software

Vamos utilizar a biblioteca desenvolvida pelo energymonitor, disponibilizada aqui.

Copie e cole o software abaixo e carregue no arduino.

#include "EmonLib.h" 
#include <LiquidCrystal.h>

#define Vrede 129 //define a tenso RMS da rede(valor lido com multimetro)
#define InputSCT 2 //define o canal analgico para o sinal do SCT
#define InputP8 3 //define o canal analgico para o sinal do SCT
#define LCD_RS 9
#define LCD_E 8
#define LCD_D4 3
#define LCD_D5 4
#define LCD_D6 5
#define LCD_D7 6
#define I_calibration 60

 
EnergyMonitor EnerMonitor;//Cria uma instancia da classe EnergyMonitor
LiquidCrystal lcd(LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7);
double Irms = 0 ;
float Tempo = 0;

void setup() 
{
  lcd.begin(16, 2);
  lcd.clear();
  Serial.begin(9600);   
  EnerMonitor.current(InputSCT, I_calibration);
  //Informacoes iniciais display
  lcd.setCursor(0,0);
  lcd.print("Irms(A) =");
  lcd.setCursor(0,1);
  lcd.print("Ener(wh) =");
} 
 
void loop() 
{ 
  Irms = EnerMonitor.calcIrms(1480);
  lcd.setCursor(8,0);
  lcd.print(Irms);
  Serial.print("Irms");
  Serial.println(Irms);
  Serial.print("Analog Irms");
  Serial.println(analogRead(InputSCT));
  lcd.setCursor(8,1);
  lcd.print(Irms*Vrede*(Tempo/3600));
  
  Tempo++;
  
  delay(1000);
}

No código, vale a pena salientar os seguintes pontos.

  • As funções da biblioteca EmonLib.h são usadas por meio de um objeto do tipo EnergyMonitor;
  • Para a medição de corrente, devemos inicializar o objeto por meio da função: EnerMonitor.current(pino, calibracao);
  • Para ler a corrente chamamos a função EnerMonitor.calcIrms(1480), em que 1480 é o número de amostras usadas para determinar o valor da corrente;
  • Para calcular a energia, nós multiplicamos a corrente medida pela tensão da rede(ajustada na variável Vrede) e pelo tempo. Como o loop possui um delay de 1 segundo, a cada iteração multiplicamos a potência encontrada(Irms x Vrede) por 1/3600, de forma a termos o resultado em watt-hora( 1 segundo é igual a 1 hora dividido por 3600);

Nas demais linhas do código, configuramos os pinos e o LCD para fazer as leituras e apresentar os dados.

Botando pra rodar!

Montagem Final

Uma observação importante é a seguinte. O fio que deve ser inserido no sensor é apenas um, de forma alguma devemos passar os dois fios de alimentação da carga pelo sensor, pois com a corrente circula em direções opostas em cada fio, os campos magnéticos associadas a cada fio se cancelam e não proporcionam a excitação adequada do núcleo magnético do TC.

Considerações finais

Cabe lembrar que para a nossa medição de energia nós fizemos uma medição manual, que foi medir a tensão da rede elétrica com multimêtro e usar o valor encontrado no software como um valor dado. Um passo seguinte para incrementar o seu projeto é usar um circuito adicional para medir também o valor de tensão no barramento. Assim, ao invés de usar uma constante que deve ser sempre verificada manualmente, seu sistema já fará a medição de tensão no barramento e apresentará a medição de energia baseada nela.

O que achou de conhecer o sensor de corrente não invasivo e montar um circuito para medir energia? Qualquer dúvida, deixe nos comentários.

Avaliações: 5.0. de 3 votos.
Por favor, aguarde...
Vitor Vidal
Vitor Vidal
Engenheiro eletricista, mestrando em eng. elétrica e apaixonado por eletrônica, literatura, tecnologia e ciência. Divide o tempo entre pesquisas na área de sistemas de controle, desenvolvimento de projetos eletrônicos e sua estante de livros.