Como Usar Sensor Ultrasonico HC-SR04

9
VIERNES, 6 DE ABRIL DE 2012 Como usar sensor ultrasonico HC-SR04 Sensor ultrasonico de distancia basado en el principio del sonar. Caracteristicas: Alimentacion: 5V Angulo de sensado: 15° Rango de distancia: 2 a 500 cm Numero de pines: 4 (VCC,TRIG,ECHO,GND) Dimensiones: ARCHIVO DEL BLOG 2013 (2) 2012 (6) diciembre (1) abril (2) vending control de acceso a sanitarios Como usar sensor ultrasonico HC-SR04 febrero (3) 2011 (2) 2008 (1) 0 Más Siguiente blog» Crear un blog Acceder CAMPOS INVENTRONICA CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr... 1 de 9 14/05/2013 01:59 p.m.

Transcript of Como Usar Sensor Ultrasonico HC-SR04

Page 1: Como Usar Sensor Ultrasonico HC-SR04

V I E R N E S , 6 D E A B R I L D E 2 0 1 2

Como usar sensor ultrasonico HC-SR04

Sensor ultrasonico de distancia basado en el principio del sonar.

Caracteristicas:

Alimentacion: 5V

Angulo de sensado: 15°

Rango de distancia: 2 a 500 cm

Numero de pines: 4 (VCC,TRIG,ECHO,GND)

Dimensiones:

A R C H I V O D E L B L O G

► 2013 (2)

▼ 2012 (6)

► diciembre (1)

▼ abril (2)

vending control de acceso a

sanitarios

Como usar sensor ultrasonico

HC-SR04

► febrero (3)

► 2011 (2)

► 2008 (1)

0 Más Siguiente blog» Crear un blog Acceder

C A M P O S I N V E N T R O N I C A

CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr...

1 de 9 14/05/2013 01:59 p.m.

Page 2: Como Usar Sensor Ultrasonico HC-SR04

Modo de funcionamiento:

Para hacer una lectura con el HC-SR04basta con seguir estos pasos:

1) enviar un pulso de minimo 10us porel pin TRIG (disparo) para iniciar lalectura.

2) el sensor enviara 8 pulsos deultrasonido y colocara su salida ECHO aalto, debes detectar este evento e iniciarun "conteo de tiempo"

3) la salida ECHO se mantendra en altohasta recibir el eco reflejado por elobstaculo a lo cual el sensor pondra supin ECHO a bajo, es decir, terminas de"contar el tiempo"

4) La distancia es proporcional a laduracion del pulso y puedes calcularlacon las siguientes formulas:

Distancia en CM = tiempo medido en us* 0.0167Distancia en PULGADAS = tiempomedido en us * 0.00675

Nota: si la duracion del pulso es mayor a30ms entonces asumes que no hay

CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr...

2 de 9 14/05/2013 01:59 p.m.

Page 3: Como Usar Sensor Ultrasonico HC-SR04

obstaculo.

Naturalmente usaremos un PIC para manejar el sensor, el

compilador que utilizaresmos es PICC Compiler de CCS, el PIC

utilizado puede ser cualquiera de tu preferencia, la cabecera del

programa no la pondre porque puedes usar el PIC que tu quieras,

esa es la ventaja de PICC, la portabilidad de codigo.

Empezamos, lo mejor desde mi punto de vista es diseñar una

funcion que se encargara de la lectura del sensor, esta funcion

debera ir fuera y antes de la funcion MAIN. Lo primero es definir

los pines de nuestro sensor

#define trig pin_c6

#define echo input(pin_c7)

Renombrar pines facilita el entendimiento posterior del codigo y

ademas permite que cambies los pines que vas a usar con

simplemente modificar las lineas de codigo anteriores en lugar de

buscarlas y modificarlas dentro del codigo.

Muy bien, sabemos que el sensor puede llegar a medir hasta 500cm,

por lo cual nuestra funcion tendra un DATO DE SALIDA del tipo

long unsigned ya que sobrepasa los 255 de una variable unsigned

normal, asi que nuestra funcion comienza con un int16:

int16 mide_distancia(void){

int16 centimetros; // creamos una variable local para los

centimetros medidos

//codigo para medicion de distancia...

ahora comienza la secuencia, si recuerdas habremos de enviar un

pulso de almenos 10us por el pin TRIG, yo le puse 50us para no

fallar:

CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr...

3 de 9 14/05/2013 01:59 p.m.

Este es el diagrama de tiempos:

EJEMPLO

Page 4: Como Usar Sensor Ultrasonico HC-SR04

output_high(trig); // pulso de disparo

delay_us(50);

output_low(trig);

luego hay que esperar el pulso del pin echo que de inicio esta en

cero, asi que usaremos un while que espera mientras el pin echo

este en cero y continuara cuando el pin este en 1:

while(echo==0); //espera flanco de subida

Muy facil verdad, ahora comienza la medicion de la distancia,

usaremos un ciclo while que incrementa cada 60us la variable

centimetros mientras el pin echo sea = uno. Los 60us es el tiempo

aproximado que tarda en viajar el sonido 2cm osea 1cm ida y

vuelta:

while(echo==1){

centimetros++;

delay_us(58);

}

Este while termina cuando el pin echo a ido a cero, es decir ya

termino la lectura, asi que terminamos con una demora de 50ms,

tiempo sugerido por el datasheet del sensor y retornaremos con el

valor de los centimetros medidos:

delay_ms(50);

return(centimetros);

}// fin de la funcion "mide_distancia"

Nuestra funcion completa queda entonces de la siguiente manera:

#define trig pin_c6

#define echo input(pin_c7)

int16 mide_distancia(void){

int16 centimetros=0;

//pulso de disparo:

output_high(trig);

delay_us(50);

output_low(trig);

//espera flanco de subida por el pin echo

while(echo==0);

//comienza a contar centimetros hasta que pin echo sea cero

while(echo==1){

centimetros++;

delay_us(58);

CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr...

4 de 9 14/05/2013 01:59 p.m.

Page 5: Como Usar Sensor Ultrasonico HC-SR04

}

//demora de seguridad y retorna con el valor de centimetros

contados

delay_ms(50);

return(centimetros);

}

Recuerda que esta funcion habra de ir afuera y antes de la funcion

MAIN, un ejemplo de uso seria asi: Hacer un medidor de distancia

con sensor ultrasonico y un lcd que marque la distancia en CM y

tenga un led que enciende cuando hay una lectura valida y apaga

cuando no hay una lectura valida o no haya objeto:

//******************************************************************

**

// Cabecera del programa, depende del pic que uses

//******************************************************************

**

//******************************************************************

**

// Funcion de mide distancia de sensor ultrasonico#define trig

pin_c6

#define echo input(pin_c7)

int16 mide_distancia(void){

int16 centimetros=0;

//pulso de disparo:

output_high(trig);

delay_us(50);

output_low(trig);

//espera flanco de subida por el pin echo

while(echo==0);

//comienza a contar centimetros hasta que pin echo sea cero

while(echo==1){

centimetros++;

delay_us(58);

}

//demora de seguridad y retorna con el valor de centimetros

contados

delay_ms(50);

return(centimetros);

}

//******************************************************************

**

CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr...

5 de 9 14/05/2013 01:59 p.m.

Page 6: Como Usar Sensor Ultrasonico HC-SR04

//******************************************************************

**

// Funcion principal del programavoid main( void ){

int16 distancia;

int8 i;

lcd_init(); // inicializa lcd

while (true){ // lazo infinito

distancia=mide_distancia(); // AQUI USAMOS NUESTRA PODEROSA

FUNCION!!!

lcd_gotoxy(1,1);

if(distancia>500){ // si lectura > 500cm entonces no es valida,

osea no hay objeto

lcd_putc('\f'); // Borra LCD

printf(lcd_putc,"NO DETECTED!");

output_low(pin_c0);

}

else{ // si distancia fue < 500cm es una distancia valida y la

imprime en LCD

printf(lcd_putc,"%03lucm ",distancia);

output_high(pin_c0);

}

}// cierra lazo infinito

}// cierra main

//******************************************************************

**

*************************************************************

COMENARIOS SOBRE EL PROGRAMA DE EJEMPLO:

Este codigo de ejemplo tiene sus ventajas y sus desventajas, la

gran ventaja es que es todo por software por lo que no consume

recursos de TIMERS del PIC.

La desventaja es que el tiempo de medicion de centimetros puede

variar ya que depende de la velocidad del PIC que estas

trabajando, esto se refleja en que mide cm mas grandes, esto se

resuelve disminuyendo el valor del DELAY_US(58); hasta el valor

que se ajuste a los cm reales.

**************************************************************

Costo del sensor $190 pesos mexicanos

Envio a toda la republica

Costo de envio $89

CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr...

6 de 9 14/05/2013 01:59 p.m.

Page 7: Como Usar Sensor Ultrasonico HC-SR04

Pregunda o pidelo a:

[email protected]

Tambien hemos desarrollado en basea este sensor el nuevo sensorFLEX-SONAR

Diseñado para fácil uso, sin hacer"rutinas", visitale en el siguienteenlace:http://www.inventronica.blogspot.mx/2012/04/sensor-ultrasonico-flex-sonar.htmlcosto $260PUBL ICADO POR ELECTROSWALDO EN 12: 39

1 0 C O M E N TA R I O S :

loui dijo...

amigo, necesito tu ayuda, como puedo hacer ese programa

con microcode, osea en basic

30 DE ABRIL DE 2012 18:28

ELECTROSWALDO dijo...

Que tal, pues que yo recuerde hay un codigo de ejemplo en

el datasheet del mismo sensor echo en basic. Saludos

30 DE ABRIL DE 2012 20:44

Jonbul dijo...

Saludos, llevaba tiempo buscando una explicación de este

estilo respecto a este sensor. Mi duda es si es necesario que

sean esos 2 pines o se pueden usar otros cualquiera. Gracias

CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr...

7 de 9 14/05/2013 01:59 p.m.

Page 8: Como Usar Sensor Ultrasonico HC-SR04

22 DE MAYO DE 2012 06:58

Robotnias dijo...

Excelente explicación!, he seguido las instrucciones al pie

de la letra y en 10 minutos mi sensor mide perfectamente!

Muchas gracias por compartirla!

27 DE JUNIO DE 2012 23:51

William dijo...

Hola, hace poco me regalaron un sensor de estos, pero la

tarjeta que tengo es una pinguino, podrías decir que pines

serías los adecuados para conectar en esta tarjeta?

6 DE NOVIEMBRE DE 2012 13:11

Bachillerato de Xochiapulco dijo...

Que tal ELECTROSWALDO, mi primo me regalo un sensor

ultrasonico, me parece que lo compro contigo. ya realize el

programa que pones de ejemplo y funciona bien

pero ahora he intentado agregar al proyecto un sensor de

temperatura LM35 pero no funciona. los codigos por si solos

funcionan bien, es decir si pongo el puro codigo de sensor

ultrasonico funciona bien, si pongo solo el codigo del sensor

de temperatura tambien funciona correcto. pero al

intentar juntar los dos sensores en el proyecto(los 2 codigos

en conjunto)no mas no hace nada el prototipo, se atora.por

tu respuesta desde ya gracias

16 DE NOVIEMBRE DE 2012 14:52

gilberto valenzuela dijo...

disculpa esque puse el mismo codigo e un pic 18f4550 y no

pude hacer que jalara :/ me podrias ayudar porfavor saber

si no le hace falta algo mas alcodigo o algo se lo

agradeseria

25 DE NOVIEMBRE DE 2012 23:42

Miguel Menéndez Riera dijo...

Mis Respetos, muy buen código y simple ante todo. Muchas

gracias por tu aporte.

Saludos.

2 DE DICIEMBRE DE 2012 10:29

Santiago Zambrana dijo...

Amigo estoy usando el mismo codigo q brindas pero llega un

momento en que el valor medido se queda pegado y no

CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr...

8 de 9 14/05/2013 01:59 p.m.

Page 9: Como Usar Sensor Ultrasonico HC-SR04

Entrada más reciente Entrada antigua

Publicar un comentario en la entrada

Página principal

Suscribirse a: Enviar comentarios (Atom)

sigue midiendo..talvez tendras alguna idea d q podria ser..

27 DE FEBRERO DE 2013 09:33

Andrés Moreno dijo...

Muchas gracias, muy bien explicado. Lo probaré en un rato

más.

13 DE MAYO DE 2013 10:44

CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04 http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultr...

9 de 9 14/05/2013 01:59 p.m.