Neste artigo vamos montar um medidor de energia CA (corrente alternada) 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 CA não invasivo 100A SCT-013.
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 do sensor de 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
O sensor de corrente SCT-013-000 tem capacidade para medir correntes CA (corrente alternada) 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. Esse sensor não serve para medição de corrente contínua CC, somente para CA.
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:
O site openenergymonitor possui um artigo completo sobre como funcionam os sensores baseados em CTs(Current Transformers). Confira aqui!
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 pode ser usado, por exemplo:
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.
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.
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 corrente 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 essa referência: artigo 1.
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.
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
Vamos utilizar a biblioteca desenvolvida pelo energymonitor, disponibilizada aqui.
Copie e cole o software abaixo e carregue no arduino (revisado por Gustavo Murta):
#include "EmonLib.h" #include <LiquidCrystal.h> #define Vrede 129 // define a tensão RMS da rede(valor lido com multimetro) #define InputSCT 2 // define o canal analógico para o sinal do SCT = pino A2 #define LCD_RS 9 // definição dos pinos do LCD #define LCD_E 8 #define LCD_D4 3 #define LCD_D5 4 #define LCD_D6 5 #define LCD_D7 6 #define I_calibration 60 // fator de calibração da corrente - leia minhas dicas no tutorial 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); // configura LCD 16 colunas x 2 linhas lcd.clear(); // limpa tela do LCD EnerMonitor.current(InputSCT, I_calibration); // configura pino SCT e fator de calibração lcd.setCursor(0,0); // seleciona coluna 0, linha 0 lcd.print("Irms(A)="); // mostra texto lcd.setCursor(0,1); // seleciona coluna 0, linha 1 lcd.print("Ener(Wh)="); // mostra texto } void loop() { Irms = EnerMonitor.calcIrms(1480); // calculo da corrente RMS lcd.setCursor(9,0); // seleciona coluna 9, linha 0 lcd.print(Irms); // mostra valor da corrente lcd.setCursor(9,1); // seleciona coluna 9, linha 1 lcd.print(Irms*Vrede*(Tempo/3600)); // calculo de Watt/hora Tempo++; // incrementa Tempo delay(1000); // atraso de 1 segundo }
Você também pode conferir o código completo e atualizado visitando o repositório desse post no GitHub da Eletrogate.
No código, vale a pena salientar os seguintes pontos.
Nas demais linhas do código, configuramos os pinos e o LCD para fazer as leituras e apresentar os dados.
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.
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
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 multímetro 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.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!