Tutorial de Arduino en Español – Parte 8 – Sensor ultrasonido HC-SR04

En este capítulo vamos a controlar un Sensor ultrasonido HC-SR04.

Con el podremos medir distancias mediante pulsos de ultrasonidos de alta frecuencia no audibles por el ser humano. El ultrasonido es emitido a través de un altavoz, y cuando este rebota con un obstáculo, rebota y vuelve al sensor, que va equipado con un micrófono capaz de recibir el ultrasonido.

Con Arduino, podemos medir el tiempo que ha tardado en emitir el ultrasonido, y el tiempo que ha tardado en recibirlo, y sabiendo a la velocidad que viaja el sonido, podemos calcular la distancia.

Esquema de conexionado

Esquema de conexionado HC-SR04 con LCD 2004A

En el esquema de conexionado tenemos marcado 2 componentes.

El HC-SR04 (1) va conectado Arduino en los pines Echo (cable naranja) al pin 9 de Arduino y el Trigger (cable marrón) al pin 8 de Arduino.

El pin VCC (cable rojo) lo conectamos a +5V y el pin GND (cable negro) lo conectamos a GND.

Opcionalmente, he conectado una pantalla LCD 2004 al Arduino, para poder visualizar rápidamente la información del sensor HC-SR04. Si quieres saber más acerca del LCD 2004A, hablamos de ella en otro artículo.

Código de Arduino

#include <LiquidCrystal_I2C.h>

int echo = 8;
int trigg = 9;

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

void setup() {
  // put your setup code here, to run once:
  lcd.begin(20,4);
  lcd.backlight();
  Serial.begin(9600);
  pinMode(trigg, OUTPUT);
  pinMode(echo, INPUT);
}

void loop() {
  lcd.setCursor(0,1);
  int distancia = getPulse() *0.034/2;

  lcd.print("Distancia: ");
  lcd.print(distancia);
  lcd.print(" cm");
  for(int i = 0; i < 3; i++)
    lcd.print(" ");
  Serial.println(distancia);  
}

int getPulse()
{
  digitalWrite(trigg, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigg, LOW);
  return pulseIn(echo, HIGH);
}

Revisando el código, lo primero que hacemos es importar la librería de LiquidCrystal_I2C, que es la que nos permitirá usar el LCD 2004A (en caso de que la uséis)

Librería I2C: http://www.mediafire.com/file/4xzujgh16n1d0l8/file

Como instalar una librería a Arduino desde archivo ZIP

Definimos los pines echo en el 8 y trigg en el 9 e inicializamos la librería de LiquidCrystal_I2C.

En el setup, inicializamos la pantalla LCD y activamos la retroiluminación (en caso de que sea necesario en nuestro LCD) e inicializamos la comunicación serial si queremos ver desde Arduino Studio lo que vamos a mostrar y finalmente, establecemos el pin del trigger a OUTPUT y el del echo a INPUT.

En el loop, establecemos el cursor del LCD a la Fila 1 Columna 0 con setCursor(0,1);

Ahora obtenemos la distancia, para ello necesitamos emitir un pulso y calcular el tiempo que ha pasado esde que lo mandamos, hasta que lo recibimos.

Analizando getPulse, simplemente ponemos a HIGH el ping trigg, esperamos 10 microsegundos y acto seguido, volvemos a poner en LOW el ping trigg.

El ultra sonido ya ha sido emitido y ahora, con pulseIn en HIGH, decimos al Arduino que nos de el tiempo que tarda el pin echo en cambiar de estado a HIGH (que será cuando el micrófono reciba el rebote del ultrasonido)

Y finalmente, para saber la distancia lo que tenemos que saber es, que el sonido viaja a 340 metros por segundo (m/s) pero nosotros, al medir en escalas de centímetros, necesitamos una escala mas pequeña, por ejemplo, centímetros por microsegundo (cm/µs), por lo que dividimos 340/10.000, lo cual nos da una velocidad de 0,034 centímetros por microsegundo.

Y ya solo nos queda multiplicar el tiempo que nos devuelve getPulse (los microsegundos que ha tardado en llegar el rebote) por 0,034 (los cm recorridos en 1 microsegundo) dividido entre 2, ya que ese tiempo es desde que se emite el ultrasonido, rebota en el obstáculo, y vuelve al micrófono.

Como hace 2 trayectos, y la lectura que realmente buscamos es solo el rebote en el obstáculo, hasta llegar al micrófono, por eso, dividiendo entre 2, nos aproximamos a lo que buscamos.

Descarga el código de ejemplo: Tutorial de Arduino en Español – Parte 8 – Sensor ultrasonido HC-SR04

Deja un comentario