Veja nesse pequeno projeto como usar o sensor ACS712 para medir corrente alternada com Arduino.
O sensor de corrente ACS712 é uma ótima alternativa para realizar medições da corrente elétrica com Arduino de maneira fácil e segura.
Vejamos algumas de suas características:
- Utiliza o efeito hall para realizar a medição e gerar no pino de saída uma tensão proporcional à corrente detectada;
- Pode ser utilizado com corrente alternada (AC) e corrente contínua (DC) ;
- Seus bornes são isolados do microcontrolador;
- Ótima opção para instalações permanentes, dada a sua característica invasiva, ou seja, precisamos interromper o circuito para realizar a medição, diferente de outros sensores em que você deve apenas envolver um dos fios do circuito para medir a corrente;
- Disponível em vários modelos, de acordo com a faixa de amperagem a ser detectada (5, 20 e 30A).
Hardware necessário
- Arduino Compatível (nos meus testes, usei o Arduino Mega);
- Sensor ACS712 (Nos testes, usei o modelo de 30A);
- Extensão elétrica e um aparelho elétrico com potência ou corrente conhecidas (no meu caso, usei uma lâmpada de 15 Watts).
Onde Comprar:
Curto Circuito – Componentes Eletrônicos e Acessórios
Software Necessário
Para facilitar a programação e evitar a realização de muitos cálculos, utilizei a library ACS712-arduino disponível no seguinte endereço:
https://github.com/rkoptev/ACS712-arduino
Esquema de ligação
Vídeo Demonstração
Let’s Sketch!
#include "ACS712.h" // Estou usando ACS de 30A. Mude para o modelo que está usando. Valores possíveis: 5,20 e 30 // Sensor ligado na porta analópgica A0 ACS712 sensor(ACS712_30A, A0); void setup() { // É necessário calibrar o sensor antes de usar a primeira vez com o método abaixo Serial.begin(9600); Serial.println("Aguarde. Calibrando..."); sensor.calibrate(); Serial.println("Fim da calibração"); } void loop() { // A frequência da corrente alternada no Brasil é 60 Hz. Mude caso necessário // A voltagem, no meu caso é 127 delay(5000); float V = 127; float I = sensor.getCurrentAC(60); float P = V * I; Serial.println(String("Corrente = ") + I + " A"); Serial.println(String("Potência = ") + P + " Watts"); }
Referências
Conclusão
Para finalizar, queria alertar que este projeto deve ser realizado com extremo cuidado, pois envolve o uso de alta tensão.
A medição de corrente nem sempre é fácil, pois envolve vários fatores que podem interferir. Por isso, nem sempre o resultado é extremamente preciso.
Uma modificação que poderia ser feita é a inclusão de um sensor de tensão em paralelo com a lâmpada. Dessa forma o resultado seria mais próximo da realidade, devido às variações da rede elétrica.
Em breve, faremos isso aqui no blog.
Até a próxima!!!
Caro José Cintra, parabéns pelo tutorial ! Ficou muito bom.
Não conhecia essa biblioteca ACS712. Farei testes.
Abraços
Gustavo Murta
Olá Murta, Obrigado!
Sim. É uma biblioteca nova. Facilita bem a programação
como faço para coçocar um display
Aqui existe um tutorial sobre como usar o display lcd com qualquer projeto:
http://blog.filipeflop.com/display/controlando-um-lcd-16×2-com-arduino.html
Procure também sobre lcd e interface spi.
caro José Cintra
eu li a biblioteca nova e refiz meu projeto baseado no código que você disponibilizou neste artigo, que ficou muito bom, só que o meu sensor é o ACS712 5A, ele está oscilando demais sem passar nenhuma corrente, saberia me dizer o que eu posso ter feito de errado?
agradeço desde já
Se puder, envie o código que vc usou. Pode ser pelo LabDeGaragem mesmo.
#include “ACS712.h”
// Estou usando ACS de 30A. Mude para o modelo que está usando. Valores possíveis: 5,20 e 30
// Sensor ligado na porta analópgica A0
ACS712 sensor(ACS712_05B, A0);
void setup() {
// É necessário calibrar o sensor antes de usar a primeira vez com o método abaixo
Serial.begin(9600);
Serial.println(“Aguarde. Calibrando…”);
sensor.calibrate();
Serial.println(“Fim da calibração”);
}
void loop() {
// A frequência da corrente alternada no Brasil é 60 Hz. Mude caso necessário
// A voltagem, no meu caso é 127
delay(5000);
float V = 127;
float I = sensor.getCurrentAC(60);
float P = V * I;
Serial.println(String(“Corrente = “) + I + ” A”);
Serial.println(String(“Potência = “) + P + ” Watts”);
}
já utilizei vários códigos, mas um deles é este código que vc apresentou logo acima, mas mudei apenas o tipo de amperagem do meu que é 5 A e mesmo assim não funcionou
Caro,
No seu caso, mesmo sem carga ainda apresentar valores de corrente?
Olá Darci!
Não apresenta Zero
Olá pessoal!
Gostaria de saber qual seria o código caso necessite medir a tensão alternada.
Estou com o mesmo problema do colega acima, o josé cintra.
Estou com o mesmo problema do colega acima, o lucas andrade.