Práctica 27. Alarma con sensor de distancia ultrasónico

27.1 Objetivo General

El objetivo de esta práctica es emitir sonido de un piezoeléctrico que actue como alarma a partir de una señal enviada por sensor de distancia ultrasónico. Se busca simular la alarma de los vehículos cuando perciben un objeto muy cerca.

27.2 Materiales y Métodos

  1. Una tarjeta Arduino (Uno-R3 o Mega 2560).
  2. Un piezo buzzer.
  3. Un sensor ultrasónico HC-SR04.
  4. Cables para el montaje del circuito.
  5.  Un cable USB de impresora.
  6. Tarjeta Protoboard.
  7. Computador.

27.3 Montaje de la práctica

Antes de comenzar la realización del montaje del circuito electrónico, se debe realizar el circuito en el programa TinkerCAD.  Con ayuda de la placa Protoboard para el montaje del circuito, se debe colocar el sensor de distancia ultrasónico correctamente para su adecuado funcionamiento, teniendo en cuenta como diferenciar las partes que lo componen:

  • VCC: Es donde será alimentado con 5V.
  • GND: Como su nombre lo indica ira a ground (tierra).
  • TRIG (transmisor): Es el pin al cual le enviaremos una señal para que dispare un pulso ultrasónico y así detectar la distancia a un objeto, lo conectaremos al pin 3.
  • Echo (receptor): Es el pin por el cual obtendremos el pulso de vuelta indicando que la señal ha sido recibida, lo conectaremos al pin 2.

Además, debemos conecta el piezo buzzer, que consta de dos pines, el positivo que lo conectaremos al pin 13 y el negativo que irá a tierra. ver figura 1:

Figura 1. Montaje de la práctica en el programa TinkerCAD

27.4 IDE del Arduino

  • Declarar parámetros:

Comenzaremos el código definiendo los parámetros que representan los pines a los cuales tenemos conectado el sensor ultrasónico y el piezo buzzer. Además de definir dos variables que usaremos como lo son duración y distancia.

const int pin_echo = 2;

const int pin_trig = 3;

const int piezo = 13;

int duracion;

int distancia;

  • Definir tipo de variable:

Dentro de Void Setup () vamos a definir que pines serán de entrada o salida, en este caso pin_echo será entrada (INPUT), pin_trig y piezo de salida (OUTPUT).

También establecemos la comunicación de datos con el computador para poder visualizar la distancia medida en el Monitor Serie captada por el sensor con el siguiente comando:

Serial. Begin (9600);

  • Estructura del código:

Ahora en Void loop (),al inicio el pin_trig debe estar apagado LOW para luego generar un pulso estando en HIGH, ambas funciones las hacemos con el comando digitalWrite(), con una duración determinada, este tiempo se encuentra en la planilla de especificaciones de cada sensor ultrasónico, en este caso será por 0,01 ms, usando el comando delay.

Luego que el pulso es enviado, rebota contra un objeto y se devuelve, queremos saber el tiempo que tarda en recibir el pulso el pin_echo, para ello usamos el comando pulseIN cuyos argumentos serán pin_echo y HIGH, almacenando ese valor en la variable llamada duracion. Con el tiempo podremos conocer la distancia a la que se encuentra el objeto sabiendo que:

Distancia = Velocidad * tiempo

Donde:

Velocidad: Es la velocidad a la que viaja el sonido, 0.034 cm/μs.

Tiempo: Es el tiempo que tardo la señal en ir hasta el objeto y volver, pero como queremos solo distancia hasta el objeto, debe ser dividido entre 2 (duración/2).

Finalmente queremos emitir un sonido con el piezo buzzer cuando el objeto este a una distancia cercana deseada, para ello usamos el comando if para la condición >= 500 o < 0, no queremos que suene el buzzer pues el objeto está lejos. La razón por la que se coloca “< 0” es debido a momentos en los que el sensor esta fuera de rango, éste devuelve un valor negativo. Y else para valores <= 50 entonces se activará el piezo con el comando tone y los argumentos piezo y frecuencia especificada.

Usaremos el comando Serial.print () con el argumento distancia para que podamos visualizar en Monitor Serie las distancias captadas.

El desarrollo del código explicado antes se puede apreciar a continuación:

// Práctica Alarma  de distancia con Sensor Ultrasónico
const int pin_echo = 2; // Echo del sensor va al pin 2
const int pin_trig = 3; // Trig  del sensor va al pin 3
const int piezo = 13; // Piezo va al pin 13
int duracion, distancia; //almacenar el tiempo y calcular la distancia
void setup() {
 Serial.begin(9600); //inicia el puerto de comunicación
 pinMode(pin_echo, INPUT); //define el pin 2 como entrada
 pinMode(pin_trig, OUTPUT); //define el pin 3 como salida 
}
void loop() {
 digitalWrite(pin_trig, LOW); //al comenzar el loop el trigger debe estar en LOW
 delay(2);
 digitalWrite(pin_trig, HIGH); //genera el pulso de trigger por 0,01 ms
 delay(0.01);
 digitalWrite(pin_trig, LOW);
 duracion = pulseIn(pin_echo, HIGH); //tiempo de ida y vuelta en microsegundos
 distancia = (duracion/2)*0.034; //distancia al objeto
 delay(2); //para darle tiempo
 if ((distancia >= 500)||(distancia < 0)){ //si la distancia es mayor de 5 m
 Serial.println("----------"); //... o menor a 0 no mide nada (lejos)
                }
 else{
 Serial.print(distancia);
 Serial.println(" cm");
 if(distancia<=50){ 
 tone(piezo,261.63,50); //Emitir sonido a distancias menor o igual a 0.5 m (cerca)
 delay(200);
 }
 }
} 

Algoritmo 1 código para activar alarmar a partir de un sensor de distancia ultrasónico

Implementación del algoritmo en TinkerCAD y video explicativo de la práctica:

https://www.tinkercad.com/things/kVQexI6e9dk-dazzling-krunk/editel?tenant=circuits

https://youtu.be/kG2uJtXEl54

27.5 Conclusión

Con esta práctica entendimos como funciona un sensor ultrasónico y cuáles son los comandos que usa para conocer la distancia hasta un objeto, pudiendo simular la alarma activada por los sensores de distancia de los vehículos emitiendo sonidos por medio de un piezo buzzer.