Práctica. Sensor ultrasónico.
Construya el siguiente circuito con el módulo HC-SR04:
La correspondencia de pines es como sigue:
Módulo Arduino
Vcc 5V
Trigger Pin 2
Echo Pin 3
Gnd Gnd
El módulo HC-SR04 funciona de la siguiente manera:
El programador debe enviar mediante un pin digital de Arduino un pulso de 10
microsegundos al pin Trigger del módulo, es decir el pin trigger debe estar en HIGH 10
microsegundos.
Cuando el módulo recibe ese pulso dispara un ultrasonido.
Si el ultrasonido choca con un obstáculo recibiremos un eco del ultrasonido enviado. El
módulo nos enviará un pulso por el pin Echo cuando reciba el eco.
El tiempo que tardó en llegar el eco es el tiempo que tardó el ultrasonido en recorrer dos
veces la distancia entre el sensor y el obstáculo.
Dado que conocemos la velocidad del ultrasonido (340m/s) y la función
pulseIn(pin,HIGH) nos permite detectar el lapso entre el disparo y la llegada del
eco, podemos estimar la distancia.
El valor de salida de la función pulseIn(pin,HIGH) es el tiempo en microsegundos
que tardó en llegar el eco de regreso al módulo. de en un tipo de variable unsigned long.
Para obtener la distancia en centímetros tenemos que dividir el tiempo en microsegundos
entre 59.
El fabricante del módulo recomienda esperar al menos 100 milisegundos antes de hacer
una nueva lectura.
Se recomienda hacer pruebas de distancia en el puerto serial para comprobar la
efectividad de la medición usando solo el circuito de la imagen.
La práctica consiste en encender LED’s asociados a la proximidad de objetos al sensor.
Si hay un objeto a 5 centímetros o menos deben prender 5 LED’s
Si hay un objeto entre 5 y 10 centímetros deben prender 4 LED’s
Si hay un objeto entre 10 y 15 centímetros deben prender 3 LED’s
Si hay un objeto entre 15 y 20 centímetros deben prender 2 LED’s
Si hay un objeto a más de 20 centímetros debe prender solo 1 LED
La distancia se debe monitorear mediante el puerto serial además de los LED’s
Se recomienda usar resistencias en los LED’s puesto que sin ellas el Arduino consumirá
mucha corriente lo cual podría reflejarse en un funcionamiento inadecuado.
Las funciones necesarias son:
// define el modo del puerto
pinMode(pin, mode);
// escribe un valor lógico en el puerto HIGH si es 1 LOW si es 0
digitalWrite(pin, state);
// function delay en microsegundos
delayMicroseconds(microseconds);
/* Reads a pulse (either HIGH or LOW) on a pin. For example, if
value is HIGH, pulseIn() waits for the pin to go HIGH, starts
timing, then waits for the pin to go LOW and stops timing. Returns
the length of the pulse in microseconds or 0 if no complete pulse
was received within the timeout. */
pulseIn(pin, value);