Establecer limites (Alto, Bajo).

buen día Colegas

tengo una pequeña duda, estoy realizando un pequeño sistema para automatizar pequeños procesos en una granja de codornices que tengo en el patio trasero.

tengo la siguiente duda y necesito de sus consejos.

uno de los procesos que administra mi arduino es el estado de un tanque de agua de 20 Litros, al cual le instale un sensor ultrasonico que mantiene el nivel del tanque a 3/4 de su capacidad esto lo programe con un simple "IF".

pero el problema es el siguiente, el if lo configure de la siguiente de manera que cuando baja el nivel la bomba se activa y rellena la pequeña diferencia que tenga lo cual castiga mucho a la bomba ya que esta entra y sale constantemente.

ahora lo que me gustaría que hiciera el código es lo siguiente:

cuando el tanque baje a 1/4 se active la bomba y rellene hasta el 3/4 para con que con ello la bomba entre en pocas veses al día y no se castigue tanto el revelador.

Limite alto: 3/4 Bomba apagada
Limite bajo: 1/4 Bomba entra y llena hasta llegar a set de alto.

con que debo sustituir el comando if para trabajar con esos limites.

pensé en convertir los Centímetros que reporta el ultrasonido a otra medida pero sigo teniendo el mismo problema, ya que si los paso centimetros a Pies o Pulgadas cualquier diferencia al punto establecido en el if activa la bomba.

Muchas gracia de antemano por sus comentarios.

Saludos.

Pero postea tu código para empezar por ahí a editarlo y adecuarlo a lo que necesitas.

// lees la altura de agua

// defines limites
#define LIMITE_ALTO 300 // supongo 300 cmts ajusta a tu valor
#define LIMITE_BAJO 50  // ajusta a tu valor míniimo

// en el loop
if (altura > LIMITE_ALTO) {
   // apagas la bomba
}
if (altura < LIMITE_BAJO) {
  // enciendes la bomba
}

Gracias por el tip Surbyte

lo pondre a prueba aunque se mira muy logico que sera la solucion.

mi codigo sin poner la marañas de modbus era el siguiente el cual era muy primitivo:

if(NivelTanque > 35 ) //Tanque de 55 CM de capacidad
{
digitalWrite(BSolenoide, HIGH); //Activa Solenoide para el paso de agua
}
else{
digitalWrite(BSolenoide, LOW); //Desactiva Solenoide para bloquedo de flujo
}

con este codigo la solenoide se activa muy seguido probare con el que me proponen.

gracias

saludos.

Se activa seguido porque tu lectura del nivel de agua no es estable y varía entorno al umbral de corte.
Cuando supera 35 activa pero en el ciclo siguiente lee 34.9 y desactiva.
Eso si fuera un contactor grande, simplemente lo quema.

Sigue mi consejo.