Arduino Tutorial 18: El sensor de ultrasonidos

En la práctica de hoy queremos enseñaros las utilidades que puede tener un sensor ultrasonidos, y como aplicarlo con el uso de un microcontrolador Arduino. En concreto, vamos a conectar nuestro sensor de ultrasonidos hc-sr04 para que mida distancia, y vamos a hacer que nos muestre la distancia por una pantalla LCD, como ya hicimos en otras entradas como la del sensor de temperatura.

 

Sensor de ultrasonidos


Además como elemento añadido, colocaremos un elemento de aviso, un diodo led, que se encenderá en caso de que nuestro sensor detecte que la distancia que recibe es demasiado corta(por ejemplo, menor de diez centímetros), y se mantendrá apagado en caso contrario. Es un sistema muy similar al que usarían los cuadros de mando de los coches que llevan sensor de aparcamiento incorporado.

Esquema

esquema
Podríamos realizar el esquema sin LCD en el caso de no disponer de ella

 

Antes de empezar a escribir código, vamos a intentar explicar un poco acerca del funcionamiento del sensor de ultrasonidos. Su funcionamiento es muy simple. Vemos que tiene incorporados dos transductores(los cilindros), uno de ellos se empleará para emitir una señal de ultrasonidos, y el segundo será el encargado de recibirla.

Si tenemos en cuenta que la velocidad del sonido es 340 m/s y medimos el tiempo que tarda nuestro sensor en recibir la respuesta, podremos despejar la distancia con la sencilla fórmula:


distancia = velocidad * tiempo
 
Una vez dicho esto podemos entrar a ver como el código identifica el tiempo y lo multiplica por una constante para hallar la distancia.

 Código

// incluimos la librería de la pantalla LCD
#include <LiquidCrystal.h>

int led = 4;
long distancia;
long tiempo;

// iniciamos la pantalla LCD con los pines correspondientes
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);


void setup(){
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(3, OUTPUT); /*activamos el pin 3 como salida, emite un pulso ultrasónico*/
  pinMode(2, INPUT); /*activamos el pin 2 como entrada, recibe el pulso*/
  // encendemos la pantalla LCD: 
  lcd.begin(16, 2);
  // Escribimos en ella un mensaje
  lcd.print("Distancia:");
}

void loop(){
  digitalWrite(3,LOW);//Nos aseguramos que el ultrasonido empiece apagado.
  delayMicroseconds(5);
  digitalWrite(3, HIGH);//Encendemos el ultrasonido
  delayMicroseconds(10);
  tiempo=pulseIn(2, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
  del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que
  deja de hacerlo, LOW, la longitud del pulso entrante*/
  distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor en cm*/

  /*Podemos introducir la distancia en el monitor serial*/
  Serial.println("Distancia ");
  Serial.println(distancia);
  Serial.println(" cm");
  delay(500);

  //O podemos hacerlo por medio de la LCD
  // Colocamos el cursor en la segunda fila del LCD
  lcd.setCursor(0, 1);
  // imprimimos la variable distancia
  lcd.print(distancia);
  if(distancia < 10){
     digitalWrite(led, HIGH);   // encendemos un diodo led en caso de que la señal nos indique una distancia menor de 10 cm
  }
  else{
    digitalWrite(led,LOW); //apagamos la señal en caso contrario
  }
  
}


Si hemos realizado bien nuestro proyecto, el resultado final debería ser algo parecido a esto:

distancia: 6 cm

distancia: 37 cm

Nada más, espero que os haya gustado, y en caso de que tengáis alguna duda la preguntéis. NOS VEMOS!!

 

Guardar

Guardar

Guardar

Guardar

Guardar

Guardar

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *