El HC-SR04 es un sensor de distancia ultrasónico economico y muy sencillo de utilizar el cual se puede usar en un sinfin de aplicaciones, uno claro ejemplo son los sensores de reversa de un automovil.
Objetivo:Aprender a leer los datos de un sensor de distancia HC-SR04
y desplegar los datos en una pantalla LCD 16x2.
Material:
Para controlar el LCD sólo
ocupamos 7 pines, 3 son
para control y 4 para datos.
Control: RS,E,RW
Datos: D4-D7
El sensor ultrasónico HC-SR04 opera por medio del eco generado por un sonido, el Pic manda el pulso, se genera un sonido y se mide el tiempo de respuesta, su rango es 2 a 40 centímetros.
#include <16F88.h>
#FUSES NOWDT, INTRC, NOMCLR, NOLVP
#use delay(clock=8000000)
#define use_portb_lcd TRUE //Lcd en puerto B
#include
#define trig pin_A4
#define echo pin_A3
void config()
{setup_oscillator(OSC_8MHZ);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_2);
lcd_init();
}
void main()
{ int16 time;
float distanceCm;
config();
printf(LCD_PUTC, "Starting.");
delay_us(1000);
LCD_PUTC('\f');
while(true)
{ output_high(trig); //pulso de incio
delay_us(20);
output_low(trig);
while(!input(echo)) //Esperamos a que la se�al de entrada sea 1
{}
set_timer1(0);
while(input(echo)) //Esperamos a que la se�al de entrada sea 0
{}
time=get_timer1(); //Medimos el ancho de pulso
distanceCm=((float)time)/(58.0); //Aplicamos formula
lcd_gotoxy(1,1);
printf(LCD_PUTC, "Distance \n %3.2f cm ",distanceCm); //Imprimimos resultado
delay_ms(500);
}
}
Sencillo, el Pic pone en alto un bit (trig pin_A4), genera un pulso de 20 microsegundos para crear el sonido del HC-SR04, después verifica un estado cero en el eco: while (!input(echo)), cuando salta el ciclo inicia el temporizador set_timer1(0) y entra en modo espera hasta recibir el eco: while (input(echo)).
El pulso de 10 us segundos del Pic se transforma en 8 ciclos a 40 kHz de ultrasonido.
Siguiendo las reglas la electrónica interna
del HC-SR04 responde con un pulso entre
150 us y 25 ms (2-40 centímetros), la distancia
en centímetros se mide con la fórmula
ancho de pulso (uS)/58.