Medición Precisa de Distancia por Ultrasonidos con Arduino – Guía Paso a Paso
Proyecto de Medición de Distancia por Ultrasonidos con Arduino
La medición de distancia por ultrasonidos es una herramienta útil en diversas aplicaciones: posicionamiento, localización, dimensionado, selección, medición de nivel, control y perfilado. Con cálculos matemáticos sobre valores de salida también se pueden medir velocidad y otras magnitudes físicas. Tiene aplicaciones en robótica.
Teniendo en cuenta estas aplicaciones, el sensor ultrasónico es excelente para medir distancias sin contacto físico en rangos cortos. Usa el concepto de ECO para medir distancia. En este proyecto aprenderemos a medir distancia interfazando módulo sensor HC-SR04 con Arduino y mostrando la distancia en LCD 16×2.
- Artículo Relacionado: Fuente de Alimentación Variable con Arduino UNO – Circuito y Código
Diagrama de Circuito del Proyecto de Medición

El interfazado es muy simple. Siga el diagrama: pines Trig y Echo del sensor ultrasónico a A4 y A5 de Arduino UNO; VCC y GND a 5 V y GND de Arduino.
Mostraremos la distancia en LCD 16×2 conectado a Arduino. Conecte RS y EN a pines digitales 12 y 11 respectivamente. D4-D7 del LCD a pines digitales 5-2 de Arduino. Potenciómetro 10K para controlar contraste del LCD como en diagrama.
- Artículo Relacionado: Timbre Automático con Detección de Objetos por Arduino
Componentes Necesarios
- Módulo Sensor Ultrasónico HC-SR04
- Arduino UNO
- LCD 16×2
- Potenciómetro
- Cables de conexión y jumpers
Módulo Sensor Ultrasónico
El sensor usado es HC-SR04, dispositivo de medición ultrasónica sin contacto. Mide distancia en rango 2 cm – 400 cm con precisión hasta 3 mm.
Consta de transmisor y receptor ultrasónico. Principio simple: pulso de disparo (IO trigger) envía señal alta 10 μs. El módulo envía 8 ciclos de 40 kHz y detecta si recibe pulso de retorno. Si lo recibe, el tiempo que el trigger permanece alto es el tiempo de ida y vuelta de la señal.
Distancia = (Tiempo nivel alto × Velocidad sonido en aire (340 m/s)) / 2
- Artículo Relacionado: Lámpara Nocturna Automática con Arduino
Diagrama de Tiempos (Timing Diagram)
El módulo funciona por ECO del sonido. Para disparar, pulso de ~10 μs. Tras esto, envía 8 ciclos de 40 kHz y verifica reflexión. Si hay obstáculo, señal choca y vuelve al receptor. Distancia se calcula con fórmula anterior. Dividimos por 2 porque el tiempo total es ida + vuelta; tiempo hasta obstáculo es la mitad. Diagrama de tiempos:

Especificaciones Técnicas
- Voltaje operación: 5 V
- Corriente operación: 15 mA
- Frecuencia operación: 40 kHz
- Ángulo medición: 15°
- Rango: 2 cm – 400 cm
Pinout del Sensor HC-SR04
- VCC: Alimentación módulo (típicamente +5 V)
- Trig: Dispara el módulo
- Echo: Pin de salida. Permanece alto durante el tiempo que la señal va del transmisor al obstáculo y vuelve al receptor.
- GND: Conectado a tierra del circuito principal.
Al conectar módulo con microcontrolador, se dispara por Trig enviando pulso alto 10 μs. Se espera ECO. Microcontrolador calcula el tiempo y luego la distancia con la fórmula.
- Artículo Relacionado: Qué es Circuito Crowbar – Diseño y Operación
Arduino UNO
Arduino es microcontrolador open source usado en proyectos embebidos pequeños y grandes. El usado aquí es Arduino UNO: más barato y fácil de interfazar. 14 pines digitales I/O y 6 analógicos. Open source: el usuario decide cómo usarlo. Puede modificar placa y software según necesidades.
- Artículo Relacionado: Circuito Simple de Protección contra Sobretensión con Diodo Zener
Módulo LCD 16×2
Comunes en proyectos embebidos por ser baratos y fáciles de interfazar. Los ve en calculadoras, multímetros, etc. Muestra 16 caracteres por fila, 2 filas (16 columnas × 2 filas). Cada carácter = matriz 5×8 píxeles. Total píxeles = 5×8×16×2 = 1280. Para gestionar posición de caracteres, se usa IC HD44780 que toma datos/comandos del microcontrolador y los procesa para imprimir en LCD. Facilita mucho el interfazado.
- Artículo Relacionado: Convertidor 12V a 5V
- Voltaje operación: 4,7–5,3 V
- Consumo: 1 mA sin retroiluminación
- 2 líneas × 16 caracteres
- Carácter = 5×8 píxeles
- Alfanumérico: números, letras, caracteres especiales
- Variantes retroiluminación verde/azul
Pinout y Descripción LCD 16×2
| Pin | Nombre | Descripción |
|---|---|---|
| 1 | VSS | Tierra, conectada a tierra del circuito. |
| 2 | VDD | Alimentación LCD (4,7–5,3 V), típicamente 5 V |
| 3 | VE | Control de contraste. Conectar potenciómetro; ajustando perilla se cambian niveles de contraste. |
| 4 | RS | Register Select. Cambia entre registro de comandos y datos. Conectado a microcontrolador. |
| 5 | RW | Read/Write. Leer/escribir en LCD. Generalmente a tierra para escribir datos. |
| 6 | EN | Enable. Conectado a microcontrolador; recibe 1/0 para validar dato. |
| 7 | Data pins (0-7) | Envían datos de 8 bits al LCD. Puede usarse en modo 4 bits (solo 4 pines). |
| 8 | A | Ánodo. Positivo para retroiluminación LCD. Opcional. Úselo si necesita retroiluminación. Consumo muy bajo sin ella. |
| 9 | K | Cátodo. Negativo para retroiluminación LCD. |
Interfazado básico LCD con Arduino: RS y EN a pines 12 y 11. D4-D7 a pines 5-2. RW, VSS, K a tierra; VDD, A a 5 V. Potenciómetro en VE para contraste.
- Artículo Relacionado: Control Semáforo Electrónico con IC 4017 y Timer 555
Código básico: incluir librería LiquidCrystal.h.
#include <LiquidCrystal.h>
Definir variables para pines de datos y pasarlas a función LiquidCrystal:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
En setup(), inicializar LCD con lcd.begin(16, 2) (16 columnas, 2 filas). Imprimir "Hello, World!":
lcd.begin(16, 2);
lcd.print("Hello, World!");
En loop(), cursor a posición (0,1) e imprimir milisegundos/1000:
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
Suba código a Arduino; verá mensaje en display. Cambie contraste girando potenciómetro.
- Artículo Relacionado: Circuito Interruptor por Aplausos con Timer 555 y Sin Timer
Programación Arduino para Medición de Distancia con Sensor Ultrasónico
Código muy fácil. Incluir cabecera para LCD:
#include <LiquidCrystal.h>
Definir macros para pines A4 (pin 18) y A5 (pin 19):
#define trig 18
#define echo 19
Variables para pines LCD e inicializar:
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Variables distancia d y tiempo t inicializadas a 0:
float t = 0, d = 0;
En setup(): inicializar LCD, definir Trig como OUTPUT y Echo como INPUT:
void setup() {
lcd.begin(16, 2);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
En loop(): limpiar LCD, inicializar sensor enviando pulso alto 10 μs, sensor envía 8 ciclos 40 kHz y verifica reflexión. Leer tiempo del sensor y calcular distancia. Dividir por 10000 para convertir m/s a cm:
void loop() {
lcd.clear();
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
t = pulseIn(echo, HIGH);
d = t * 0.0340 / 2;
d = t * 0.01330 / 2;
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(d);
lcd.print(" cm");
delay(1000);
}
- Artículo Relacionado: Interruptor Automático de Luz de Baño – Diagrama y Funcionamiento
Funcionamiento del Circuito de Medición
Suba código a Arduino. Acercale cualquier objeto o su mano frente al sensor. Lea distancia en LCD. Cambie distancia del objeto y obtendrá mediciones precisas.
Al inicializar sensor con pulso alto 10 μs, este envía 8 ciclos ultrasónicos 40 kHz; si se reflejan en obstáculo, vuelven al receptor. Sensor da tiempo de viaje de señal transmisor-obstáculo-receptor. Usamos ese tiempo para calcular distancia sensor-obstáculo.

Tecnología Industrial
- Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
- Construye un Dispositivo de Levitación Ultrasónica con Arduino – Guía Paso a Paso
- Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
- Construye un tarro inteligente IoT con ESP8266, Arduino y sensor ultrasónico: Monitorización en tiempo real
- Medición precisa de frecuencia y ciclo de trabajo con Arduino UNO
- Construye una Radio FM Compacta con Arduino Nano y RDA5807M
- Sistema Radar Compacto con Arduino Nano, Sensor HC-SR04 y Pantalla 1.8"
- Interruptor Táctil Capacitivo LED con Arduino UNO – Proyecto DIY Fácil
- Cómo Funcionan los Sensores de Distancia y sus Aplicaciones Clave
- Sensores para Arduino: Tipos, Aplicaciones y Proyectos Reales
- Cómo Funcionan los Circuitos de Sensor PIR: Diseño, Operación y Aplicaciones Reales