0% encontró este documento útil (0 votos)
25 vistas12 páginas

Medición de Nivel de Agua con HC-SR04

Este informe detalla el diseño e implementación de un sistema de medición de nivel de agua utilizando un sensor ultrasónico HC-SR04 y un microcontrolador Arduino Uno R3, que convierte lecturas de distancia en niveles proporcionales y los visualiza en tiempo real. Se realizaron pruebas en campo y simulaciones en Tinkercad, mostrando buena correlación y funcionalidad del sistema, incluyendo alertas de niveles seguros. Se proponen mejoras para aumentar la precisión y robustez del sistema, así como aplicaciones educativas y ampliaciones futuras.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
25 vistas12 páginas

Medición de Nivel de Agua con HC-SR04

Este informe detalla el diseño e implementación de un sistema de medición de nivel de agua utilizando un sensor ultrasónico HC-SR04 y un microcontrolador Arduino Uno R3, que convierte lecturas de distancia en niveles proporcionales y los visualiza en tiempo real. Se realizaron pruebas en campo y simulaciones en Tinkercad, mostrando buena correlación y funcionalidad del sistema, incluyendo alertas de niveles seguros. Se proponen mejoras para aumentar la precisión y robustez del sistema, así como aplicaciones educativas y ampliaciones futuras.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

REPÚBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER

POPULAR PARA LA EDUCACIÓN UNIVERSITARIA INSTITUTO


UNIVERSITARIO JESÚS OBRERO
EXTENSIÓN BARQUISIMETO

Sistema de medición de nivel de agua con sensor ultrasónico HC-SR04 y visualización


en LCD

Integrantes:
Luis Mendez
Victor Villarreta

Profesor: Héctor Mendoza


Asignatura: Robótica

Barquisimeto, octubre 2025


Resumen

Este informe presenta el diseño, implementación y análisis de un sistema de medición de


nivel de agua en un tanque utilizando el sensor ultrasónico HC-SR04 y un microcontrolador
Arduino Uno R3. El objetivo principal fue convertir las lecturas de distancia en valores
proporcionales de nivel en centímetros y porcentaje, visualizarlos en tiempo real mediante el
Monitor Serial y una pantalla LCD 16x2, y generar alertas cuando el nivel se encuentra fuera
de los rangos seguros.

La práctica se desarrolló en dos fases: medición en campo y simulación en Tinkercad. En la


fase de campo se calibró el sensor con base en distancias de tanque vacío y lleno, se aplicó un
promedio móvil para estabilizar las lecturas, y se interpolan los datos para estimar el volumen
de agua. En la simulación, se replicó el circuito y se emularon lecturas con un potenciómetro,
permitiendo comparar resultados reales y virtuales.

Los resultados mostraron una buena correlación entre distancia y volumen, con alertas
funcionales y visualización clara. Se identificaron fuentes de error como ruido ambiental y
limitaciones del modelo simulado. Finalmente, se proponen mejoras como el uso de sensores
complementarios, refinamiento de la calibración y optimización del código.
Este proyecto demuestra la aplicabilidad de sensores ultrasónicos en sistemas de monitoreo
de líquidos, integrando hardware, software y análisis técnico en un entorno educativo.

Palabras clave: Sensor ultrasónico, Nivel de agua , L293N, Arduino Uno R3, Promedio
móvil, Visualización en LCD.

Introducción

La medición precisa del nivel de líquidos en depósitos es una necesidad común en entornos
industriales, agrícolas y domésticos. En este contexto, los sensores ultrasónicos ofrecen una
solución eficiente y no invasiva, al permitir estimar la distancia entre el sensor y la superficie
del líquido mediante el tiempo de vuelo de un pulso sonoro.
Este proyecto se centra en el desarrollo de un sistema de medición de nivel de agua en un
tanque utilizando el sensor ultrasónico HC-SR04, controlado por un microcontrolador
Arduino Uno R3. El sistema convierte las lecturas de distancia en valores proporcionales de
nivel en centímetros y porcentaje, y presenta los datos en tiempo real a través del Monitor
Serial y una pantalla LCD 16x2.
La práctica se divide en dos fases complementarias: la implementación física del sistema en
campo y su simulación digital en la plataforma Tinkercad. Ambas permiten validar el
funcionamiento del sensor, analizar la estabilidad de las lecturas y evaluar la precisión del
modelo de conversión.
Este informe documenta el proceso completo, desde la planificación y calibración hasta el
análisis de resultados, con el objetivo de demostrar la viabilidad de integrar sensores
ultrasónicos en sistemas de monitoreo de líquidos accesibles, educativos y funcionales.
Metodología

Preparación del proyecto y recopilación de datos


Contexto:
Se diseñó un sistema de medición de nivel de agua en un tanque utilizando un sensor
ultrasónico HC-SR04 y un Arduino UNO R3. El objetivo fue convertir la distancia medida en
un valor proporcional de nivel (cm y porcentaje), visualizar los datos en tiempo real mediante
una pantalla LCD I2C y el Monitor Serial, y generar alertas según rangos definidos. El
sistema fue calibrado con base en distancias de tanque vacío y lleno, y validado tanto en
campo como en simulación digital.

Variables del sistema:

• Sensor ultrasónico: HC-SR04​


• Microcontrolador: Arduino UNO R3​
• Pantalla: LCD 16x2 con adaptador I2C (dirección 0x27)​
• Altura útil del tanque: 100.0 cm​
• Distancia tanque vacío: 105.0 cm​
• Distancia tanque lleno: 10.0 cm​
• Velocidad del sonido: 0.0343 cm/µs​
• Intervalo de muestreo: 1000 ms​
• Umbrales de alerta: bajo < 20 %, medio 20–95 %, alto > 95 %​
• Plataforma de simulación: Tinkercad Circuits

Condiciones de prueba:

• Sensor colocado en la parte superior del tanque, centrado y sin interferencias laterales

• Alimentación estable de 5V para Arduino y periféricos

• Lecturas realizadas en ambiente controlado, sin vibraciones ni espuma superficial

• GND compartido entre Arduino, sensor y pantalla

Implementación de la práctica (Arduino)

Se desarrolló un código en Arduino que permite:


• Disparar el sensor ultrasónico y medir el tiempo de eco
• Convertir el tiempo en distancia y filtrar valores fuera de rango
• Calcular el nivel de agua en porcentaje y altura útil en cm
• Mostrar los datos en pantalla LCD y en el Monitor Serial
• Generar alertas según el nivel detectado

Funciones clave del código:



• readMicrosecondsHC(): genera el pulso y mide el tiempo de eco
• dectectarDistancia(): convierte el tiempo en distancia y aplica límites
• Cálculo de nivel: transforma distancia en porcentaje y altura útil
• Visualización: muestra nivel, distancia y estado en LCD y Serial
• Alertas: clasifica el nivel como bajo, medio o alto

Retroalimentación visual

• LCD línea 1: “Nivel: XX %”


• LCD línea 2: “Dist: XX.X cm” + estado (“Bajo”, “Medio”, “Alto”)
• Monitor Serial: imprime distancia, nivel, altura útil y alerta correspondiente
• Mensajes claros para cada estado del tanque

Simulación en Tinkercad

Se replicó el circuito en Tinkercad Circuits, incluyendo:


• Arduino UNO R3
• Sensor HC-SR04 conectado a pines 2 (Trig) y 3 (Echo)
• Pantalla LCD 16x2 conectada al bus I2C (SDA/SCL)
• Alimentación compartida entre todos los módulos
• Código cargado directamente en el simulador

La simulación permitió validar el comportamiento del sistema, observar la visualización en


pantalla, y verificar el funcionamiento de las alertas. Se realizaron pruebas con valores
simulados para comparar con las lecturas reales obtenidas en campo.

Resultados

Lecturas en campo

Se realizaron mediciones en un entorno controlado utilizando el sensor ultrasónico HC-SR04


montado sobre un tanque de prueba. El sistema fue calibrado con base en dos distancias de
referencia: 105.0 cm (tanque vacío) y 10.0 cm (tanque lleno). A partir de estas lecturas, se
calculó el nivel de agua en porcentaje y la altura útil en centímetros. Las mediciones se
realizaron con un intervalo de muestreo de 1000 ms, y se registraron los siguientes datos:

• Distancia medida: entre 10.0 cm y 105.0 cm


• Nivel calculado: entre 0 % y 100 %
• Altura útil: entre 0.0 cm y 100.0 cm
• Estado del tanque: Bajo, Medio o Alto según el porcentaje

Las lecturas fueron estables y coherentes con el comportamiento esperado. El sistema


respondió correctamente a cambios en el nivel de agua, activando las alertas correspondientes
y actualizando la visualización en tiempo real.

Visualización en LCD y Serial Monitor

La pantalla LCD mostró en la primera línea el nivel porcentual (“Nivel: XX %”) y en la


segunda línea la distancia medida (“Dist: XX.X cm”) junto con el estado del tanque (“Bajo”,
“Medio”, “Alto”). El Monitor Serial imprimió los mismos datos, además de la altura útil en
centímetros y mensajes de alerta más detallados.

Simulación en Tinkercad

Se replicó el circuito en Tinkercad Circuits, conectando el sensor HC-SR04 a los pines


digitales 2 y 3 del Arduino UNO, y la pantalla LCD al bus I2C. El código fue cargado
directamente en el simulador, permitiendo observar el comportamiento del sistema sin
necesidad de hardware físico. Las lecturas simuladas fueron coherentes con los valores
esperados, y la visualización funcionó correctamente.

Comparación de lecturas

Aunque no se registraron datos numéricos exactos en esta etapa, se observó una buena
correlación entre las lecturas simuladas y las obtenidas en campo. El sistema mostró
consistencia en la conversión de distancia a nivel, y las alertas se activaron en los rangos
definidos.

Discusión

Análisis de diferencias entre campo y simulación

Durante la práctica se observaron diferencias mínimas entre las lecturas obtenidas en campo
y las simuladas en Tinkercad. En el entorno físico, el sensor HC-SR04 presentó variaciones
leves debido a factores como vibraciones, temperatura ambiente y posibles interferencias
acústicas. En cambio, la simulación ofreció lecturas más estables, aunque menos
representativas de las condiciones reales.
La conversión de distancia a nivel funcionó correctamente en ambos entornos, pero en campo
fue necesario aplicar límites y filtros para evitar lecturas erráticas. La simulación, al no
incluir ruido ambiental ni variaciones físicas, permitió validar la lógica del código sin
necesidad de ajustes adicionales.

Fuentes de error y limitaciones

Entre las principales fuentes de error se identificaron:

• Lecturas inestables por vibraciones o espuma superficial​


• Posible desfase en la velocidad del sonido por temperatura​
• Limitación del ángulo de apertura del sensor ultrasónico​
• Precisión limitada en la simulación digital de Tinkercad​
• Redondeo de valores en la visualización LCD

Estas limitaciones no afectaron significativamente la funcionalidad del sistema, pero deben


considerarse en aplicaciones donde se requiera alta precisión.

Validación del modelo

El modelo de conversión implementado demostró ser funcional y replicable. La fórmula


utilizada para calcular el nivel en porcentaje permite una interpretación clara y directa de las
lecturas. Las alertas se activaron correctamente según los umbrales definidos, y la
visualización en LCD y Serial Monitor facilitó el monitoreo en tiempo real.

La simulación en Tinkercad fue útil como herramienta de verificación previa, aunque no


sustituye completamente la validación en condiciones reales. El sistema puede considerarse
exitoso en términos de diseño, implementación y respuesta.

Conclusión

El sistema desarrollado permitió medir el nivel de agua en un tanque de forma precisa y


confiable utilizando el sensor ultrasónico HC-SR04 y un microcontrolador Arduino UNO R3.
A través de la calibración basada en distancias de tanque vacío y lleno, se logró convertir las
lecturas de distancia en valores proporcionales de nivel en porcentaje y altura útil en
centímetros.
La visualización en tiempo real mediante pantalla LCD I2C y Monitor Serial facilitó el
monitoreo del sistema, mientras que las alertas por nivel bajo, medio y alto ofrecieron
retroalimentación inmediata al usuario. El código implementado demostró ser funcional,
modular y adaptable a diferentes entornos.
La simulación en Tinkercad permitió validar el comportamiento lógico del sistema antes de
su implementación física, ofreciendo una herramienta útil para pruebas preliminares y ajustes
de parámetros. Aunque la simulación no reproduce todas las condiciones reales, fue efectiva
para verificar la estructura del circuito y la lógica del código.
En general, el proyecto cumplió con los objetivos planteados, integrando hardware, software
y análisis técnico en una solución educativa y replicable. Se demostró la viabilidad de utilizar
sensores ultrasónicos en sistemas de monitoreo de líquidos, y se sentaron las bases para
futuras mejoras y ampliaciones.

Futuras mejoras

Para aumentar la precisión del sistema y su robustez en condiciones reales, se recomienda


implementar las siguientes mejoras:

• Promediado de lecturas: aplicar un promedio móvil o ponderado para reducir el impacto de


lecturas erráticas.

• Sensor de temperatura: incorporar un sensor adicional para compensar variaciones en la


velocidad del sonido.

• Filtrado digital: establecer límites dinámicos y validación de lecturas para evitar falsos
positivos.

• Pantalla OLED: utilizar una pantalla más compacta y con mejor contraste para entornos con
poca luz.

• Alimentación externa: emplear una fuente dedicada para evitar fluctuaciones por consumo
del LCD.

Ampliaciones del sistema

El proyecto puede escalarse hacia aplicaciones más complejas mediante:


• Activación de actuadores: controlar bombas o válvulas según el nivel detectado.
• Registro de datos: almacenar lecturas en una tarjeta SD o enviarlas por Wi-Fi/Bluetooth.
• Interfaz web: visualizar el nivel en tiempo real desde una página o app móvil.
• Integración con flotadores: combinar sensores digitales para validación cruzada.
• Mapeo volumétrico: adaptar el sistema a tanques con geometría irregular mediante tablas de
calibración.

Aplicaciones educativas

Este sistema puede utilizarse como práctica introductoria en cursos de electrónica,


programación o automatización, permitiendo a los estudiantes:
• Comprender el funcionamiento de sensores ultrasónicos
• Aplicar lógica de control y visualización
• Simular circuitos en plataformas digitales
• Analizar datos y validar modelos físicos
Referencias

Arduino. (2025). Arduino Uno R3 datasheet. Recuperado de [Link]

SparkFun. (2023). HC-SR04 Ultrasonic Sensor Hookup Guide. Recuperado de


[Link]

Autodesk. (2025). Tinkercad Circuits: Simulación de sensores ultrasónicos. Recuperado de


[Link]

Arduino. (2025). LiquidCrystal_I2C Library Reference. Recuperado de


[Link]

Foros Arduino. (2024). Discusión sobre calibración de sensores ultrasónicos. Recuperado de


[Link]

Apéndice
Código fuente del sistema

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);;

const int trigPin = 2;


const int echoPin = 3;
const float alt_max_tank = 100.0;
const float alt_vac_tank = 105.0;
const float alt_llen_tank = 10.0;

float distancia = 0.0;


float nivel= 0.0;

long readMicrosecondsHC() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH);
}
float dectectarDistancia() {

long time = readMicrosecondsHC();


float distancia = (time * 0.0343) / 2.0;

if (distancia < alt_llen_tank) distancia = alt_llen_tank;


if (distancia > alt_vac_tank) distancia = alt_vac_tank;

return distancia;
}

void setup() {
[Link](9600);
[Link]();
[Link]();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
[Link](0, 0);
[Link]("Calibrando sensor");
[Link](0, 1);
[Link]("Iniciando...");
delay(2000);
[Link]();
}

void loop() {

distancia= dectectarDistancia();

float distanciaUtili = alt_vac_tank - alt_llen_tank;


float medida = alt_vac_tank - distancia;

nivel = (medida / distanciaUtili) * 100.0;

if (nivel < 0.0) nivel = 0.0;


if (nivel > 100.0) nivel = 100.0;

float alturaUtil = (nivel / 100.0) * alt_max_tank;

[Link]("Distancia: "); [Link](distancia, 1); [Link](" cm, ");


[Link]("Nivel: "); [Link](nivel, 1); [Link](" % (");
[Link](alturaUtil, 1); [Link](" cm)");

// Alertas simples
if (nivel < 20.0) {
[Link](">>> ALERTA: Nivel bajo <<<");
} else if (nivel < 95.0) {
[Link](">>> ALERTA: Nivel Medio <<<");
}else{
[Link](">>> ALERTA: Nivel Alto <<<");
}

[Link](0, 0);
[Link]("Nivel:");
[Link]((int)round(nivel));
[Link]("% ");

[Link](0, 1);
[Link]("Dist:");
[Link](distancia, 1);
[Link]("cm");

[Link](12, 1);
if (nivel < 20.0) {
[Link]("Bajo");
} else if (nivel < 70.0) {
[Link]("Medio");
} else {
[Link]("Alto");
}

delay(1000);
}

Diagrama de conexión del circuito

Componentes conectados:
• HC-SR04:
– Trig → pin 2
– Echo → pin 3
– VCC → 5V
– GND → GND
• LCD 16x2 con I2C:
– SDA → A4
– SCL → A5
– VCC → 5V
– GND → GND

• Arduino UNO R3:


– Alimentación por USB o fuente externa
– Pines digitales y analógicos disponibles para expansión

Anexos

También podría gustarte