campos inventronica: como usar sensor ultrasonico hc sr04
Post on 19-Mar-2016
213 Views
Preview:
DESCRIPTION
TRANSCRIPT
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 1 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
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)
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 asanitarios
Como usar sensor ultrasonicoHC-SR04
► febrero (3)
► 2011 (2)
► 2008 (1)
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
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 2 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
Dimensiones:
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 la
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 3 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
lectura.
2) el sensor enviara 8 pulsos deultrasonido y colocara su salida ECHOa alto, debes detectar este evento einiciar un "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 mayora 30ms entonces asumes que no hayobstaculo.
Este es el diagrama de tiempos:
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 4 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
EJEMPLO
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 longunsigned 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 loscentimetros medidos//codigo para medicion de distancia...
ahora comienza la secuencia, si recuerdas habremos de enviar unpulso de almenos 10us por el pin TRIG, yo le puse 50us para no fallar:
output_high(trig); // pulso de disparodelay_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:
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 5 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
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);}
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 6 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
//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 trigpin_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);}//********************************************************************
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 7 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
//********************************************************************// 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.
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 8 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
**************************************************************
Costo del sensor $190 pesos mexicanos
Envio a toda la republica
Costo de envio $89
Pregunda o pidelo a: robo-sapiens@hotmail.com
Tambien hemos desarrollado en basea este sensor el nuevo sensor FLEX-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 $260PUBLICADO POR ELECTROSWALDO EN 12:39
1 2 C O M E N T A R I O S :
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 9 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
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
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
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 10 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
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 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
Kimberlyn Martínez dijo...
Justo lo que estaba buscando, muy bueno tu blog, me
gustaria saber como seria la rutina del programa si en lugar
de mostrarlo por una pantalla, quisiera una alerta sonora a
cada metro...
7 DE JULIO DE 2013 19:36
ARCHY SOLIS dijo...
hola buen dia, los int16 para que te sirve?? saludos.
20/11/13 14:47CAMPOS INVENTRONICA: Como usar sensor ultrasonico HC-SR04
Página 11 de 11http://campos-inventronica.blogspot.mx/2012/04/como-usar-sensor-ultrasonico-hc-sr04.html
Entrada más reciente Entrada antigua
Publicar un comentario en la entrada
Página principal
Suscribirse a: Enviar comentarios (Atom)
4 DE OCTUBRE DE 2013 08:57
top related