Já estou a algum tempo tentando desenvolver um medidor de consumo de energia para uso doméstico, como forma de aprendizagem e utilidade. Já tentei usar o ACS712 - 05A mas as leituras são muito instáveis, indo de zero a 1023 mesmo não tendo nada conectado. Testei todos os 5 sensores que tenho, são 3 de 5A e 2 de 20A, acredito que não seja código pois já testei muitos, incluindo daqui do LdG. Em tempo, tenho duas placas arduino UNO, uma ROBOCORE  e outra genérica, e testei com ambas. Outro detalhe, usando fonte exclusiva alimentando os sensores ACS com 5V.

  Estou pensando em usar o SCT-013 mas não sei da estabilidade dele em baixa amperagem, aceito sugestão de outro sensor que seja mais indicado.

Exibições: 1219

Responder esta

Respostas a este tópico

Olá Maurivan.

   Sim, você interpretou corretamente as instruções do Gustavo.

   Pelo que pesquisei até agora sobre o sensor e a biblioteca, descobri o seguinte ( Gustavo, me corrija se estiver errado ):

   1. O módulo "pega" a corrente AC que está passando pelo orifício do TC ( Transformador de Corrente ), e que está centrada em ZERO AMPERES, e a transforma em uma tensão AC, com nível DC igual a VCC/2, onde VCC é a alimentação do módulo. Neste caso temos na saída do módulo, com um ajuste conveniente do potenciômetro, uma tensão variável, mas sempre positiva, o que está OK para o Arduino.

   2. Aí temos o primeiro problema: A relação entre a corrente que se quer medir e a tensão entregue à entrada digital do Arduino depende do ajuste do potenciômetro. O ideal, neste caso, é medir com um osciloscópio, para ajustar a máxima tensão do módulo igual a máxima tensão que a entrada analógica do Arduino aceita. No caso do UNO, se não for mudada a tensão de referência, este valor é +5 VDC. Na falta do osciloscópio, usa-se um medidor de pico baseado em Arduino. Um sketch que fica lendo a entrada analógica onde está o módulo e enviando pelo monitor serial ou Serial Plotter. Aí ajusta-se o potenciômetro até que não haja nenhuma leitura do máximo do A/D, mas muitas leituras menores mais muito próximas.

Este é o mais fácil. Um pouquinho melhor, seria mandar para o MS( Monitor Serial ) apenas os máximos encontrados.

   3. Feito isto, o potenciômetro está ajustado. Passa-se à etapa de calibração. Pelo que entendi, esta biblioteca usa o método de fazer um grande número de amostras e calcular o valor RMS utilizando uma aproximação discreta da fórmula de cálculo, o que todos os multímetros digitais fazem. Então, conforme o Gustavo, o ideal é usar um ( bom ) amperímetro AC para medir a corrente da carga e ir ajustando o fator de calibração da biblioteca até que as leituras se equiparem.

   Que tal tentar esta abordagem?

Abração.

D.T. Ribeiro.

Boa tarde a todos.

D.T. Ribeiro, esta parece ser uma boa abordagem, estou providenciando amperímetro AC pra tentar fazer esta calibragem. Assim que eu estiver com ele em mão , vou partir pra prova.

Abraço.

Maurivan

Olá amigos!

Primeira parte concluída: Simulador do módulo sensor de corrente ( que eu não tenho ) concluída.

Entrada de 220 VAC do trafo ligada em 127 VAC. Trafo com 15% a mais de tensão no secundário em relação a nominal.

Amanhã partimos para conectá-lo no Arduino e ver como a emonLib vai se comportar.

Abração!

D.T. Ribeiro

Olá, pessoal!

   Continuando com minhas experiências, fiz o seguinte:

- 1. Usei o setup de hardware do meu último post, em que a tensão no pino A0 do UNO é aproximadamente senoidal variando de 0 V a 5.0 V.


Este setup foi mantido inalterado ao longo de todo o experimento.

- 2. Usei o sketch anexo READ_CURRENT.ino, que mede só a corrente RMS e usa a emonLib.

- 3. Retirei do Setup() do sketch o comando pinMode(sensorPin, INPUT), porque entradas analógicas não precisam ser programadas por pinMode().

- 4. Usei vários fatores de calibração para verificar sua influência nas medições, mas um único número de amostragens, 4096. Vejam planilha anexa.

- 5. A corrente usada na planilha foi, em cada caso, uma média aritmética simples de pelo menos 16 valores lidos.
   A corrente fica variando um pouco entre uma leitura e outra, mas isto pode ter vários motivos, desde ruído até erros sitemáticos e de arredondamento de cálculo, além de taxa de amostragem insuficiente.

   Minhas impressões:

   A princípio, parece que a emonLib faz o seu trabalho.

   Talvez fique melhor usando o ESP32, já que o UNO me parece um pouco lento para esta tarefa ( o Gustavo já havia demonstrado uma certa preocupação sobre isto em um dos posts dele ).

   Percebe-se que há uma razoável correlação linear entre o fator de calibração e a corrente informada.

   Isto é altamente positivo, pois pode-se corrigir facilmente a corrente informada pelo fator de calibração.

   Na célula da linha 8 e coluna 17 da planilha, coloquei a corrente que deveria ser medida para uma carga de 50 W ligada em 220 VAC e o fator de calibração deu 0.30428.

   Lógico que este fator de calibração só é válido se o ajuste do potenciômetro do módulo produzisse a tensão do setup de hardware para esta corrente, o que não é desejável, pois seria esta a corrente máxima a ser medida e está muito aquém da capacidade do módulo.

   O que sugiro ao Maurivan, se não tiver acesso a um osciloscópio, é usar o sketch ADC_MAX_MIN.ino anexo e realizar o seguinte procedimento:

1. Fazer passar uma corrente de aproximadamente 5 A pelo sensor ( uma carga resistiva de 1100 W em 220 V, por exemplo, tal como um ferro de passar roupas ou uma torradeira elétrica ).

2. Com o sketch ADC_MAX_MIN.ino rodando, ajustar o potenciômetro do módulo de maneira que o máximo fique logo abaixo da saturação do A/D do µC que, no caso do UNO, é 1023. Veja figura abaixo.
   Por exemplo, o máximo ficar em 1000.


3. Isto vai fazer com que a corrente máxima a ser medida fique em torno de 5 A.

4. Colocar para rodar o sketch READ_CURRENT.ino, fazer passar uma corrente conhecida pelo sensor ( pode ser a mesma usada para o ajuste do potenciômetro ) e ir alterando o fator de calibração até que a medição esteja correta.

5. Neste ponto, o sistema deverá estar calibrado! Pode-se fazer testes com outras correntes para verificação da calibração.

   Se tiveres alguma dúvida quanto a isto, Maurivan, volta a postar aqui que tentamos ajudar.

Abração.



D.T. Ribeiro.

Calibration_Factor.xlsx

READ_CURRENT.ino

ADC_MAX_MIN.ino

Bom dia DT, 

"- 5. A corrente usada na planilha foi, em cada caso, uma média aritmética simples de pelo menos 16 valores lidos."

Essa quantidade de amostras é insuficiente para o cálculo do valor RMS. 

Por isso, suas medições estão variando entre 0 e 1000. 

Veja na Biblioteca usada  pelo Maurivan. 

Sugiro que verifique com o cálculo do valor RMS é feito. 

Olá, Gustavo!

   Não confunda quantidade de amostras com medições.

   Cada medição foi tomada com 4096 amostras. Aliás, isto é reponsabilidade da biblioteca.

   O usuário só define quantas quer. No meu post está claro que usei sempre 4096.

   Depois, para cada valor do fator de calibração, foi feita uma média dos valores informados via emonLib, tomando-se no mínimo 16 deles.

   E também não disse que as minhas medições estavam variando entre 0 e 1000. Isto foi um procedimento anterior para ajuste do potenciômetro sem o uso do osciloscópio. Se você verificar, há 2 sketchs no post, um para o ajuste do potenciômetro e o outro para calibração.

   Quanto a verificar como o cálculo do valor de RMS é feito, eu sei muito bem. Há uns 10 anos participava de um grupo de projeto de Nobreaks, onde o software fazia medições de tensão e corrente RMS sem usar bibliotecas, inclusive implementando proteções contra sobre e subtensão e sobrecorrente por software, baseadas nestas medições.

   Na verdade, o valor RMS utilizado por esta biblioteca ( emonLib ), e por qualquer sistema digital  que faça este cálculo, é uma aproximação, pois este valor é definido por 

                                           Eq. 1

   Onde Vrms é o valor RMS da gandeza vT é o período de tempo no qual se quer calculá-lo e t é o tempo.

   Como os processadores digitais não conseguem fazer este tipo de cálculo, aproximam a integral por uma soma finita.

   Importante observar o seguinte:

   1. O valor RMS é uma espécie de média ao longo de um período de tempo.

   2. A função v(t) não precisa ser periódica.

   3. Pode ser aplicado para qualquer grandeza, embora não faça sentido para a maioria.

   4. Na época dos computadores analógicos que usei na universidade para resolver equações diferenciais, era possível a implementação da Eq. 1 sem aproximações.

Abração!

D. T. Ribeiro.

Boa tarde DT.

Me desculpe, eu entendi errado! 

Eu acho muito legal esse cálculo de RMS. Que na verdade é um cálculo de uma integral. 

É muito interessante estudar esse assunto. 

Abraços, 

Gustavo 

Olá, Gustavo.

   Sem problemas. às vezes a gente acha que foi claro mas, na verdade, só fomos claros para nós mesmos.

   Talvez muito do que eu quis dizer quando anexei os .ino, só estava na minha cabeça e, como provavelmente você ainda não aprendeu a ler mentes, ou não tem uma bola de cristal, ...

Abração!

D.T. Ribeiro.

Boa noite D.T. Ribeiro, estava no corre aqui e por isso a ausência momentânea. Não tenho osciloscópio então vou aplicar tua sugestão. Vou ver o que mais se parece aqui em casa com 1100 watts fixo porque o nosso ferro de passar tem variação então tenho receio que não seja fixo o consumo, então parto pra calibragem.

Abraço.

Maurivan

RSS

© 2022   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço