Vous êtes sur la page 1sur 12

ROBOTICS &

AUTOMATION
Como medir Distancia con el
sensor ultrasnico HC - 04

INTRODUCCION
Los sensores ultrasnicos permiten medir distancias desde
los 2-3 centmetros hasta los 3-6 metros (para algunos
modelos populares) sin la necesidad de un contacto fsico,
lo cual es muy til en una amplia variedad de aplicaciones,
desde la robtica y los sistemas de alarma, hasta
aplicaciones industriales y por supuesto, tambin en
proyectos de pasatiempo para los aficionados al bricolaje
electrnico.

Como medir Distancia con el


sensor ultrasnico HC - SR04
El Sensor Ultrasnico de Distancia HC-SR04 como lo
denomina el fabricante) tiene una interfaz simple de tres
terminales y utiliza una sola lnea para lograr una
comunicacin bidireccional con su dispositivo de control
(tpicamente un micro controlador).

No ests muy seguro de cmo hacer las lecturas de


distancia de este sensor? En este tutorial presentamos un
sistema bsico con un micro controlador y un programa en
lenguaje C para la interfaz con el sensor Ultrasnico HCSR04 de Parallax. El micro controlador lee el dato de la
distancia del sensor y lo visualiza en una pantalla LCD
genrica.

CONTENIDO DEL VIDEO


Demostracin del circuito funcionando (sensor HCSR04 + PIC + LCD 16x2).
Conceptos tericos bsicos del funcionamiento del
sensor.
Diagrama del circuito.
Algoritmo general para la interfaz con el sensor
ultrasnico.

DESCARGAS
Proyecto MPLAB X con el
sensor HC-SR04. El proyecto
ya est compilado y el cdigo
listo para ser grabado al micro
controlador, para recompilarlo
es necesario tener el
compilador MPLAB ID
(Microchip) PICC v8.92 o
superior.
El mismo cdigo funciona con
el sensor HC SR-04 haciendo
modificaciones mnimas y
tambin con otros sensores similares.
Proteus 8 Professional v 8.1 - 2014

CARACTERSTICAS PRINCIPALES
DEL SENSOR HC SR-04
El Sensor ultrasnico HC SR-04 funciona mediante la
transmisin de una rfaga de ultrasonido en una frecuencia
muy por encima del rango auditivo humano y provee un

pulso de salida, el cual corresponde con el tiempo requerido


por el eco (rebote) para retornar hasta el sensor. Al medir la
duracin de este pulso se puede calcular fcilmente la
distancia al objetivo.
Las caractersticas ms importantes del sensor PING son las
siguientes:
Rango: 2 cm a 3 m
LED indicador de rfaga que muestra la actividad del
sensor
Interfaz bidireccional por pulso, en un nico pin de E/S
para comunicacin con micro controladores TTL (5V) o
CMOS (3.3V)
Disparo de entrada: pulso TTL positivo, 2 s mnimo, 5
s tpico
Pulso eco de salida: pulso positivo TTL, 115 s mnimo
a 18.5 ms mximo.
Descripcin del Hardware
se ha usado el mismo micro controlador y tambin la
pantalla LCD para visualizar la distancia leda. No explicar
en detalle la implementacin de estos dos dispositivos ya
que dicha informacin se la puede encontrar en el tutorial
mencionado.

MICROCONTROLADOR PIC 16F887

El PIC16F887 es un producto
conocido de la compaa
Microchip.Dispone de todos los
componentes disponibles en la
mayora de los microcontroladores
modernos. Por su bajo precio, un
rango amplio de aplicaciones, alta
calidad y disponibilidad, es una
solucin perfecta aplicarlo para
controlar diferentes procesos en la industria, en
dispositivos de control de mquinas, para medir variables
de procesos etc. Algunas de sus caractersticas principales
se enumeran a continuacin.
CARACTERSTICAS BSICAS PIC16F887
Arquitectura RISC
El micro controlador cuenta con solo 35 instrucciones
diferentes
Todas las instrucciones son uni-ciclo excepto por las de
ramificacin
Frecuencia de operacin 0-20 MHz
Oscilador interno de alta precisin
Calibrado de fbrica
Rango de frecuencia de 8MHz a 31KHz seleccionado por
software
Voltaje de la fuente de alimentacin de 2.0V a 5.5V
Consumo: 220uA (2.0V, 4MHz), 11uA (2.0 V, 32 KHz), 50nA
(en modo de espera)
Ahorro de energa en el Modo de reposo
Brown-out Reset (BOR) con opcin para controlar por
software

35 pines de entrada/salida
Alta corriente de fuente y de drenador para manejo de LED
Resistencias pull-up programables
individualmente por software
Interrupcin al cambiar el estado del pin
Memoria ROMde 8K con tecnologa FLASH
El chip se puede re-programar hasta 100.000 veces
Opcin de programacin serial en el circuito
El chip se puede programar incluso incorporado en el
dispositivo destino
256 bytes de memoria EEPROM
Los datos se pueden grabar ms de 1.000.000 veces
368 bytes de memoria RAM
Convertidor A/D:
14 canales
Resolucin de 10 bits
3 temporizadores/contadores independientes
Temporizador perro guardin
Mdulo comparador analgico con
Dos comparadores analgicos
Referencia de voltaje fija (0.6V)
Referencia de voltaje programable en el chip
Mdulo PWM incorporado
Mdulo USART mejorado

Soporta las comunicaciones seriales RS-485, RS-232 y


LIN2.0
Auto deteccin de baudios
Puerto Serie Sncrono Maestro (MSSP)
Soporta los modos SPI e I2C

PANTALLA DE CRISTAL LQUIDO


(LCD)

El LCD es un display alfanumrico genrico de interfaz


paralela. Utiliza bsicamente 3 lneas para control y 8 lneas
para datos, aunque tambin puede funcionar con
solamente 4 lneas de datos. Se ha escogido esta ltima
modalidad a fin de ahorrar las 4 lneas adicionales. La
comunicacin del PIC con el LCD es manejada totalmente
por una librera correspondiente incluida tambin en los
archivos de ejemplo del compilador PICC. En este ejemplo
tambin la pantalla LCD trabaja en la modalidad con cuatro
lneas paralelas de datos y se ha usado la librera de
conexin para LCDs genricos provista por el compilador
PICC de Hi Tech.

FUNCIONAMIENTO DEL SENSOR


ULTRASNICO DE DISTANCIA HC
SR-04
El sensor PING posee solamente tres terminales, dos de las
cuales son para la alimentacin de voltaje (VDD y GND) y la
tercera (SIG) es usada para la comunicacin bidireccional
con el micro controlador.

La comunicacin con el sensor


es realmente muy simple. Una
vez que se ha entendido el
protocolo, es fcil
implementarlo.
Protocolo de Comunicacin
El sensor PING detecta objetos
mediante la emisin de una rfaga ultrasnica y luego
"escucha" el eco de retorno.
Bajo el control de un micro controlador, el cual debe enviar
un pulso corto de disparo, el sensor emite una corta rfaga
ultrasnica a una frecuencia de 40 KHz. La rfaga viaja a
travs del aire, choca con un objeto y luego rebota hacia el
sensor. El sensor PING provee un pulso de salida al micro
controlador, que inicia cuando la rfaga es enviada y
termina cuando el eco es detectado, de ah que la longitud
del pulso corresponda con la distancia al objeto.

De la explicacin arriba mencionada se puede resumir el


siguiente algoritmo bsico para la lectura del sensor:
Configurar el pin de comunicacin en el micro controlador
como salida.
Escribir un "0" lgico al pin de comunicacin.
Esperar un tiempo corto para estabilizar la lnea de
comunicacin (5 s).
Escribir un "1" lgico al pin de comunicacin. (Inicio de
pulso de disparo).
Retardo de tiempo (2-5 s) para lograr el ancho de pulso de
disparo del sensor.
Terminar el pulso de disparo escribiendo un "0" lgico al pin
de comunicacin.
Configurar el pin de comunicacin como entrada.
Esperar hasta recibir un "1" lgico en el pin de
comunicacin. (Inicio del pulso de eco de salida del sensor).
Activar el temporizador del PIC

Esperar hasta recibir un "0" lgico en el pin de


comunicacin. (Fin del pulso de eco de salida del sensor).
Desactivar el temporizador del PIC.
Leer conteo efectivo en el temporizador en s.
Calcular la distancia en funcin a la duracin del pulso de
eco de salida del sensor.
Debido a que la duracin del pulso provisto por el sensor
contiene la informacin del tiempo que tarda la rfaga en ir
y volver desde el objetivo, esta duracin se debe dividir por
2 para calcular la distancia, de otro modo estaramos
calculando el doble de la distancia (ida + vuelta).

PROGRAMACION:
#include <16F887.h>
#FUSES XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#include <lcd.c>
int16 distancia, tiempo;
#define trig pin_B1
#define echo pin_B0
#USE standard_io(b)
void main()
{
lcd_init();
printf(LCD_PUTC, "\f Iniciando.");
delay_ms(500);
printf(LCD_PUTC, "\f Iniciando..");
delay_ms(500);
printf(LCD_PUTC, "\f Iniciando...");
delay_ms(500);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
while(1)

{
output_high(trig);
delay_us(20);
output_low(trig);
while(!input(echo))
{}
set_timer1(0);
while(input(echo))
{}
tiempo=get_timer1();
distancia=(tiempo*10)/(58.0);
printf(LCD_PUTC, "\fTiempo :%Lu \nDistancia =
%Lu",tiempo,distancia);
delay_ms(500);
}
}
El cdigo est detalladamente comentado en las
direcciones al final del informe.

CONCLUSIN
Como se ha visto, el procedimiento para la lectura del
Sensor Ultrasnico de Distancia HC SR-04 es bastante
sencillo. No es difcil imaginar varias posibilidades de
aplicacin para este sensor en reas como la robtica,
sistemas de navegacin, sistemas de seguridad e incluso
sistemas industriales; su interfaz simple hace que sea
posible su uso con virtualmente cualquier micro
controlador, incluso con los ms pequeos como el
PIC10F200 de Microchip.

FOTOS