Dentro del mundo Arduino, el emisor/receptor de ultrasonidos HC-SR04 es quizás uno de los complementos más reconocibles. Este sensor se emplea en todo tipo de proyectos, siendo su principal uso el de reconocer obstáculos, aunque debido su buena resolución, también se emplea para medir la distancias a objetos.
Descripción
Lo más singular del sensor de ultrasonidos HC-SR04 es quizás su "par de ojos", estos no son más que un emisor y un receptor de ultrasonidos que trabajan a una frecuencia de 40KHz (una frecuencia inaudible para las personas).
Este sensor consta de 4 pines, alimentación (Vcc), un disparador (Trig), el receptor (Echo) y masa (GND). Para el correcto funcionamiento del sensor es necesario el conectar estos 4 pines.
Las características básicas de este sensor y que se deben de tener en cuenta al trabajar con él son:
Como funciona
El principio en el que se basa su funcionamiento es muy sencillo, tan solo hay que generar una onda sónica en el emisor mediante un pulso en la patilla que pone "trig" (trigger o disparador), esta onda al encontrarse con algún obstáculo rebotará, volviendo al sensor y siendo registrada por el receptor, traduciéndose esta en un pulso en la patilla "Echo".
Con esto podemos hacer dos cosas, detectar un obstáculo esperando simplemente que Arduino reciba un "Echo" o contar el tiempo que transcurre desde que se manda el pulso por el trigger hasta que se recibe, de esta forma, y conociendo cual es la velocidad del sonido, podemos determinar de forma muy sencilla la distancia exacta a la que se encuentra el objeto en el que esta rebotando la señal.
Para aclarar un poco el factor de multiplicación que vamos a introducir en Arduino, basta con decir que la velocidad es igual al espacio dividido por el tiempo que se tarda en recorrer dicho espacio. La velocidad del sonido es conocida (343m/s) y el tiempo lo vamos a determinar, como el tiempo que transcurre desde que efectuamos el disparo hasta que recibimos el eco.
Aquí tenéis un pequeño resumen del cálculo que hay que hacer:
Tener en cuenta que este tiempo será doble, ya que la onda hace el camino de ida y el de regreso.
Ejemplo para medir distancias
Ahora os voy a enseñar un ejemplo básico para que implementéis el sensor de ultrasonidos como medidor de distancias, a partir de aquí, podéis complicar todo lo que queráis el ejemplo y usarlo en proyectos más complejos, pero esta es la base que debéis conocer.
Para este montaje vais a necesitar:
- 1 Placa Arduino.
- 1 Protoboard (placa de prototipado).
- 1 sensor de ultrasonidos HC-SR04
- Cables de conexión
El montaje es muy sencillo, tan solo hay que suministrar alimentación al modulo de ultrasonidos (conectar Vcc a +5 y GND a masa) y los pines de "echo" y "triger" conectarlos a los pines 8 y 9 respectivamente.
Aquí os dejo un esquema del montaje:
Una vez conectado todo, tan solo habrá que cargar el código de programa.
Código de programa
Como podéis ver a continuación, el código de programa no hace más que lo explicado anteriormente, emitirá un pulso por la patilla 9 que esta asignada al "trigger" que previamente se habrá reseteado (puesta a LOW) para evitar problemas.
digitalWrite(pulso,LOW); //Por cuestión de estabilización del sensor
delayMicroseconds(5);
digitalWrite(pulso, HIGH) //envío del pulso ultrasónico
delayMicroseconds(10);
Y en las siguientes instrucciones se obtiene el tiempo (al recibir el "echo") y se aplica la fórmula explicada anteriormente para obtener la distancia exacta al objeto
tiempo = pulseIn(rebote, HIGH); //función para medir el tiempo y guardarla en la variable "tiempo"
distancia = 0.01715*tiempo; //fórmula para calcular la distancia
/* PRACTICA 1 "SENSOR DE ULTRASONIDOS" Muestra la distancia a la que se encuentran los objetos */ #define pulso 9 //define la salida por donde se manda el pulso como 9 #define rebote 8 //define la salida por donde se recibe el rebote como 10 int distancia; //crea la variable "distancia" float tiempo; //crea la variable tiempo (como float) void setup() { Serial.begin(9600); //inicializa el puerto serie pinMode(pulso, OUTPUT); //Declaramos el pin 9 como salida (pulso ultrasonido) pinMode(rebote, INPUT); //Declaramos el pin 8 como entrada (recepción del pulso) } void loop() { digitalWrite(pulso,LOW); //Por cuestión de estabilización del sensor delayMicroseconds(5); digitalWrite(pulso, HIGH); //envío del pulso ultrasónico delayMicroseconds(10); tiempo = pulseIn(rebote, HIGH); //funcion para medir el tiempo y guardarla en la variable "tiempo" distancia = 0.01715*tiempo; //fórmula para calcular la distancia /*Monitorización en centímetros por el monitor serial*/ Serial.print("Distancia: "); Serial.print(distancia); Serial.println(" cm"); delay(3000); }
Una vez tengáis el circuito montado y le carguéis a Arduino el programa que os he dejado, tan solo tendréis que abrir la comunicación serie para poder visualizar la dista distancia a la que se encuentra el objeto más cercano en la pantalla del vuestro ordenador. Para abrir el monitor serie en el entorno de programación de Arduino, debeis ir a la pestaña "herramientas" y darle a la opcion "Monitor Serial" o usar las teclas de acceso rápido Ctrl + Mayusculas + M.
Se abrirá una pestaña como esta que mostrará el valor de la distancia en "cm".
Comentarios potenciados por CComment