Boa tarde Garagistas.

Preciso da ajuda de vocês para fazer a leitura de uma corrente AC com o sensor ACS712-30(Aquele que não tem a saída filter, apenas vout,gnd e vcc).Fiz a implementação do código (Abaixo), porém a leitura da corrente está variando entre valores negativos, zero e valores positivos.Gostaria de saber o que posso fazer para gerar um valor médio fixo.

Grato!

//Codigo ACS712-30

int VQ;   //2.5 volts na saída quando corrente for 0A
int ACSPin = A2;

void setup() {
Serial.begin(9600);
VQ = determineVQ(ACSPin); 
delay(1000);
}

void loop() {
Serial.print("ACS712@A2:");Serial.print(readCurrent(ACSPin),3);Serial.println(" mA");
delay(150);
}

int determineVQ(int PIN) {
Serial.print("estimating avg. quiscent voltage:");
long VQ = 0;
//read 5000 samples to stabilise value
for (int i=0; i<10000; i++)

{
VQ += abs(analogRead(PIN));
delay(1);
}


VQ /= 10000;
Serial.print(map(VQ, 0, 1023, 0, 5000));Serial.println(" mV");
return int(VQ);
}

float readCurrent(int PIN) {
int current = 0;
int sensitivity = 66;//sensibilidade para o sensor de 30 A
for (int i=0; i<50; i++)

{
current += abs(analogRead(PIN)) - VQ;
delay(1);
}
current = map(current/50, 0, 1023, 0, 5000);
return float(current)/sensitivity;
}

Exibições: 12532

Responder esta

Respostas a este tópico

tenho um modelo ACS712, voce teve sucesso no seu codigo ?

Rogério, eu estou justamente escrevendo  um post no meu blog para esse sensor. Acontece que ele é um sensor de corrente contínua, então vc tem que ter algum mecanismo para amostrar adequadamente a leitura. Pesquise na net que vc acha algo, acho até que aqui no lab tem.

Me diz o link do teu blog para eu acompanhar.. 

Eu nem sabia que ele era leitor de corrente contínua, queria medir a corrente de uma lampada mesmo..

Vou dar uma lida no teu blog para entender melhor ele.. ate mais.

Meu blog é esse: http://automatobr.blogspot.com.br/

Eu ainda tenho que terminar o post, acho que até domingo eu acabo, e em seguida publico.

Cara, tive sucesso sim!Medi com precisão.Por sinal o ProfºMauro me ajudou!

int VQ;
int ACSPin = A2;

void setup() {
Serial.begin(9600);
VQ = determineVQ(ACSPin); //Quiscent output voltage - the average voltage ACS712 shows with no load (0 A)
delay(1000);
}

void loop() {
Serial.print("ACS712@A2:");Serial.print(readCurrent(ACSPin),3);Serial.println(" mA");
delay(150);
}

int determineVQ(int PIN) {
Serial.print("estimating avg. quiscent voltage:");
long VQ = 0;
//read 5000 samples to stabilise value
for (int i=0; i<10000; i++) {
VQ += abs(analogRead(PIN));
delay(1);//depends on sampling (on filter capacitor), can be 1/80000 (80kHz) max.
}
VQ /= 10000;
Serial.print(map(VQ, 0, 1023, 0, 5000));Serial.println(" mV");
return int(VQ);
}

float readCurrent(int PIN) {
int current = 0;
int sensitivity = 66;//change this to 100 for ACS712-20A or to 66 for ACS712-30A
//read 5 samples to stabilise value
for (int i=0; i<200; i++) {
current += abs(analogRead(PIN) - VQ);
delay(1);
}
current = map(current/200, 0, 1023, 0, 5000);
return float(current)/sensitivity;

Com esse código vc conseguirá monitorar a corrente AC.Só atente para a sensibilidade do sensor que estiver usando.

Abraço

Legal, hein Diego?

Vc foi rápido no gatilho, é por aí mesmo. Vc calibrou o bicho? Seria legal vc usar um multímetro para ver como estão as leituras.

Muito bom Diego, testado e aprovado... na verdade é o primeiro na net que vejo funcionar perfeitamente!

Usa esse código aqui:

for(int i=500; i>0; i--)
 {
 sensorValue_aux = (analogRead(sensorPin) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é vcc/2 para corrente =0
 sensorValue += pow(sensorValue_aux,2); // soam os quadardos das leituras no laco
 }
 
sensorValue = (sqrt(sensorValue/ 500)) * voltsporUnidade; // finaliza o calculo da méida quadratica e ajusta o valor lido para volts
currentValue = (sensorValue/66)*1000; // calcula a corrente considerando a sensibilidade do sernsor (66 mV por amper)

Veja o vídeo 

http://www.youtube.com/watch?v=yyhdfMbJ-TM

Se quiser o código inteiro que usei me avisa.

Alguém saberia me informar porque se utiliza "média quadrática" nesse cálculo?

Obrigado José Gustavo, me ajudou muito!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço