Buenas, estoy tratando de implementar un código en lo que se hace los siguiente:
Dependiendo de el valor de corriente que lee un sensor, que un pin digital envié 5V o no, es decir, cuando el valor leído supere el valor I_Switch, que se envié la señal, y de lo contrario que se envíen 0V.
Tengo un problema con el código: EL pin digital da todo el rato la señal HIGH, es decir, no hace caso a la condición impuesta por el else. La lectura del sensor se hace correctamente, ya que lo he comprobado en el monitor de serie. Cuando los valores del monitor serie cambian, el estado del pin no cambia. Os agradecería vuestra ayuda ya que soy bastante nuevo en esto. Gracias de antemano!
const int MOSFET=2; //Pin de salida para MOSFET
const int Iin=A2; //Pin de entrada para corriente
float Sensibilidad=0.66; //sensibilidad en Voltios/Amperio para sensor de 30A
float Analog_relation= 5.0 / 1023.0; // relacion de voltios y valores analogicos.
int n_muestras=200;
int offset=2.5;
int I_switch=0.75;
void setup() {
pinMode(MOSFET, OUTPUT);
Serial.begin(9600);//Abrir comunicacion entre ordenador y arduino
}
void loop()
{
float I=get_corriente(n_muestras);
Serial.print("Corriente: ");//muestreo
Serial.println(I,3);
delay(100);
if (I>=I_switch) //Cuando se detecte intensidad en el secundario
{
digitalWrite(MOSFET,HIGH);//
}
else //Cuando no haya intensidad en el secundario
{
digitalWrite(MOSFET,LOW);
}
/*
digitalWrite(MOSFET,HIGH);
delay(500);
digitalWrite(MOSFET,LOW);
delay(500);
*/
}
float get_corriente(int n_muestras)
{
float voltajeSensor;
float corriente=0;
for(int i=0;i<n_muestras;i++)
{
voltajeSensor = analogRead(Iin) * Analog_relation;// Lectura del sensor en voltios
corriente=corriente+(voltajeSensor-offset)/Sensibilidad; //Ecuación para obtener la corriente
}
corriente=corriente/n_muestras;
return(corriente);
}