Está en la página 1de 21

Sensor ultrasónico, midiendo la

distancia en un sistema de
aparcamiento
El sensor ultrasónico Arduino nos
permite medir distancias a través de
los ultrasonidos. Si ya tienes un kit
seguramente tengas este tipo de
sensor. En este tutorial te voy a
enseñar cómo puedes construir
un sistema de aparcamiento
asistido.
Cómo funciona el sensor ultrasónico Arduino
Para medir distancias con Arduino podemos
hacerlo de diferentes maneras. Existen el
sensor de infrarrojos, que utilizan las propiedades
de la luz para calcular la distancia, y el
sensor ultrasónico Arduino utiliza
las propiedades de propagación del sonido
para medir distancias. Más concreto utiliza los
ultrasonidos. Este tipo de ondas sonoras se
encuentran por encima del espectro audible por
los seres humanos.
El funcionamiento es muy sencillo. El
sensor envía una onda ultrasónica a
través del disparador o trigger, revota
contra el objeto y el receptor o echo
detecta la onda. Sabiendo cuánto ha
tardado en viajar dicha onda,
podemos saber la distancia.
El zumbador o buzzer Arduino
Para simular correctamente el sensor de distancia
vamos a utilizar un buzzer Arduino. Estos
componentes utilizan la piezoelectricidad, un
fenómeno físico que afecta en determinados
cristales (el cuarzo es el más común). Al someter
un cristal de este tipo, se deforman y vibran. Si
conseguimos que esa vibración tenga una
frecuencia dentro del espectro audible,
conseguiremos un sonido.
Por lo tanto, es importante conocer
las frecuencias del espectro audible. No
vamos a ver una masterclass sobre este tipo de
señales, solo debemos quedarnos con el rango
de frecuencias va de 20 Hz (hercios) a 20 kHz
(kilohercio).
Cerca de los 20 Hz el sonido es muy grabe. Cuando
vamos subiendo de frecuencia, el sonido se va
haciendo cada vez más agudo. Esto nos servirá para
alertar de que nos estamos acercando a un obstáculo
al aparcar.
Tampoco podemos esperar un sistema de alta fidelidad
con un buzzer Arduino, pero nos da la posibilidad de
generar tonos audibles para alarmas e incluso alguna
melodía musical fácilmente reconocible.
Sistema de alerta con LEDs
Por último, incorporamos el sistema
de alerta visual para el sensor ultrasónico
Arduino. Esto nos permite visualizar si
estamos cerca o lejos de un
obstáculo. Con 3 LEDs (verde, amarillo y
rojo) conseguimos determinar si estamos
lejos, cerca o en zona de peligro.
• Componentes necesarios
• Ya hemos visto una breve explicación de lo que vamos a
necesitar. La siguiente lista te muestra todo el material
necesario.
• Arduino UNO
• Protoboard donde conectaremos los componentes
• Cables para hacer las conexiones
• 3 resistencias de 220 Ω
• 1 LED verde
• 1 LED amarillo
• 1 LED rojo
• 1 sensor ultrasónico Arduino (HC-SR04)
• 1 buzzer
Sensor ultrasónico, montando el
circuito
Se trata de un circuito muy sencillo. Por un
lado vamos a tener toda la parte de
alertas, acústica y visual, y por otra parte
el sensor de ultrasonidos. En el siguiente
esquema te muestro el conexionado.
Cosas a tener en cuenta. Las resistencias
son de 220 Ω y se colocan en serie con los
LEDs. El sensor ultrasónico Arduino se
conecta a dos pines digitales, uno para
el trigger o disparador y otro para el echo o
receptor. El buzzer Arduino se conecta a
una salida PWM.
Programando el sensor ultrasónico Arduino para medir
distancia
Vamos a empezar por la programación. Lo primero es una breve
descripción de lo que queremos conseguir. Esto nos ayudará a
plantear el problema general y posteriormente dividirlo en trozos
más pequeños. A esto se le llama pensamiento computacional y
si eres usuario asiduo de este blog, ya estarás familiarizado con
este concepto.
El sistema de aparcamiento consiste en detectar un objeto a
través del sensor ultrasónico y avisar con señales de luz y sonido.
Por lo tanto, ya tenemos la primera división, detectar el obstáculo
y alertas con sonido y luces.
Variables y constantes
A través del sensor de ultrasonidos vamos
a detectar el obstáculo. Comenzamos a
programar declarando las variables y
constantes. Siempre que trabajemos con
pines digitales o analógicos, es una buena
práctica declarar una constante por cada
uno de ellos.
*/

int trigger = 10; // declaramos la palabra trigger como un tipo entero y al mismo tiempo reemplaza al pin 9
int echo = 9; // declaramos la palabra echo como un tipo entero y al mismo tiempo reemplaza al pin 8
float tiempo_de_espera,distancia; // creamos una variable de fotante; es decir, nos puede dar resultados en decimales.

void setup() {
Serial.begin (9600); // establemos la comucicacion serial
pinMode (trigger, OUTPUT); // declarmos el pin 9 como salida
pinMode (echo, INPUT); // declaramos el 8 como entrada
}

void loop() {
digitalWrite (trigger,LOW); // ponemos en bajo el pin 8 durante 2 microsegundos
delayMicroseconds(2);
digitalWrite (trigger, HIGH);// ahora ponemos en alto pin 8 durante 10 microsegundos;
delayMicroseconds (10); // pues este el momento en que emite el sonido durante 10 segungos
digitalWrite (trigger, LOW); // ahora ponemos en bajo pin 8

tiempo_de_espera = pulseIn (echo,HIGH); // pulseIn, recoge la señal del sonido que emite el trigger
/*La función pulseIn espera la aparición de un pulso en una entrada y mide su duración, dando como resultado la duración
medida
El primer parámetro (ECHO) es el pin sobre el que se realizará la medición.
Y el segundo parámetro (HIGH) indica si el pulso a esperar será un 1 (HIGH) o un 0 (LOW).
*/
distancia =(tiempo_de_espera/2)/29.15; // formula para hallar la distancia
Serial.print (distancia); // imprimimos la distancia en cm
Serial.println ("cm");
delay (1000);
if (distancia>=30 && distancia <=400){ //
analogWrite (2,0);
analogWrite (3,0);
analogWrite (4,0);
analogWrite (5,0);
analogWrite (6,0);
analogWrite (7,0);
analogWrite (8,0);
}
if (distancia>=26 && distancia <=30){
analogWrite (2,255);
analogWrite (3,0);
analogWrite (4,0);
analogWrite (5,0);
analogWrite (6,0);
analogWrite (7,0);
analogWrite (8,0);
}
if (distancia>=23 && distancia <=26){
analogWrite (2,0);
analogWrite (3,255);
analogWrite (4,0);
analogWrite (5,0);
analogWrite (6,0);
analogWrite (7,0);
analogWrite (8,0);

}if (distancia>=20 && distancia <=23){


analogWrite (2,0);
analogWrite (3,0);
analogWrite (4,255);
analogWrite (5,0);
analogWrite (6,0);
analogWrite (7,0);
analogWrite (8,0);
}
if (distancia>=17 && distancia <=20){
analogWrite (2,0);
analogWrite (3,0);
analogWrite (4,0);
analogWrite (5,255);
analogWrite (6,0);
analogWrite (7,0);
analogWrite (8,0);
}
if (distancia>=14 && distancia <=17){
analogWrite (2,0);
analogWrite (3,0);
analogWrite (4,0);
analogWrite (5,0);
analogWrite (6,255);
analogWrite (7,0);
analogWrite (8,0);
}
if (distancia>=11 && distancia <=14){
analogWrite (2,0);
analogWrite (3,0);
analogWrite (4,0);
analogWrite (5,0);
analogWrite (6,0);
analogWrite (7,255);
analogWrite (8,0);
}
if (distancia>=8 && distancia <=11){
analogWrite (2,0);
analogWrite (3,0);
analogWrite (4,0);
analogWrite (5,0);
analogWrite (6,0);
analogWrite (7,0);
analogWrite (8,255);
}