Artículos recientes

Novedades

Tutorial de Arduino y sensor ultrasónico HC-SR04

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

 

Conexion modulo HC-SR04

 

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. 

 Selección del tipo de tarjeta  Arduino

 

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

const int Trigger = 2;   //Pin digital 2 para el Trigger del sensor
const int Echo = 3;   //Pin digital 3 para el echo del sensor

void setup() {
  Serial.begin(9600);//iniciailzamos la comunicación
  pinMode(Trigger, OUTPUT); //pin como salida
  pinMode(Echo, INPUT);  //pin como entrada
  digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
}

Ahora en el bucle void loop() empezamos enviando un pulso de 10us al Trigger del sensor

  digitalWrite(Trigger, HIGH);
  delayMicroseconds(10);          //Enviamos un pulso de 10us
  digitalWrite(Trigger, LOW);

Seguidamente recibimos el pulso de respuesta del sensor por el pin Echo, para medir el pulso usamos la función pulseIn(pin, value)  

  t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
 

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:

Formula velocidad del sonido, arduino

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:

Ecuación para calcular la distancia, hc-sr04

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.

const int Trigger = 2;   //Pin digital 2 para el Trigger del sensor
const int Echo = 3;   //Pin digital 3 para el Echo del sensor

void setup() {
  Serial.begin(9600);//iniciailzamos la comunicación
  pinMode(Trigger, OUTPUT); //pin como salida
  pinMode(Echo, INPUT);  //pin como entrada
  digitalWrite(Trigger, LOW);//Inicializamos el pin con 0
}

void loop()
{

  long t; //timepo que demora en llegar el eco
  long d; //distancia en centimetros

  digitalWrite(Trigger, HIGH);
  delayMicroseconds(10);          //Enviamos un pulso de 10us
  digitalWrite(Trigger, LOW);
  
  t = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso
  d = t/59;             //escalamos el tiempo a una distancia en cm
  
  Serial.print("Distancia: ");
  Serial.print(d);      //Enviamos serialmente el valor de la distancia
  Serial.print("cm");
  Serial.println();
  delay(100);          //Hacemos una pausa de 100ms
}

    

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

  Abrir el monitor serial de arduino

 

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.

 Datos en monitor serial arduino

 

Si tiene problemas de compilación o de configuración del IDE Arduino puede revisar el siguiete tutorial.

  Instalación del IDE Arduino

       

Puede adquirir los materiales utilizados en este tutorial en los siguientes enlaces

Tarjetas Arduino

Sensor ultrasónico HC-SR04

       Protoboard

Cables para protoboard

Cables dupont macho macho

Cables dupont macho hembra

11 Comments

    • Avatar
      Antonio
      abr 9, 2017

      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

    • Avatar
      omar monroy
      nov 16, 2017

      excelente me sirvio mucho !

    • Avatar
      jorge
      abr 25, 2018

      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?

    • Avatar
      gv
      jul 17, 2018

      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);

    • Avatar
      Fabio dos Santos
      oct 8, 2018

      voçe habeu porvadu secso brasileiro?

    • Avatar
      jose luis
      oct 26, 2018

      hola, como podría modificar el programa para restar dos distancias consecutivas......alguna ayuda...

    • Avatar
      Walter Penayo
      nov 22, 2018

      Holaa. consulto si alguno tendría para pasarme un sketch para probar el sensor ultrasónico US-016. GRACIAS

    • Avatar
      Edison Xavier
      ene 10, 2019

      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 aporte

      • Avatar
        federico
        mar 26, 2019

        Hola, buenas tardes. No creo que te sirva por la baja calidad de certeza del sensor. Deberias probar comprando sensores de mas calidad. Saludos!

    • Avatar
      Rodolfo
      may 8, 2019

      Excelente información. Muchas gracias!

    • Avatar
      la mamba negra
      nov 11, 2019

      Cuando el mar sea redondo y el sol deje de brillar, ese será el día en que te pueda olvidar. Si amarte es delito delincuente yo seré, cumpliré mi condena, pero jamás te olvidaré. Llenas de color mi vida, alumbras mi despertar, te quiero más cada día y no te pienso olvidar. Eres mi alegría, mi inspiración, la canción más hermosa que sale de mi corazón. Yo no le tengo miedo a nada, pero todavía no me explico por qué tiemblo cada vez que te veo. Tus ojos son mi conjuro contra la mala jornada, te quiero por tu mirada que mira y siembra futuro. Quisiera ser mariposa con alitas de algodón para entrar en tu pecho y robarte el corazón. Me duele la piel por no tocarte, me duelen los ojos por no verte; vivir sin ti es como vivir sin aire. Un lápiz sin punta no puede escribir y yo sin tu amor no puedo vivir. Tú no eres parte de mi vida, tú eres mi vida entera. Eres mi cariño, eres mi ilusión, eres una rosa brotando en mi corazón. Ayer te soñé, hoy te conocí, mañana te querré y jamás te olvidaré. Y espero pasar mis días sentada junto a ti, podría estar horas tan solo viéndote dormir. De ti en un segundo me enamoré, pero ni en un siglo te olvidaré. Cuando el mar se seque y el sol deje de brillar, ese será el día en que yo te deje de amar. Te quiero sin medida, te amo sin razón, eres lo mas hermoso que ha llegado a mi vida, la dueña de mi corazón.

Leave a Reply

* Name:
* E-mail: (Not Published)
   Website: (Site url withhttp://)
* Comment:
Type Code