Control Nebulizadores
Quote from danitut on 22 May, 2021, 7:40 amBuenas,
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);}
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);}
Quote from R0BERT0 on 23 May, 2021, 5:08 amCreo 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);}}
}
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);}}
}
Quote from danitut on 28 May, 2021, 1:03 pmBuenas 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.
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.
Quote from danitut on 6 June, 2021, 2:44 pmBueno, 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;
}
}
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;
}
}
Quote from R0BERT0 on 7 June, 2021, 6:07 amMe alegro de que lo tengas operativo.
Me alegro de que lo tengas operativo.