Medir distancia con Arduino, sensor ultrasónico

Muchas veces necesitamos medir distancia en nuestros proyectos, ya sea para tomarlo como un parámetro de decisión para abrir o cerrar una puerta, activar una alarma, o para cualquier cosa que se te ocurra. En este capítulo aprenderás a utilizar un sensor ultrasónico con tu placa Arduino.

¿Cómo funciona el sensor ultrasónico HC-SR04 para medir distancia?

Estos sensores emiten un sonido de alta frecuencia, tan alta que el ser humano no es capaz de percibirla. Esta señal viaja por el aire y rebota al estar en contacto con otro objeto. Al rebotar, la señal regresa al sensor. Cuando el sensor detecta que la señal regresó, este hace un cálculo del tiempo que le llevó a la señal de audio viajar y regresar al destino, con esto se puede medir la distancia del objeto que provocó el rebote de la señal de audio.

Uno de los sensores más utilizados en el mundo maker (mundo relacionado con el desarrollo de proyectos con Arduino y otras plataformas), es el sensor HC-SR04.

Sensor ultrasónico HC-SR04
Sensor ultrasónico HC-SR04

Este sensor contiene dos transductores, uno actúa como emisor de una señal de sonido a 40KHz y el otro actúa como receptor. Cuando el receptor captura la señal produce un pulso que sirve como referencia para determinar la distancia que la señal viajó.

Debido a su bajo costo y su fácil uso, el sensor HC-SR04 se ha vuelto muy popular. Algunas de sus características técnicas son:

  • Voltaje de operación: 5 V
  • Corriente de operación: 15 mA
  • Frecuencia de trabajo: 40 KHz
  • Rango máximo de detección: 4 m
  • Rango mínimo de detección: 2 cm
  • Ángulo de medición: 15 grados
  • Señal de disparo: 10 µs
  • Medidas: 45x20x15 mm

¿Cómo se conecta el sensor ultrasónico?

El sensor ultrasónico HC-SR04 cuenta con cuatro pines de conexión:

  • VCC
  • Trig
  • Echo
  • GND

Por lo que solamente necesitaremos alimentar el sensor directamente desde nuestra placa Arduino y utilizar dos pines digitales, uno para el Trig y otro para el Echo.

Para nuestro primer ejemplo, realizaremos las siguientes conexiones

Conexiones del sensor ultrasónico.
Conexiones del sensor ultrasónico.

Y el código que utilizaremos es el siguiente

Declaramos dos variables de tipo entero para los pines Trigger y Echo. Dentro de la función void el Trigger lo declaramos como salida y el Echo como entrada. El Trigger es el pin donde le enviaremos una señal digital con duración de 10 µs para que el módulo ultrasónico sepa que queremos enviar una señal, por lo que para iniciar lo pondremos en estado bajo. El pin Echo, es donde recibiremos la señal de respuesta del módulo, esta se activa al recibir el sonido de regreso.

En la función loop, mandaremos una señal en alto, luego esperamos 10 µs y la ponemos en bajo, posteriormente a esto calcularemos el tiempo en alto de la señal de respuesta, esta estará relacionada con el tiempo que la señal tardó en ir y regresar. Esta respuesta la guardamos en la variable llamada tiempo, y utilizando la función pulseIN(Echo, HIGH) obtendremos el tiempo en alto de la señal recibida. Ahora tendremos guardado el tiempo en que la señal viajó, rebotó y regresó.

Posteriormente tendremos que interpretar este tiempo como una distancia, para lo cual acudiremos a las matemáticas 😉

La velocidad es la velocidad a la que viaja el sonido: 340 m/s, aunque la utilizaremos en cm/µs ya que será nuestra unidad de medida. El tiempo es el tiempo que nuestro sistema detectó, y la distancia es todo el recorrido que realizó la señal de audio, y como esta señal fue y regresó, quiere decir que el objeto estaba a la mitad del camino, por lo que esta distancia es el doble de la distancia hasta el objeto. Haciendo las matemáticas finalmente nos quedaría aproximadamente:

Por lo que nuestra variable distancia será igual a la variable tiempo dividida por 59.

Finalmente este dato lo desplegamos por el puerto serie obteniendo algo como esto:

Monitor Serie del ejemplo 1
Monitor Serie del ejemplo 1

¿Te está gustando este artículo?

Te invito a descargar totalmente gratis la Guía de Inicio en Arduino

Encontrarás mucha información extra, conceptos y sobre todo podrás llevarla contigo en todo momento

Ejemplo con una alarma visual

¿Verdad que es sencillo de utilizar? Pues ahora el límite es tu imaginación. Por ejemplo ahora realizaremos un sistema de «alarma» visual, donde si la distancia detectada es menor o igual que 10 cm, se encienda un LED, tú lo puedes reemplazar por lo que se te ocurra, como encender una bocina, un motor, etc.

Modificaremos nuestro diagrama como sigue:

DIagrama de conexiones con un LED
DIagrama de conexiones con un LED

Y el código que utilizaremos es el siguiente:

Si quieres ver como queda este ejemplo, visita mi Instagram, ahí estaré subiendo más imágenes y algunos datos interesantes → CLICK AQUÍ

Mejorar la medición del sensor ultrasónico HC-SR04

Este sensor, si bien es muy bueno para la mayoría de aplicaciones, tenemos que tener en cuenta sus limitaciones. Dentro de ellas están que el ángulo de incidencia sobre el objeto sea de máximo 45º, los objetos muy pequeños no los puede detectar con facilidad, o incluso objetos con superficies irregulares o muy suaves.

Por otro lado, tenemos que tener en cuenta que la temperatura y la humedad del ambiente afectan a la velocidad del sonido, si vas a utilizar este sensor en condiciones de altas o bajas temperaturas y donde la humedad relativa del ambiente es variable, te recomiendo realizar un ajuste con la siguiente fórmula:

Con esto puedes reemplazar la fórmula que utilizamos anteriormente, y tendrás una medición ajustada.

Recuerda que tengo un artículo donde puedes aprender a utilizar un sensor de temperatura y humedad relativa → CLICK AQUÍ

También, tienes que tener en cuenta que las mediciones que realiza el sensor pueden contener un pequeño error, por lo que si tu aplicación requiere de una mejor precisión, puedes utilizar la librería llamada NewPing.h donde se incluyen algunas funciones para ayudarte a realizar mejores cálculos, como promediar la medición con iteraciones, entre otras.

Si quieres aprender más de este sensor, déjame tus comentarios y podré extender este artículo


¿Qué te ha parecido el artículo de hoy? Déjame tus comentarios, dudas y sugerencias. Muchas gracias por el tiempo que te has tomado para estar aquí, me encantaría que me escribieras contándome sobre tus proyectos. Si te ha servido este artículo, considera compartirlo y visita mis redes sociales.

¡Hasta la próxima!

Recuerda visitar nuestras redes sociales

Deja un comentario