0. Componentes y programación necesaria para el Módulo HC-SR04 Sensor Ultrasonidos

Componentes requeridos:

{Product:2000}{Product:337}
  • • Cables dupont

I. Cómo utilizar el módulo HC-SR04 Sensor Ultrasonidos Módulo Medidor De Distancia

HC-SR04 es un clásico de los módulos medidores distancia para Arduino. Su éxito debe a lo sencillo y fácil que es hacerlo funcionar en proyectos de Arduino, PIC o cualquier otro microcontrolador. En su pin de salida podemos medir el ancho de pulso PWM en función de la distancia del obstáculo.

II. Procedimientos experimentales

Conexión

El módulo se alimenta directamente de Arduino, así que no necesitamos una fuente de alimentación externa. 

Los pines están conectados según la tabla:

 

Pin Módulo

Pin de Arduino UNO

Vcc

5V

ECHO

D2

TRIG

D3

GND

GND

El diagrama es es por tanto el siguiente:

Para generar el ultrasonido, necesitamos configurar el Pin de disparo (Trigger) en un estado alto durante 10 µs . Eso enviará una ráfaga sónica de 8 ciclos que viajará a la velocidad del sonido y se recibirá en el Pin de eco (Echo). El Pin de eco generará el tiempo en microsegundos que recorrió la onda de sonido.

Por ejemplo, si el objeto está a 20 cm del sensor y la velocidad del sonido es de 340 m / so 0.034 cm / µs, la onda de sonido necesitará viajar alrededor de 588 microsegundos. Pero lo que obtendrá del pin Echo será el doble de ese número porque la onda de sonido debe viajar hacia adelante y rebotar hacia atrás . Entonces, para obtener la distancia en cm, debemos multiplicar el valor del tiempo de viaje recibido desde el pin de eco por 0.034 y dividirlo por 2.

Código

Para el código de programación, primero debemos definir el Pin de disparo y el Pin de eco que se conectaron a la placa Arduino. En este proyecto, EchoPin se adjunta a D2 y TrigPin a D3. Luego defina variables para la distancia (int) y la duración (long).

Abre un sketch nuevo y pega el siguiente código:

const int EchoPin = 2;

const int TriggerPin = 3;

  

void setup() {

   Serial.begin(9600);

   pinMode(TriggerPin, OUTPUT);

   pinMode(EchoPin, INPUT);

}

 

void loop() {

   int cm = ping(TriggerPin, EchoPin);

   Serial.print("Distancia medida: ");

   Serial.println(cm);

   delay(1000);

}

 

//Cálculos para la distancia

int ping(int TriggerPin, int EchoPin) {

   long duration, distanceCm;

    

   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us

   delayMicroseconds(4);

   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us

   delayMicroseconds(10);

   digitalWrite(TriggerPin, LOW);

    

   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos

    

   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm

   return distanceCm;

}

Ahora, una vez subido el código, si abrimos el Monitor Serial desde Herramientas, podremos ver la distancia a la que posicionamos los obejtos delante del sensor. Prueba a acercar y alejar la mano.

Por otra parte, una librería interesante que puedes usar con este módulo es NewPing.h