Saltar al contenido
NulliusCloud
Menú
  • Inicio
  • Tutoriales
Menú

SENSOR ULTRASÓNICO HC-SR04

Publicada el 12/05/202412/05/2024 por Nestor Duran

¿Qué es un Sensor Ultrasónico?

Un sensor ultrasónico es un dispositivo que mide la distancia entre él y un objeto usando sonido, pero no cualquier sonido, sino uno tan agudo que el oído humano no puede escucharlo: el ultrasonido. Funciona como un murciélago o un delfín, enviando un «grito» en forma de pulso sonoro. Cuando este pulso choca con algo, rebota y regresa al sensor. Midiendo cuánto tarda en volver ese eco, el sensor calcula qué tan lejos está el objeto.

El HC-SR04 es uno de los sensores ultrasónicos más populares y accesibles para proyectos con Arduino. Es sencillo de usar y tiene dos partes clave:

Trigger (Trig): Es como el «grito» del sensor, el encargado de enviar el pulso ultrasónico.
Echo: Es quien escucha el eco del pulso que regresa, ayudando al sensor a hacer los cálculos necesarios para determinar la distancia.

Especificaciones del Sensor HC-SR04

  • Voltaje de operación: 5V
  • Rango de medición: 2 cm a 400 cm
  • Ángulo efectivo: Menos de 15 grados
  • Precisión: ±3 mm

Casos de Uso del Sensor Ultrasónico

  1. Robótica:
    • Evitar colisiones en robots móviles.
    • Navegación autónoma para mapeo y detección de obstáculos.
    • Automatización:
    • Detectar el nivel de líquidos en tanques.
    • Control automático de puertas o barreras.
  2. Seguridad:
    • Alarmas de proximidad.
    • Sistemas antirrobo basados en la detección de movimiento.

Limitaciones

  • Dependencia del medio: Las ondas ultrasónicas no funcionan correctamente en medios como agua o aire de muy baja densidad.
  • Ángulo de detección limitado: Tiene un campo de visión estrecho, lo que puede limitar su eficacia en áreas amplias.
  • Superficies absorbentes: Superficies blandas o irregulares pueden dificultar el retorno del eco.

Ejemplo Práctico con Arduino

La conexión básica de un HC-SR04 con Arduino incluye:

  • VCC: Conecta a 5V del Arduino.
  • GND: Conecta a GND del Arduino.
  • Trig: Conecta a un pin digital (por ejemplo, pin 9).
  • Echo: Conecta a otro pin digital (por ejemplo, pin 10).

Código de Ejemplo

  • Definición de pines:
    • Se asignan los pines digitales del Arduino donde estarán conectados los pines Trig y Echo del sensor HC-SR04.
    • TRIG_PIN (pin 9): Controla el envío del pulso ultrasónico.
    • ECHO_PIN (pin 10): Recibe el eco del pulso reflejado.
#define TRIG_PIN 9
#define ECHO_PIN 10
  • Configuración inicial (setup):
    • Serial.begin(9600): Inicializa la comunicación serial con el ordenador a una velocidad de 9600 baudios, permitiendo imprimir valores en el monitor serie.
    • pinMode(TRIG_PIN, OUTPUT): Configura el pin TRIG_PIN como salida, ya que enviará señales al sensor.
    • pinMode(ECHO_PIN, INPUT): Configura el pin ECHO_PIN como entrada, ya que recibirá señales del sensor.
void setup() {
  Serial.begin(9600); 
  pinMode(TRIG_PIN, OUTPUT); 
  pinMode(ECHO_PIN, INPUT);  
}
  • Envío del pulso ultrasónico:
    • Se realiza un ciclo de emisión del pulso:
      • digitalWrite(TRIG_PIN, LOW): Asegura que el pin TRIG_PIN esté en bajo antes de comenzar.
      • delayMicroseconds(2): Pausa breve para estabilizar el sensor.
      • digitalWrite(TRIG_PIN, HIGH): Activa el pulso ultrasónico enviándolo por el pin TRIG_PIN.
      • delayMicroseconds(10): Mantiene el pulso activo durante 10 microsegundos, lo que genera la onda ultrasónica.
      • digitalWrite(TRIG_PIN, LOW): Desactiva el pulso, dejando al sensor en espera del eco.
void loop() {
  long duration, distance;
  
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  • Recepción del eco:
    • pulseIn(ECHO_PIN, HIGH): Esta función mide el tiempo (en microsegundos) que el pin ECHO_PIN permanece en estado alto (HIGH). Este tiempo corresponde al lapso que tarda el pulso en viajar hasta el objeto y regresar.
  duration = pulseIn(ECHO_PIN, HIGH);
  • Cálculo de la distancia:
    • duration * 0.034: Convierte el tiempo medido en una distancia en centímetros. Esto se basa en la velocidad del sonido en el aire (340 m/s o 0.034 cm/μs).
    • / 2: Divide entre 2 porque el tiempo medido incluye el trayecto de ida y vuelta del pulso.
  distance = duration * 0.034 / 2;
  • Impresión del resultado:
    • La distancia calculada se imprime en el monitor serie con el formato:
    • Distancia: X cm, donde X es el valor calculado en centímetros.
  Serial.print("Distancia: ");
  Serial.print(distance);
  Serial.println(" cm");
  • Pausa en el bucle:
    • Se introduce un retraso de 500 milisegundos para no saturar el puerto serie con demasiados datos y permitir que el sensor realice nuevas mediciones.
  delay(500); // Para no saturar el puerto serie

/*
---------------------Nullius Tutoriales---------------------
Creado por Nestor Duran <https://nulliuscloud.com/> 
Este código de ejemplo es de dominio público.
*/

#define TRIG_PIN 9
#define ECHO_PIN 10

void setup() {
  Serial.begin(9600); 
  pinMode(TRIG_PIN, OUTPUT); 
  pinMode(ECHO_PIN, INPUT);  
}

void loop() {
  long duration, distance;
  
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  
  duration = pulseIn(ECHO_PIN, HIGH);
  distance = duration * 0.034 / 2; // Conversión a centímetros
  
  Serial.print("Distancia: ");
  Serial.print(distance);
  Serial.println(" cm");
  
  delay(500); // Para no saturar el puerto serie
}

Conclusión

Los sensores ultrasónicos como el HC-SR04 son herramientas esenciales en proyectos de electrónica, robótica y automatización gracias a su simplicidad, precisión y versatilidad. Aprender a utilizarlos es un paso clave para desarrollar soluciones innovadoras en el ámbito tecnológico.

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Entradas recientes

  • SENSOR ULTRASÓNICO HC-SR04
  • Descubriendo Arduino: Funciones Básicas y Control de LEDs con Botones
  • Módulo Bluethoot HM-10
  • ServoMotor con Arduino

Categorías

  • Arduino
  • Documentacion
  • Tutoriales
©2025 NulliusCloud | Diseño: Tema de WordPress Newspaperly