Arduino - Sensor de Agua

El sensor de agua o el sensor de nivel de agua se utiliza para detectar fugas de agua, lluvia, desbordamiento del tanque, o para medir el nivel de agua. En este tutorial, aprenderemos:

Hardware Requerido

1×Arduino Uno R3
1×Cable USB 2.0 tipo A/B (para PC USB-A)
1×Cable USB 2.0 tipo C/B (para PC USB-C)
1×Water level sensor
1×Cables Puente
1×(Recomendado) Shield de Bloque de Terminales de Tornillo para Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Carcasa para Arduino Uno
1×(Recomendado) Placa Base de Prototipado y Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del Sensor de Nivel de Agua

Pinout del sensor de nivel de agua

El sensor de nivel de agua tiene 3 pines:

  • Pin S (Señal): es una salida analógica que se conectará a una de las entradas analógicas de tu Arduino.
  • Pin + (VCC): suministra energía al sensor. Se recomienda alimentar el sensor con entre 3.3 V y 5 V.
  • Pin - (GND): es una conexión a tierra.
Disposición de pines del sensor de agua

※ Nota:

El valor de salida analógica en el pin de señal varía en función del voltaje suministrado al pin VCC del sensor.

Cómo funciona un sensor de nivel de agua

Simplemente, cuanto más agua esté sumergido el sensor, mayor será la tensión de salida en el pin de señal.

Veamos más a fondo.

Esta sección se dedica al conocimiento profundo. NO se preocupe si no lo entiende. Omita esta sección si lo abruma y vuelva otro día. Continúe leyendo con las siguientes secciones.

El sensor tiene una serie de diez trazas de cobre expuestas. Cinco son trazas de alimentación y cinco son trazas de detección. Estas trazas están entrelazadas en paralelo, de modo que hay una traza de detección entre cada par de trazas de alimentación. Estas trazas no se conectan entre sí a menos que el agua las una al estar sumergidas.

Las trazas actúan como una resistencia variable (tal como un potenciómetro) cuya resistencia varía según el nivel de agua.

  • El cambio en la resistencia corresponde a la distancia desde la parte superior del sensor hasta la superficie del agua.
  • La resistencia es inversamente proporcional a la altura del agua.
  • Cuanto más agua esté presente en el sensor, mejor será la conductividad y menor será la resistencia.
  • Cuanto menos agua esté presente en el sensor, peor será la conductividad y mayor será la resistencia.
  • El sensor produce una salida de voltaje de acuerdo con la resistencia.

Al medir la tensión, podemos determinar el nivel de agua.

Diagrama de Cableado

En teoría, para suministrar energía al sensor, podemos conectar los pines VCC y GND del sensor a los pines 5V y GND del Arduino, respectivamente.

Sin embargo, en la práctica, ese enfoque no se recomienda. Ya que en un entorno húmedo, si proporcionamos energía al sensor de forma constante, el sensor se corroe electroquímicamente más rápido. Esto acorta la vida útil del sensor. Para superar este problema, le recomendamos no alimentar el sensor todo el tiempo, sino alimentar el sensor solo cuando se esté leyendo su valor. Esto se puede hacer conectando el pin VCC del sensor a un pin digital de un Arduino, y configurando el pin del Arduino en HIGH y LOW, respectivamente, antes y después de la lectura.

Diagrama de cableado del sensor de agua de Arduino

This image is created using Fritzing. Click to enlarge image

Código de Arduino - Lectura del valor del sensor de agua

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF Serial.print("Sensor value: "); Serial.println(value); delay(1000); }

Pasos R\u00e1pidos

  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en Arduino IDE para cargar el código en Arduino
  • Sumerge lentamente el sensor en el agua (un vaso de agua).
  • Mira el resultado en el Monitor Serial. El valor es 0 cuando el sensor no está tocando nada.
COM6
Send
Sensor value: 0 Sensor value: 0 Sensor value: 0 Sensor value: 25 Sensor value: 97 Sensor value: 284 Sensor value: 428 Sensor value: 435 Sensor value: 441 Sensor value: 455 Sensor value: 467 Sensor value: 521 Sensor value: 528 Sensor value: 553
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

El sensor no está diseñado para estar completamente sumergido. Solo las pistas expuestas en la placa de circuito impreso pueden entrar en contacto con el agua. Por favor, tenga cuidado al instalarlo.

Cómo detectar fugas de agua

Para detectar las fugas de agua, la lluvia y el desbordamiento del tanque, solo necesitamos comparar el valor de lectura con un valor umbral. El umbral se determina en la parte de calibración de este tutorial.

Tomemos un ejemplo concreto. Arduino enciende un LED si se detecta agua.

Diagrama de cableado

Diagrama de cableado del LED para sensor de agua de Arduino

This image is created using Fritzing. Click to enlarge image

Código de Arduino - Detección de fugas de agua

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-water-sensor */ #define LED_PIN 2 #define POWER_PIN 7 #define SIGNAL_PIN A5 #define THRESHOLD 300 int value = 0; // variable to store the sensor value void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // configure D2 pin as an OUTPUT pinMode(POWER_PIN, OUTPUT); // configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF digitalWrite(LED_PIN, LOW); // turn LED OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // turn LED ON } else { digitalWrite(LED_PIN, LOW); // turn LED OFF } }

Cómo medir el nivel del agua

Si quieres dividir la altura máxima del agua en varios niveles y medir el nivel actual, puedes usar el método que se muestra en el código que aparece a continuación. Ten en cuenta que la altura máxima del agua es igual a la altura del sensor. El código que se muestra a continuación divide la altura máxima en 4 niveles.

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // variable to store the sensor value int level = 0; // variable to store the water level void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the sensor OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the sensor OFF level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 levels Serial.print("Water level: "); Serial.println(level); delay(1000); }

※ Nota:

  • SENSOR_MIN y SENSOR_MAX están determinados por el proceso de calibración.
  • El método de mapeo anterior no es preciso. Sin embargo, es aceptable en muchas aplicaciones. Si desea hacerlo más preciso, puede medir los valores de umbral para cada nivel. Consulte la sección de calibración.

Calibración del sensor de nivel de agua

El valor de salida del sensor depende no solo del nivel del agua, sino también de la conductividad del agua. El agua pura no es conductiva. El agua contiene minerales e impurezas y es conductiva. Cuanto más conductiva sea el agua, más sensible será el sensor. Por otro lado, el valor de salida también varía dependiendo de la tensión suministrada al pin VCC del sensor.

Para obtener lecturas precisas del sensor de agua, le recomendamos calibrar el sensor para el tipo de agua en particular que planea monitorizar.

Antes de determinar el umbral para activar una acción, debes medir el valor real leído por el sensor realizando una prueba.

Cómo hacer la prueba:

  • Utiliza el boceto anterior para leer el valor del sensor.
  • Sumerge el sensor en el agua al nivel que quieras que sirva como umbral.
  • Anota el valor que muestra el sensor en el Monitor Serial.
  • Utiliza ese valor como umbral para activar la acción que tengas prevista.

Esta prueba puede requerir algo de ensayo y error.

La prueba también puede usarse para encontrar:

  • Valor de SENSOR_MIN, cuando el sensor no está inmerso en el agua
  • Valor de SENSOR_MAX, cuando el sensor está completamente inmerso en el agua
  • Un valor umbral para detectar fugas de agua
  • Los valores umbrales para cada nivel de tu escala de grados

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Desafíate a ti mismo

  • Envía un correo electrónico cuando se detecte una fuga de agua
  • Envía un mensaje SMS cuando se detecte una fuga de agua
  • Activa una alarma sonora cuando se detecte una fuga de agua

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!