Soy nuevo en esto de arduino y encontré un tutorial para calibrar un sensor de corriente, el código que efectúa todo es el siguiente:
float Sensibilidad=0.139; //sensibilidad en V/A para nuestro sensor
float offset=0.100; // Equivale a la amplitud del ruido
void setup() {
Serial.begin(9600);
}
void loop() {
float Ip=get_corriente();//obtenemos la corriente pico
float Irms=Ip*0.707; //Intensidad RMS = Ipico/(2^1/2)
float P=Irms*220.0; // P=IV watts
Serial.print("Ip: ");
Serial.print(Ip,3);
Serial.print("A , Irms: ");
Serial.print(Irms,3);
Serial.print("A, Potencia: ");
Serial.print(P,3);
Serial.println("W");
delay(500);
}
float get_corriente()
{
float voltajeSensor;
float corriente=0;
long tiempo=millis();
float Imax=0;
float Imin=0;
while(millis()-tiempo<500)//realizamos mediciones durante 0.5 segundos
{
voltajeSensor = analogRead(A0) * (5.0 / 1023.0);//lectura del sensor
corriente=0.9*corriente+0.1*((voltajeSensor-2.527)/Sensibilidad); //Ecuación para obtener la corriente
if(corriente>Imax)Imax=corriente;
if(corriente<Imin)Imin=corriente;
}
return(((Imax-Imin)/2)-offset);
}
Tengo dos dudas, el programa al subirlo a la plataforma, funciona perfecto pero no entiendo de que forma se ejecuta lo que está debajo del loop porque según veo, este termina luego del "delay(500);".
Mi segunda duda es que no debería ir un ";" luego de la linea "float get_corriente()" para que este funcionara?
Muchas gracias de antemano por su ayuda!