Un sensor ultrasónico es un detector de proximidad, el cual va a permitir que podamos saber que se encuentra a nuestro alrededor, así como la distancia a la que se encuentra. El sensor HC-SR04 , es de los mas utilizados ya que es de bajo costo y es muy útil para detectar objetos.

Este sensor nos ayudara por ejemplo a crear una alarma cuando un objeto se aproxime a una distancia especifica de un lugar u objeto que deseamos vigilar.

Funcionamiento

Este sensor se basa en el envió de un pulso de alta frecuencia, este rebota en los objetos cercanos y regresa al micrófono que incluye el sensor. Un dato interesante es que el pulso que el sensor envía es inaudible para los humanos.

Su funcionamiento lo podemos comparar fácilmente con la Eco-localización que utilizan algunos animales como las ballenas o los murciélagos.

Al medir el tiempo que el pulso tarda en regresar al sensor podemos saber la distancia a la que se encuentra el objeto.

El rango real del sensor HC-SR04 es de 20 cm a 2 metros.Aunque no son de precisión alta y no se recomienda para exteriores, si nos útiles para proyectos pequeños o prototipos.

Especificaciones de HC-SR04

Conexión

*En la conexión física utilice un led por que no encontré mi buzzer

Programación

int Trigger=2; //PIN usado para trigger
int Echo=3;    //PIN usado para echo
int alarma=7;  //PIN usado para buzzer / led
int t,d;       //variables para valores del sensor

void setup() {
  Serial.begin(9600); //Incializamos la comunicación
  pinMode(Trigger,OUTPUT);  //Declaramos a trigger de tipo Salida (emisor)
  pinMode(Echo,INPUT);      //Declaramos a echo de tipo Entrada (receptor)
  pinMode(alarma,OUTPUT)   //Declaramos al buzzer de tipo salida

  digitalWrite(Trigger,LOW); //Inicializamos el sensor en cero (apagado)
}

Después de realizar las configuraciones, en el bloque void loop()  enviaremos un pulso al trigger del sensor y después recibiremos como respuesta el ancho del pulso (tiempo que dura en regresar el eco del ultrasonico).

void loop() {
delay(1000);
digitalWrite(Trigger, HIGH); //Encendemos sensor
delayMicroseconds(10);      //Enviamos un pulso de 10us
digitalWrite(Trigger,LOW);  //Apagamos sensor
t= pulseIn(Echo,HIGH);    //recibimos tiempo que tarda el echo en regresar 
}

En la variable t se guarda el tiempo que tarda en regresar el echo, el siguiente paso es calcular la distancia a la que se encuentra el objeto.

Para esto utilizamos la siguiente formula:

velocidad=velocidad del sonido 340 m/s Usaremos en cm/micro segundos lo cual es 34000 cm/micros

Por lo tanto para obtener la distancia la formula es:

distancia= velocidad * tiempo

distancia= 0.0343 * tiempo

Debido a que el tiempo medido es de ida y vuelta de la señal ultrasonica es necesario dividirlo entre dos.

distancia= ( 0.0343 * tiempo)/2

o bien podemos utilizar

distancia= 0.01715 * tiempo

Entonces nuestro código completo es :

int Trigger=2; //PIN usado para trigger
int Echo=3; //PIN usado para echo
int alarma=7; //PIN usado para buzzer / led
int t,d; //variables para valores del sensor

void setup() {
Serial.begin(9600); //Incializamos la comunicación
pinMode(Trigger,OUTPUT); //Declaramos a trigger de tipo Salida (emisor)
pinMode(Echo,INPUT); //Declaramos a echo de tipo Entrada (receptor)
pinMode(alarma,OUTPUT) //Declaramos al buzzer de tipo salida

digitalWrite(Trigger,LOW); //Inicializamos el sensor en cero (apagado)
}

void loop() {
delay(1000);
digitalWrite(Trigger, HIGH);
delayMicroseconds(10);
digitalWrite(Trigger,LOW);
t= pulseIn(Echo,HIGH); //es el tiempo que tarda el eco del ultrasonico  
d= 0.01715*t; // Agregamos la formula

//Agregamos un IF para validar, si se detecta algo o alguien a una distancia menor a 10cm encendemos la alarma.

if (d < 5){
  digitalWrite(led,HIGH);
}
else {
  digitalWrite(led,LOW);
}

//Mostramos en el monitor  la distancia que esta midiendo el sensor.
Serial.print ("Distancia: ");
Serial.print (d);
Serial.print ("cm");
Serial.println("");
delay (100);
}

Este código sencillo nos puede ayudar para comprender el funcionamiento del sensor ultrasónico y arduino.

Algunas de las aplicaciones que podemos darle a este sensor pueden ser:

  • Detección de presencias.
  • Detección de nivel de llenado.
  • Cierre o apertura de puertas.

Espero que este post se ha de utilidad y si les gustaría ver mas entradas de Arduino o sensores pueden dejarnos sus ideas.

por Esther Lopez

Programadora, Experiencia en educación para niños en el ámbito de la robótica, conferencista y activista en grupos donde enseñen programación a mujeres y niños de forma fácil.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.