Ultrasonico-PIC-LCD-MPLAB - Vega Ruiz Daniel
Short Description
Medición de distancia con sensor ultrasonico y PIC usando MPLAB...
Description
INTEGRANTES: Vega Ruiz Daniel Vera Muñoz Eduardo
PROFESOR: Cerda Villafaña Gustavo Dr.
MATERIA: Microprocesadores y Microntroladores
PROYECTO: Sensor de distancia Ultrasónico
Salamanca, Guanajuato 05 - Junio - 2015
Objetivo Realizar un sistema embebido con el cual se pueda medir la distancia por medio de un sensor ultrasónico y mostrar la medición en una LCD. En el sistema también se podrá agregar una distancia de alarma, tal que el sensor al detectar distancias menores a la establecida el microcontrolador deberá mandar una señal de alarma por medio de un LED.
Recursos 1 1 1 1 1 1 1 2 2 2
Fuente de 5V Programador MaterProg Microcontrolador PIC18F4550 Laptop Programa MPLAB IDE LCD Sensor Ultrasónico HC-SR04 Push-Button Resistencias de 1 k Ω Potenciómetros 1 k Ω
5.1 Introducción Sensor de HC-SR04 Este sensor se enmarca dentro de los sensores para medir distancias o superar obstáculos, entre otras posibles funciones. En este caso vamos a utilizarlo para la medición de distancias. Esto lo consigue enviando un ultrasonido (inaudible para el oído humano por su alta frecuencia de 40 kHz) a través de uno de la pareja de cilindros que compone el sensor (un transductor) y espera a que dicho sonido rebote sobre un objeto y vuelva, retorno captado por el otro cilindro.
Pines: o VCC: Alimentación +5V (4.5V min, 5.5V max) o TRIG: Trigger entrada (input) del sensor (TTL) o ECHO: Echo salida (output) del Sensor (TTL) o GND
Corriente de reposo: < 2mA
Corriente de trabajo: 15mA
Ángulo de medición: 30º
Ángulo de medición efectivo: < 15º
Detección de 2cm a 400cm o 1" a 13 pies (Sirve a más de 4m, pero el fabricante no garantiza una buena medición).
“Resolución” La precisión puede variar entre los 3mm o 0.3cm.
Dimensiones: 45mm x 20mm x 15mm
Frecuencia de trabajo: 40KHz
Funcionamiento 1.
Enviar un Pulso "1" de al menos de 10uS por el Pin Trigger (Disparador).
2.
El sensor enviará 8 Pulsos de 40KHz (Ultrasonido) y coloca su salida Echo a alto (seteo), se debe detectar este evento e iniciar un conteo de tiempo.
3.
La salida Echo se mantendrá en alto hasta recibir el eco reflejado por el obstáculo a lo cual el sensor pondrá su pin Echo a bajo, es decir, terminar de contar el tiempo.
4.
Se recomienda dar un tiempo de aproximadamente 50ms de espera después de terminar la cuenta.
La distancia es proporcional a la duración del pulso
LCD con controlador HD447780U Una LCD es una pantalla de cristal líquido. Su controlador HD4478U puede ser configurado para controlar la LCD por medio de 4 u 8 bits. El bajo voltaje de alimentación (2.7 a 5.5 V) es adecuado para cualquier sistema con alimentación por batería.
5.2
Procedimiento
Pseudocodigo Mostrar mensaje “Dist. Alarma: ” Esperar a que el usuario ingrese la distancia para la cual quiere generar la alarma o Por medio de un contador ascendente controlado por un push-button el usuario podrá modificar la distancia de alarma. o Al terminar de ingresar la distancia, el usuario deberá presionar un pushbutton y terminar el modo de captura. Iniciar el modo de sensado de distancia y mostrarla a través de la LCD. o Medir el tiempo del pulso de retorno recibido en el pin ECHO del sensor ultrasónico. o Hacer la conversión del valor binario a BCD con el número de interrupciones de 60 μs generadas al contar el tiempo del pulso de retorno. o Escribir el dato en la LCD después de realizar su configuración correspondiente. Para realizar la tarea deseada se crearon 4 librerías y un código principal. Las 4 librearías de tipo .INC debían estar en la misma ubicación donde fue creado el código principal .ASM
Librerías RETARDOS.INC
BIN_BCD.INC
LCD_8BIT.INC
LCD_MENS.INC
Código principal
Sensor_Ultrasonico.ASM
Después de compilar el código en Mplab se procedió a conectar el circuito mostrado en la siguiente figura.
LCD: Alimentación -> pin VDD a 5 V, VSS a GND. Bits de control -> pin RS a RA0 del PIC, pin RW a RA1 del PIC o a GND, pin E a RA2 del PIC. Para controlar el brillo se conectó el pin central de un potenciómetro al pin A de la LCD y el pin K a GND. Para controlar el contraste se conectó el pin central de un potenciómetro al pin V0 o VEE de la LCD. El bus de datos de la LCD pines se conectaron a los pines del PIC. Esto debido a la configuración del modo de trabajo de 8 bits para la LCD.
Push-button: Se utilizó la configuración de un Pull-Up resistor conectado al pin RB0 para controlar el contador ascendente para establecer la distancia de alarma. Se utilizó otro Pull-Up resistor en RB1 para dar la señal de inicio de sensado y verificación de distancia de alarma. Sensor Ultrasónico HC-SR04: Alimentación -> VDD a 5 V, VSS a GND. Pin de ECHO al pin RA4 del PIC, pin TRIG al pin RA3 del PIC. PIC18F4550: Se conectó pin 32 a VDD y pin 31 VSS para la alimentación del PIC. En el pin RE3 se conectó una resistencia de 1 kΩ
con su otra terminal a GND.
El circuito conectado quedo como se muestra en la siguiente figura
Conclusión:
Con el desarrollo de este proyecto pusimos en práctica todo lo aprendido y más sobre la programación en lenguaje ensamblador para PIC. Hicimos uso de algunas prácticas vistas a lo largo del curso como lo fue la practica 1 para entender el comportamiento del PCL (Program Counter), utilizado en el proyecto al imprimir los mensajes en la LCD, también de ahí aprendimos a depurar el código línea por línea y ver como son afectados los registros que estamos utilizando. A partir de la practica 2 aprendimos a programar el PIC con el programador MASTER PROG y nos dimos cuenta de algunos detalles sobre como programar el PIC con el paso del curso, como lo es que si deseamos borrar el programa anterior se debe de hacer antes de abrir el nuevo programa a cargar ya que de lo contrario, si abrimos .hex a cargar, borramos y escribimos, el PIC quedara programado incorrectamente. También con esta práctica nos iniciamos en la configuración de los pines y los registros involucrados para ello y conocimos la importancia del registro ADCON1 para el funcionamiento de los puertos como digitales. La practica 4 en la que vimos interrupciones nos ayudó a establecer las interrupciones para el inicio del sensado después de establecer la distancia de alarma y también a procesar la interrupción generada por el overflow del TImer0 con el cual medimos el tiempo de retorno del pulso ultrasónico. En particular esta práctica me pareció interesante ya que las interrupciones externas me parecen una gran ventaja al usar microcontroladores PIC por la habilidad que se tiene de pasar a una cierta parte del código donde se tendrá el servicio para la interrupción y realizar una cierta tarea. El uso de interrupciones también implico que la configuración de los bits que involucraba la interrupción fuera la correcta antes y después de que la interrupción fuera procesada. Con la practica 5 hicimos uso de uno de los tres Timers con lo que cuenta el PIC así como también recapitulamos el uso del PCL y la habilidad que tenemos al modificar su valor y así controlar el flujo del programa. En nuestro proyecto implementamos el Timer0 para realizar el conteo de 60 μs y generar la interrupción. El uso del StopWatch como herramienta de depuración fue de gran utilidad ya que pudimos determinar a partir de qué valor se tenía que iniciar el TMR0 para realizar la cuenta deseada. Otra herramienta de depuración utilizada fue la ventana de Stimulus con la cual pudimos proporcionar entradas al programa y ver cómo eran procesadas dentro del código. La práctica sobre la LCD fue de vital importancia en nuestro proyecto ya que fue la forma en como mostramos la información al usuario. De esta aprendimos los pasos necesarios para realizar la inicialización de la LCD y los tiempos requeridos para poder volver a escribir información. El uso de la configuración de 8 bits de la LCD nos facilitó mucho la implementación ya que se intentó realizar la comunicación con solo 4 bits pero no se tuvo un resultado exitoso por lo que recurrimos a la configuración de 8 bits esto gracias a que no teníamos la limitante pines disponibles. La implementación de librerías para la generación de retardos, conversión de binario a BCD, rutinas para la ejecución de comandos y rutina para la impresión de mensajes en una
LCD serán de gran ayuda en futuros desarrollos de sistemas embebidos programados en lenguaje ensamblador. Como nos dimos cuenta a lo largo del proyecto fue muy importante que implementáramos pequeños programas con los cuales pudiéramos entender el funcionamiento de una cierta rutina, instrucción o parte del código y de esta forma ir construyendo poco a poco el código principal y estar seguros de lo que vamos programando funciona tal como pensamos.
View more...
Comments