lunes, 12 de mayo de 2025

EL SENSOR ULTRASONICO HC-SR04

 

Sensor Ultrasónico para Arduino (HC-SR04 y similares)

1. ¿Qué es un Sensor Ultrasónico?

Un sensor ultrasónico es un dispositivo electrónico que mide la distancia a un objeto utilizando ondas sonoras de alta frecuencia (ultrasonidos), inaudibles para el oído humano (generalmente por encima de 20 kHz). Funciona de manera similar a un sonar o al sistema de ecolocalización de los murciélagos y delfines: emite un pulso de sonido y mide el tiempo que tarda en regresar el eco después de rebotar en un objeto.

2. Principio de Funcionamiento (Tiempo de Vuelo - Time of Flight, ToF):

El funcionamiento se basa en medir el "tiempo de vuelo" del ultrasonido:

  1. Emisión: El sensor emite un corto pulso de ultrasonido a través de un transductor (emisor).
  2. Propagación: La onda sonora viaja por el aire a una velocidad conocida (aproximadamente 343 metros por segundo a temperatura ambiente).
  3. Reflexión: Cuando la onda encuentra un objeto, parte de ella se refleja y regresa hacia el sensor.
  4. Recepción: Otro transductor (receptor) en el sensor detecta el eco reflejado.
  5. Cálculo: El microcontrolador (como el de Arduino) mide el tiempo transcurrido (Δt) entre la emisión del pulso y la recepción del eco.
  6. Distancia: Sabiendo el tiempo y la velocidad del sonido (v), se calcula la distancia (d) al objeto. Como el sonido recorre la distancia de ida y vuelta, la fórmula es:
    Distancia = (Tiempo * VelocidadDelSonido) / 2

3. El Modelo HC-SR04 (El más común con Arduino):

Es el sensor ultrasónico más popular y económico para proyectos con Arduino.

  • Características Principales:
    • Voltaje de Operación: 5V DC
    • Corriente de Operación: < 15mA
    • Frecuencia de Operación: 40 kHz
    • Rango de Medición: Típicamente de 2 cm a 400 cm (4 metros). La precisión disminuye con la distancia.
    • Ángulo de Detección: Aproximadamente 15-30 grados (es un cono de detección).
    • Interfaz: Digital (pines Trigger y Echo).
  • Pines del HC-SR04:

1.                  VCC: Alimentación (+5V). Conectar al pin 5V de Arduino.

2.                  Trig (Trigger/Disparador): Pin de entrada para el sensor. Arduino envía un pulso corto (10 microsegundos) a este pin para iniciar la medición. Conectar a un pin digital de Arduino (configurado como OUTPUT).

3.                  Echo (Eco): Pin de salida del sensor. Este pin se pone en ALTO (HIGH) durante el tiempo que tarda el eco en regresar. Arduino mide la duración de este pulso HIGH. Conectar a un pin digital de Arduino (configurado como INPUT).

4.                  GND: Tierra (0V). Conectar al pin GND de Arduino.

4. Conexión a Arduino:

La conexión es sencilla:

HC-SR04        Arduino

   -----------------------

     VCC   ------->   5V

     Trig  ------->   Pin Digital (ej. Pin 9)

     Echo  ------->   Pin Digital (ej. Pin 10)

     GND   ------->   GND

5. Programación con Arduino (Ejemplo Básico):

El proceso básico en el código de Arduino es:

  1. Configurar los pines Trig (OUTPUT) y Echo (INPUT).
  2. Asegurarse de que el pin Trig esté bajo (LOW).
  3. Enviar un pulso HIGH de al menos 10 microsegundos al pin Trig.
  4. Poner el pin Trig en LOW nuevamente.
  5. Medir la duración del pulso HIGH en el pin Echo usando la función pulseIn(). Esta función espera a que el pin pase a HIGH, mide el tiempo que permanece en HIGH, y luego espera a que vuelva a LOW, devolviendo la duración en microsegundos.
  6. Calcular la distancia usando la fórmula mencionada.

Código de Ejemplo (Sin Librerías):

// Pines para el sensor HC-SR04

const int trigPin = 9;

const int echoPin = 10;

 

// Variables para almacenar la duración y la distancia

long duracion;

int distanciaCm;

// float distanciaPulgadas; // Si quieres en pulgadas

 

// Velocidad del sonido en cm/microsegundo (aproximado a 20°C)

// 343 m/s = 34300 cm/s = 0.0343 cm/microsegundo

const float velocidadSonido = 0.0343;

 

void setup() {

  // Inicializar comunicación serial para ver los resultados

  Serial.begin(9600);

  Serial.println("Test Sensor Ultrasonico HC-SR04");

 

  // Configurar los pines

  pinMode(trigPin, OUTPUT); // Trig como salida

  pinMode(echoPin, INPUT);  // Echo como entrada

}

 

void loop() {

  // 1. Asegurar que Trig esté bajo inicialmente

  digitalWrite(trigPin, LOW);

  delayMicroseconds(2); // Pequeña pausa

 

  // 2. Enviar pulso de disparo (10 microsegundos)

  digitalWrite(trigPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(trigPin, LOW);

 

  // 3. Medir la duración del pulso de eco en microsegundos

  // pulseIn espera a que el pin se ponga HIGH, mide el tiempo, y espera a que baje a LOW

  duracion = pulseIn(echoPin, HIGH);

 

  // 4. Calcular la distancia

  // Distancia = (Tiempo * Velocidad) / 2  (ida y vuelta)

  distanciaCm = (duracion * velocidadSonido) / 2;

 

  // Opcional: Convertir a pulgadas (1 pulgada = 2.54 cm)

  // distanciaPulgadas = distanciaCm / 2.54;

 

  // 5. Mostrar la distancia en el Monitor Serie

  Serial.print("Distancia: ");

  Serial.print(distanciaCm);

  Serial.println(" cm");

 

  // Esperar un poco antes de la siguiente medición para evitar ecos cruzados

  delay(100); // Espera 100 milisegundos

}

6. Uso de Librerías (Ej. NewPing):

Existen librerías que simplifican el uso del sensor, manejan timeouts (si no se recibe eco) y pueden ofrecer funciones más avanzadas (como promediar lecturas o manejar múltiples sensores). La librería NewPing es muy popular.

  • Ventajas de NewPing:
    • Más fácil de usar.
    • Manejo de timeouts incorporado.
    • Funciones para convertir directamente a cm o pulgadas.
    • Optimización para no bloquear el código (ping_timer()).
    • Mejor manejo de múltiples sensores.
  • Instalación: Ve a Herramientas > Administrar Bibliotecas... en el IDE de Arduino, busca "NewPing" e instálala.

 

7. Aplicaciones Comunes:

  • Robótica: Detección de obstáculos para robots móviles (evitar colisiones).
  • Medición de Nivel: Medir el nivel de líquidos en tanques (apuntando desde arriba).
  • Sistemas de Aparcamiento: Similar a los sensores de reversa en los coches.
  • Seguridad: Detección de presencia en una zona determinada.
  • Proyectos Interactivos: Detectar la proximidad de una persona para activar luces, sonido, etc.
  • Automatización: Medir la altura de objetos en una cinta transportadora.

8. Ventajas:

  • Bajo Costo: Son muy económicos.
  • Fácil de Usar: Interfaz simple con Arduino.
  • Sin Contacto: Mide la distancia sin necesidad de tocar el objeto.
  • Buena Precisión para muchas aplicaciones: Suficiente para robótica básica, medición de nivel, etc.
  • Funciona en Oscuridad: No depende de la luz ambiental.

9. Limitaciones y Desventajas:

  • Superficies Absorbentes/Irregulares: Materiales blandos (telas, espuma) o superficies muy anguladas pueden absorber o desviar el sonido, dificultando la detección o dando lecturas erróneas.
  • Distancia Mínima: Tienen una distancia mínima de detección (generalmente 2 cm) porque el emisor necesita tiempo para apagarse antes de que el receptor pueda escuchar el eco de objetos muy cercanos.
  • Rango Limitado: El rango máximo (ej. 4m para HC-SR04) puede no ser suficiente para todas las aplicaciones.
  • Ángulo de Detección (Cono): No detectan un punto exacto, sino dentro de un cono. Objetos pequeños o fuera del centro del cono pueden no ser detectados correctamente.
  • Factores Ambientales: La velocidad del sonido varía con la temperatura, humedad y presión atmosférica. Para alta precisión, se debería compensar la temperatura.
  • Interferencia: Múltiples sensores ultrasónicos operando cerca pueden interferir entre sí si sus pulsos se cruzan. Se requieren técnicas de secuenciación o librerías como NewPing para manejarlos.
  • Objetos Muy Pequeños o Delgados: Pueden ser difíciles de detectar si no reflejan suficiente sonido hacia el sensor.

10. Consejos y Consideraciones:

  • Alimentación Estable: Asegúrate de que el sensor reciba 5V estables. Problemas de alimentación pueden causar lecturas erráticas.
  • Entorno Libre: El área entre el sensor y el objetivo debe estar despejada.
  • Superficie del Objetivo: Los mejores resultados se obtienen con superficies planas, duras y perpendiculares al sensor.
  • Compensación de Temperatura: Para mayor precisión, mide la temperatura ambiente y ajusta el valor de la velocidad del sonido en tus cálculos. Velocidad (m/s) ≈ 331.4 + 0.6 * Temperatura (°C).
  • Filtrado/Promediado: Si las lecturas son ruidosas, toma varias medidas y calcula la media o la mediana para obtener un valor más estable.
  • Manejo de Múltiples Sensores: Si usas varios, dispáralos secuencialmente (uno después del otro) para evitar interferencias, o usa librerías como NewPing que ayudan a gestionarlo.

No hay comentarios:

Publicar un comentario

EVALUACION DE INFORMATICA

 EVALUACION DE INFORMATICA  Instrucciones:  Responde en una hoja con tu nombre y fecha las siguientes preguntas de la forma más clara y comp...