Sunteți pe pagina 1din 30

INTEGRANTES:

Vega Ruiz Daniel


Vera Muoz Eduardo

PROFESOR:
Cerda Villafaa Gustavo Dr.

MATERIA:
Microprocesadores y Microntroladores

PROYECTO:
Sensor de distancia Ultrasnico

Salamanca, Guanajuato 05 - Junio - 2015


Objetivo
Realizar un sistema embebido con el cual se pueda medir la distancia por medio de un
sensor ultrasnico y mostrar la medicin en una LCD. En el sistema tambin se podr
agregar una distancia de alarma, tal que el sensor al detectar distancias menores a la
establecida el microcontrolador deber mandar una seal de alarma por medio de un LED.

Recursos
1 Fuente de 5V
1 Programador MaterProg
1 Microcontrolador PIC18F4550
1 Laptop
1 Programa MPLAB IDE
1 LCD
1 Sensor Ultrasnico HC-SR04
2 Push-Button
2 Resistencias de 1 k
2 Potencimetros 1 k

5.1 Introduccin

Sensor de HC-SR04

Este sensor se enmarca dentro de los sensores para medir distancias o superar obstculos,
entre otras posibles funciones. En este caso vamos a utilizarlo para la medicin de
distancias. Esto lo consigue enviando un ultrasonido (inaudible para el odo humano por su
alta frecuencia de 40 kHz) a travs 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: Alimentacin +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 medicin: 30

ngulo de medicin efectivo: < 15

Deteccin de 2cm a 400cm o 1" a 13 pies (Sirve a ms de 4m, pero el fabricante no


garantiza una buena medicin).

Resolucin La precisin 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 obstculo 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 despus de


terminar la cuenta.

La distancia es proporcional a la duracin del pulso


LCD con controlador HD447780U

Una LCD es una pantalla de cristal lquido. Su controlador HD4478U puede ser
configurado para controlar la LCD por medio de 4 u 8 bits. El bajo voltaje de alimentacin
(2.7 a 5.5 V) es adecuado para cualquier sistema con alimentacin por batera.
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 push-
button y terminar el modo de captura.
Iniciar el modo de sensado de distancia y mostrarla a travs de la LCD.
o Medir el tiempo del pulso de retorno recibido en el pin ECHO del sensor
ultrasnico.
o Hacer la conversin del valor binario a BCD con el nmero de
interrupciones de 60 s generadas al contar el tiempo del pulso de
retorno.
o Escribir el dato en la LCD despus de realizar su configuracin
correspondiente.

Para realizar la tarea deseada se crearon 4 libreras y un cdigo principal. Las 4 librearas
de tipo .INC deban estar en la misma ubicacin donde fue creado el cdigo principal
.ASM
Libreras
RETARDOS.INC
BIN_BCD.INC
LCD_8BIT.INC
LCD_MENS.INC
Cdigo principal
Sensor_Ultrasonico.ASM
Despus de compilar el cdigo en Mplab se procedi a conectar el circuito mostrado en la
siguiente figura.

LCD:
Alimentacin -> 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 potencimetro al pin A de la LCD y
el pin K a GND. Para controlar el contraste se conect el pin central de un potencimetro al
pin V0 o VEE de la LCD.
El bus de datos de la LCD pines <DB7:DB0> se conectaron a los pines <RD7:RD0> del
PIC. Esto debido a la configuracin del modo de trabajo de 8 bits para la LCD.
Push-button:
Se utiliz la configuracin 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 seal de inicio de sensado y verificacin
de distancia de alarma.
Sensor Ultrasnico HC-SR04:
Alimentacin -> 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
alimentacin
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

Conclusin:
Con el desarrollo de este proyecto pusimos en prctica todo lo aprendido y ms sobre la
programacin en lenguaje ensamblador para PIC. Hicimos uso de algunas prcticas 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, tambin
de ah aprendimos a depurar el cdigo lnea por lnea 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. Tambin con esta prctica nos
iniciamos en la configuracin 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 despus de establecer la distancia de alarma y tambin a procesar la
interrupcin generada por el overflow del TImer0 con el cual medimos el tiempo de retorno
del pulso ultrasnico. En particular esta prctica 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 cdigo donde se tendr el servicio para
la interrupcin y realizar una cierta tarea. El uso de interrupciones tambin implico que la
configuracin de los bits que involucraba la interrupcin fuera la correcta antes y despus
de que la interrupcin fuera procesada.
Con la practica 5 hicimos uso de uno de los tres Timers con lo que cuenta el PIC as como
tambin 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 interrupcin. El uso del StopWatch como
herramienta de depuracin fue de gran utilidad ya que pudimos determinar a partir de qu
valor se tena que iniciar el TMR0 para realizar la cuenta deseada. Otra herramienta de
depuracin utilizada fue la ventana de Stimulus con la cual pudimos proporcionar entradas
al programa y ver cmo eran procesadas dentro del cdigo.
La prctica sobre la LCD fue de vital importancia en nuestro proyecto ya que fue la forma
en como mostramos la informacin al usuario. De esta aprendimos los pasos necesarios
para realizar la inicializacin de la LCD y los tiempos requeridos para poder volver a
escribir informacin. El uso de la configuracin de 8 bits de la LCD nos facilit mucho la
implementacin ya que se intent realizar la comunicacin con solo 4 bits pero no se tuvo
un resultado exitoso por lo que recurrimos a la configuracin de 8 bits esto gracias a que
no tenamos la limitante pines disponibles.
La implementacin de libreras para la generacin de retardos, conversin de binario a
BCD, rutinas para la ejecucin de comandos y rutina para la impresin de mensajes en una
LCD sern 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 implementramos
pequeos programas con los cuales pudiramos entender el funcionamiento de una cierta
rutina, instruccin o parte del cdigo y de esta forma ir construyendo poco a poco el cdigo
principal y estar seguros de lo que vamos programando funciona tal como pensamos.