You are on page 1of 5

PRACTICA 4 SENSOR ULTRASONICO

OBJETIVOS
 Familiciarse con el entorno de programación
 Incluir bibliotecas asía una programación de Arduino
 Conocer el sensor ultrasónico
 Abrir la ventana del puerto serial para visualizar los datos que esta mandando el sensor
ultrasónico
MATERIALES
 1 protoboard
 1 sensor ultrasónico HC-04
 3 metros de cable interfon
 1 placa de Arduino uno
INTRODUCCION
Los ultrasonidos son señales acústicas cuyas frecuencias – de 20 a 400 Khz- están por encima del rango de
frecuencias sensibles al oído humano.
Los sensores de ultrasonidos son capaces de medir la distancia a la que están respecto a un objeto por medio
de un sistema de medición de ecos. Los sensores de ultrasonidos están formados por un transductor que emite
un pulso corto de energía ultrasónica. Cuando el pulso es reflejado por un objeto, el sensor captura el eco
producido por medio de un receptor, y mediante un sistema de tratamiento de la señal, calcula la distancia a la
que está de dicho objeto. La fórmula para calcular la distancia de un sensor de ultrasonidos es:
d= 1/2 v· t
Dónde d es distancia, v es velocidad y t es tiempo.

El HC-SR-04 es un sensor de 4 pines, dos de alimentación VCC (+) y GND(-) y dos para capturar la distancia
Trig y Echo.
 VCC.
 Trig (Disparo del ultrasonido).
 Echo (Recepción del ultrasonido).
 GND.
El sensor se alimenta a 5Vdc, por lo que lo podremos alimentar directamente desde Arduino, y podemos
llegar a detectar objetos hasta 5m con una resolución de 1cm.

Para medir la distancia con el HC-SR04 hay que generar un pulso en el pin Trig de un ancho o tiempo de
10µs como mínimo. Al mismo tiempo hay que monitorizar la señal que llega al pin de Echo. La distancia
calculada por el sensor se corresponde a la fórmula:
Distancia = (Ancho de Pulso · Velocidad Sonido) /2

.
Sea como sea, en la parte de programación de esta práctica veremos cómo funciona con más detalle,
programando rutinas a bajo nivel y después haciendo uso de la librería Ultrasonic.

DESARROLLO
Lo primero que haremos es declarar y definir los pines de Arduino que usaremos para conectarlo al sensor. En
nuestro caso usaremos los pines 12 y 13. El pin 12 de Arduino irá conectado al pin Trig del sensor y el pin 13
de Arduino al pin Echo del sensor. El esquema queda como sigue:



Para calcular la distancia a la que está un objeto, utilizaremos la fórmula:
d=1/2 · 343· t
Pero como nos interesa conocer la distancia en cm, lo que hacemos es calcular cuánto se tarda en recorrer 1
cm: 343 m/s = 34300 cm/s. Entonces, aplicando la formula "Distancia = Velocidad x Tiempo”, tenemos
que 1cm = 34300·t. Despejando, t =29,15us. Por lo que finalmente, la fórmula para calcular la distancia con
el sensor es:
d = (t/2) / 29.4
Ahora bien, ¿Cómo medimos realmente la distancia? La respuesta a esta pregunta la hemos respuesto antes,
con el pin de Echo, que utiliza la siguiente fórmula para calcular la distancia:
distancia = (Ancho de Pulso · Velocidad Sonido) /2
Por lo tanto, para llegar a obtener la distancia hay que seguir 4 pasos:
1- Emitir pulsos de amplitud de 10us por el pin de Trig.
2- Medir el ancho de pulso recibido por el pin de Echo.
3- Calcular la distancia en m.
4- Pasar esta distancia a cm, que es como nos devuelve los valores la librería.


En la segunda parte de la practica complicamos un poco las cosas, ya que realizaremos un completo sistema
de alarma en función de la distancia, que por ejemplo podría usarse como un sensor de aparcamiento o de
obstáculos en un vehículo. Para ello añadimos 2 componentes al sistema: el LED (2) y el buzzer. El esquema
queda como el de la imagen:

Cuando un objeto se acerque a una distancia que consideremos peligrosa haremos sonar el buzzer y
encenderemos un LED rojo, cuando no haya obstáculos cerca encenderemos un LED verde. El sistema por lo
tanto tiene tanto indicadores visuales como acústicos.
Como antes, definimos primero qué pines de Arduino utilizamos y cómo los conectamos con los diferentes
dispositivos. Respecto a la primera parte se añaden los Leds rojo y verde, que conectaremos en los pines de
Arduino 6 y 5 respectivamente, y un buzzer que conectaremos con el pin 4.


#include "Ultrasonic.h"

Ultrasonic ultrasonic(12,13); // En lugar de declarar los Pin echo y Pin
trig, puedo hacerlo directamente con esta función

int Pinrojo=6;
int Pinverde=5;
int buzzer=4;

void setup() {
Serial.begin (9600);
pinMode(Pinverde,OUTPUT); //Definimos los pines, notar que ya no
definimos los pines del sensor
pinMode(Pinrojo, OUTPUT);
pinMode(buzzer,OUTPUT);
}

void loop() {
int cm;
Serial.print("Duración del pulso de recepción:");
Serial.print(ultrasonic.Timing()); //Aqui obtenemos el tiempo del
pulso de eco en high
Serial.println(" us");
cm=ultrasonic.Ranging(CM); //Aqui hacemos la conversión a cm
Serial.print("Distancia: ");
Serial.print(ultrasonic.Ranging(CM));
Serial.println(" cm");

if (cm>20) //20 cm es la distancia de
emergencia
{
digitalWrite(Pinverde, HIGH); //En caso que un objeto esté lejos,
pintamos el LED verde
digitalWrite(Pinrojo, LOW);
digitalWrite(buzzer, LOW);
}
else if (cm<20)
{
digitalWrite(Pinverde, LOW); //Si el objeto está muy cerca, hacemos
sonar la alarma buzzer y el LED rojo
digitalWrite(Pinrojo, HIGH);
digitalWrite(buzzer, HIGH);
}
delay(500);
}
Usando la librería podemos sacar algunas conclusiones:
1. Podemos simplificar el código.
2. Podemos acceder a mediciones interesantes, ya no sólo la distancia respecto a un objeto sino también el
ancho de pulso de eco. Con estas dos mediciones incluso podríamos hacer una tabla para ver la
correlación ancho de pulso vs distancia de nuestro sensor.
3. Aunque es conveniente usar librerías, perder un poco de tiempo para programar instrucciones más
básicas nos ayuda a comprender el mecanismo de funcionamiento del sensor y en general de lo que
programemos. Esto nos puede ayudar para desarrollar nuevas funciones.