Sensor de Ultrasonidos.
El sensor de ultrasonidos HC-SR04 es un circuito electrónico de bajo precio que está aumentándo en el uso de los circuitos electrónicos debido a su sencillez. Aunque es propenso a producir fallos de lectura por el hecho de tener baja precisión, no deja de ser curioso para el maker ya que tiene muchos recursos para su uso.
Su funcionamiento se basa en pulsos de ultrasonidos (alta frecuencia no audible por el oido humano), que rebotan con los objetos cercanos al sensor y los recibe de vuelta mediante un micrófono de ultrasonidos especialmente diseñado para obtener una salida de acuerdo a los objetos detectados.
Midiendo el tiempo entre pulsos de ultrasonidos podemos establecer matemáticamente la distancia de los objetos detectados. Esto posibilita y abre un abanico de posibilidades como detector de choque, avisador acustico de obstáculo, etc., etc.
El rango de medición esta establecido entre 2cm a 400 cm, con una resolución de 0.3cm por margen de error. Además, como los sensores HC- SR04 son de bajo coste tienen baja precisión. Y hay que tener en cuenta que la superficie a medir y la colocación del sensor pueden afectar a las ultrasonidos, distorsionándo la medición (algunos materiales absorben o reflejan cierta cantidad de ultrasonidos), produciendose ecos y mediciones incorrectas.
Pero ha decir verdad, su bajo coste y su gran capacidad para adaptarse a cualquier circuito, hacen del sensor de ultrasonidos un elemento imprescindible del maker sin el cual no podía dejar de pasar la oportunidad de desarrollar un capítulo y enseñarte su funcionamiento.
Como funciona.
El funcionamiento del sensor se basa en el envío de un pulso sonoro y la recepción del mismo.
Como el sonido se propaga en el aire a una velocidad de 340ms-1, Si queremos obtener los centímetros que recorre en un segundo hacemos la transformación:
Pero claro, establecer un segundo completo cuando se usan ultrasonidos no nos compensa porque la longitud de onda con dicho periodo es de 34000 centimetros. Es necesario acortar el periodo de transmision para que la longitud de onda sea más pequeña. Por lo tanto, estableciendo unos pulsos en milisegundos, obtendremos unos paquetes de señal más manipulables. Así que, si pasamos esta cantidad a milisegundos obtenemos un valor como te indica la figura.
34 centímetros por milisegundo es más manipulable que 34000 centímetros por segundo. Partiéndo de esta cifra, podemos establecer que un centimetro se recorrerá en 0,029milisegundos o lo que es lo mismo el tiempo que tarda el sonido en recorrer un centímetro es 29,4µs.
Por tanto, estableceremos ese tiempo patrón para determinar la distancia de un objeto teniendo en cuenta que la distancia del objeto debera de medirse como doble ya que el sensor de ultrasonido envía el ultrasonido, choca con el objeto y rebota y vuelve al ultrasonido.
Entonces ya tenemos la fórmula que vamos a usar para comprobar la distancia de los objetos:
Montaje básico.
Para empezar a conocer el sensor vamos a montar un circuito básico en el que nos indica la distancia del objeto en centímetros. En el circuito siguiente vamos a montar el sonsor de ultrasonidos HC-SR04 para su posterior estudio.
Como puedes ver el circuito es muy sencillo.
La alimentación y masa se representan mediante VCC y GND por lo que no existe problema en su conexión. El disparo de ultrasonidos (trigger), se conectará al pin digital 5 y el eco (echo), al puerto digital 6.
Como necesitamos que el trigger dispare una señal inicial de sonido, tendremos que configurar el disparo con un tiempo que estableceremos en 10 µs, por lo que la duración del disparo será de 20µs (ida y vuelta).
declaro un par de variables mediante la referencia #define que, recuerda que permite al compilador usar nombres de valores constantes antes que el programa las compile. De esa forma se consigue ahorrar espacio en memoria ya que cuando se referencian dichos valores, el compilador sustituirá las referencias por el valor de la misma sin que haya guardado previamente su valor.
Para el loop, tenemos que declarar unas variables (del tipo long), que nos permitirán establecer la duración del pulso y la distancia recorrida por el mismo (recuerda ida y vuelta). Asi que para que no se produzcan errores de lectura por un pulso residual, lo primero que hacemos es desactivar el pin5 para que no exista disparo inicial. Con la instrucción delayMicrosecond(2)
, estamos haciendo que el programa espere esos dos microsegundos antes de realizar acción alguna.
Las tres siguientes líneas activan el puerto 5 para que se produzca un disparo y lo activa durante 10 micro segundos y lo vuelve a desactivar.
La función PulseIn, proporciona el tiempo del pulso producido que tarda en volver al sensor. Esa función va ligada a la variable duración, la cual activa directamente el pin 5 para producir un nuevo disparo.
Observa que la línea siguiente asigna a la variable distancia, el resultado de la variable duración dividida entre 2 y entre el valor obtenido en la anterior fórmula para obtener la distancia en centimetros.
Para terminar, sacamos por el monitor serie, el resultado del pulso y el eco recibido por el sensor, que como puedes ver es bastante práctico en su resultado.
Librería especializada.
Arduino tiene una serie de librerías tanto para sus controladores y placas como para los módulos externos de otros desarrolladores, por lo que el uso específico de librerías para el uso de shield externos favorecen el método, practica y funcionamiento del mismo.
Este es el caso de la librería NewPing, que proporciona funciones adicionales, como la opción de realizar un filtro de mediana para eliminar el ruido, o emplear el mismo pin como trigger y echo, lo que nos permite ahorrar muchos pines en caso de tener múltiples sensores de ultrasonidos.
Descargate la librería desde el Gestor de librerías desde el menú Programa, Incluir Librería y Administrar Bibliotecas.
En la ventana que se te abre, en el menú de busqueda introduce la librería NewPing y descargatela pulsándo sobre Instalar. Recuerda la ubicación donde se descarga.
Ahora puedes utilizarla en tus proyectos reduciéndo el espacio utilizado.
Ahora visita la zona práctica, en la que vamos a utilizar nuestros conocimientos adquiridos hasta ahora para hacer varios proyectos, como un sensor de aparcamiento y un visor de obstaculos movil.