Tutorial Arduino: Detección de obstáculos
Tutorial para aprender a realizar un proyecto con Arduino que nos servirá para detectar obstáculos y para que se nos avise de la cercanía de éstos con un piezoeléctrico.
Hola a todos. En este tutorial voy a realizar un proyecto que nos servirá para detectar obstáculos y para que se nos avise de la cercanía de éstos mediante un piezoeléctrico. El piezoeléctrico hará un sonido intermitente y, cuanto más nos vayamos acercando al sensor de ultrasonidos HC-SR04, más rápido sonará.
Los ultrasonidos son vibraciones acústicas o sonoras de una frecuencia superior a las 16 KHz, que corresponden al umbral de la audición humana.
Un pulso ultrasónico se transmite y se refleja en un objeto, el sensor recibe el pulso y lo convierte en una señal eléctrica. El siguiente pulso podrá ser transmitido cuando el eco desaparezca. Si un pulso de anchura 10 µs es mandado al pin de trigger (en nuestro caso el pin digital número 6), el ultrasonido enviará ocho señales de 40KHz y detectará el eco desde el pin de ECHO (en nuestro caso será el pin digital 7). La medida de la distancia es proporcional al ancho de pulso del eco, el cual puede ser calculado por fórmula. Si ningún obstáculo es detectado, el pulso que se generará será de 38ms. Podemos verlo en la siguiente imagen:
La velocidad del sonido a temperatura ambiente, es decir, a 20 ºC, es de aproximadamente 343 metros/segundo.La distancia se mide con la siguiente fórmula:Distancia=Velocidad*TiempoSi por ejemplo, tenemos un objeto a 10 centímetros, a una velocidad de 34300 centímetros por segundo, obtendremos un tiempo de T=10/34300=2.92*10^-4 segundos. Éste será el tiempo que la señal tardará en llegar a un objeto situado a 10 centímetros, pero, la señal tiene que volver al receptor, por lo que se empleará el doble de tiempo. Necesitamos un tiempo de ida, que rebote, y que vuelva, tardando lo mismo que a la ida. Debido a esto, tendremos que dividir la fórmula anterior por 2. Así, tendremos en cuenta el tiempo de ida y el tiempo de vuelta.La librería que realiza estos cálculos, la podéis descargar AQUÍ. Había que realizar un pequeño cambio, pero ya está modificada porque, para la nueva versión del software, hay que cambiar la librería WProgram.h por Arduino.h, pero como ya digo, está lista para usar.En el código, para utilizar la función PIEZO_BUZZ(), tendremos que pasar 3 parámetros: delay_milis, pwm1 y pwm2. El primer parámetro es para ver la cantidad de tiempo que queremos que pase entre pitidos. El segundo parámetro, pwm1, es para modificar el tono del piezoeléctrico. Podemos darle valores entre 0 y 255, así que escoged el que mejor os parezca. El último parámetro, pwm2, sirve para lo mismo que pwm1. He dejado la función con estos parámetros de entrada para que los modifiquéis a vuestro gusto según la distancia que estéis midiendo, la cual podréis ver en el Serial Monitor.Código en GitHub:
- MONTAJE
VÍDEOTUTORIAL