Medidor de distancia ultrasonico
Enviado por Ray Cervantes • 7 de Noviembre de 2018 • Práctica o problema • 2.002 Palabras (9 Páginas) • 769 Visitas
Proyecto Final: Sistemas Digitales II
“Medidor de Distancia con Sensor Ultrasónico”
Resumen
Se presenta una de las tantas aplicaciones de los microcontroladores PIC en conjunto con el LCD mediante la utilización de un sensor ultrasónico para implementar un medidor de distancia capaz de medir distancias con un rango de 2 a 400 centímetros.
- INTRODUCCIÓN
Para la comprensión del presente trabajo es necesario conocer el funcionamiento de ciertos dispositivos los cuales se presentan a continuación.
El LCD es un display alfanumérico genérico de interfaz paralela el cual se muestra en la figura 1. Utiliza básicamente 3 líneas para control y 8 líneas para datos, aunque también puede funcionar con solamente 4 líneas de datos. Se ha escogido esta última modalidad a fin de ahorrar las 4 líneas adicionales. La comunicación del PIC con el LCD es manejada totalmente por una librería correspondiente incluida también en los archivos de ejemplo del compilador PICC.
[pic 1]
Figura 1. Pantalla de cristal liquido
El sensor de distancia ultrasónico HC-SR04 es la solución económica y más popular para realizar mediciones de distancia sin necesidad de hacer contacto alguno. El sensor es capaz de medir distancias desde los 2 centímetros hasta los 4 metros con una precisión de hasta 3 milímetros. Este módulo incluye un transmisor ultrasónico, un receptor ultrasónico y su circuito de control. Tal y como se muestra en la figura 2, el HC-SR04 cuenta con 4 pins:
VCC – Voltaje de alimentación de 5V.
TRIG – Pin de disparo.
ECHO – Pin del Eco
GND – Referencia
[pic 2]
Figura 2. HC-SR04
Los pins TRIG y ECHO se pueden usar para generar una interfaz entre el modulo ultrasónico y un microcontrolador. Estos son pins de entrada y salida TTL (0-5V).
En la figura 3 se muestra la operación del módulo ultrasónico, el cual funciona de la siguiente manera:
[pic 3]
Figura 3. Operación del módulo ultrasónico.
- Mandar la señal de disparo cuando recibe un pulso de alto nivel (5V) de por lo menos 10 μS.
- El modulo automáticamente transmitirá 8 ráfagas ultrasónicas de 40 KHz.
- Si hay un objeto frente al módulo la ráfaga rebotara de regreso al sensor.
- Si la señal está de regreso, el pin de salida ECHO del sensor se encontrara en un estado alto (5V) por la relación de duración de tiempo que tardo en mandar y regresar la ráfaga. El ancho de pulso va desde 150μs hasta los 25 ms y si ningún objeto es detectado, el ancho del pulso será de 38ms.
El PIC16F877A es un microcontrolador el cual tiene una gran variedad de pines tal y como se muestra en la figura 4, con memoria de programa tipo FLASH, lo que representa gran facilidad en el desarrollo de prototipos ya que no se requiere borrarlo con luz ultravioleta como las versiones EPROM, sino que permite reprogramarlo nuevamente sin ser borrado con anterioridad, su con sumo de potencia es muy bajo y además es completamente estático, esto quiere decir que el reloj puede detenerse y los datos de la memoria no se pierden.
[pic 4]
Figura 4. PIC16F877A
El 16F877A forma parte importante del circuito. Los pins VDD y VSS del microcontrolador pic son conectados a +5v y GND respectivamente lo cual provee la potencia necesaria para su operación. Un cristal de 8MHz es conectado a los pines OSC1 y OSC2 del PIC, para proveer el reloj de operación. Capacitores de 22pF conectados con al cristal estabilizan las oscilación por el cristal.
El LCD de 16x2 es conectado al puerto D el cual es interconectado utilizando el modo de comunicación de 4 bits. Se utiliza un preset de 10KΩ para ajustar el contraste del LCD. Una resistencia de 100Ω es utilizada para limitar la corriente que circula a través del LED de luz de fondo.
El pin TRIGGER del sensor HC-SR04 es conectado a RB0 (pin 33) del PIC el cual se configura como pin de salida (el bit TRIS es 0) y el pin ECHO es conectado a RB4 (pin 37) el cual será configurado como pin de entrada (el bit TRIS es 1).
- Metodología
Primero se planteó el problema y los recursos existentes para resolverlo. Se necesitaba medir la distancia haciendo uso del sensor ultrasónico HC-SR04, del PIC16F877a y mostrar el resultado en un LCD de cristal líquido.
Se investigó el funcionamiento de los tres componentes principales, sus hojas de datos y pinout.
Después se realizó un diagrama de flujo básico con los procedimientos generales necesarios para obtener el resultado deseado el cual es mostrado en el anexo 1. Después se desarrolló a fondo el diagrama de flujo, obteniendo dos posibles soluciones presentadas en el anexo 3 dependiendo de la forma en contar el tiempo. El primer diagrama registra la duración de la señal por medio de un contador y un while activado cuando la entrada es positiva. El segundo utiliza el timer incluido en el PIC y por medio de la siguiente formula calcula el tiempo:
[pic 5]
Ecuación 1.- Fórmula para calcular el tiempo en base al registro Timer.
Se eligió el segundo método por ser más preciso. Se configuró el registro T1CON para habilitar el timer y asignar un prescaler de 2.
Se configuraron los puertos de la siguiente forma:
RB0 → Salida a sensor
RB4 → Entrada del sensor
RD0-RD7 → Salida al display
Para calcular la distancia se utilizó la ecuación 2, hay que recordar que el sensor mide la distancia ida y vuelta por lo que el resultado tiene que ser divido entre 2.
[pic 6]
Ecuación 2:- Fórmula para calcular la distancia en base al tiempo.
El sensor puede medir una distancia de 2 a 400cm si el valor está dentro de este rango se muestra el resultado con el mensaje “la distancia es: _ cm” y de no encontrarse en estos valores muestra: “fuera de rango”.
Se realizaron las conexiones siguiendo el diagrama esquemático del anexo 2. Para mostrar el sensor HC-SR04 en Proteus se descargó la librería de arduino para Proteus.
Se programó el PIC utilizando MPLAB X IDE v3.05 con el archivo .hex del siguiente código localizado en el anexo 4.
...