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;
}
Tags:
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?
Valor eficaz (RMS) é usado para medições de tensões alternadas.
http://pt.wikipedia.org/wiki/Valor_eficaz
http://www.electronics-tutorials.ws/blog/rms-voltage.html
http://www.nuffieldfoundation.org/practical-physics/explaining-rms-...
Obrigado José Gustavo, me ajudou muito!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por