Las señales ultrasónicas, son
señales que superan el rango de frecuencias que pueden oír las personas, por lo
tanto no pueden ser escuchadas por el humano, este tipo de señales son
utilizadas por algunos animales como por ejemplo los murciélagos como método de
ubicación espacial, por medio del ultrasonido detectan los obstáculos que
tienen en su entorno.
En el campo de la ingeniería
se utilizan técnicas similares en aplicaciones como los radares o los sonares,
en el caso especifico de los sonares, se utiliza un dispositivo electrónico
para generar y emitir una señal ultrasónica que se dispersa en el entorno hasta
chocar con un objeto (obstáculo), luego de ese choque la señal es reflejada de
nuevo al punto de origen y es recibida por un sensor, el tiempo que se demora
la señal en ir, chocar con el objeto y volver al punto de origen es el dato utilizado
para calcular la distancia a la que se encuentra el objeto que se ha detectado.
Existen diferentes referencias
de sensores que pueden realizar este tipo de trabajo, sin embargo el más
utilizado tanto por sus prestaciones como por su bajo costo es el sensor
hc-sr04, este sensor cuenta con las siguientes características:
- Voltaje de alimentación 5 voltios
- Frecuencia de trabajo 40 KHz
- Rango efectivo de medición de 2 – 400 Cm
- Dimensiones 45 * 20 * 15 mm
- 4 terminales de conexión
- Pulso de disparo de 10 us
 |
( Imagen sensor ultrasonico hc-sr04 ) |
Como ya se pudo observar en
las características, este sensor cuenta tan solo con cuatro pines de conexión
de los cuales dos son utilizados para la alimentación de voltaje del
dispositivo, los otros dos son utilizados para recibir las ordenes del dispositivo
que controla al sensor y entregarle al mismo dispositivo la información del
tiempo que se tardo la señal ultrasónica en ir y regresar.
Los cuatro pines del hc-sr04
son los siguientes:
- Vcc y Gnd (Pines de alimentación del sensor – 5
Voltios)
- Trigger (Pin de disparo o activación del sensor)
- Output o Echo (Pin entrega pulso de tiempo)
Trigger:
Este pin se encarga de activar
el sensor para generar una señal de 40 KHz, para activar el sensor es necesario
que el pin trigger reciba desde el dispositivo que va a controlar el sensor
(Arduino) un pulso de al menos 10 microsegundos.
Output o Echo:
Luego que el pin trigger
recibe el pulso de 10 us, se activa el sensor generando y emitiendo 8 pulsos de
una señal de 40 KHz, en cuanto la señal es emitida el pin Echo del sensor se
pone en estado alto (1 lógico) el cual se mantiene hasta el momento que la
señal ultrasónica vuelve al sensor y el pin Echo vuelve a un estado bajo (0
lógico).
Por lo tanto lo que hace el
pin Echo del sensor es generar un pulso que es recibido por el arduino y que
dependiendo de la duración de tiempo de este pulso se determina la distancia a
la cual se encuentra el objeto detectado.
 |
( Diagrama de funcionamiento del sensor - Imagen tomada de la hoja de datos ) |
Cálculo de distancia:
Para realizar el cálculo de
distancia a la cual se encuentra el objeto detectado por el sensor, es
necesario tener en cuenta dos aspectos:
- Tiempo que dura el pulso entregado por el pin
echo del sensor
- Velocidad del sonido
Como el hc-sr04 es un sensor
ultrasónico, las señales emitidas son señales acústicas, por esta razón es
necesario tener en cuenta cual es la velocidad del sonido para así poder saber
cuál es la velocidad a la cual está viajando la señal generada por el sensor.
La velocidad del sonido puede
variar dependiendo del medio de propagación de la onda, para este caso vamos a
utilizar como medio de propagación el aire por lo que la velocidad del sonido
es de 343 m/s.
Si se quiere expresar en
términos de centímetros sobre segundo entonces quedaría como 34300 cm/s.
Para el caso del trabajo con
arduino se va a hacer una conversión más y es pasar dicha velocidad a
centímetros sobre microsegundo, la razón de esto es que la función de arduino
que se va a utilizar más adelante para leer el pulso entregado por el echo
entrega como resultado el tiempo de duración expresado en microsegundos.
Por lo tanto la velocidad del
sonido es de 0.0343 cm/µs y esta es
la velocidad con la que se va a trabajar posteriormente en el programa de
arduino.
El siguiente dato a tener en
cuenta es el tiempo que se demora la señal en ir y volver al sensor, este
tiempo determinado por el pulso generado por el pin echo se va a medir con el
arduino con una función que ya explicaremos más adelante.
Por lo tanto teniendo estos
dos datos ya se puede determinar la distancia como:
Sin embargo como esa
distancia está calculada con base en el tiempo que demoró la señal en salir y
volver al sensor, este cálculo entregaría el doble de la distancia que se
requiere, ya que lo que se necesita es la distancia entre sensor y el objeto. Esto
se logra teniendo en cuenta solo el tiempo que se demora la señal entre ser
emitida por el sensor y chocar con el objeto lo cual es igual a decir que solo
se tiene en cuenta la mitad del tiempo del pulso generado por el pin echo ó
también es válido decir que solo se tiene en cuenta la mitad del recorrido. Por
lo tanto la formula final para determinar la distancia es:
Programación en Arduino
El programa en arduino es
realmente sencillo, lo único que se tiene que hacer es configurar los pines que
se van a utilizar para generar el pulso necesario para el trigger y con el que
se va a recibir el pulso generado por el pin del echo, luego de esto se mide la
duración del pulso y se calcula la distancia con la formula presentada anteriormente.
Para medir la duración del
pulso generado por el pin echo, se puede utilizar la función pulseIn de
arduino.
Función pulseIn de Arduino:
La función pulseIn lee un
pulso que ingresa por un pin determinado y entrega como resultado el tiempo en
microsegundos que duro dicho pulso, esta función puede medir tanto un pulso
alto como un pulso bajo.
La sintaxis de pulseIn es la siguiente:
pulseIn(pin,valor);
donde:
Pin= pin del arduino en el que se va a medir el pulso.
Valor= puede ser HIGH o LOW dependiendo del tipo de pulso
que se quiera medir.
Por ejemplo si se escribe de la siguiente forma:
pulseIn(7,HIGH);
Se monitorea el pin 7 de
arduino, en el momento que ingrese un nivel alto comienza a realizar el conteo
de tiempo el cual se detiene hasta que por el pin 7 ingrese un nivel bajo lo
cual significa que ha terminado el pulso.
Ejemplo:
Para terminar, como ejemplo se
va a realizar una medición de distancia con el sensor ultrasónico y se va a presentar
el resultado en una pantalla LCD, si tiene dudas sobre el uso de la pantalla
LCD con arduino puede consultar la siguiente publicación de nuestro blog donde
se explica cómo hacerlo:
A continuación se presenta el
programa divido por partes explicando cada una de ellas, al final pueden
encontrar un link en donde pueden descargar el archivo de arduino completo.
En esta primera parte se
importa la librería del LCD y se configuran los pines que se van a utilizar del
arduino para conectar el LCD en modo de 4 bits, luego de esto se declaran las
variables que se van a utilizar en el programa, las variables tiempo y
distancia es en donde se van a guardar los valores de los cálculos realizados,
mientras que las otras dos variables son utilizadas para guardar los números de
los pines que se van a utilizar para echo y trigger con esto luego cuando se
vayan a utilizar no es necesario colocar el numero del pin sino que se llaman
por el nombre de la variable lo cual puede ayudar a recordarlas más fácil y
simplificar el proceso de programación.
En la función void setup () se inicializa el lcd
y luego se configuran los pines del arduino que se van a conectar al sensor
como entrada y como salida.
En la función void loop () se lleva a cabo el desarrollo
del programa como tal y se podría dividir en tres etapas:
- Generar el pulso de 10 microsegundos (mínimo)
para el trigger del sensor, necesario para iniciar la actividad del sensor.
- Lectura del pulso generado por el pin echo del
sensor y calculo de distancia con la formula antes presentada.
- Visualización en pantalla LCD de la distancia
entre sensor y objeto.
A continuación se muestra la conexión de los elementos
que componen el circuito.