Cómo Medir Distancias con el Sensor Ultrasónico PING
Los sensores ultrasónicos permiten medir distancias desde los 2-3 centímetros hasta los 3-6 metros (para algunos modelos populares) sin la necesidad de un contacto físico, lo cual es muy útil en una amplia variedad de aplicaciones, desde la robótica y los sistemas de alarma, hasta aplicaciones industriales y por supuesto, también en proyectos de pasatiempo para los aficionados al bricolaje electrónico.
El Sensor Ultrasónico de Distancia PING (o "PING)))" como lo denomina el fabricante) tiene una interfaz simple de tres terminales y utiliza una sola linea para lograr una comunicación bidireccional con su dispositivo de control (típicamente un microcontrolador).
¿No estás muy seguro de cómo hacer las lecturas de distancia de este sensor? En este tutorial presentamos un sistema básico con un microcontrolador y un programa en lenguaje C para la interfaz con el sensor PING de Parallax. El microcontrolador lee el dato de la distancia del sensor y lo visualiza en una pantalla LCD genérica.
ACTUALIZACION 13/09/13: Hemos incluido un video en el que se explica en detalle el funcionamiento del sensor y el algoritmo para la interfaz con el mismo. En este video usamos el sensor ultrasónico HC-SR04 por ser un sensor muy conocido y de muy bajo costo, sin embargo el 99% de la explicación se aplica también al sensor PING y a otros sensores ultrasónicos de 3 y 4 terminales.
Video Demostrativo con el Sensor HC-SR04
Contenido del Video
- Demostración del circuito funcionando (sensor HC-SR04 + PIC + LCD 16x2).
- Conceptos teóricos básicos del funcionamiento del sensor.
- Diagrama del circuito.
- Algoritmo general para la interfaz con el sensor ultrasónico.
Diagrama de Circuito con el HC-SR04
Descargas
Proyecto MPLAB X con el sensor HC-SR04. El proyecto ya está compilado y el código listo para ser grabado al microcontrolador, para recompilarlo es necesario tener el compilador Hi-Tech (Microchip) PICC v9.81 o superior.
El mismo código funciona con el sensor PING haciendo modificaciones mínimas y también con otros sensores similares.
Tenemos el Sensor Ultrasónico HC-SR04 a la venta.
---------------------------------------------------------------------------------------------
Características Principales del Sensor PING
El sensor PING funciona mediante la transmisión de una ráfaga de ultrasonido en una frecuencia muy por encima del rango auditivo humano y provee un pulso de salida, el cual corresponde con el tiempo requerido por el eco (rebote) para retornar hasta el sensor. Al medir la duración de este pulso se puede calcular fácilmente la distancia al objetivo.
Las características más importantes del sensor PING son las siguientes:
- Rango: 2 cm a 3 m
- LED indicador de ráfaga que muestra la actividad del sensor
- Interfaz bidireccional por pulso, en un único pin de E/S para comunicación con microcontroladores TTL (5V) o CMOS (3.3V)
- Disparo de entrada: pulso TTL positivo, 2 μs mínimo, 5 μs típico
- Pulso eco de salida: pulso positivo TTL, 115 μs mínimo a 18.5 ms máximo.
Encuentra los detalles de este sensor en nuestra Tienda Virtual.
Descripción del Hardware
El hardware para este proyecto es muy similar al usado en el proyecto "Bus Serial I2C: Sensor de Temperatura MCP9800 con PIC16F628A y LCD" , se ha usado el mismo microcontrolador y también la pantalla LCD para visualizar la distancia leída. No explicaré en detalle la implementación de estos dos dispositivos ya que dicha información se la puede encontrar en el tutorial mencionado.
Microcontrolador PIC16F628A
El PIC se ha programado para trabajar con su oscilador interno de 4 MHz, minimizando así el conteo de componentes externos. El código de programa para la interfaz con el sensor ultrasónico es muy sencillo; el programa para el PIC está escrito en lenguaje C para el compilador PICC de Hi Tech, pero es fácilmente portable a otros compiladores, otros lenguajes o incluso al lenguaje ensamblador.
Pantalla de Cristal Líquido (LCD)
La interfaz con la pantalla LCD también se ha descrito con más detalle en el tutorial "Bus Serial I2C: Sensor de Temperatura MCP9800 con PIC16F628A y LCD" , es así que no ahondaré en el uso de este dispositivo. En este ejemplo también la pantalla LCD trabaja en la modalidad con cuatro líneas paralelas de datos y se ha usado la librería de conexión para LCDs genéricos provista por el compilador PICC de Hi Tech.
Diagrama del Circuito
Funcionamiento del Sensor Ultrasónico de Distancia PING
El sensor PING posee solamente tres terminales, dos de las cuales son para la alimentación de voltaje (VDD y GND) y la tercera (SIG) es usada para la comunicación bidireccional con el microcontrolador.
La comunicación con el sensor es realmente muy simple. Una vez que se ha entendido el protocolo, es fácil implementarlo.
Protocolo de Comunicación
El sensor PING detecta objetos mediante la emisión de una ráfaga ultrasónica y luego "escucha" el eco de retorno.
Bajo el control de un microcontrolador, el cual debe enviar un pulso corto de disparo, el sensor emite una corta ráfaga ultrasónica a una frecuencia de 40 KHz. La ráfaga viaja a través del aire, choca con un objeto y luego rebota hacia el sensor. El sensor PING provee un pulso de salida al microcontrolador, que inicia cuando la ráfaga es enviada y termina cuando el eco es detectado, de ahí que la longitud del pulso corresponda con la distancia al objeto.
De la explicación arriba mencionada se puede resumir el siguiente algoritmo básico para la lectura del sensor:
- Configurar el pin de comunicación en el microcontrolador como salida.
- Escribir un "0" lógico al pin de comunicación.
- Esperar un tiempo corto para estabilizar la línea de comunicación (5 μs).
- Escribir un "1" lógico al pin de comunicación. (Inicio de pulso de disparo).
- Retardo de tiempo (2-5 μs) para lograr el ancho de pulso de disparo del sensor.
- Terminar el pulso de disparo escribiendo un "0" lógico al pin de comunicación.
- Configurar el pin de comunicación como entrada.
- Esperar hasta recibir un "1" lógico en el pin de comunicación. (Inicio del pulso de eco de salida del sensor).
- Activar el temporizador del PIC
- Esperara hasta recibir un "0" lógico en el pin de comunicación. (Fin del pulso de eco de salida del sensor).
- Desactivar el temporizador del PIC.
- Leer conteo efectivo en el temporizador en μs.
- Calcular la distancia en función a la duración del pulso de eco de salida del sensor.
Debido a que la duración del pulso provisto por el sensor contiene la información del tiempo que tarda la ráfaga en ir y volver desde el objetivo, esta duración se debe dividir por 2 para calcular la distancia, de otro modo estaríamos calculando el doble de la distancia (ida + vuelta).
Listado del Programa
El código está detalladamente comentado.
Conclusión
Como se ha visto, el procedimiento para la lectura del Sensor Ultrasónico de Distancia PING))) es bastante sencillo. No es difícil imaginar varias posibilidades de aplicación para este sensor en áreas como la robótica, sistemas de navegación, sistemas de seguridad e incluso sistemas industriales; su interfaz simple hace que sea posible su uso con virtualmente cualquier microcontrolador, incluso con los más pequeños como el PIC10F200 de Microchip.
Raúl Alvarez Torrico
www.TecBolivia.com
Suscríbete a Nuestro Boletín de Noticias
Y te notificaremos de la publicación de otros artículos similares.