Tutorial de Arduino y sensor ultrasónico HC-SR04
En muchos de nuestros proyectos, tenemos la necesidad de sensar nuestro entorno, saber si en frente hay un obstáculo y a que distancia se encuentra, el sensor HC-SR04 nos permite hacer eso.
En este tutorial, vamos a conocer de forma detallada las características del sensor HC-SR04, como calibrar el sensor, como conectarlo y como utilizarlo con Arduino.
El sensor HC-SR04 es un sensor de distancia de bajo costo, su uso es muy frecuente en la robótica, utiliza transductores de ultrasonido para detectar objetos.
Su funcionamiento consiste en emitir un sonido ultrasónico por uno de sus transductores, y esperar que el sonido rebote de algún objeto presente, el eco es captador por el segundo transductor. La distancia es proporcional al tiempo que demora en llegar el eco.
Para empezar a utilizar el sensor HC-SR04 solo necesitas una placa Arduino, en este tutorial utilizaremos un Arduino Uno R3, pero puedes utilizar cualquier placa de Arduino, el procedimiento es el mismo.
Empezamos insertando el sensor ultrasónico en un protoboard y con cables hacemos las siguientes conexiones:
- Trigger del sensor al pin 2 del arduino
- Echo del sensor al pin 3 del arduino
También puedes conectar el modulo directamente al Arduino sin usar el protoboard.
Todas las conexiones se realizan con el Arduino Apagado (desconectado de la PC o de cualquier fuente externa):
Ahora abrimos el entorno de programación de Arduino, en Herramientas ->Tarjeta, y seleccionamos el modelo de placa Arduino que estemos utilizando. Nosotros seleccionaremos Arduino Uno.
Una vez configurado el IDE, empezamos a programar nuestro sketch, explicaremos paso a paso el código para sea más comprensible:
Primero configuramos los pines y la comunicación serial a 9800 baudios
Ahora en el bucle void loop() empezamos enviando un pulso de 10us al Trigger del sensor
Seguidamente recibimos el pulso de respuesta del sensor por el pin Echo, para medir el pulso usamos la función pulseIn(pin, value)
La variable t, tiene el tiempo que dura en llegar el eco del ultrasonido, el siguiente paso es calcular la distancia entre el sensor ultrasónico y el objeto
Partimos de la siguiente formula:
Donde Velocidad es la velocidad del sonido 340m/s, pero usaremos las unidades en cm/us pues trabajaremos en centímetros y microsegundos, tiempo es el tiempo que demora en llegar el ultrasonido al objeto y regresar al sensor, y la distancia recorrida es dos veces la distancia hacia el objeto, reemplazando en la formula tenemos:
Finalmente enviamos serialmente el valor de la distancia y terminamos poniendo una pausa de 100ms, que es superior a los 60ms recomendado por los datos técnicos del sensor
A continuación se muestra el código completo del programa.
Conecte el Arduino Uno y cargue el programa.
Después de esto el Arduino y sensor ya deben estar trabajando, para poder visualizar los datos vaya a herramientas y habrá el monitor serial
En el monitor serial le aparecerán los valores de la distancia que sensa el HC-SR04, ponga un objeto al frente y varíe su distancia respecto al sensor y verifique que la distancia mostrada en el monitor serial sea la correcta.
Descargue el programa completo en nuestro repositorio en GitHub:
- Ejemplos para el sensor ultrasónico HC-SR04
Lu** ****ia 10/08/2022 Responder
El valor aproximado 59 de la divison de =1.00 /0.017 o sea 58.82352941 creo que Arduino no maneja punto flotante por eso lo redeondeo a numeros enteros 59.Di*** 25/04/2022 Responder
Hola! Tengo dos dudas. La primera es si el código me serviría para hacer un velocímetro o si la calidad del sensor es muy baja. La segunda es como 340*10^-6*10^2/2 os ha dado 1/59 cuando a mi me da 17/1000. Graciaspa************** 29/10/2021 Responder
10/10buen tutorial!!
le****** ******** **ll 28/09/2021 Responder
Hola, buenos dias queria hacer un proyecto tecnologico y estoy haciendo un semaforo con arduino y programandolo tambien y no se como puedo configurar el sensor, si quiero que cuando pase una velocidad el auto, el sensor lo detecte y este semaforo se ponga en rojoJo*** ******* ********ga 07/01/2021 Responder
A quien corresponda me interesa aprender arduino desde cero y de antemano graciasal** 10/10/2023 Responder
pues te felicito es muy entretenido aprender arduino hay mucha información en redes y en la web.Ad* ***ht 21/05/2020 Responder
Muchas gracias por tu tutorial! muy bien explicado todo!!!!!!Ro***** 08/05/2019 Responder
Excelente información. Muchas gracias!Ed**** ****er 10/01/2019 Responder
BUENAS NOCHES ...!!! Tengo un inquietud muy grande .....desearia que alguien me ayude .....estoy tratando de realizar un flujometro ultrasonico para liquidos y mi pregunta es me sirven los sensores HC-SR04, Y en caso de que si me sirvan cuantos deberia utilizar GRACIAS espero su aportefe****** 26/03/2019 Responder
Hola, buenas tardes. No creo que te sirva por la baja calidad de certeza del sensor. Deberias probar comprando sensores de mas calidad. Saludos!Wa**** ****yo 22/11/2018 Responder
Holaa. consulto si alguno tendría para pasarme un sketch para probar el sensor ultrasónico US-016. GRACIASjo** **is 26/10/2018 Responder
hola, como podría modificar el programa para restar dos distancias consecutivas......alguna ayuda...Fa*** *** ****os 08/10/2018 Responder
voçe habeu porvadu secso brasileiro?gv 17/07/2018 Responder
A mi me ha funcionado poniendo los HIGH LOW del Tigger al reves.digitalWrite(Trigger, HIGH);
delayMicroseconds(2); //Enviamos un pulso de 10us
digitalWrite(Trigger, LOW);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger, HIGH);
jo*** 25/04/2018 Responder
este sensor me puede ayudar a detectar algun hueco en un muro de concreto? y si es asi igual me podra indicar que tan grande es la grieta?om** ****oy 16/11/2017 Responder
excelente me sirvio mucho !An***** 09/04/2017 Responder
Buen día. Utilice esta biblioteca aquí. Las lecturas del sensor es mucho más preciso, corriendo tan rápido! Descargar "New ping" aquí: http://playground.arduino.cc/Code/NewPing#.UzGBePl_sXw