Buenas tardes a todos! Soy Cristian de Argentina y estoy empezando a experimentar con las arduino. Estoy armando un circuito de corriente continua del cual quiero medir la corriente (los valores máximos son de 25Amp). Estoy utilizando el sensor ACS712 para 30Amp y le cargué el siguiente código, el cual no es de mi autoría.
void setup() {
Serial.begin(9600); //Start Serial Monitor to display current read value on Serial monitor
}
void loop() {
unsigned int x=0;
float AcsValue=0.0,Samples=0.0,AvgAcs=0.0,AcsValueF=0.0;
for (int x = 0; x < 150; x++){ //Get 150 samples
AcsValue = analogRead(A0); //Read current sensor values
Samples = Samples + AcsValue; //Add samples together
delay (3); // let ADC settle before next sample 3ms
}
AvgAcs=Samples/150.0;//Taking Average of Samples
//((AvgAcs * (5.0 / 1024.0)) is converitng the read voltage in 0-5 volts
//2.5 is offset(I assumed that arduino is working on 5v so the viout at no current comes
//out to be 2.5 which is out offset. If your arduino is working on different voltage than
//you must change the offset according to the input voltage)
//0.066v(66mV) is rise in output voltage when 1A current flows at input
AcsValueF = ((AvgAcs - AcsValue)*(5/0.066))/1023;
Serial.println(AcsValueF);//Print the read current on Serial monitor
delay(10);
}
Personalmente le hice unas modificaciones a la linea de AcsValueF que me parecian acordes. Hace unas semanas andaba 10 puntos. Recientemente quise probar de nuevo y no hay respuesta del sensor.
Medí la tensión con un multimetro ante una carga de 10 amperes y hubo una variación de 2.52 a 2.45 volts (Entiendo que debido al efecto hall, baja la tensión por la conexión pero de acuerdo al datasheet del sensor debería estar alrededor de 1.75 V para ese amperaje).
Por último, visualice la señal digital que proporciona (AcsValue) a la tarjeta y resultó el gráfico que adjunto.
En fin, espero que me puedan ayudar.
Desde ya muchas gracias!