Control de nivel ‘sin contacto’ con Arduino

Photo by Jainath Ponnala on Unsplash

Hoy en la Buhardilla vamos a ver como podemos controlar el nivel de un tanque con el uso de Arduino. En algunos casos cuando queremos controlar el nivel de líquido en un tanque es complicado usar los típicos niveles de flotador. Por este motivo vamos a ver como usar los niveles capacitivos (que no tienen contacto directo con el fluido para marcar el nivel). El sistema que vamos a construir consistirá en dos sensores de nivel (uno para indicar que el tanque está lleno y el otro para indicar que el tanque está vacío). Cuando el tanque este lleno activaremos una bomba para vaciarlo, la cual se parará una vez hayamos vaciado el tanque. Sin más dilación empecemos.

Material

  • Arduino
  • 2 sensores de nivel capacitivos
  • Bomba
  • Módulo de relé
  • Fuente de alimentación

A continuación podemos ver el montaje de todo el sistema.

Montaje

La bomba la vamos a conectar en la configuración de normalmente cerrado, de esta manera se abrirá una vez le enviemos la señal a trabes del pin 10. De esta forma conseguiremos que siempre que el tanque se llene se active la bomba para vaciarlo, hasta alcanzar el nivel bajo, momento en que se va a parar la bomba. Una vez tenemos el montaje realizado es momento de ver el código que vamos a ejecutar.

int lectura_nivel_bajo = 0;
int lectura_nivel_alto = 0;
int sensor_nivel_bajo = 4;
int sensor_nivel_alto = 7;
int bomba = 10;

void setup() {
  pinMode(sensor_nivel_alto, INPUT);
  pinMode(sensor_nivel_bajo, INPUT);
  pinMode(bomba, OUTPUT);
}

void loop() {
  lectura_nivel_bajo = digitalRead(sensor_nivel_bajo);
  lectura_nivel_alto = digitalRead(sensor_nivel_alto);
  if (lectura_nivel_bajo == 1 && lectura_nivel_alto == 1){
      digitalWrite(bomba, HIGH);
  }
  else if (lectura_nivel_bajo == 0 && lectura_nivel_alto == 0){
      digitalWrite(bomba, LOW);
  }
  delay(1000);
}

Como ya es habitual, en la parte superior del script definimos las variables que vamos a utilizar. En primera instancia crearemos las variables correspondientes a la lectura de los sensores, las vamos a inicializar en cero, para que siempre tengamos la bomba parada al poner en marcha el programa. En este caso utilizamos sensores capacitivos, lo que quiere decir que una vez que el agua alcance el nivel del sensor este va a cambiar de estado y pasara a dar una señal de 1, asta que el agua vuelve a bajar de nivel. A continuación definimos los pines que vamos a utilizar, los dos para recibir la señal de los sensores, pin 4 y pin 7 para el sensor de nivel bajo y el de nivel alto, respectivamente, en el caso del pin que activara el relé que controla la bomba será el pin 10.

void setup() {
  pinMode(sensor_nivel_alto, INPUT);
  pinMode(sensor_nivel_bajo, INPUT);
  pinMode(bomba, OUTPUT);
}

En el loop de la instalación definimos como actuaran los pins que hemos inicializado arriba, en el caso de los pins de los sensores, estos serán entradas, el pin de la bomba será configurado como salida.

void loop() {
  lectura_nivel_bajo = digitalRead(sensor_nivel_bajo);
  lectura_nivel_alto = digitalRead(sensor_nivel_alto);
  if (lectura_nivel_bajo == 1 && lectura_nivel_alto == 1){
      digitalWrite(bomba, HIGH);
  }

En la parte principal del programa lo primero que haremos será realizar una lectura del estado de los sensores, para poder ver como está el nivel del agua. En el caso de que el agua alcance el nivel máximo (cuando los dos sensores den una señal de 1), cambiamos el estado de la bomba y la ponemos en marcha (ponemos el pin de la bomba en HIGH). La bomba estará en funcionamiento asta que el nivel del agua alcance el nivel mínimo.

  else if (lectura_nivel_bajo == 0 && lectura_nivel_alto == 0){
      digitalWrite(bomba, LOW);
  }
  delay(100);
}

Cuando el agua descienda del nivel mínimo (los dos sensores marcan cero), paramos la bomba (el pin de la bomba pasa a estar en LOW), para dar un poco de tiempo a todo el programa y evitar que este pueda llegar a saturarse, paramos su ejecución durante un pequeño periodo de tiempo con delay().

Como podéis ver, mantener y controlar el nivel de un tanque a partir de dos sensores es muy sencillo con la utilización de un Arduino y una bomba o electroválvula. Espero que esta entrada os pueda servir de ayuda. Dejad vuestras dudas no observaciones en los comentarios.

Saludos y asta la próxima aventura.

Deja un comentario

Blog de WordPress.com.

Subir ↑