Saludos,
Estoy tratando de usar el sensor de voltaje ZMPT101B (con Arduino Uno) para obtener los valores de voltaje de la red (220 RMS), pero los valores que necesito no son los RMS, sino que son los peak to peak, es ecir de -311 V a 311 V, (los valores dentro de este rango).
El sensor es mostrado en la siguiente imagen:
Pero, el problema es que los valores dados en el monitor serie de mi arduino son muy variables y a causa de eso no he podido hacer una formula para traducir los valores del sensor a valores de voltaje.
El código quen estoy usando es el siguiente:
int rele = 3; //relé conectao al pin digital 3
int sensorvalue = 0; // variable to store the value read
int sensmax = 0;
int sensmin = 0;
int Rmsmax = 0;
int Rmsmin = 0;
void setup()
{
pinMode(rele, OUTPUT); // inicializar entrada digital 3 como una salida (OUTPUT)
Serial.begin(9600); // initialize serial communication at 9600 bits per second
}
// the loop function runs over and over again forever
void loop()
{
int sensorvalue = analogRead(A0); // read the input on analog pin 0
//Serial.println(sensorvalue); // print out the value you read
digitalWrite(rele, HIGH);
//int cont = 0; //Inicializa la varieble de contar en cero
//Serial.println (cont);
sensmax = max(sensorvalue,600) ;
sensmin = max(sensorvalue,50);
Rmsmax= sensmax*1.4142;
Rmsmin= sensmin*1.4142;
Serial.print(sensmax);
Serial.print("");
Serial.print(" SensorMax");
Serial.print("\t");
Serial.print(Rmsmax);
Serial.print("");
Serial.print(" SensorRMSmax");
Serial.println("");
Serial.print(sensmin);
Serial.print("");
Serial.print(" SensorMin");
Serial.print("\t");
Serial.print(Rmsmin);
Serial.print("");
Serial.print(" SensorRMSmin");
Serial.println("");
Serial.println("");
delay (0.000001);
}
Y estos son los valores que el monitor serie muestra:
Espero me puedan ayudar con este problema.
Gracias.