En esta lección vas a aprender cómo usar un módulo sensor de detección de nivel de agua. Este componente te permite medir la profundidad de un líquido de forma sencilla usando tu placa UNO R3.
Resumen
Este módulo puede percibir la profundidad del agua; su componente central es un circuito amplificador formado por un transistor y varias rutas de PCB en forma de peine. Al sumergirlo en el agua, estas rutas presentan una resistencia que varía según la profundidad del líquido. Esa señal se convierte en una señal eléctrica que podés procesar mediante la función ADC del UNO R3 para conocer el nivel exacto.
Componentes necesarios
(1) x Elegoo Uno R3
(3) x Cables H-M (Hembra a Macho)
(1) x Módulo sensor de detección de nivel de agua
Introducción al componente
Este sensor está diseñado para detectar agua y se usa mucho para medir lluvia, niveles de agua o incluso fugas de líquidos. El módulo se compone principalmente de tres partes: un conector, una resistencia de 1 MΩ y varias líneas de cables conductores desnudos.
El sensor funciona mediante una serie de trazas expuestas conectadas a tierra, intercaladas con trazas de detección que tienen una resistencia pull-up débil de 1 MΩ. Esta resistencia mantiene el valor de la traza de detección alto hasta que una gota de agua hace un cortocircuito entre la traza de detección y la de tierra. Este circuito funciona con los pines de E/S digitales del UNO R3 o podés usarlo con los pines analógicos para detectar la cantidad de contacto inducido por el agua entre las trazas.
Características
Voltaje de trabajo: 5V
Corriente de trabajo: <20mA
Interfaz: Analógica
Ancho de detección: 40mm×16mm
Temperatura de trabajo: 10℃~30℃
Señal de voltaje de salida: 0~2.4V
Esquema de conexión y diagrama de cableado
Realizá las conexiones siguiendo las indicaciones de los pines del sensor hacia la placa UNO R3.
Código
Podés descargar el archivo del programa y abrirlo con el Arduino IDE. Antes de empezar, asegurate de tener instalado el entorno de desarrollo y los drivers del UNO R3. Si tenés dudas sobre este proceso, fijate en la "parte 1" del documento para una guía detallada.
Este código lee los datos del sensor de nivel de agua usando la entrada analógica y los imprime en el monitor serial cuando detecta un cambio significativo.
int adc_id = 0;
int HistoryValue = 0;
char printBuffer[128];
void setup()
{
Serial.begin(9600);
}
void loop()
{
int value = analogRead(adc_id); // obtiene el valor adc
// Imprime el nivel cuando el cambio es mayor o menor a 10
if(((HistoryValue>=value) && ((HistoryValue - value) > 10)) || ((HistoryValue<value) && ((value - HistoryValue) > 10)))
{
sprintf(printBuffer,"ADC %d level is %d\n",adc_id, value);
Serial.print(printBuffer);
HistoryValue = value;
}
}
Variables y configuración:
int adc_id = 0;: Configura el canal ADC en 0 (pin A0).
int HistoryValue = 0;: Guarda el valor anterior para comparar.
char printBuffer[128];: Buffer para guardar la cadena de texto a imprimir.
void setup(): Inicializa la comunicación serial a 9600 baudios.
Solución de problemas
Si no aparecen datos en el monitor serial, verificá la conexión de los pines, asegurate de que el puerto correcto esté seleccionado en el IDE y que la velocidad del monitor coincida con los 9600 baudios configurados en el código.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.