Arduino Nano - Sensor de agua

Este tutorial explica cómo usar el sensor de agua con Arduino Nano. Aprenderemos:

Esto se puede aplicar a aplicaciones que detectan fugas de agua, lluvia y desbordamiento de tanques...

Hardware Requerido

1×Official Arduino Nano
1×Alternatively, DIYables ATMEGA328P Nano Development Board
1×Cable USB A a Mini-B
1×Water level sensor
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano

Or you can buy the following kits:

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 tres pines:

  • El pin S (Señal) es una salida analógica que se conectará a una de las entradas analógicas de su Arduino Nano.
  • El pin + (VCC) suministra energía para el sensor y se recomienda utilizar un voltaje entre 3.3V y 5V.
  • El pin - (GND) es una conexión a tierra.
Pinout del sensor de agua

Cómo funciona el sensor de nivel de agua

En resumen, cuanto mayor sea la cantidad de agua en la que esté sumergido el sensor, mayor será la tensión del pin de señal.

Vamos a echar un vistazo más de cerca.

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 un conjunto de diez pistas de cobre expuestas:

  • Cinco de ellos son pistas de potencia
  • Las otras cinco son pistas de sentido

Las pistas están dispuestas en paralelo, con una pista de sentido entre cada par de pistas de alimentación. A menos que estén puenteadas por agua cuando estén sumergidas, las pistas no están conectadas.

Las pistas actúan como una resistencia variable, similar a un potenciómetro, cuya resistencia varía con el nivel de agua:

  • La resistencia está determinada por la distancia desde la parte superior del sensor hasta la superficie del agua.
  • La resistencia es inversamente proporcional a la cantidad de agua presente:
  • Cuando hay más agua presente, la conductividad mejora y la resistencia se reduce.
  • Cuando hay menos agua presente, la conductividad se reduce y la resistencia aumenta.
  • El sensor produce un voltaje de salida basado en la resistencia.

Determinar el nivel de agua puede hacerse midiendo la tensión.

Diagrama de Cableado

En teoría, los pines VCC y GND del sensor pueden conectarse a los pines 5V y GND del Arduino Nano para suministrar energía al sensor.

Sin embargo, no se recomienda llevar a cabo este enfoque en la práctica. En un entorno húmedo, si el sensor está alimentado de forma continua, se corroerá electroquímicamente más rápido, reduciendo así su vida útil.

Para evitar esto, sugerimos no mantener alimentado el sensor todo el tiempo, sino solo cuando se esté leyendo su valor. Esto se puede hacer conectando el pin VCC del sensor a un pin digital de un Arduino Nano, y poniendo el pin del Arduino en ALTO antes de leer y en BAJO después.

Diagrama de cableado del sensor de agua para Arduino Nano

This image is created using Fritzing. Click to enlarge image

Código de Arduino Nano - Lectura del valor desde un sensor de agua

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-water-sensor */ #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor int value = 0; // variable to store the water 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 water sensor ON delay(10); // wait 10 milliseconds value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the water sensor OFF Serial.print("Water sensor value: "); Serial.println(value); delay(1000); }

Pasos R\u00e1pidos

  • Copia el código anterior y ábrelo en el IDE de Arduino.
  • Haz clic en el Subir botón en el IDE de Arduino para enviar el código al Arduino Nano.
  • Coloca suavemente el sensor en un vaso de agua.
  • Revisa el Monitor Serial para ver el resultado; debería ser 0 cuando el sensor no esté tocando nada.
COM6
Send
Water sensor value: 0 Water sensor value: 0 Water sensor value: 0 Water sensor value: 25 Water sensor value: 97 Water sensor value: 284 Water sensor value: 428 Water sensor value: 435 Water sensor value: 441 Water sensor value: 455 Water sensor value: 467 Water sensor value: 521 Water sensor value: 528 Water sensor value: 553
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Nota:

El sensor no debe estar completamente sumergido en agua; solo las trazas expuestas en la PCB deben estar en contacto con él. Por favor, tenga cuidado al instalarlo.

Cómo Detectar Fugas de Agua

Para identificar fugas de agua, lluvia y desbordamiento del tanque, solo tenemos que comparar el valor de lectura con un valor umbral que se determina en la sección de calibración de este tutorial.

Veamos un caso en particular. Si se detecta agua, Arduino Nano activará un LED.

Diagrama de cableado

Diagrama de cableado del sensor de agua y LED para Arduino Nano

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

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

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-water-sensor */ #define LED_PIN 9 // The Arduino Nano pin connected to the led #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor #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 desea dividir la altura máxima del agua en varios niveles y medir el nivel actual, puede utilizar la técnica que se muestra en el código a continuación. Tenga en cuenta que la altura máxima del agua equivale a la altura del sensor. El código a continuación divide la altura máxima en 4 niveles.

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-water-sensor */ #define POWER_PIN 4 // The Arduino Nano pin connected to the power pin of water sensor #define SIGNAL_PIN A0 // The Arduino Nano pin connected to the signal pin of water sensor #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 se determinan mediante calibración.
  • El método de mapeo mencionado no es preciso, pero es adecuado para muchas aplicaciones.
  • Si desea hacerlo más preciso, puede medir los valores de umbral para cada nivel. Consulte la sección de calibración del manual para obtener más información.

Calibración del sensor de nivel de agua

La salida del sensor está influenciada tanto por el nivel del agua como por la conductividad del agua. El agua pura no es conductora, mientras que el agua con minerales e impurezas sí es conductora. Cuanto mayor sea la conductividad del agua, más sensible será el sensor. Además, el valor de salida también se ve afectado por el voltaje suministrado al pin VCC del sensor.

Para garantizar la precisión al leer el sensor de agua, recomendamos calibrar el sensor para el tipo específico de agua que se va a monitorizar.

Antes de establecer el límite para activar una respuesta, es necesario evaluar el valor real obtenido del sensor mediante la realización de un experimento.

Instrucciones para la prueba:

  • Consulte el sketch proporcionado arriba al leer los valores del sensor.
  • Coloque el sensor en el agua al nivel de umbral deseado.
  • Registre el valor que muestra el sensor en el Monitor Serial.
  • Utilice este valor como umbral para activar una acción.

Puede ser necesario experimentar para completar esta prueba. Prepárese para probar diferentes enfoques. Esté preparado para experimentar con varias estrategias. Tenga paciencia y no se rinda. Tenga perseverancia y no se rinda.

La prueba puede utilizarse para descubrir:

  • El valor SENSOR_MIN, cuando el sensor no está sumergido en el líquido
  • El valor SENSOR_MAX, cuando el sensor está totalmente sumergido en el agua
  • Un valor umbral para reconocer el derrame de agua
  • Los 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

  • Cuando se detecta una fuga de agua:
  • Enviar un correo electrónico
  • Enviar un mensaje SMS
  • Activar una alarma sonora

※ 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!