En este tutorial explicaremos como utilizar un sensor ultrasónico HC-SR04 y arduino para la medición de distancia y detección de obstáculos.

El sensor HC-SR04 es un módulo que incorpora un par de transductores de ultrasonido que se utilizan de manera conjunta para determinar la distancia del sensor con un objeto colocado enfrente de este. Quizá la característica más destacada del HC-SR04 es que puede ser adquirido por una baja suma de dinero y esto mismo lo ha hecho muy popular. Sin embargo, la baja cantidad de dinero que invertimos en el sensor, no demerita demasiado en la exactitud del sensor ni en su facilidad de uso, por lo que su relación costo / beneficio es muy buena.

En la foto principal de este artículo, observamos el sensor ultrasónico HC-SR04 montado en un protoboard y el Arduino Uno que usamos para desarrollar los programas.

 

Materiales necesarios para las prácticas.

Para completar los ejercicios propuestos en esta página recomendamos adquirir los siguiente materiales:

En la foto del artículo vemos los materiales que hemos utilizado y que tenemos disponibles en nuestra tienda virtual. Nosotros utilizamos nuestro protoboard, pero vale cualquier otra forma de montar y conectar los componentes, incluso un simple juego de cables dupont funciona perfecto, con la ventaja de resultar mucho más compacto.

 

¿Cómo funciona el sensor HC-SR04?

El sensor HC-SR04 es un módulo que incorpora un par de transductores de ultrasonido que se utilizan de manera conjunta para determinar la distancia del sensor con un objeto colocado enfrente de este. Un transductor emite una “ráfaga” de ultrasonido y el otro capta el rebote de dicha onda. El tiempo que tarda la onda sonora en ir y regresar a un objeto puede utilizarse para conocer la distancia que existe entre el origen del sonido y el objeto.

¿Cómo funciona el sensor HC-SR04?

En el mercado existen 2 tipos de módulos para medición de distancia por ultrasonido que se utilizan en robótica y aplicaciones similares:

  • Interfaz mediante pulso de eco: Este tipo de sensores poseen un pin de disparo y otro de eco, algunos incluso combinan ambas funcionalidades en un solo pin. El microcontrolador que desea realizar una medición debe medir el tiempo en alto de un pulso digital.
  • Interfaz serial (I2C o UART): Este tipo de módulos entregan su medición en formato digital a través de una interfaz serial (I2C o UART). Habitualmente se acceden como si se tratara de una memoria serial I2C y podemos leer los registros donde se encuentran las mediciones de distancia.

El HC-SR04 es un sensor que funciona a través de la medición del pulso de echo y solamente explicaremos este tipo de sensores en este tutorial.

A continuación puedes descargar la hoja de datos del sensor para conocerlo más a fondo.

 

¿Cómo se comunica con Arduino el sensor HC-SR04?

La interfaz del sensor HC-SR04 y arduino se logra mediante 2 pines digitales: el pin de disparo (trigger) y eco (echo). La función de cada uno de estos pines es la siguiente:

  • El pin trigger recibe un pulso de habilitación de parte del microcontrolador, mediante el cual se le indica al módulo que comience a realizar la medición de distancia.
  • En el pin echo el sensor devuelve al microcontrolador un puso cuyo ancho es proporcional al tiempo que tarda el sonido en viajar del transductor al obstáculo y luego de vuelta al módulo.

Mediante una sencilla formula puede estimarse entonces la distancia entre el sensor y el obstáculo si se conoce el tiempo de viaje del sonido así como la velocidad de propagación de la onda sonora. La siguiente imagen muestra los pulsos recibidos y enviados por el sensor, de acuerdo a la hoja de datos del sensor que colocamos más arriba para su descarga.

Señales generadas por el sensor HC-SR04 y arduino

Como se puede observar, el HC-SR04 genera un pulso en el pin marcado como “echo” cuya duración es proporcional a la distancia medida por el sensor. Para obtener la distancia en centímetros, solamente debemos dividir el tiempo en microsegundos entre 58 o para obtener la distancia en centímetros (148 para pulgadas).

 

¿Cómo se conecta un sensor HC-SR04 con arduino?

La conexión del sensor con Arduino es muy sencilla. Podemos realizarla utilizando un protoboard, o directamente con alambres. Para lograr que el sensor funcione, son necesarias 4 señales:

  • Alimentación de 5 volts.
  • Tierra o común del circuito.
  • Señal de disparo (trig).
  • Señal de eco (echo).

La siguiente imagen muestra como queda conectado el sensor utilizando solamente cables:

hc-sr04 y arduino

Cabe aclarar que nosotros hemos utilizado los pines 11 y 12, pero vale cualquier otra combinación de pines. No hay mucho más que decir, ya que es bastante fácil de conectar, solamente tener cuidado con la polaridad y posición de las señales.

 

Programación para sensor ultrasónico HC-SR04 y arduino utilizando librería.

El primer paso es descargar e instalar la librería newPing desde el playground de Arduino. El proceso de instalación de una librería ya lo hemos cubierto en un tutorial anterior y no lo expondremos nuevamente en esta entrada. El enlace de descarga de la librería y su documentación se encuentran en esta web:

Ya que tengamos la librería NewPing instalada, copiamos el siguiente código para probar su funcionamiento. Hay que recordar que si cambiamos los pines de conexión con el sensor, es necesario retocar las primeras lineas para que las señales puedan llegar a los pines correspondientes.

Los pines de conexión deben coincidir perfectamente para que el sensor HC-SR04 y Arduino puedan funcionar en conjunto, de lo contrario, podemos causar daños y sobrecalentamiento a cualquiera de las dos placas: Arduino o sensor.

El código realizado con la librería NewPing queda bastante sencillo y además de aceptar el sensor ultrasónico HC-SR04 permite utilizar la gran mayoría de los sensores que utilizan interfaz del tipo Interfaz “con medición de pulsos” con 3 y 4 pines.

 

Programación para sensor ultrasónico sin usar librería

Puede resultarnos útil, al menos para satisfacer la curiosidad, poner a funcionar el sensor HC-SR04 sin la necesidad de usar una librería. El programa que mostramos a continuación permite hacer justamente eso:

Es necesario que cualquier pago sea realizado a la cuenta que la pagina muestra al crear una orden. No se aceptarán pagos a la cuenta anterior. Hasta nuevo aviso los pagos realizados vía PayPal no serán facturados. Ignorar