Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Sensor Ultrasónico HC-SR04: Guía Completa de Funcionamiento, Conexión y Código Arduino

El HC-SR04 es el sensor ultrasónico de distancia más popular en hobby y educación. Mide distancias de 2 cm a 400 cm con resolución de 0,3 cm (3 mm). Funciona emitiendo un pulso ultrasónico a 40 kHz y midiendo el tiempo que tarda el eco en volver. Alimentación: 5 V DC. Corriente: ~15 mA. Ángulo de haz: ~15°. Precisión típica: ±3 mm. Pines: VCC, Trig (Entrada disparo), Echo (Salida eco), GND. Compatible con Arduino, ESP32, ESP8266, STM32, PIC, etc. Ideal para robots evasores de obstáculos, medición de nivel de líquidos, estacionamiento asistido, detección de presencia, etc.

Pinout del HC-SR04

PinNombreFunción
1VCCAlimentación 5 V
2TrigEntrada disparo (pulso ≥ 10 µs HIGH)
3EchoSalida eco (pulso HIGH proporcional a distancia)
4GNDTierra

Principio de Funcionamiento

  1. Pulso HIGH de ≥ 10 µs en pin Trig inicia medición.
  2. Módulo emite tren de 8 pulsos ultrasónicos a 40 kHz.
  3. Pin Echo pasa a HIGH al emitir y vuelve a LOW al recibir eco.
  4. Ancho del pulso Echo (µs) = tiempo de ida y vuelta del sonido.
  5. Distancia (cm) = (Ancho pulso Echo × 0,0343) / 2 = Ancho pulso / 58,8 ≈ Ancho pulso / 58.

Fórmula simplificada: distancia_cm = duracion_us / 58.

Conexión con Arduino

HC-SR04          Arduino Uno
VCC      ──────── 5V
GND      ──────── GND
Trig     ──────── D9 (o cualquier pin digital)
Echo     ──────── D10 (o cualquier pin digital)

Importante: El pin Echo entrega 5 V. Si tu MCU es 3,3 V (ESP32, ESP8266), usa divisor de tensión (1 kΩ + 2 kΩ) o level shifter.

Código Arduino Básico (sin librerías)


const int TRIG_PIN = 9;
const int ECHO_PIN = 10;

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

void loop() {
  // Pulso de disparo ≥ 10 µs
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  // Medir ancho de pulso Echo (timeout 30 ms ≈ 4 m)
  long duration = pulseIn(ECHO_PIN, HIGH, 30000);

  if (duration == 0) {
    Serial.println("Fuera de rango / Sin eco");
  } else {
    float distance_cm = duration / 58.0;
    Serial.print("Distancia: ");
    Serial.print(distance_cm);
    Serial.println(" cm");
  }
  delay(500);
}

Usando Librería NewPing (Más Robusta)

Instala NewPing desde Gestor de Librerías.


#include 
#define TRIG_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 400

NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

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

void loop() {
  delay(500);
  unsigned int uS = sonar.ping(); // microsegundos
  float dist_cm = uS / US_ROUNDTRIP_CM; // constante 57.99 ≈ 58
  Serial.print("Distancia: ");
  Serial.print(dist_cm);
  Serial.println(" cm");
}

NewPing maneja timeouts, medianas de múltiples lecturas y evita bloqueos.

Consideraciones Prácticas y Limitaciones

Montaje Físico

Proyecto Ejemplo: Parking Assistant con Buzzer y LEDs


const int TRIG = 9, ECHO = 10;
const int BUZZER = 8;
const int LED_GREEN = 5, LED_YELLOW = 6, LED_RED = 7;

void setup() {
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
  pinMode(BUZZER, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_YELLOW, OUTPUT);
  pinMode(LED_RED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);

  long dur = pulseIn(ECHO, HIGH, 30000);
  if (dur == 0) return;
  float cm = dur / 58.0;

  if (cm > 50) { // Lejos
    digitalWrite(LED_GREEN, HIGH);
    digitalWrite(LED_YELLOW, LOW);
    digitalWrite(LED_RED, LOW);
    noTone(BUZZER);
  } else if (cm > 20) { // Medio
    digitalWrite(LED_GREEN, LOW);
    digitalWrite(LED_YELLOW, HIGH);
    digitalWrite(LED_RED, LOW);
    tone(BUZZER, 1000, 100);
  } else { // Cerca
    digitalWrite(LED_GREEN, LOW);
    digitalWrite(LED_YELLOW, LOW);
    digitalWrite(LED_RED, HIGH);
    tone(BUZZER, 2000, 200);
  }
  delay(100);
}

Conclusión

El HC-SR04 es sensor ultrasónico barato, fácil de usar y versátil. Con Arduino y librería NewPing, obtienes mediciones fiables en proyectos de robótica, domótica, nivel de líquidos y más. Recuerda sus limitaciones (ángulo, superficies, temp.) y usa divisor de tensión si tu MCU es 3,3 V. ¡Experimenta y construye!

Tecnología Industrial

  1. Estrategia de Planificación de Capacidad: Guía Completa para Optimizar Recursos de Fabricación
  2. Dominando el corte por láser: Precisión, potencia y orientación práctica
  3. Dominar la Garantía de Calidad en Manufactura: Guía Completa
  4. Refrigeración de proceso explicada: Beneficios, métodos y aplicaciones industriales
  5. Fuentes de Alimentación Variables: Características, Aplicaciones y Mejores Modelos
  6. Interruptor Flotante DIY: Guía Completa para Construir e Instalar tu Propio Sensor de Nivel de Agua
  7. Resistores Flexibles Explicados: Guía Completa para Proyectos Electrónicos
  8. Linterna Faraday: Guía Completa para Construir y Usar una Luz Mecánica
  9. SCR Desmitificado: Cómo los Rectificadores Controlados de Silicio Impulsan la Electrónica Moderna
  10. Dominando Condensadores MFD: Claves y Aplicaciones
  11. Guía Completa del Contrachapado: Propiedades, Usos y Consejos de Selección