Ultrasonido hc-sr04 sensor distancia

publicado en: blog | 0

En este tutorial explicaremos como utilizar un sensor ultrasónico HC-SR04 y arduino para la medición de distancia. Ya hemos explicado con anterioridad como se realiza la instalación de una librería para poder controlar algún periférico con nuestro arduino, en esta ocasión utilizaremos lo aprendido en aquel tutorial para ayudarnos a poner en funcionamiento un sensor ultrasónico HC-SR04.

El sensor HC-SR04 es un módulo que incorpora un par de transductores de ultrasonido que se utilizan de manera conjunta para determinar la distancia del sensor con un objeto colocado enfrente de este. Quizá la característica más destacada del HC-SR04 es que puede ser adquirido por una baja suma de dinero y esto mismo lo ha hecho muy popular. Afortunadamente el módulo HC-SR04 es bastante fácil de utilizar a pesar de su bajo precio y no demanda grán cantidad de trabajo ponerlo a funcionar, mucho menos si utilizamos una librería para sensores ultrasónicos.

Como todas las cosas en el mundo de la programación, poner en marcha este sensor es una meta a la cual se puede llegar de mil maneras distintas. En este artículo te enseñaremos a hacerlo funcionar de la forma que consideramos más rápida y sencilla: Utilizando una librería ya hecha para este fin que esta accesible en internet.

HC-SR04 sensor ultrasonido con atmega-2

Funcionamiento

Primeramente debemos armar el circuito de prueba para el sensor, el cual consiste únicamente en proveer alimentación al módulo y asignarle 2 pines de interfaz con el Arduino (echo y trigger). Este tipo de módulos para medición de distancia por ultrasonidos se divide en 2 grandes grupos:  Interfaz mediante pulso de eco e interfaz serial (I2C o UART). El HC-SR04 cae dentro del primer grupo, por lo que explicaremos su funcionamiento brevemente en las siguientes lineas.

La interfaz digital se logra mediante 2 pines digitales: el pin de trigger (disparo) y echo (eco).

  • El primero recibe un pulso de habilitación de parte del microcontrolador, mediante el cual se le indica al módulo que comience a realizar la medición de distancia.
  • A través de un segundo pin (echo) el sensor “muestra” al microcontrolador un puso cuyo ancho es proporcional al tiempo que tarda el sonido en viajar del transductor al obstaculo y luego de vuelta al módulo.

Mediante una sencilla formula puede estimarse entonces la distancia entre el sensor y el obstáculo si se conoce el tiempo de viaje del sonido así como la velocidad de propagación de la onda sonora. La siguiente imagen muestra los pulsos recibidos y enviados por el sensor, de acuerdo a la hoja de datos elaborada por Itead Studio.

sensor-distancia-hc-sr04-ultrasonido-makerelectronico-2

Código ejemplo

Para activar el sensor necesitamos generar un pulso eléctrico en el pin Trigger (disparador) de al menos 10us. Previamente, pondremos el pin a Low durante 4us para asegurar un disparo limpio. Posteriormente usamos la función “pulseIn” para obtener el tiempo requerido por el pulso para volver al sensor. Finalmente, convertirmos el tiempo en distancia mediante la ecuación correspondiente. Observar que intentamos emplear siempre aritmética de enteros, evitando usar números en coma flotante. Esto es debido a que las operaciones en coma flotante ralentizan mucho el procesador, y suponen cargar un gran número de librerías en memoria.

// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;

// defines variables
long duration;
int distance;

void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  Serial.begin(9600); // Starts the serial communication
}

void loop() {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  // Calculating the distance
  distance = duration * 0.034 / 2;
  // Prints the distance on the Serial Monitor
  Serial.print("Distance: ");
  Serial.println(distance);
}

COMPRA TU ULTRASONIDO AQUÍ

Deja una respuesta