Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

Los sensores ultrasónicos HC-SR04 son una herramienta clave en el mundo de la electrónica y la robótica. Estos sensores emiten ondas sonoras de alta frecuencia para medir distancias con precisión, y son muy utilizados en proyectos con Arduino. En este artículo, te explicaremos detalladamente cómo funciona el sensor ultrasónico HC-SR04 y cómo puedes conectarlo a tu placa Arduino para sacarle el máximo provecho. ¡Sigue leyendo para descubrir todo lo que necesitas saber sobre este fascinante dispositivo!

Agregue potencia de murciélago a su próximo proyecto Arduino con el sensor de distancia ultrasónico HC-SR04, que puede informar la distancia de objetos hasta 13 pies de distancia. Es bueno saberlo si estás intentando evitar que tu robot golpee una pared.

Son de bajo consumo de energía (adecuados para dispositivos que funcionan con baterías), asequibles, fáciles de conectar y extremadamente populares entre los aficionados.

¿Qué es el ultrasonido?

El ultrasonido es una onda sonora de tono alto cuya frecuencia excede el rango audible del oído humano.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

Los humanos pueden escuchar ondas sonoras que vibran en un rango de aproximadamente 20 veces por segundo (un estruendo profundo) a 20.000 veces por segundo (un silbido agudo). Sin embargo, los ultrasonidos tienen una frecuencia de más de 20.000 Hz y, por tanto, son inaudibles para los humanos.

Descripción general del hardware HC-SR04

Un sensor de distancia ultrasónico HC-SR04 en realidad consta de dos transductor ultrasónico.

Uno actúa como transmisor, convirtiendo la señal eléctrica en pulsos ultrasónicos a 40 kHz. El otro actúa como receptor y escucha los impulsos enviados.

Cuando el receptor recibe estos pulsos, produce un pulso de salida cuyo ancho es proporcional a la distancia del objeto que tiene delante.

Este sensor proporciona una excelente detección de áreas sin contacto entre 2 cm y 400 cm (~13 pies) con una precisión de 3 mm.

Dado que funciona con 5 voltios, se puede conectar directamente a un Arduino u otro microcontrolador lógico de 5 V.

Especificaciones técnicas

Aquí están las especificaciones:

Tensión de funcionamiento CC 5 V
Corriente de funcionamiento 15mA
Frecuencia de trabajo 40 kHz
Rango maximo 4m
Rango mínimo 2cm
Precisión de distancia 3mm
medir ángulos 15 grados
Señal de entrada del disparador Pulso TTL de 10 µS
Dimensiones 45x20x15mm

Asignación de pines del sensor ultrasónico HC-SR04

Echemos un vistazo al pinout.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

VCC Suministra energía al sensor ultrasónico HC-SR04. Puedes conectarlo a la salida de 5V de tu Arduino.

Trigonometría El pasador se utiliza para activar pulsos ultrasónicos. Al configurar este pin en ALTO durante 10 µs, el sensor activa una ráfaga ultrasónica.

eco El pin sube cuando se envía la ráfaga ultrasónica y permanece alto hasta que el sensor recibe un eco. Luego baja. Midiendo el tiempo que el pin de eco permanece alto, se puede calcular la distancia.

Tierra es el pin de tierra. Conéctalo a tierra del Arduino.

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

Todo comienza cuando el pasador del gatillo se establece en ALTO durante 10 µs. En respuesta, el sensor envía una ráfaga ultrasónica de ocho pulsos a 40 kHz. Este patrón de 8 pulsos está diseñado específicamente para permitir que el receptor distinga los pulsos transmitidos del ruido ultrasónico ambiental.

Estos ocho pulsos de ultrasonido viajan por el aire alejándose del transmisor. Mientras tanto, el pin de eco se pone ALTO para activar la señal de retorno de eco.

Si estos pulsos no se reflejan, la señal de eco expira y baja después de 38 ms (38 milisegundos). Un pulso de 38 ms indica que no hay ningún obstáculo en la zona del sensor.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

Cuando estos pulsos se reflejan, el pin de eco baja tan pronto como se recibe la señal. Esto genera un pulso en el pin de eco, cuyo ancho varía entre 150 µs y 25 ms dependiendo del tiempo de recepción de la señal.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

Calculando la distancia

La distancia al objeto reflejado se calcula a partir del ancho del pulso recibido. Esto se puede calcular utilizando la sencilla ecuación distancia-velocidad-tiempo que aprendimos en la escuela secundaria. Una manera fácil de recordar la ecuación es ordenar las letras en un triángulo.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

Pongamos un ejemplo para que quede más claro. Supongamos que tenemos un objeto a una distancia desconocida frente al sensor y recibimos un pulso con un ancho de 500 µs en el pin de eco. Ahora calculemos qué tan lejos está el objeto del sensor. Para ello utilizamos la siguiente ecuación.

Distancia = velocidad x tiempo

Aquí tenemos el valor del tiempo, es decir, 500 µs, y conocemos la velocidad. ¡Por supuesto que es la velocidad del sonido! es 340m/s. Para calcular la distancia, tenemos que convertir la velocidad del sonido a cm/μs. Es 0,034 cm/μs. ¡Con esta información ahora podemos calcular la distancia!

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

¡Pero aún no hemos terminado! Recuerde que el pulso de eco indica el tiempo que tarda la señal en transmitirse y reflejarse. Para encontrar la distancia, debes dividir tu respuesta por dos.

Distancia = (0,034 cm/μs x 500 μs) / 2

Distancia = 8,5 cm

Ahora sabemos que el objeto es 8,5 cm lejos del sensor.

Cableado de un sensor HC-SR04 a un Arduino

Ahora que entendemos completamente cómo funciona el sensor ultrasónico HC-SR04, ¡podemos comenzar a conectarlo a nuestro Arduino!

Conectar el HC-SR04 a Arduino es muy sencillo. Primero, coloque el sensor en su placa. Conecte el pin VCC al pin 5V del Arduino y el pin GND al pin de tierra. Ahora conecte los pines del disparador y del eco a los pines digitales n.° 9 y n.° 10 respectivamente.

La siguiente tabla enumera las conexiones de pines:

Sensor HC-SR04 arduino
VCC 5V
Trigonometría 9
eco 10
Tierra Tierra

Cuando haya terminado, debería tener algo similar a la imagen que se muestra a continuación.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
Cableado del sensor ultrasónico HC-SR04 a Arduino UNO – Modo normal

Instalación de biblioteca

Activar el sensor ultrasónico y medir manualmente el ancho del pulso de la señal recibida es mucho trabajo, pero afortunadamente hay muchas bibliotecas a nuestra disposición. Una de las bibliotecas más populares es la Nuevo ping Biblioteca. Esta es la biblioteca que usaremos en nuestros ejemplos.

La biblioteca NewPing es bastante avanzada. Admite hasta 15 sensores ultrasónicos al mismo tiempo y puede emitir directamente en centímetros, pulgadas o períodos de tiempo.

Esta biblioteca no está incluida en el IDE de Arduino, por lo que primero debes instalarla.

Para instalar la biblioteca, navegue hasta Sketch > Incluir bibliotecas > Administrar bibliotecas… Espere a que el Administrador de bibliotecas descargue el índice de la biblioteca y actualice la lista de bibliotecas instaladas.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

Filtre su búsqueda escribiendo «newping». Haga clic en la primera entrada y luego seleccione Instalar.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

código de ejemplo de arduino

A continuación se muestra un boceto sencillo que utiliza el monitor de serie para mostrar una distancia medida en centímetros. Antes de comenzar el análisis detallado, pruebe este boceto.

// 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 10

// 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);

void setup() {
	Serial.begin(9600);
}

void loop() {
	Serial.print("Distance = ");
	Serial.print(sonar.ping_cm());
	Serial.println(" cm");
	delay(500);
}

Una vez cargado el boceto, abra su monitor serie y establezca la velocidad en baudios en 9600 bps. Intente apuntar el sensor a los objetos que lo rodean. Deberías ver que la distancia medida comienza a pasar.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
Salida al monitor serie

Explicación del código:

El boceto comienza integrando la biblioteca NewPing recién instalada.

#include "NewPing.h"

Primero, se definen los pines Arduino a los que se conectan los pines disparador y eco del HC-SR04. También hemos definido una constante llamada MAX_DISTANCE. Se establece una distancia máxima a la cual los pings que van más allá de esta distancia se consideran «sin ping claro». MAX_DISTANCE actualmente está fijado en 400 [default = 500cm].

#define TRIGGER_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 400

Luego se nombra una instancia de la biblioteca NewPing. sonar creado.

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

En la configuración inicializamos la comunicación serie con el PC.

void setup() {
	Serial.begin(9600);
}

En el bucle simplemente llamamos al ping_cm() Ejecute la función e imprima el resultado en el monitor serie. Esta función envía un ping y devuelve la distancia en centímetros.

void loop() {
	Serial.print("Distance = ");
	Serial.print(sonar.ping_cm());
	Serial.println(" cm");
	delay(500);
}

Funciones más útiles en la biblioteca NewPing

Hay algunas funciones útiles que puede utilizar con el objeto NewPing.

  • El dibujo de arriba muestra la distancia en centímetros. Si desea que el resultado esté en pulgadas, utilice sonar.ping_in() Función.

    Serial.print(sonar.ping_in());
  • El boceto de arriba sólo tiene una resolución de un centímetro. Si desea obtener el resultado en forma decimal, puede utilizar NewPing en modo continuo en lugar del modo a distancia. Necesitas cambiar esta línea:

    Serial.print(sonar.ping_cm());

    con la siguiente linea

    Serial.print((sonar.ping() / 2) * 0.0343);
  • Hay un método llamado ping_median(iterations) en la biblioteca NewPing para mejorar la precisión de su HC-SR04. Este método implica tomar varias mediciones en lugar de solo una, descartar las lecturas fuera de rango y luego promediar las lecturas restantes. De forma predeterminada, solo se necesitan 5 métricas, pero puedes especificar tantas como quieras.

    int iterations = 5;
    Serial.print((sonar.ping_median(iterations) / 2) * 0.0343);

Proyecto Arduino – Telémetro sin contacto

Creemos un proyecto rápido para demostrar cómo un simple sensor ultrasónico se puede convertir en un sofisticado telémetro sin contacto. En este proyecto utilizamos una pantalla LCD de 16 × 2 caracteres que muestra una barra horizontal que representa la distancia al objeto.

Si no está familiarizado con las pantallas LCD de 16×2 caracteres, debería leer el siguiente tutorial.

LECTURAS SUGERIDAS

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
Conexión de un módulo LCD de 16 × 2 caracteres a Arduino
El Serial Monitor es una forma práctica de mostrar datos de un Arduino, pero ¿qué sucede si desea que su proyecto sea portátil y muestre…

alambrado

A continuación, debemos realizar la conexión a la pantalla LCD como se muestra a continuación.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
Cableado del sensor ultrasónico HC-SR04 y la pantalla LCD 16×2 al Arduino UNO

Instalación de biblioteca

Antes de cargar el código y jugar con el sensor, necesitamos instalar una biblioteca llamada Gráfico de barras LCD. Esta biblioteca ayuda a dibujar una barra horizontal en la pantalla LCD, donde la longitud de la barra representa la distancia al objeto.

Para instalar la biblioteca, navegue hasta Sketch > Incluir bibliotecas > Administrar bibliotecas… Espere a que el Administrador de bibliotecas descargue el índice de la biblioteca y actualice la lista de bibliotecas instaladas. Filtra tu búsqueda escribiendo “lcdbargraph”. Haga clic en la primera entrada y luego seleccione Instalar.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

código arduino

Después de instalar la biblioteca, pruebe el siguiente boceto.

// includes the LiquidCrystal Library
#include <LiquidCrystal.h> 

// includes the LcdBarGraph Library
#include <LcdBarGraph.h>

// Maximum distance we want to ping for (in centimeters).
#define max_distance 200

// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 

LcdBarGraph lbg(&lcd, 16, 0, 1); // Creates an LCD Bargraph object.

const int trigPin = 9;
const int echoPin = 10;
long duration;
int distance;

void setup() 
{
	lcd.begin(16,2); // Initializes the interface to the LCD screen
	
	pinMode(trigPin, OUTPUT);
	pinMode(echoPin, INPUT);
}

void loop() 
{
	// Write a pulse to the HC-SR04 Trigger Pin
	digitalWrite(trigPin, LOW);
	delayMicroseconds(2);
	digitalWrite(trigPin, HIGH);
	delayMicroseconds(10);
	digitalWrite(trigPin, LOW);
	
	// Measure the response from the HC-SR04 Echo Pin
	duration = pulseIn(echoPin, HIGH);
	
	// Determine distance from duration
	// Use 343 metres per second as speed of sound
	distance= duration*0.034/2;
	
	// Prints "Distance: <value>" on the first line of the LCD
	lcd.setCursor(0,0);
	lcd.print("Distance: "); 
	lcd.print(distance);
	lcd.print(" cm");

	// Draws bargraph on the second line of the LCD
	lcd.setCursor(0,1);
	lbg.drawValue(distance, max_distance);
	delay(500);
}

La salida se ve así.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
Salida de gráfico de barras en LCD de 16×2 caracteres

Explicación del código:

Primero, necesitas configurar la Biblioteca de Cristal Líquido como de costumbre. A continuación, cree una instancia de LcdBarGraph utilizando la instancia de LiquidCrystal que acaba de crear. Debes apuntar LiquidCrystal al constructor de LcdBarGraph.

El constructor de LcdBarGraph requiere tres parámetros más. El segundo es el número de la columna de caracteres en la pantalla LCD (en nuestro caso 16). Los dos últimos parámetros son opcionales y permiten el posicionamiento individual de la barra.

// creating bargraph instance
LcdBarGraph lbg(&lcd, 16, 0, 1);

Después de calcular la distancia desde el sensor utilizamos drawValue(value, maxValue) Función de visualización de gráfico de barras. Se dibuja un gráfico de barras con un valor intermedio 0 Y maxValue.

//display bargraph
lbg.drawValue(distance, max_distance);

Conexión de HC-SR04 con modo de 3 cables

Si tu Arduino solo tiene un número limitado de pines de E/S digitales, puedes usar el modo de 3 pines. Al conectar el sensor HC-SR04 a Arduino, normalmente necesitarás dos pines de E/S. Sin embargo, en el modo de 3 cables solo necesitas un pin de E/S en lugar de dos.

En este modo, se utiliza un único pin de E/S como entrada y salida. Esto es posible porque Trig y Echo no se utilizan al mismo tiempo.

La siguiente tabla enumera las conexiones de pines:

Sensor HC-SR04 arduino
VCC 5V
Disparo + Eco 9
Tierra Tierra

Así es como puedes conectar el sensor HC-SR04 a Arduino en modo de 3 cables.

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
Cableado del sensor ultrasónico HC-SR04 al Arduino UNO – modo de 3 cables

Todo lo que necesita hacer es conectar los pines TRIG y ECHO al pin digital n.° 9 y definir el pin 9 para ambos valores de pin en el código. El resto del código es el mismo.

#define TRIGGER_PIN 9 // Trigger and Echo both on pin 9
#define ECHO_PIN 9

¿Qué restricciones hay?

El sensor ultrasónico HC-SR04 es realmente bueno en términos de precisión y facilidad de uso general, especialmente en comparación con otros sensores ultrasónicos de bajo costo. Esto no significa que el sensor HC-SR04 funcione todo el tiempo. Las siguientes imágenes muestran algunas limitaciones del HC-SR04:

  • La distancia entre el sensor y el objeto/obstáculo es de más de 13 pies.

    Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
  • La superficie reflectante del objeto está en un ángulo poco profundo para que el sonido no se refleje hacia el sensor.

    Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
  • El objeto es demasiado pequeño para reflejar suficiente sonido al sensor. Además, si su sensor HC-SR04 está montado en una parte baja de su dispositivo, es probable que el sonido se refleje en el suelo.

    Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
  • Algunos objetos con superficies blandas e irregulares (por ejemplo, animales de peluche) absorben el sonido en lugar de reflejarlo. Por lo tanto, puede resultar difícil para el sensor HC-SR04 detectar dichos objetos.

    Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino
Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino

El sensor de distancia ultrasónico HC-SR04 es una herramienta fundamental para muchos proyectos de Arduino. Este sensor puede reportar la distancia de objetos de hasta 13 pies de distancia, lo que es sumamente útil para evitar que tu robot choque contra una pared. A continuación, te explicaremos detalladamente cómo funciona este sensor y cómo puedes conectarlo a tu Arduino.

¿Qué es el ultrasonido?

El ultrasonido es una onda de sonido de alta frecuencia cuya frecuencia supera el rango audible para el oído humano. Mientras que los humanos pueden escuchar sonidos que vibran aproximadamente entre 20 veces por segundo (un ruido profundo) y 20,000 veces por segundo (un silbido agudo), el ultrasonido tiene una frecuencia mayor a 20,000 Hz y por lo tanto es inaudible para los humanos.

Visión general del Hardware HC-SR04

El sensor de distancia ultrasónico HC-SR04 consiste en dos transductores ultrasónicos. Uno actúa como transmisor, convirtiendo la señal eléctrica en pulsos de sonido ultrasónico de 40 KHz. El otro actúa como receptor y escucha los pulsos transmitidos. Cuando el receptor recibe estos pulsos, produce un pulso de salida cuyo ancho es proporcional a la distancia del objeto frente al sensor.

Este sensor proporciona una detección de rango excelente sin contacto entre 2 cm y 400 cm (~13 pies) con una precisión de 3 mm. Dado que opera a 5 voltios, se puede conectar directamente a un Arduino u otro microcontrolador de lógica de 5V.

Especificaciones técnicas

Algunas de las especificaciones técnicas del sensor HC-SR04 incluyen un voltaje de operación de 5V, una corriente de operación de 15mA, una frecuencia de operación de 40KHz, un rango máximo de 4m, un rango mínimo de 2cm, una precisión de detección de 3mm, un ángulo de medición de 15 grados y una señal de entrada de disparo de 10µS. Su dimensión es de 45 x 20 x 15 mm.

Conexión del sensor ultrasónico HC-SR04 a Arduino

Conectar el sensor HC-SR04 a Arduino es muy sencillo. Comienza colocando el sensor en tu protoboard. Conecta el pin VCC al pin 5V del Arduino, el pin GND al pin de tierra. Luego, conecta los pines Trig y Echo a los pines digitales #9 y #10 respectivamente.

Las conexiones son las siguientes:

  1. VCC -> 5V
  2. Trig -> 9
  3. Echo -> 10
  4. GND -> GND

Cómo funciona el sensor ultrasónico HC-SR04

Todo comienza cuando el pin de disparo se establece en ALTO durante 10 µs. En respuesta, el sensor transmite una ráfaga ultrasónica de ocho pulsos a 40 kHz. Estos ocho pulsos ultrasónicos viajan a través del aire lejos del transmisor. Mientras tanto, el pin de eco se vuelve ALTO para iniciar la señal de eco de retorno.

Si esos pulsos no son reflejados, la señal de eco expira y se vuelve baja después de 38 ms (38 milisegundos). De esta manera, un pulso de 38 ms indica que no hay obstrucción dentro del rango del sensor.

Si esos pulsos son reflejados, el pin de eco se vuelve bajo tan pronto como se recibe la señal. Esto genera un pulso en el pin de eco cuyo ancho varía de 150 µs a 25 ms dependiendo del tiempo tomado para recibir la señal.

Para más información detallada, puedes consultar el artículo aquí.

Continúa leyendo este artículo para obtener más información sobre cómo conectar y utilizar el sensor HC-SR04 con tu Arduino en diferentes modos y proyectos emocionantes.

5 comentarios en «Cómo funciona el sensor ultrasónico HC-SR04 y cómo conectarlo a Arduino»

Deja un comentario