Forum Navigation
Please or Register to create posts and topics.

Control Nebulizadores

Buenas,

Llevo tiempo intentando programar el MKR de mi instalación para que una de las salidas de relé, se active y desactive según consignas definidas.

La salida de este relé controla una válvula que da paso al agua para los nebulizadores.

Esto es lo que tengo hecho y no consigo que se desactive el relé de ninguna manera cuando se activa el circuito.

Se agradece alguna ayudita....

Gracias.

/******************************GLOBAL VARIABLES ZONE******************************************************************/

//USER SETTING
byte Intervalo=0;
byte NebuActivado=0;

void LoopNewSecond(){//This event occurs every second

//Control Tiempos Relé de Nebulizadores con las consignas 1 y 2

if (circuits[8].Out1_Value == true){NebuActivado++;}else{NebuActivado=0;}
if (NebuActivado >= Consignas[2]){SetI2CRelay(15,false);(Intervalo ++);}
if (Intervalo >= Consignas[1]){SetI2CRelay(15,true);(Intervalo=0);}

Creo que lo estas complicando un poco...

Mira esto como base... OJO.. LA SUMA DE LAS DOS CONSINGAS DETERMINA EL TIEMPO ON OFF...

 

/******************************GLOBAL VARIABLES ZONE******************************************************************/

//USER SETTING
int Intervalo=0;

void LoopNewSecond(){//This event occurs every second

//Control Tiempos Relé de Nebulizadores con las consignas 1 y 2

if (circuits[8].Out1_Value == false)
{
Intervalo=0;
SetI2CRelay(15,false);
}
else{
Intervalo++;
if (Intervalo >= Consignas[1]){
SetI2CRelay(15,true);
if (Intervalo >= (Consignas[1]+Consignas[2])){//si intervalo > que suma de consignas
Intervalo=0;
}
}
else{SetI2CRelay(15,false);}

}
}

alf_sito and danitut have reacted to this post.
alf_sitodanitut

Buenas perdón por no escribir antes,

Roberto, funciona a la perfección, aunque me ha costado lo mío hacerlo funcionar, no había caído en que tenía que quitar la salida que tenía asignada por el configurador y como es normal, el relé por mucho código que pusiese se reía de mi y estaba siempre activado, ayer caí en ese "pequeño" detalle y finalmente me sirve para el uso que le quiero dar.

Si lo ves oportuno y procede, se podría mover el tema al apartado de hidráulica del foro.

Muchas gracias.

Bueno, he hecho, por decirlo de laguna manera la versión 2  de esto, eso si con ayuna de mi hermano...

Con el código de Roberto, el circuito tardaba el tiempo que estuviese tuviese fijado en la consigna del intervalo en este caso 2 minutos.

De esta manea el circuito enciende al segundo de activarlo, se admiten críticas...

/******************************GLOBAL VARIABLES ZONE******************************************************************/

/*************************************************************/

int NebuOff=0;
int NebuActivo=1;

void LoopNewSecond(){//This event occurs every second

//Control Tiempos Relé de Nebulizadores con las consignas 1 y 2 3.0

if (circuits[8].Out1_Value) {
if(NebuActivo == 1) {
if(NebuOff < Consignas[1]) { // Aún no se ha cumplido el tiempo de activación
NebuOff = NebuOff + 1; //sumando un segundo a la activación
SetI2CRelay(15,true);
} else { // se ha cumplido el tiempo de activación, desactivamos el nebulizador y resetea del tiempo
SetI2CRelay(15,false);
NebuOff = 0;
NebuActivo = 0;
}
} else {
if(NebuOff < Consignas[2]) { // Aún no se ha cumplido el tiempo de desactivación
NebuOff = NebuOff + 1; //sumando un segundo a la desactivación
} else { // se ha cumplido el tiempo de desactivación, activamos el relé y resetea del tiempo
SetI2CRelay(15,true);
NebuActivo = 1;
NebuOff = 0;
}
}

 

R0BERT0 has reacted to this post.
R0BERT0

Me alegro de que lo tengas operativo.