You are on page 1of 3

Como medir distancias por ultra-sonido,

sensor HC-SR04 y Arduino


Si deseamos conocer la distancia entre dos puntos, una opción fácil es utilizar una cinta
métrica, pero no siempre podemos recurrir a esta, o no queremos. Por ejemplo supongamos
una aplicación de robótica donde se necesita detectar obstáculos, la misma debe ser
suficientemente inteligente y automática como
para poder detectarlos.

Otra opción es recurrir al sonido, de la misma forma que se usa en barcos (Sonar) y en algunos
animales (Ecolocación).

Sonar activo, imagen de Wikimedia


La forma de funcionamiento es emitir un sonido, este se refleje en el objetivo y luego recibir
el eco. Entonces conociendo la velocidad de propagación del sonido (340m/s) y la duración
entre la emisión y recepción, es decir el tiempo entra ida y vuelta, podemos conocer la
distancia.

Fórmula para obtener la distancia(en cm), conociendo la velocidad y el tiempo


Esta es una excelente forma de detección sin contacto, a diferencia de métodos lumínicos no
se presenta alteraciones en el funcionamiento por la luz del sol o materiales negros, sin
embargo se puede dificultar con materiales acústicos y la forma en que esta orientado el
objeto también supone una dificultad, ya que al rebotar la onda sonora lo puede hacer en una
dirección no deseada.

El Sensor

HC-SR04
El HC-SR04 es un sensor ultrasónico, que opera básicamente como lo detallado
anteriormente, para tal fin tiene un transmisor y un receptor. Con el mismo, se pueden obtener
medidas desde 2cm hasta los 400cm, con una resolución de 0.3cm.
El sensor tiene 4 pines, dos los necesarios para la alimentación (trabaja con 5V) y dos más
que son necesarios para iniciar el proceso de medición y obtener los datos para el cálculo de
la distancia.
Para comenzar con la medición el sensor debe recibir un pulso en alto en el pin de disparo
(trigger), con una duración de al menos 10us, esto inicia una transmisión de 8 ciclos de una
ráfaga de ultrasonido a 40khz. Cuando el receptor detecta el eco, pone el pin Echo en alto
(5V) por un tiempo igual al que tardo el sonido en salir y volver (se encuentra en el orden de
los us). En el diagrama temporal se observa el modo de operación.

Diagrama temporal

Prueba con Arduino.

La conexión con Arduino o cualquier microcontrolador es sencilla. Necesitamos solamente


2 pines, uno como entrada y otro como salida.
A través de un display LCD de 16x2 se indica la distancia. El conexionado completo es:

Y el código a cargar en el Arduino es el siguiente:


/*
Código para Arduino, para medir distancias con el sensor ultrasónico
HC-SR04 y visualizarla en un display LCD 16x2
Circuito:
* LCD RS pin- D12
* LCD Enable pin - D11
* LCD D4 pin - D5
* LCD D5 pin - D4
* LCD D6 pin - D3
* LCD D7 pin - D2
* Potenciómetro de 10K :
* El pin del medio a LCD Vo (pin3)
* Los demás entre 5V y GND
* Trigger HC-SR04 - D8
* Echo HC-SR04 - D9
*/
// include the library code:
#include <LiquidCrystal.h>

//Inicializo la libreria del LCD con los pines correspondientes a la


conexion realizada
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
long distancia;
long tiempo;

void setup() {
// Configuracion del LCD 16x2
lcd.begin(16, 2);
pinMode(9, OUTPUT); //Pin D9 como salida
pinMode(8, INPUT); //Pind D8 como entrada

void loop() {
lcd.clear(); //Limpio el LCD
lcd.setCursor(0, 0); //Ubico el cursor
digitalWrite(9,LOW);
delayMicroseconds(5);
digitalWrite(9, HIGH); //Inicio el proceso de medicion
delayMicroseconds(10); //El pulso de disparo debe estar en alto por
10us
tiempo=pulseIn(8, HIGH); //Funcion para medir el tiempo en alto del pin
echo
distancia= int(0.01653*tiempo); //Convierto los us en cm, el tiempo es
proporcional a la distancia
lcd.print("Distancia: ");
lcd.print(distancia);
lcd.print("cm");
delay(500);
}

You might also like