Sensor Ultrasonico HC-SR04
Vamos a ver
un sensor muy curioso y muy sencillo de utilizar. Es el sensor de baja
frecuencia o ultrasónica HC-SR04. Que nos permite medir la distancia hasta un obstáculo.
La idea es muy sencilla enviar una señal sonora casi inaudible (para la mayoría
totalmente inaudible), que rebote en el obstáculo y al regresar de nuevo al
sensor medir cuanto ha tardado en hacer el trayecto. De esta forma se puede
medir la distancia.
Velocidad del Sonido a 20ºC 340 metros por segundo. 340 m/s
El eco tiene que ir y volver.
Sabemos que el eco ha tardado t segundos.
Entonces tenemos que la distancia en metros d es igual:
2d = 340 * t de donde obtenemos d = (340 * t) / 2
Esto es la teoría y no
nos va a hacer falta para utilizar este sensor ya que hay una librería que nos
devuelve la distancia en centímetros o en pulgadas. La cual se puede bajar de
este enlace. Librería Ultrasonic (URL Alternativa Librería Ultrasonic)
Hay que bajarla y descomprimirla en el directorio libreries del compilador IDE. Este sensor dispone de 4 patillas de entrada VCC a 5V, GND a GND, TRING y ECHO estas 2 van a 2 entradas digitales a nuestras elección. Para el ejemplo que os pongo yo las he conectado el TRING a la 7 y el ECHO a la 8.
Podemos ver un sencillo ejemplo:
// Sensor ultrasonico HR-SC04 // Conectamos el sensor de la siguiente forma: // GND -> GND // VCC -> 5V // TRING -> D7 // ECHO -> D8 // Por ejemplo conectamos a las entradas Digitales 7 y 8 // http://arubia45.blogspot.com.es/ // Librerias necesarias #include "Ultrasonic.h" // Declaramos el sensor ultrasonico // En los Pins Digitales elegidos Ultrasonic ultrasonico(7,8); void setup() { Serial.begin(9600); Serial.println("arubia45.blogspot.com.es"); } void loop() { Serial.print("Distancia: "); Serial.print(ultrasonico.Ranging(CM)); Serial.println(" cm"); Serial.print("Distancia: "); Serial.print(ultrasonico.Ranging(INC)); Serial.println(" inc"); delay(1000); }
Bajar Ejemplo (URL alternativa Bajar Ejemplo)
Esta librería tal cual viene tiene un timeout o tiempo de
espera de 3ms por lo que la distancia máxima que medirá será de 51cm algo
escaso para mi gusto. La ventaja de tener un timeout tan bajo es que se pueden
hacer muchas mediciones en poco tiempo. Si como yo os parece poco podéis
cambiarlo en el fichero: Ultrasonic.cpp
Buscamos Time_out=
que estará a 3000 y ponemos por ejemplo 30000 para 5 metros y grabamos.
Os dejo otro ejemplo
sacando la medición de distancia por LCD.
Ejemplo con LCD:
// Sensor ultrasonico HR-SC04 // Conectamos el sensor de la siguiente forma: // GND -> GND // VCC -> 5V // TRING -> D7 // ECHO -> D8 // Por ejemplo conectamos a las entradas Digitales 7 y 8 // http://arubia45.blogspot.com.es/ // Librerias necesarias #include "Ultrasonic.h" #include "Wire.h" #include "LiquidCrystal_I2C.h" // Declaramos el sensor ultrasonico // En los Pins Digitales elegidos LiquidCrystal_I2C lcd(0x27,20,4); Ultrasonic ultrasonico(7,8); void setup() { //Initializar el lcd lcd.init(); lcd.backlight(); lcd.home(); lcd.setCursor (0,1); lcd.print("arubia45."); lcd.setCursor (5,2); lcd.print("blogspot.com.es"); delay (3000); } void loop() { lcd.clear(); lcd.setCursor(0,0); lcd.print("Distancia: "); lcd.print(ultrasonico.Ranging(CM)); lcd.print(" cm"); lcd.setCursor(0,2); lcd.print("Distancia: "); lcd.print(ultrasonico.Ranging(INC)); lcd.print(" inc"); delay(1000); }
Bajar Ejemplo LCD (URL Alternativa bajar Ejemplo LCD)
Tal como he comentado este sensor se puede comprar por menos de 1,5€. Por ejemplo en eBay. Comprar eBay. (URL alternativa Comprar eBay)
sI UTILIZO dos sensores ultrasonicos cuando ocupo la funcion:
ResponderEliminarultrasonic.Ranging(CM)
como se a q sensor se esta refiriendo ??
amigo necesito tu ayuda es que ya cargue el programa y todo pero me manda error en esta parte Ultrasonic ultrasonico(7,8); y en estos lcd.print(ultrasonico.Ranging(CM));
Eliminarlcd.print(" cm"); por que amigo ya lo conecte bien y todo peror no lo corre
Hola, ¿Has descargado la librería Ultrasonic.h y la tienes descomprimida en Libreries?
EliminarUn saludo.
soy nuevo en esto pero creo que tendrias q hacer dos objetos diferentes del tipo Ultrasonic osea asi:
EliminarUltrasonic ultrasonico1(7,8);
Ultrasonic ultrasonico2(9,10);
Saludos.
Soy nuevo en estoy y estoy aprendiendo pero creo que tendrias que crear dos objetos diferentes del tipo Ultrasonic, es decir uno para cada sensor. Te quedaria asi:
EliminarUltrasonic ultrasonico1(7,8);
Ultrasonic ultrasonico(9,10);
Hola, sí es como comentas.
EliminarUn saludo.
Hola, si conectas 2 sensores tendrás que conectarlos a entradas digitales distintas cada uno. En el ejemplo el sensor se conecta a las entradas 7 y 8. Si conectas otros tendrás que conectarlo a otras entradas, por ejemplo la 5 y 6.
ResponderEliminarUn saludo.
Hola amigo
ResponderEliminarAcabo de bajar la librería del sensor y ya la instalé en la carpeta de librerias del software de Arduino. Al tratar de correr un ejémplo no me reconoce el Objeto de la libreria:
ultrasonic ultrasonic(9,8); // (Trig PIN,Echo PIN)
La targeta que estoy utilizando es de tipo Arduino uno, no se si la librería es compatible para este arduino.
Saludos
Hola, tienes que descargar la librería y reiniciar el compilador IDE.
EliminarUn saludo.
Este comentario ha sido eliminado por el autor.
ResponderEliminarSí, cerra y volver a abrir el compilador.
EliminarBueno amigo a intenté lo que me dijiste, reiniciar el compilador y me sigue apareciendo el mismo error, reinicié la computadora también y me sigue apareciendo.
ResponderEliminarMe dí cuenta de algo, al agregar la libreria de la pantalla LCD por medio de la opcion sketch + agregar libreria esta si se agrego automáticamente con solo darle click a la libreria, pero cuando intento agregar la del sensor ultrasonico esta no se agrega aún cuando le doy click.
Y si escribo manualmente la libreria de LCD y la del sensor ultrasonico
#include
#include
Las letras de la libreria de la pantalla son de color naranja y las del sensor se quedan negras como si el programa no las reconociera.
Crees que el IDE no me esté reconociendo la librería, aún cuando ya haya reiniciado el programa y haya descargado la libreria en la carpeta de librerias del IDE?
Hola, prueba a descomprimir en el directorio de librerias el fichero directamente con el compilador cerrado.
EliminarAmigo ya intenté lo que me dijiste y nada.
ResponderEliminarIntenté con la laptop de otro compañero y a él si le reconoció el software la librería.
Que crees que tenga mi computadora que no acepte la libreria?
No, se comprueba que tienen los 2 PCs la misma versión de Compilador IDE.
EliminarSaludos
Si era eso, tenemos diferentes softwares, el tenía 1.0.1 y yo la version 1.0.5.
EliminarGracias
Hola al cargar el codigo, en la ventana del serial solo me manda una distancia de 51 cm, es esto correcto???
ResponderEliminarAl cargar el codigo y visualizar la pantalla del Serial sol obtengo como resultado una distancia de 51 cm, ya cambie varias veces las entradas digitales de pine sy aun sigue sin funcionar, esta distancia emitida es correcta??
ResponderEliminarporque siempre me sensa la disancia de 51 cm??
ResponderEliminarEsa es la distancia máxima o el sensor está mal o las conexiones de forma que no recibe la señal de rebote del eco.
EliminarUn saludo.
hola te consulto, se podria usar dos sensores ultrasonicos enfrentados entre si, en un tronco de madera con el proposito de ver el estado interno del mismo? desde ya muchas gracias
ResponderEliminarHola, si los enfrentas entre ellos seguramente tendrás interferencias y te darán lecturas muy extrañas.
EliminarUn saludo.
Osea que ni la distancia me daria? no hay forma de configurarlos la idea es usar el trasmisor de un HC SR04 y el receptor del otro HC SR04 gracias y saludos
EliminarPara eso ya tendrías que modificar la librería, es posible que funcionara.
EliminarSaludos
Hola, lo probe y funciona bien, ahora me pregunto si tendras un diagrama para la conexion de la pantalla LCD y que modelo se necesita.
ResponderEliminarGracias y me alegro que te guste. En el blog tengo varias entradas dedicadas a las pantallas LCD, mira esta por ejemplo:
Eliminarhttp://arubia45.blogspot.com.es/2013/01/pantallas-lcd-arduino.html
Un saludo.
Hola, antes que nada, gracias por el post, muy ilustrativo, solamente tengo una duda, porque utilizan los pines con salidas PWM, ¿acaso no puedo utilizar cualquier otra salida digital? Gracias
ResponderEliminarHola, espero que sea de utilidad. Puedes utilizar las salidas digitales que quieras. Un saludo.
EliminarGracias me ayudo eso de cambiar el codigo en c++ para que me midiera mayor rango lo unico es que aveces me mide bien y luego me mide la distancia mayor (517cm) lo pongo firme y se compone
ResponderEliminarMuchas Gracias por tu aporte excelente me funciono perfectamente
ResponderEliminar