Saltar la navegación

Detector de objetos por ultrasonidos (US).

HC-SR04

Esta práctica consiste en montar un sistema con Arduino capaz de medir la distancia (cm) a la que se encuentra un objeto y mostrarla por el monitor serie. Para ello usaremos el sensor de ultrasonidos HC-SR04. Este sensor dispone de un emisor y receptor de ondas de ultrasonidos. El emisor "dispara" una onda ultrasónica que se propaga a 340 m/s y se inicia un temporizador. Si encuentra un objeto, la onda rebota. Esta onda reflejada o eco es capturada por el módulo receptor y el temporizador interno se para. De esta manera midiendo el tiempo que la onda tarda en ir y reflejarse, junto con la velocidad de propagación, el sensor calcula la distancia a la que se encuetra el objeto.

El sensor dispone de 4 pines: Alimentación (+5V), Tierra (GND), Trigger y Echo. El pin Trigger se encarga de "disparar" la señal de ultrasonidos por el transmisor. Se hace enviado un nivel alto desde Arduino al pin digital donde esté conectado el pin Trigger. El pin Echo se encarga de enviar a Arduino un pulso (nivel alto) con duración proporcional a la distancia a la que se encuentra el objeto detectado, más exactamente distancia (cm) = microsegundos del pulso / 29. Mediante la instrucción PulseIn de Arduino podemos leer la duración de ese pulso.

El sensor tiene un rango de 2 cm a 400 cm. Para más información consultar la hoja de especificaciones del sensor: http://www.micropik.com/PDF/HCSR04.pdf

ESQUEMA:

Pin Sensor US Pin Arduino
Vcc 5V
Trigger D8
Echo D9
GND GND

Ultrasonic

PROGRAMA 1:

int trigPin = 8;
int echoPin = 9;
long duration; //tiempo de ida/vuelta
int cm = 0; //Para almacenar el valor obtenido en cm valor=0
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop()
{
//ponemos al trigger a low para activarlo después
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
//Activar el módulo con un pulso de 10microsec.
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
//Esperamos la llegada de un pulso HIGH
duration = pulseIn(echoPin, HIGH); // valor del pulso alto en microsegundos
//tiempo de ida y vuelta, dividimos por 2
duration=duration/2;
//La velocidad del sonido es de 340 m/s
//El pin echo entrega un pulso alto 
//de una duración de 29 microsegundos
//por cada centímetro de distancia
//a la que esté el objeto.
cm = duration/ 29; Serial.print("Distancia:"); Serial.println(cm); delay(100); // Nos aseguramos de que el siguiente trigger
// y el echo actual no se mezclen (recomiendan 50 ms). }

OTRO MÉTODO USANDO UNA LIBRERÍA EXTERNA:

En este caso tenemos que descargar previamente el archivo comprimido (.zip) de la librería NewPing e instalarla desde la opción del IDE de Arduino Programa -> Incluir librería -> Add Library y seleccionar NewPing.zip (normalmente estará descargado en la carpeta de Descargas).

#include <NewPing.h>
 
#define TRIGGER_PIN  8
#define ECHO_PIN     9
#define MAX_DISTANCE 200
   
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
     
void setup() {
 Serial.begin(9600);
}
     
void loop() {
  delay(50);
  int uS = sonar.ping();
  Serial.print("Ping: ");
  Serial.print(uS / US_ROUNDTRIP_CM);
  Serial.println("cm");
}


Actividad

Diseña un circuito y realiza un programa que haga sonar un zumbador cuando un objeto se encuentre a menos de 5 cm del sensor.