Tutorial - Sensor de ultrasonido HC-SR04

FUNCIONAMIENTO DE LOS SENSORES DE ULTRASONIDO

Un sensor de ultrasonido tiene el mismo principio de funcionamiento que el mecanismo que utilizan los murciélagos para maniobrar y cazar mientras vuelan, la conocida "ecolocación".


El murciélago puede procesar la distancia relativa a un objeto al emitir una onda sonora la cual rebota a un objeto y de la que obtiene el tiempo en que demora viajar de ida y vuelta. 

El siguiente video puede ilustrarnos mejor sobre el tema:


De la misma manera, los sensores de ultrasonido trabajan en frecuencias que van por encima de la capacidad de escucha de los seres humanos cuyo rango es 20 Hz a 20 kHz, y al igual que los murciélagos se uno de los sensores emite una onda en una dirección y se empieza a contar el tiempo que recorre la onda hasta llegar a un obstáculo y rebotar de nuevo al sensor receptor.

Explicado lo anterior, podemos ver más de cerca a estos sensores. El transmisor emite 8 bips a una frecuencia de 40 Khz cuando una señal llega a su pin de "Trigger" y en ese mismo momento comienza a contar un "timer"


Al momento en que la señal rebota en un objeto y regresa a la unidad, el sensor detiene el timer. La velocidad en que la onda viaja es 340 m/s a través del aire. Basado en el conteo del timer la distancia puede ser calculada usando la fórmula "D = R (T)".

# D: Distancia medida.
# R: Es la velocidad de propagación de la onda en el aire.
# T: Es el tiempo que demora en viajar la onda dividido por 2.

Un dato importante que debemos tener en cuenta en el momento de la medición de este tipo de sensores, es su ángulo de medición que puede alcanzar varios grados de espectro, tal como se muestra en la siguiente figura:


Por lo que el usar un patrón como referencia para fijar si el sensor está bien posicionado será necesario según la aplicación del mismo. 

CARACTERÍSTICAS DEL SENSOR HC-SR04

Uno de los sensores de ultrasonido más usados es el HC - SR04 que se muestra a continuación:



Las especificaciones principales del sensor se enumeran en el siguiente listado:

# Alimentación: 5 V.
# Consumo: 15 mA.
# Frecuencia de operación: 40 kHz
# Ángulo de medición: 15°.
# Rango máximo: 4 m.
# Señal de entrada del Trigger: 10 us (TTL).
# Máximo rango de repetición: 50 us.
# Distancia en cm: us/58.
# Distancia en pulgadas: us/148

LIBRERÍA "NEW PING"

La librería que usaremos se encuentra en el siguiente link "NewPing". Sus comandos principales se explican a continuación:

# sonar.ping(): Manda un ping y retorna el valor del echo en microsegundos o 0 si no hay señal de echo según la distancia límite establecida.
# sonar.ping_in(): Manda un ping y retorna una distancia en pulgadas o 0 si no hay señal de echo según la distancia límite establecida.
# sonar.ping_cm(): Manda un ping y retorna una distancia en centímetros o 0 si no hay señal de echo según la distancia límite establecida.
# sonar.ping_median(iteraciones): Manda múltiples pings (5 por defecto), descarta los pings fuera de rango y retorna la media en microsegundos.
# sonar.convert_in(Tiempo de eco): Convierte los microsegundos a una distancia en pulgadas.
# sonar.convert_cm(Tiempo de eco): Convierte los microsegundos a una distancia en centímetros.
# sonar.ping_timer(Función): Manda un ping y llama a una función programada en caso el ping se complete.
# sonar.check_timer(): Chequea si el ping ha retornado sin contar el límite de distancia preestablecido.
# timer_us(Frecuencia, función): Llama a una función cada frecuencia en microsegundos.
# timer_ms(Frecuencia, función): Llama a una función cada frecuencia en milisegundos.
# timer_stop(): Detiene el timer.

CONEXIÓN DEL SENSOR HC - SR04

La conexión para esta prueba es la siguiente:

# Pin 12: Arduino UNO => Trigger: Sensor HC-SR04
# Pin 11: Arduino UNO => Echo: Sensor HC-SR04
# VCC: Arduino UNO => VCC: Sensor HC-SR04
# GND: Arduino UNO => GND: Sensor HC-SR04

En la siguiente figura se puede apreciar con más detenimiento:


EJEMPLO DE UTILIZACIÓN DE LA LIBRERÍA "NEW PING"

El programa de prueba es en base al ejemplo que nos da la librería "NewPing", pero para nuestro caso hemos aumentado dos variables más. La primera es una variable de almacenamiento o "cm" que graba la medición en cm del sensor; y una variable "ajuste" que es un número que debe ser modificado para calibrar el sensor, esto ante la posibilidad que el sensor nos de un valor mayor o menor a la distancia real entre el objeto y el sensor

/*
   PROGRAMA DE PRUEBA DE SENSOR HC-SR04

   CONEXION:
             TRIGGER: Pin 12 del Arduino UNO
             ECHO: Pin 11 del Arduino UNO
             GND: Conectar los dos GND
             VCC: Conectar los dos 5V
   
   En el siguiente programa probaremos el sensor HC - SR04 
   
   NOTA: Para el siguiente programa necesitamos la libreria "NewPing" se puede encontrar en el
   siguiente link https://www.dropbox.com/sh/2k5m76rxm6ew4sz/AAC4-ui2LQL9LZC30_bARyXja?dl=0
   
   Autor: Renato H.
   http://beetlecraft.blogspot.pe/

   El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera 
   ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del 
   autor
*/

#include <NewPing.h>

#define TRIGGER_PIN  12  // Pin designado para el pin Trigger en el Arduino UNO
#define ECHO_PIN     11  // Pin designado para el pin Echo en el Arduino UNO
#define MAX_DISTANCE 200 // Distancia máxima en cm

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Configuracion de la libreria NewPing

const int ajuste = 4; // Medida de ajuste a la medicion que depende de cada sensor
int cm; // Dato de almacenamiento de la medicion 

void setup() {
  Serial.begin(115200); // Configuracion del puerto serial
}

void loop() {
  delay(50);            // Tiempo de espera para la medicion
  cm = sonar.ping_cm(); // Medicion del sensor
  cm = cm + ajuste;     // Ajuste a la medicion hecha  
  Serial.print("Distancia: ");
  Serial.print(cm); 
  Serial.println("cm");
}

El resultado es como el que se muestra en la siguiente figura:


Autor: 

No hay comentarios:

Publicar un comentario