Controlador de nivel de agua en tanque con sensor ultrasonico y Arduino.

Este será el primer tutorial de muchos de la serie Arduino. El propósito del mismo es dar a conocer que está realizando la comunidad de arduineros en cuba. El siguiente tutorial fue realizado por Leonardo Navarro (AKA @LeoNavarro95) miembro de la comunidad cubana de Arduino (https://t.me/ArduinoCuba).

Resumen:

En el presente tutorial se muestra cómo implementar un sistema de control de nivel para tanque elevado basado en ESP32. Como elemento sensor de nivel se escogió un sensor ultrasónico impermeable. El sistema es capaz de detectar si la bomba hidráulica está funcionando correctamente gracias a un flujómetro. La información del nivel y del flujo a la salida de la bomba es mostrada por una pantalla LCD. Un buzzer sirve como interfaz sonora para conocer de posibles eventos en el sistema.

Introducción:

El agua es un recurso de gran valor para la sociedad, de más está decir la necesidad de la misma para realizar las actividades hogareñas. Cuando en una casa falta este recurso nada funciona bien todo depende del agua, desde la limpieza hasta la elaboración de los alimentos. Por lo tanto, resulta incuestionable que este tesoro natural no se derroche y que se aproveche al máximo. En Cuba son muchos los casos en los que nos encontramos con casas que disponen de tanques elevados o cisternas, los cuales se llenan a través de una bomba que succiona agua de un pozo o cisterna.

En mi casa contamos con un pozo y un tanque elevado que se encarga de almacenar el agua que es bombeada. La idea de este proyecto vino principalmente de la molestia que resulta tener que estar al tanto del encendido y apagado de la bomba hidráulica de la casa, además de que cuando el tanque se llena se salpican de agua las casas de los vecinos y también se derrocha el preciado líquido. Por otro lado, nunca nos sucedió, pero si se te olvida que habías puesto la “turbina” (término mal usado en la población cubana, debe ser bomba) y te ibas para la calle por mucho tiempo, se le podía poner el cartel de EPD a la bomba que se iba a quemar. En muchas ocasiones los vecinos eran quienes nos avisaban de que el tanque se estaba desbordando, lo que constituye un sistema sensorial muy primitivo jejeje, y es muy molesto para ellos. Cuidar la bomba hidráulica es un aspecto importantísimo pues estas no son muy baratas que digamos.

Cuando conocí el mundo de Arduino me di cuenta que no era tan complejo hacer un sistema automático para el control del llenado/vaciado del tanque. Y me puse manos a la obra, desarrollé uno que lleva más de un mes funcionando a la perfección, entonces pensé ¿por qué no compartirlo con todos? Así que en el presente tutorial les muestro cómo lo hice.

Listado de materiales para el proyecto:

  • Placa basada en microcontrolador: DOIT ESP32 DevKit V1 (Cantidad x1)

  • Sensor ultrasónico impermeable: JSN SR04T (Cantidad x1)

  • Módulo relé de un canal : (Cantidad x1)

  • Sensor de flujo: Yf-s201 (Cantidad x1)

  • Pantalla LCD 16×2: (Cantidad x1)

  • Placa para prototipo de bakelita (perfboard): (Cantidad x1)

  • Buzzer: (Cantidad x1)

  • Fuente de alimentación de 5V a 500mA (Cantidad x1)

Diagrama de conexiones:

¿Cómo funciona el sistema?

El sistema va a medir el nivel del tanque y a partir de dos parámetros prefijados para el nivel alto y el nivel bajo, va a tomar la decisión de encender o apagar la bomba. En otras palabras, si por ejemplo, se toma como nivel bajo el 40% del total de la capacidad del tanque y como nivel alto el 90%, el sistema va a mandar a encender la bomba (por medio del relé) cuando el nivel sea inferior a 40% hasta que llegue al 90% donde será apagada. Paralelamente a este proceso, mientras esté encendida la bomba, el sistema va a chequear que exista flujo a su salida (que la bomba esté “halando” agua) y en caso de que no exista flujo a la salida de la bomba, la va a mandar a parar, esto es para evitar que se queme, pues una bomba encendida sin bombear agua un tiempo relativamente corto se quema, pues se basa en el agua para su propia lubricación y enfriamiento.

Adicionado a todo esto, en la pantalla LCD se mostrará todo el tiempo los datos del % de agua existente en el tanque, el flujo de agua y notificará en caso de algún error como cuando la bomba no bombea. Como un apoyo a la pantalla, el sistema contará con un buzzer a forma de señal sonora, el que producirá sonidos ante la ocurrencia de eventos como: encendido de la bomba, parada de la bomba y error.

A continuación se presentan un número de pasos que servirán de guía para la realización de este proyecto:

Paso 1: Instalación del sensor ultrasónico.

El sistema se basa principalmente en medir el nivel del tanque por medio del sensor ultrasónico impermeable JSN SR-04T el cual va a estar ubicado en la tapa del tanque apuntando hacia el agua. En la figura que se muestra se aprecia cómo se logra medir el nivel de agua (N) con este sensor, a partir de tener la altura del tanque (H) (que es constante) y la distancia medida por el sensor (S), el nivel de agua sería la resta de la altura del tanque menos la distancia medida por el sensor: N = H – S. Entonces con esa sencilla ecuación es posible conocer el nivel existente en nuestro tanque. Este debería ser el primer paso, colocar el sensor en el tanque y visualizar por la pantalla LCD el nivel de agua existente en el tanque.

Si la distancia existente entre la placa de control del sensor y el microcontrolador es grande no se preocupe, el sistema que monté tiene 13m de cable entre ambos y solo hay una pérdida de 0.1V en tal distancia. Para el cableado de los sensores se empleó cable UTP (conocido también como cable de red o par trenzado). En la imagen que sigue se muestra como quedaría conectado el cable UTP.

Durante estas pruebas con solo el sensor ultrasónico conectado tuve que emplear filtrado digital pues las lecturas del sensor esporádicamente se hacían cero (esto pasa cuando se dan lecturas fuera de rango, sospecho que se deba al eco que se puede producir en el interior del tanque pues es una estructura cerrada). Además, las lecturas se volvían muy ruidosas cuando se encendía la bomba, seguro porque el cable que alimenta a la bomba pasaba junto al del sensor. Con un filtro promedio se resolvió el problema este y las lecturas del sensor se ven en la LCD con estabilidad.

Como el sensor ultrasónico trae separado el sensor de la electrónica es necesario idear alguna forma de que la placa de control quede bien aislada del medio ambiente. En la imagen siguiente se muestra una cajita que se desarrolló para proteger a la placa electrónica que controla al sensor.

Luego de probar tal sensor por unos días y comprobar que todo funcione correctamente se procede al siguiente paso:

Paso 2: Instalación del sensor de flujo y comprobación de su correcto funcionamiento.

Si se quiere que este sensor posea buena precisión es requerida su calibración, como en este caso especial no nos interesa conocer con exactitud la cuantía de flujo, sino su existencia, no se cubrirá tal aspecto. En la imagen se muestra cómo queda el sensor instalado en la tubería.

En la imagen siguiente se muestra el display LCD mostrando los datos de las lecturas del flujómetro. Para comprobar el correcto funcionamiento de tal sensor se simuló como si la bomba hubiese dejado de funcionar, quitándole la alimentación, en todos los casos el sensor se comportó correctamente.

Paso 3: Empleo del módulo relé para controlar el encendido y apagado de la bomba.

En la imagen anterior también ya se estaba haciendo uso del módulo relé, pues se mandaba a encender la bomba un tiempo predeterminado el cual se muestra en la LCD en la primera fila. Por otro lado en estos experimentos el sistema tomaba la decisión de apagar la bomba si el flujómetro no detectaba caudal por la tubería y si todo marchaba bien al terminarse el tiempo programado se apagaba la bomba.

Paso 4: Unión de todo para conformar el sistema completo.

En la siguiente figura se muestra todo el sistema en una caja plástica. Como fuente de alimentación (esquina derecha superior dentro de la caja) se escogió una fuente de un DVD que se encontraba obsoleto, pero se puede emplear cualquier fuente de cargador de teléfono móvil que de una salida de corriente mayor que 250mA.

La pantalla LCD mostrando los datos de los sensores. La flecha indica que se está bombeando, si estuviese hacia abajo indica lo contrario.

Programación del microcontrolador

Para programar el microcontrolador se emplea el IDE de Arduino, dado que se empleará una placa ESP32, hay que instalarla en el IDE, seguir este tutorial para ello. Una vez instalada la placa ESP32 en el IDE de Arduino se selecciona el modelo de la placa y el puerto al cual se encuentra conectada:

Aquí les dejo el código del proyecto:

Asi es como quedo el proyecto finalmente

Espero que este humilde aporte les sirva a muchos en sus casas. Siéntanse libre de modificar el código a su gusto y de darme recomendaciones para su mejora.

 

(Visited 229 times, 8 visits today)
Alexander Rivas Alpizar
Sobre Alexander Rivas Alpizar 36 Artículos
Administrador de Redes de EMPRESTUR Cienfuegos

2 comentarios

  1. Soy nuevo en Arduino, pero me surgió el interés de usarlo y buscando que hacer para estos días me encontré tu proyecto.
    Me parece excelso tu proyecto, lo tratare de replicar en un Arduino uno, o en un NODEMCU, la verdad se casi nada de programación pero soy bueno para discernir como funciona el código, y comenzarlo a modificar poco a poco.
    Espero tener contacto contigo para que me apoyes en mi proceso.

    si lo hago en NODEMCU Tratare de implementar Blynk,

    te mantendré al tanto esperando tu interés.

    Saludos cordiales.

    • Gracias por el comentario, estoy a tu disposición para lo que necesites.
      Puedes hacerlo con la placa arduino que desees. Si empleas un display LCD i2c te ahorras muchos pines.
      Saludos

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*