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:
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.
Uno de los sensores de ultrasonido más usados es el HC - SR04 que se muestra a continuación:
# 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
EJEMPLO DE UTILIZACIÓN DE LA LIBRERÍA "NEW PING"
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:
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"); }Autor:
No hay comentarios:
Publicar un comentario