En este tutorial de Arduino aprenderemos acerca del sensor ultrasónico HC-SR04: cómo funciona, cuáles son sus características y cómo utilizarlo con nuestra placa Arduino UNO. 

 

Dificultad: Intermedia

 

El HC-SR04 es un sensor ultrasónico barato y fácil de usar, esto lo convierte en un componente ideal para proyectos hobbistas y educacionales. Posee un rango de 2 a 400 cm y es comúnmente usado en robots que evitan obstáculos y proyectos de automatización. 

 

Para este proyecto necesitaremos los siguientes componentes: 

 

  • 1 Sensor HC-SR04
  • 1 Arduino UNO 
  • 1 Protoboard 
  • Varios cables de conexión dupont
  • 1 Cable USB tipo A/B

 

¿Cómo funciona un sensor de distancia ultrasónico? 

 

Los sensores ultrasónicos funcionan emitiendo ondas de sonido con una frecuencia que es muy alta para que pueda detectar el oído humano. Estas ondas viajan a través del aire y si hay un objeto en frente del sensor, las ondas se reflejan y el receptor del sensor ultrasónico las detecta. Midiendo cuánto tiempo pasó entre el envío y la recepción de las ondas de sonido, la distancia entre el sensor y el objeto puede ser calculada. 

Funcionamiento de sensor HC-SR04

Hagamos un ejemplo práctico para comprender mejor el funcionamiento: 

Sabemos que la velocidad del sonido es aproximadamente 343 m/s o 0,034cm/µs. Digamos que el tiempo entre enviar y recibir las ondas de sonido es 2000 microsegundos. Si multiplicamos la velocidad del sonido por el tiempo de viaje de las ondas de sonido, obtenemos la distancia que las ondas de sonido viajaron. 

Utilizamos la formula Distancia = Velocidad * Tiempo

Pero ese no es el resultado que estamos buscando. La distancia entre el sensor y el objeto es en realidad solo la mitad ya que la onda de sonido viaja desde el sensor al objeto y de vuelta desde el objeto al sensor. Por lo que necesitamos dividir el resultado por 2:

 

Distancia (cm) = Velocidad de sonido (cm/µs) * tempo (µs) / 2 

Por lo tanto, para nuestro ejemplo este seria el calculo final: 

 

Distancia (cm) = 0,0343 (cm/µs) * 2000 (µs) / 2 = 34.3 cm 

 

¿Cómo funciona el HC-SR04? 

 

Al frente del sensor HC-SR04 encontraremos dos cilindros plateados (transductores ultrasónicos), uno es el transmisor de las ondas de sonido y el otro es el receptor. Para comenzar a generar una emisión sonora, debemos conectar en estado alto (5v) el pin Trig por al menos 10 µs. Luego el sensor crea una emisión ultrasónica de 8 ciclos con una frecuencia de 40kHz.

 

La emisión sonora viaja a la velocidad del sonido, rebota y es recibida por el receptor del sensor. Luego el pin Echo emite el tiempo en que la onda de sonido viajó en microsegundos.

 

Especificaciones del HC-SR04

 

Voltaje de operación: 5V

Corriente de operación: 15mA

Frecuencia: 40kHz

Rango de medición: 2-400 cm

Resolución: 3mm

Ángulo de medición: 15 grados

Señal de entrada Trigger: pulso en alto de 10µs

 

Pines de HC-SR04

  1. VCC: Alimentación de HC-SR04, debe ser conectado a 5V de Arduino. 
  2. Trig: señal de Trigger para comenzar pulsos ultrasónicos
  3. Echo: Produce un pulso cuando la señal reflejada es recibida. 
  4. GND: conectar a la masa (gnd) de Arduino.

 

Diagrama de conexiones 

En el diagrama se muestra las conexiones entre el arduino UNO y el sensor HC-SR04 mediante la protobard. 

Los códigos de ejemplo debajo usa los pines 2 y 3 del arduino para el pin Trigger y Echo respectivamente, pero puedes cambiar estos a cualquier pin digital que prefieras. 

 

Código de programación

 

En lugar de activar el sensor y medir la señal recibida manualmente, usaremos una librería especial. 

Hay bastantes librerías disponibles, la más versátil es la librería “NewPing”. 

 

Para instalarla, abrir el Arduino IDE, ir a Programa > incluir librerías > administrar bibliotecas > buscar “newPing” y seleccionar instalar > listo! ya tienes la librería instalada lista para usar. 

 

La librería es bastante avanzada y mejora considerablemente la precisión de un código de programación sin librería. La misma incluye algunos ejemplos que se puede usar, pero se deberá modificarlo para igualar la configuración de hardware que mostramos en la parte de conexiones. 

 

Código: 

 

// Este código usa el monitor serial para mostrar las lecturas de distancia
// incluir la librería NewPing
#include “NewPing.h”
// Conectar trig al pin 2 de arduino y echo al pin 3 de arduino
#define TRIGGER_PIN 2
#define ECHO_PIN 4
// Máxima distancia configurada en centímetros
#define MAX_DISTANCE 400
// Configuracion de pines y distancia con libreria NewPing 
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
float duration, distance;
void setup() 
{
Serial.begin(9600);
}
void loop() 
{
// Enviar ping, obtener distancia en cm
distance = sonar.ping_cm();
// Enviar resultados al monitor serial 
Serial.print(“Distance = “);
if (distance >= 400 || distance <= 2
{
Serial.println(“Out of range”);
}
else 
{
Serial.print(distance);
Serial.println(” cm”);
}
delay(500);
}

 

Salida de monitor serial: 

Explicación de código de programación 

 

El código que mostramos arriba es simple y funciona bien pero sólo tiene resolución de 1 cm. Si se quiere aumentar la resolución con valores decimales, puede utilizarse el modo de duración (duration) en lugar del modo distancia (distance). Es necesario reemplazar la siguiente línea:

 

// Enviar ping, obtener distancia en cm

distance = sonar.ping_cm();

 

Con las siguientes líneas: 

duration = sonar.ping();

distance = (duration / 2) * 0.0343;

 

Se puede modificar o implementar este código de ejemplo en otros proyectos.  

 

Limitaciones del Sensor HC-SR04

 

En términos de precisión y usabilidad general, el sensor HC-SR04 es muy bueno, especialmente teniendo en cuenta su bajo costo. 

Esto no significa que el HC-SR04 sea capaz de medir “todo”.

A continuación mostraremos un par de situaciones en las que el HC-SR04 no está diseñado para funcionar correctamente:

  1. La distancia entre el sensor y el objeto / obstáculo es mayor a 400 cm. 

2. El objeto se encuentra en un ángulo en el que el sonido no se refleja hacia el sensor. 

3. El objeto es demasiado pequeño para reflejar el sonido de vuelta al sensor.

4. Algunos objetos con superficies suaves e irregulares (como peluches) absorben las ondas de sonido en lugar de reflejarlas. 

5. Efectos de la temperatura en la medición de distancia: Dado que la velocidad del sonido es un factor en el cálculo de distancia con nuestro HC-SR04 hay que tener en cuenta que la velocidad del sonido en el aire varía con la temperatura, presión de aire y la humedad, por lo que estos factores podrían afectar la precisión de nuestra medición final. 

 

En la mayoría de los proyectos hobbista y educacionales la medición obtenida sin tener en cuenta los factores adicionales mencionados serán suficientes, pero si la temperatura (ºC) y humedad son conocidas, considerar la siguiente fórmula: 

Velocidad del sonido m/s = 331.4 + (0.606 * temperatura) + (0.0124 * Humedad)  

 

Fuentes: