Skip to main content

Sensor de ultrasonidos

Manejar este tipo de sensores que son muy comunes en las aplicaciones de robótica para medir distancias. Para ello aprenderás a:

  • Realizar las conexiones necesarias sobre el sensor ultrasonidos HC-SR04.
  • Conocer el funcionamiento de un radar.
  • Cómo convertir el tiempo de rebote de un sonido en distancia.

La lista de materiales necesaria para el montaje es:

  • Arduino UNO.
  • Sensor de ultrasonidos HC-SR04.
  • Protoboard.
  • Cableado.

Montaje 8:13: Medición de la distancia

Este tipo de sensores también nos permite conocer la distancia a un objeto. Es más preciso que el de infrarrojos visto en la sección anterior y su rango de funcionamiento también es mayor. Funciona desde los 2cm hasta los 3 metros. 

El sensor tiene 2 partes como puedes ver en la figura. Una se encarga de enviar un sonido (a una frecuencia alta que no podemos escuchar), y la otra parte detecta cuando ese sonido vuelve.

Este sensor es muy útil en robots móviles para diversas acciones como no chocar o mantenerse a cierta distancia de una pared.

Podemos usar un sensor de ultrasonidos para obtener la distancia a un objeto. Este sensor se basa en el envío de una señal acústica y la recepción del eco de dicha señal. Lo que haremos después, al igual que hace un radar , un aparato de ecografías o un murciélago es calcular la distancia en función del tiempo que ha tardado el rebotar el sonido y la velocidad del sonido. Podemos encontrar las especificaciones en la página del fabricante. Uno de los modelos más comunes es el HC-SR04:

No es un sensor muy preciso. Si el obstáculo presenta caras oblicuas ya falla en la lectura del eco. Pero por el precio que tiene y la sensibilidad, no esta mal para utilizarla en la robótica educativa.

El sensor tiene 2 partes como puedes ver en la figura. Una se encarga de enviar un sonido (a una frecuencia alta que no podemos escuchar), y la otra parte detecta cuando ese sonido vuelve.

Este sensor es muy útil en robots móviles para diversas acciones como no chocar o mantenerse a cierta distancia de una pared.

El sensor HC-SR04 que usamos en estos ejemplos tiene 4 pines que corresponden (de izquierda a derecha):

  • GND , Vcc (a +5V)
  • Trig: es el que emite el ultrasonido
  • Echo: Es el que recibe el rebote

(Algunos modelos solo tienen 3 pines -HCSR05- indicándonos por el tercer pin ya directamente un valor proporcional con la distancia.)

 No aconsejamos usar la Shield de Edubasica, sino conectar diréctamente, en este caso no nos supone un ahorro de cableado, no como en los motores:motores, leds, ldr, etc...:

El programa es:

int trigPin = 8;
int echoPin = 9;
long duration; 

https://tiempocreate.arduino.cc/editor/javierquintana/e3bac5c7-0bf1-49d9-b267-94b628e04f2e/preview

de ida/vuelta int cm=0; //Para almacenar el valor obtenido en cm valor=0 void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { //ponemos al trigger a low para activarlo después digitalWrite(trigPin, LOW); delayMicroseconds(2); //Activar el módulo con un pulso de 10microsec. digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); //Esperamos la llegada de un pulso HIGH duration = pulseIn(echoPin, HIGH); //tiempo de ida y vuelta, dividimos por 2 duration=duration/2; //La velocidad del sonido es de 340 m/s //es decir, 29 microsegundos por centímetro cm = duration/ 29; Serial.print("Distancia:"); Serial.println(cm); delay(100); }

El resultado :

Medició

Montaje 14 Visualización condistancia en el LCD

Vamos a repetir el anterior programa pero que lo visualice el LCD {% youtube %} https://www.youtube.com/watch?v=eZvLMnHBypQ {% endyoutube %}

Montaje 14 Conexión:

Conectar el sensor de Ultrasonidos

Y el LCD

Código

Montaje
#include14 #includeprograma
LiquidCrystal_I2C lcd(0x3F,16,2);

https:////Crear el objeto lcd dirección 0x3F y 16 columnas x 2 filas int trigPin = 8; int echoPin = 9; float duration; //tiempo de ida/vuelta float cm=0; //Para almacenar el valor obtenido en cm valor=0 void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // Inicializar el LCD lcd.init(); lcd.backlight(); //Encender la luz de fondo. } void loop() { //ponemos al trigger a low para activarlo después digitalWrite(trigPin, LOW); delayMicroseconds(2); //Activar el módulo con un pulso de 10microsec. digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); //Esperamos la llegada de un pulso HIGH duration = pulseIn(echoPin, HIGH); //tiempo de ida y vuelta, dividimos por 2 duration=duration/2; //La velocidad del sonido es de 340 m/s //es decir, 29 microsegundos por centímetro cm = duration/ 29; lcd.setCursor(0, 0); // Escribimos el Mensaje en el LCD en una posición 1,0 lcd.print("Distancia:"); lcd.setCursor(0, 1); // Escribimos el Mensaje en el LCD en una posición 1,0 lcd.print(cm); lcd.print(" cm "); delay(100); }create.arduino.cc/editor/javierquintana/60770327-de2a-41d0-ac11-ddcddb1da0c9/preview