💧¿Hay agua? ¡Arduino puede detectarla sin tocarla!

💧¿Hay agua? ¡Arduino puede detectarla sin tocarla!

0 comments

Introducción

¿Es posible detectar si un recipiente contiene líquido sin introducir ningún sensor dentro del agua? La respuesta es sí.

En esta práctica utilizaremos un sensor de nivel de líquido sin contacto XKC-Y25-V junto con un Arduino UNO para detectar la presencia de líquido a través de la pared de un recipiente.

El XKC-Y25-V utiliza un principio de detección capacitiva, por lo que no necesita entrar en contacto directamente con el líquido. Puede instalarse en el exterior de recipientes fabricados con materiales no metálicos, como plástico, vidrio o cerámica no porosa. El sensor se alimenta con 5 a 24 V DC y entrega una salida digital de nivel alto o bajo.

Durante esta práctica aprenderemos a conectar el sensor al Arduino UNO, identificar cada uno de sus cables, montarlo correctamente en el recipiente, ajustar su sensibilidad y crear un programa sencillo que indique en el Monitor Serial cuándo se detecta líquido.

Material necesario

  • Arduino UNO.
  • Sensor de nivel de líquido sin contacto XKC-Y25-V.
  • Cables Dupont.
  • Cable USB para Arduino UNO.
  • Recipiente de plástico o vidrio.
  • Agua u otro líquido delgado para realizar la prueba.
  • Desarmador pequeño (para ajustar la sensibilidad).
  • Pegamento epóxico tipo AB o un soporte no metálico (para fijar el sensor).

¿Qué es el XKC-Y25-V?

El XKC-Y25-V es un sensor capacitivo diseñado para detectar el nivel o presencia de líquidos sin necesidad de entrar en contacto directo con ellos.

El sensor puede colocarse en la parte exterior de un recipiente no metálico. Cuando el líquido alcanza la zona donde está colocado el sensor, las características eléctricas del sistema cambian y el sensor modifica su señal de salida.

De esta manera, podemos utilizarlo como un interruptor electrónico que informa al Arduino si existe o no líquido en determinado punto del recipiente.

Sensor de nivel de líquido sin contacto XKC-Y25-V con sus cables de conexión

Sensor de nivel de líquido sin contacto XKC-Y25-V.

Especificaciones principales

Característica Valor
Alimentación 5 a 24 V DC
Consumo máximo 5 mA
Temperatura de operación -20 a 105 °C
Tiempo de respuesta 500 ms
Protección IP67
Grosor máximo de pared Hasta 20 mm
Precisión de detección ±1.5 mm

El sensor puede detectar líquido a través de paredes de hasta 20 mm de grosor, con una precisión de ±1.5 mm. En la práctica, el resultado depende del material del recipiente, del grosor de su pared y de la sensibilidad con la que esté ajustado el sensor.

Además, el sensor incluye un indicador luminoso que puedes usar para verificar la detección directamente en el módulo, sin necesidad de abrir el Monitor Serial.

Conexión del sensor al Arduino UNO

El XKC-Y25-V utiliza cuatro conductores:

  • VCC: alimentación positiva.
  • OUT: salida de señal.
  • GND: tierra.
  • MODE: selección de la lógica de salida (en el manual del fabricante aparece como terminal COM).

La documentación del sensor identifica estos conductores como marrón = VCC, amarillo = OUT, azul = GND y negro = MODE.

Nota: los colores de los cables pueden variar según la versión del sensor. Antes de conectar, verifica la función de cada cable en la etiqueta de tu sensor.

¿Qué significa cada color de cable?

Una de las partes más importantes de esta práctica es identificar correctamente los cables del sensor. El color de cada conductor nos permite conocer qué función cumple y dónde debemos conectarlo en el Arduino UNO.

Color Función Arduino UNO
🟤 Marrón VCC 5V
🟡 Amarillo OUT D2
🔵 Azul GND GND
⚫ Negro MODE Sin conectar

En resumen:

  • Marrón → 5V: proporciona la alimentación positiva al sensor.
  • Amarillo → D2: es la salida OUT que informa al Arduino si se detecta líquido.
  • Azul → GND: conecta la tierra del sensor con la tierra del Arduino.
  • Negro → MODE: permite seleccionar la lógica de salida y, para esta práctica, se deja sin conectar.

Por lo tanto, para nuestra prueba utilizaremos tres conexiones principales: marrón a 5V, amarillo a D2 y azul a GND. El cable negro correspondiente a MODE permanecerá sin conectar.

Diagrama de conexión del sensor XKC-Y25-V al Arduino UNO: marrón a 5V, amarillo a D2 y azul a GND

Diagrama de conexión del sensor XKC-Y25-V con Arduino UNO: marrón a 5V, amarillo a D2 y azul a GND.

Conexiones del sensor XKC-Y25-V en la placa Arduino UNO

Conexiones del sensor en la placa Arduino UNO.

Montaje real de las conexiones del sensor XKC-Y25-V con Arduino UNO

Montaje real de las conexiones para la prueba de detección.

Voltaje de alimentación y nivel de la señal

Aunque el sensor acepta de 5 a 24 V, hay que tener en cuenta que la salida OUT sube hasta el mismo voltaje con el que se alimenta el sensor. Es decir, si lo alimentas a 12 V, la señal en nivel alto será de aproximadamente 12 V.

  • Arduino UNO: alimenta el sensor a 5 V. Así la señal de salida es compatible con las entradas del Arduino.
  • ESP32 (3.3 V): si el sensor se alimenta a 5 V, no conectes la salida directamente al ESP32. Utiliza un divisor de voltaje (por ejemplo, resistencias de 1 kΩ y 2 kΩ) o un convertidor de nivel lógico.

Además, procura utilizar una fuente con poco ruido eléctrico (rizado máximo de 200 mV).

¿Cómo funciona la detección?

Una de las principales ventajas del XKC-Y25-V es que no necesitamos introducir una sonda dentro del recipiente.

El sensor se coloca por fuera del recipiente, en el punto donde queremos detectar el nivel del líquido.

Por ejemplo, si queremos saber cuándo el agua alcanza determinado nivel, podemos colocar el sensor de esta manera:

Sensor XKC-Y25-V colocado en el exterior de un recipiente a la altura del nivel que se quiere detectar

Sensor colocado en el exterior del recipiente, a la altura del nivel que se desea detectar.

Cuando el líquido llega a la altura del sensor, el estado de la salida cambia y Arduino puede detectarlo mediante el pin digital D2.

Importante: el recipiente

Para realizar esta práctica debemos utilizar un recipiente no metálico.

Algunas opciones son:

  • Botella de plástico.
  • Recipiente de plástico.
  • Frasco de vidrio.
  • Recipiente de acrílico.
  • Recipientes de cerámica no porosa.

El sensor está diseñado para detectar el líquido a través de la pared del recipiente. Por ello, el material y el grosor de dicha pared influyen en la capacidad de detección.

Materiales que no debes usar:

  • Cerámica porosa, azulejo, ladrillo, cemento o madera: absorben agua y provocan lecturas falsas.
  • Recipientes metálicos: el sensor no puede pegarse por fuera de ellos. El fabricante contempla un método avanzado que requiere hacer barrenos con tapones de goma, pero esa prueba no se realizará en esta práctica.

Montaje del sensor en el recipiente

La forma de instalar el sensor influye directamente en la calidad de la detección. Ten en cuenta lo siguiente:

  • Cara sensora contra la pared: pega la cara sensora del módulo directamente a la pared exterior del recipiente, idealmente sin hueco (máximo 0.5 mm de separación).
  • Fijación: utiliza pegamento tipo epóxico AB o un soporte no metálico. Evita dejar aire entre el sensor y el recipiente.
  • Altura: el nivel que detectará el sensor depende de la altura a la que lo pegues. Colócalo justo a la altura donde quieres que cambie la señal (por ejemplo, el nivel máximo de llenado o el nivel mínimo de seguridad).
  • Zona de instalación: evita piezas metálicas cerca del sensor y zonas donde el líquido se mueva mucho, salpique o pueda entrar entre el sensor y la pared.
  • Exteriores: si el sensor va a estar a la intemperie, evita que reciba sol directo o lluvia.

Código para probar el sensor

Una vez realizadas las conexiones y el montaje, podemos utilizar un programa muy sencillo para comprobar el funcionamiento del sensor.

El Arduino leerá constantemente el estado del pin D2 y mostrará el resultado en el Monitor Serial.

#define SENSOR_NIVEL 2

void setup() {

  Serial.begin(9600);

  pinMode(SENSOR_NIVEL, INPUT);

  Serial.println("XKC-Y25-V");
  Serial.println("----------------");
}

void loop() {

  int estado = digitalRead(SENSOR_NIVEL);

  if (estado == HIGH) {
    Serial.println("LIQUIDO DETECTADO");
  }
  else {
    Serial.println("SIN LIQUIDO");
  }

  delay(500);
}

Abrir el Monitor Serial

Después de cargar el programa en el Arduino UNO, debemos abrir el Monitor Serial del Arduino IDE.

La velocidad debe estar configurada en:

9600 baudios

Si el sensor está correctamente conectado, veremos mensajes similares a:

Monitor Serial mostrando los mensajes LIQUIDO DETECTADO y SIN LIQUIDO del sensor XKC-Y25-V

Monitor Serial mostrando el estado del sensor a 9600 baudios.

El estado dependerá de si el líquido está o no a la altura donde colocamos el sensor.

Realizando la prueba

Para realizar la prueba podemos utilizar una botella o recipiente de plástico.

Primero pegamos el sensor en la parte exterior del recipiente, a la altura donde queremos detectar el líquido.

Después comenzamos a agregar agua lentamente.

Mientras el agua se encuentra por debajo del sensor, Arduino debería indicar:

SIN LIQUIDO

Cuando el agua alcance la zona de detección, el estado cambiará:

LIQUIDO DETECTADO

De esta manera podemos observar directamente cómo el sensor transforma la presencia del líquido en una señal digital que Arduino puede interpretar. Recuerda que también puedes confirmar la detección con el indicador luminoso del sensor.

Sensor XKC-Y25-V pegado al recipiente con el líquido a su altura

Líquido detectado: el Monitor Serial muestra “LIQUIDO DETECTADO”.

Sensor XKC-Y25-V pegado al recipiente sin líquido a su altura

Sin líquido: el Monitor Serial muestra “SIN LIQUIDO”.

Ajuste de sensibilidad

El XKC-Y25-V incluye un ajuste de sensibilidad. Si el sensor no detecta el líquido, o el nivel detectado no coincide con el nivel real, puedes corregirlo así:

  1. Abre la tapa trasera del sensor.
  2. Con un desarmador pequeño, gira la perilla de sensibilidad.
  • Giro antihorario: más sensibilidad.
  • Giro horario: menos sensibilidad.

Uso práctico:

  • Si el sensor nunca detecta el líquido, aumenta la sensibilidad (giro antihorario).
  • Si el sensor siempre marca “líquido”, incluso con el recipiente vacío, reduce la sensibilidad (giro horario).

Haz los ajustes con pequeños giros y prueba después de cada uno.

¿Qué hace el cable MODE?

El cable MODE (terminal COM en el manual del fabricante) permite seleccionar la lógica de funcionamiento de la salida:

Cable negro (MODE) Con líquido Sin líquido
Sin conectar HIGH LOW
Conectado a GND LOW HIGH

En esta práctica dejamos el cable MODE sin conectar, por lo que el código anterior funciona con la lógica normal (con líquido = HIGH). Si tu sensor se comporta de forma invertida, revisa primero la conexión de MODE antes de modificar el programa.

¿Qué está haciendo Arduino?

El programa utiliza la función:

digitalRead(SENSOR_NIVEL);

Esta función permite leer el estado lógico que entrega el sensor en el pin D2.

Después utilizamos una condición:

if (estado == HIGH) {
  Serial.println("LIQUIDO DETECTADO");
}
else {
  Serial.println("SIN LIQUIDO");
}

Así convertimos una señal eléctrica HIGH o LOW en un mensaje fácil de interpretar.

¿Por qué utilizamos el pin D2?

El pin D2 funciona como una entrada digital. Arduino no necesita medir un voltaje analógico para esta práctica; simplemente comprueba si la señal entregada por OUT está en estado HIGH o LOW.

Aplicaciones

Este tipo de sensor puede utilizarse en diferentes proyectos donde sea necesario detectar la presencia o ausencia de líquido sin introducir componentes dentro del recipiente.

  • Indicadores de nivel de agua.
  • Alarmas de llenado.
  • Alarmas para evitar desbordamientos.
  • Sistemas de automatización.
  • Control de depósitos.
  • Máquinas dispensadoras.
  • Sistemas de monitoreo.
  • Proyectos con Arduino.
  • Proyectos con ESP32.
  • Detección de niveles en recipientes cerrados.

Ventajas del sensor XKC-Y25-V

  • Detección sin contacto: el sensor no necesita tocar directamente el líquido.
  • Instalación sencilla: puede colocarse en el exterior del recipiente.
  • Salida digital: puede conectarse fácilmente a un microcontrolador.
  • Amplio rango de alimentación: de 5 a 24 V DC.
  • Bajo consumo: máximo 5 mA.
  • Amplio rango de temperatura: de -20 a 105 °C.
  • Respuesta rápida: aproximadamente 500 ms.
  • Protección IP67: adecuada para aplicaciones donde existe exposición a humedad.
  • Indicador luminoso: permite verificar la detección directamente en el sensor.

Estas características hacen que sea una opción interesante para proyectos de automatización y control de líquidos.

Limitaciones a considerar

  • Detecta un punto de nivel, no un nivel continuo. Indica si hay o no líquido a la altura del sensor, no cuánto líquido hay en total.
  • Líquidos viscosos: los líquidos muy viscosos (más de 30 mPa·s) no se pueden medir, y entre 10 y 30 mPa·s pueden presentar fallas. El agua y los líquidos delgados no tienen problema.
  • Falsos positivos: gotas o condensación en la pared del recipiente, suciedad o piezas metálicas cercanas pueden hacer que el sensor marque líquido cuando no lo hay.
  • Alimentación: requiere una fuente con poco ruido (rizado máximo de 200 mV).
  • Exteriores: evita el sol directo y la lluvia sobre el sensor.
  • Recipientes: no funciona con recipientes metálicos ni con materiales porosos que absorban agua.

Solución de problemas

Problema Posibles causas y solución
Siempre marca “líquido detectado”
  • Sensibilidad demasiado alta: gira la perilla en sentido horario.
  • MODE mal conectado: revisa el cable negro.
  • Humedad o condensación en la pared del recipiente.
  • Metal o suciedad cerca del sensor.
Nunca detecta el líquido
  • Sensibilidad demasiado baja: gira la perilla en sentido antihorario.
  • Pared demasiado gruesa (más de 20 mm).
  • Hueco entre el sensor y la pared del recipiente.
  • Recipiente metálico.
  • Alimentación mal conectada o invertida.
La lógica está invertida Revisa la conexión de MODE (cable negro) antes de cambiar el código.
Lecturas inestables
  • Alimentación floja o con ruido.
  • Cables demasiado largos.
No responde al energizar Revisa la polaridad de VCC (marrón) y GND (azul).

Conclusiones

En esta práctica aprendimos a utilizar un sensor de nivel de líquido XKC-Y25-V junto con un Arduino UNO.

Primero identificamos las conexiones principales del sensor y aprendimos qué función cumple cada color de cable: marrón para VCC, amarillo para OUT, azul para GND y negro para MODE.

Posteriormente conectamos la alimentación, tierra y salida de señal. Para esta práctica utilizamos el pin digital D2 del Arduino UNO para leer la señal OUT del sensor. También vimos cómo montarlo correctamente en el recipiente, cómo ajustar su sensibilidad y qué limitaciones debemos tener en cuenta.

Finalmente desarrollamos un programa sencillo que permite mostrar en el Monitor Serial si existe o no líquido en la zona de detección.

Una de las características más interesantes de esta práctica es que el sensor puede detectar el líquido sin entrar en contacto directo con él. Esto permite utilizarlo en recipientes cerrados o en aplicaciones donde no sea conveniente introducir componentes electrónicos dentro del líquido.

Con este principio podemos desarrollar proyectos más avanzados, como sistemas automáticos de llenado, alarmas contra desbordamientos, indicadores de nivel y sistemas de monitoreo utilizando Arduino o ESP32.

Productos relacionados

Estos son los productos utilizados en esta práctica y puedes consultarlos directamente en Tecneu:

Arduino UNO R3 DIP

Tarjeta de desarrollo Arduino UNO R3 DIP con cable USB

Placa de desarrollo utilizada para leer la señal digital del sensor XKC-Y25-V y procesar la información.

Comprar Arduino UNO en Tecneu

Sensor de nivel de líquido XKC-Y25-V

Sensor de nivel de líquido sin contacto XKC-Y25-V

Sensor capacitivo sin contacto utilizado para detectar la presencia de líquido a través de la pared de un recipiente no metálico.

Comprar XKC-Y25-V en Tecneu

Comentarios 

No comments

Dejar un comentario
Tu correo no será publicado, los campos requeridos estan marcados con *
Artículos relacionados
Suscríbete
Suscríbete a nuestro boletín y recibe las últimas ofertas y novedades.