¿Cómo funciona el sensor de ultrasonidos medidor de distancia? 

Estos sensores son útiles a la hora de medir distancia y de detectar obstáculos gracias a los ultrasonidos. Este sensor es ideal para robots, coches y autómatas para que no se choquen con los obstáculos. Te explicamos su funcionamiento y como usarlo adecuadamente.

hc-sr04

1. ¿Qué es un ultrasonido?

2. Descripción del hardware del sensor HC-SR04

3. PINOUT

4. Funcionamiento del sensor de ultrasonidos

5. ¿Para qué se usa el sensor de ultrasonidos?

6. Conexión y funcionamiento

7. Código

1. ¿Qué es un ultrasonido?

Antes de comenzar a explicar el sensor de ultrasonidos, vamos a explicar que son estos. Como su nombre indica son sonidos “muy altos”, tanto que el oído humano no los puede escuchar, son inaudibles. Estamos hablando de sonidos cuya frecuencia va desde los 20KHz en adelante.

2

Los oídos humanos pueden escuchar ondas sonoras que vibran en el rango de aproximadamente 20 veces por segundo (un ruido sordo profundo) a aproximadamente 20,000 veces por segundo (un silbido agudo). Sin embargo, el ultrasonido tiene una frecuencia de más de 20.000 Hz y, por lo tanto, es inaudible para los humanos.

2. Descripción del hardware del sensor HC-SR04

El sensor ultrasónico HC-SR04 utiliza un sonar para determinar la distancia a un objeto como lo hacen los murciélagos. Ofrece una excelente detección de rango sin contacto con alta precisión y lecturas estables en un paquete fácil de usar.

En esencia, el sensor de distancia ultrasónico HC-SR04 consta de dos transductores ultrasónicos. 

En la parte frontal del telémetro ultrasónico hay dos cilindros de metal. Estos son transductores. Los transductores convierten las fuerzas mecánicas en señales eléctricas. Uno actúa como un transmisor, el cual convierte la señal eléctrica en pulsos de sonido ultrasónico de 40 KHz. El receptor escucha los pulsos transmitidos. Si los recibe, produce un pulso de salida cuyo ancho se puede utilizar para determinar la distancia recorrida por el pulso. ¡Así de simple!

3 

El sensor es pequeño, fácil de usar en cualquier proyecto de robótica y ofrece una excelente detección de rango sin contacto entre 2 cm y 400 cm, y con una precisión de 3 mm. Dado que funciona con 5 voltios, se puede conectar directamente a un Arduino o cualquier otro microcontrolador lógico de 5V.

Entre algunas características que hacen especial este sensor, se puede destacar las siguientes:

  • Detecta objetos transparentes: Dado que las ondas ultrasónicas pueden reflejarse en una superficie de vidrio o líquido, y retornar al cabezal, incluso los objetos transparentes pueden ser detectados.                                                                          
  • Objetos de forma compleja detectables: La detección de presencia es estable, incluso para objetos tales como bandejas de malla o resortes.                                                                                                                                                                 
  • Resistente a niebla y suciedad: La detección no se ve afectada por la acumulación de polvo o suciedad.                                      
  • Colores negros o luz solar: Su funcionamiento no se ve afectado por la luz solar o el material negro como los telémetros Sharp (aunque los materiales acústicamente suaves como la tela pueden ser difíciles de detectar)

NOTA:

Es importante conocer que es posible que los sensores ultrasónicos no detecten algunos objetos. Esto se puede deber a que algunos objetos tienen la forma o la posición de tal manera que la onda de sonido rebota en el objeto, pero se desvían del sensor ultrasónico. También es posible que el objeto sea demasiado pequeño para reflejar suficiente onda de sonido de regreso al sensor para ser detectado. Otros objetos pueden absorber la onda de sonido todos juntos (tela, alfombras, etc.), lo que significa que no hay forma de que el sensor los detecte con precisión. Estos sensores trabajan solamente donde tenemos presencia de aire (no pueden trabajar en el vacío, necesitan medio de propagación)

Estos factores son importantes a considerar en el diseño y programación de un robot usando este sensor ultrasónico.

Especificaciones completas:

Tensión de funcionamiento DC 5V
Corriente de funcionamiento 15 mA
Frecuencia de operación 40 kHz
Rango máximo 4m
Rango mínimo 2cm
Precisión de alcance 3 mm
Ángulo de medición 15 grados
Señal de entrada del disparador Pulso TTL de 10 µS
Dimensión

45 x 20 x 15 mm

3. PINOUT

Este sensor consta de 4 pines, 2 de alimentación típicos y otros dos para cada transductor ultrasónico mencionado.

4

 

VCC : es la fuente de alimentación para el sensor de distancia ultrasónico HC-SR04 al que conectamos el pin de 5V en el Arduino.

Trig (disparador) : La longitud del pulso es proporcional al tiempo que tardó en detectarse la señal transmitida

Echo :  El pin Eco produce un pulso cuando se recibe la señal reflejada. La longitud del pulso es proporcional al tiempo que tardó en detectarse la señal transmitida.

GND :    Debe estar conectado a la tierra de Arduino.

4. Funcionamiento del sensor de ultrasonidos

Una vez hemos visto sus características y pines, vamos a ver como funciona realmente. Como conseguimos con el emisor y receptor convertir los datos en el valor de la distancia.

Para empezar, se aplica un pulso de al menos 10 µS (10 microsegundos) de duración al pin Trigger. En respuesta a eso, el sensor transmite una ráfaga sónica de ocho pulsos a 40 KHz. Este patrón de 8 pulsos hace que la "firma ultrasónica" del dispositivo sea única, lo que permite al receptor diferenciar el patrón transmitido del ruido ultrasónico ambiental.

Los ocho pulsos ultrasónicos viajan a través del aire alejándose del transmisor. Mientras tanto, el pin de eco se pone ALTO para comenzar a formar el comienzo de la señal de retorno de eco.

En caso de que esos pulsos no se reflejen, la señal de eco expirará después de 38 mS (38 milisegundos) y volverá a nivel bajo. Por lo tanto, un pulso de 38 mS indica que no hay obstrucción dentro del rango del sensor, ya que es el tiempo que ha estado en estado ALTO.

[Foto: https://lastminuteengineers.com/arduino-sr04-ultrasonic-sensor-tutorial/]

Si esos pulsos se reflejan, el pin Echo baja tan pronto como se recibe la señal. Esto produce un pulso cuyo ancho varía desde los 150 µS a 25 mS, dependiendo del tiempo que tardó en recibirse la señal.

 

[Foto: https://lastminuteengineers.com/arduino-sr04-ultrasonic-sensor-tutorial/]

En la siguiente imagen se pueden observar los diversos pulsos, desde el “disparo” del Trigger y a continuación los 8 pulsos que del emisor. La onda se transmitirá por el aire rebotando en cualquier objeto que se encuentre a menos de 4 metros y dentro de un ángulo de 30º.

Justo después se pone en estado alto el Echo, que no pasa a estado bajo hasta que por el Receptor no acaba de recibir los 8 pulsos de la onda reflejada.

7

El ancho del pulso (la duración en tiempo) recibido se usa luego para calcular la distancia al objeto reflejado. Esto se puede resolver usando una ecuación simple de distancia-velocidad-tiempo, una ecuación simple. En caso de que lo haya olvidado, una manera fácil de recordar las ecuaciones de distancia, velocidad y tiempo es poner las letras en un triángulo.

Como siempre, queda mejor explicándolo mediante un ejemplo. Supongamos que tenemos un objeto frente al sensor a una distancia desconocida y recibimos un pulso de 500 µS de ancho en el pin Echo. Ahora calculemos como de lejos está el objeto del sensor. Para ello, usaremos la siguiente ecuación.

Distancia = Velocidad x Tiempo

Tenemos el valor de Tiempo, es decir, 500 µs y conocemos la velocidad. ¿La velocidad? Claro, el sonido viaja a la velocidad del sonido, un número más que conocido: 340 m/s. Tenemos que convertir la velocidad del sonido en cm/µs para calcular la distancia con las mismas unidades. Una búsqueda rápida en Google de "velocidad del sonido en centímetros por microsegundo" dirá que es 0.034 cm/µs. Podrías hacer los cálculos, pero buscarlos es más fácil. De todos modos, con esta información ya podemos calcular la distancia.

Distancia = 0,034 cm/µs x 500µs

¡Pero no está todo hecho! Recuerda que el pulso indica el tiempo que tardó en enviarse y reflejarse la señal, por lo que para obtener la distancia, en realidad se deberá dividir el resultado entre dos

Distancia = (0.034 cm/µs x 500 µs) / 2

Distancia = 8,5 cm

Entonces, ahora sabemos que el objeto está a 8.5 centímetros del sensor. Pero no te preocupes, estos cálculos no los tienes que hacer cada vez ni los tienes que hacer tu. Para algo es un sensor electrónico, para programarlo con tu placa de desarrollo.

5. ¿Para qué se usa el sensor de ultrasonidos?

La sencilla tecnología que usa este sensor hace que sea de gran utilidad en la industria de la automatización. Los sensores ultrasónicos pueden ser utilizados en muchos tipos de manufactura con resultados que destacan frente a otras opciones.

Seguridad en plataformas

La industria de la construcción se utilizan tanto grúas como plataformas de movimiento aéreo. En este ámbito, los sensores ultrasónicos ayudan a mantener un tráfico eficiente entre plataformas, manteniendo la seguridad en obras y entornos de trabajo.

Producción a granel

Un sector industrial común que exigen mediciones precisas para sus actividades de producción. El sensor ultrasónico se utiliza en estos casos para regular el llenado de contenedores industriales y evitar así su desbordamiento, tanto de líquidos como de sólidos.

Detección de autos

Quizás este es el ejemplo de uso de sensores ultrasónicos más común y claro, no solo para el sector industrial. Los estacionamientos públicos utilizan sistemas de pluma para la entrada y salida de vehículos. Los sensores ultrasónicos se encargan de evitar que una pluma baje sobre un coche mientras este está debajo.

El funcionamiento del sensor ultrasónico es ideal para muchos tipos de industrias, y existen muchos más ejemplos además de los mencionados. Esta tecnología es, sin duda, cuenta con las características ideales para asegurar la calidad, seguridad y flexibilidad de proyectos industriales a gran escala.

Robótica educativa

Pero este sensor es muy útil sobre todo en robótica educativa, para aprender a programar robots tanto simples como más complejos. Sirve tanto para aprender la teoría, que hemos explicado, como para realizar ejemplos más visuales y con aplicación directa. Podemos pensar en el típico robot detector de obstáculos, el cual girará o cambiará su rumbo al detectar un objeto para no chocarse.

tutorial

Puedes encontrar este ejemplo de funcionamiento en nuestro siguiente tutorial:

Ejemplo de funcionamiento de un coche robot de 2 ruedas detector de obstáculos con el controlador L298N y ultrasonidos

6. Conexión y funcionamiento

El conexionado de este sensor es muy sencillo, se puede alimentar directamente desde la placa de desarrollo a 5V. En nuestro caso usaremos la placa Arduino UNO y mostraremos el código para ejecutarlo en su IDE, pero se puede usar diversas como por ejemplo Raspberry Pi o micro:bit.

El módulo se conecta a la alimentación del Arduino de modo que Vcc va a 5V y GND a cualquiera de los GND de la UNO. El pin Trig lo conectaremos al pin digital 9 y el Echo al 8, tal y como se muestra en el siguiente esquema.

7. Código

Para el código de programación, primero debemos definir el Pin de Disparo (Trigger) y el Pin de Eco (Echo) que se conectarán a la placa Arduino. 

En este proyecto, EchoPin se adjudica al pin D8 y TriggerPin al D9. Luego definimos las variables para la distancia con “cm” (int) y la duración con “duration” (long).

Abre un sketch nuevo y pega el siguiente código:

const int EchoPin = 8;

const int TriggerPin = 9;

  

void setup() {

   Serial.begin(9600);

   pinMode(TriggerPin, OUTPUT);

   pinMode(EchoPin, INPUT);

}

 

void loop() {

   int cm = ping(TriggerPin, EchoPin);

/*Monitorización en centímetros por el monitor serial*/

   Serial.print("Distancia medida: ");

   Serial.println(cm);

   delay(1000);

}

//Cálculos para la distancia

int ping(int TriggerPin, int EchoPin) {

   long duration, distanceCm;

    

   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us

   delayMicroseconds(4);

   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us

   delayMicroseconds(10);

   digitalWrite(TriggerPin, LOW);

    

   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos

    

   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm

   return distanceCm;

}

Ahora, una vez subido el código, si abrimos el Monitor Serial desde Herramientas, podremos ver la distancia a la que posicionamos los objetos delante del sensor. Puedes probar a acercar y alejar la mano o un objeto para ver como varía la distancia.

Por otra parte, una librería interesante que puedes usar con este módulo es NewPing.h

Esta librería la puedes descargar haciendo clic aquí.

Un ejemplo de código usando esta librería puede ser el siguiente. Abre un nuevo sketch y copia el siguiente código.

// This uses Serial Monitor to display Range Finder distance readings

// Include NewPing Library

#include "NewPing.h"

// Hook up HC-SR04 with Trig to Arduino Pin 9, Echo to Arduino pin 10

#define TRIGGER_PIN 9

#define ECHO_PIN 8

// Maximum distance we want to ping for (in centimeters).

#define MAX_DISTANCE 400

// NewPing setup of pins and maximum distance.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

float duration, distance;

void setup() 

{

Serial.begin(9600);

}

void loop() 

{

// Send ping, get distance in cm

distance = sonar.ping_cm();

}

Si abres el Monitor Serie podrás ver algo así:

11

 

Programación del sensor ultrasonidos con micro:bit

Si quieres usar la pequeña placa de BBC, te dejamos un código de ejemplo para su propio editor MakeCode. Busca los siguientes bloques y configúralo tal y como se indica a continuación.

bbc

 

La conexión, como se puede observar en el código es la siguiente:

Sensor ultrasónico

Micro:bit

VCC 5V
GND GND
Trigger P0
Eco P1

Sin embargo, se deben conectar unas resistencias de 1k y 2k como se muestra a continuación:

 

Si bien es posible lograr la configuración anterior usando pinzas de cocodrilo, pero resulta mucho más fácil usar una placa de pruebas y cables de puente. 

Una vez cargado el código en la micro:bit, apunta el cabezal ultrasónico al objeto que le gustaría probar, y luego verás la distancia entre ellos en la matriz de LED.

Fuentes

Datasheet: 

https://drive.google.com/file/d/1C9-DcwmDGtWWn3LXleZaTD6GkqMBa-Bg/view?usp=sharing

https://lastminuteengineers.com/arduino-sr04-ultrasonic-sensor-tutorial/

https://juegosrobotica.es/sensor-de-ultrasonidos/#

https://www.autycom.com/que-es-un-sensor-ultrasonico-y-para-que-sirve/

https://osoyoo.com/2018/09/18/micro-bit-lesson-using-the-ultrasonic-module/

Share