Está en la página 1de 13

Informe de

Laboratorio de diseño
Medidor de estatura con un
sensor ultrasónico usando un
PIC16F877

INTEGRANTES: Mario Alcayaga


Esteban Melgarejo
DOCENTE: Gustavo Sanhueza
FECHA DE ENTREGA: 24/03/2020
Objetivos:
● Conocer las características del display 16x2 y como se conectara(hardware) al PIC.
● Conocer las características del sensor HC-SRO4 y como se conectara(hardware) al
PIC.
● Conocer las características fundamentales del PIC16F877 y como se conectara a
los elementos anteriores.
● Explicar el PRINCIPIO FÍSICO de la medición de Distancia que hace el HC-SRO4.

Problema a resolver
Se desea diseñar un dispositivo capaz de medir la estatura(o distancia) basado en un PIC
16F877, un display 16x2 estándar y un sensor ultrasónico HC-SR04.
Los requerimientos que se solicitan en el diseño son:
● La estatura se calculará como 2m-distancia medida
● El display debe indicar, en la linea 1 ESTATURA: E.EE m y en la linea 2 DISTANCIA:
DDD cm.
● Si la estatura es menor a 1 m, no se muestra el valor de estatura sino que el display
debe decir en la línea 1: muy bajito y en la línea 2: DISTANCIA: DDD cm.
Características fundamentales del PIC 16F877

1. Arquitectura RISC (35 instrucciones diferentes).


2. Frecuencia de operación: 0-20MHz
3. Oscilador interno de alta precisión(Rango de frecuencia de 8Mhz-31kHz).
4. Voltaje de alimentación: 2V - 5.5V
5. 33 pines de entrada/salida-
6. Memoria ROM 8K tecnología FLASH.
7. 256 bytes de memoria EEPROM
8. 368 bytes de memoria RAM
9. Conversor A/D (14 canales y resolución de 10bits)
10. 3 Temporizadores/contadores independientes
11. Temporizador perro guardián.
12. Módulo comparador analogico (2 comparadores analogicos, voltaje de referencia de
0.6V).
13. Módulo PWM incorporado.
14. Módulo USART
15. Puerto serie síncrono master (MSSP).
Diagrama de pines del PIC 16F877
Características del sensor HC-SR04
El sensor HC-SR04 es una excelente opción como sensor de distancia ultrasónico. Su
relación de costo/beneficio lo hace óptimo para un gran abanico de aplicaciones.
El uso de este módulo es bastante sencillo debido a que se toda la electrónica de control,
transmisión y recepción se encuentra contenida en PCB. El usuario solamente debe enviar
un pulso de disparo y medir en tiempo alto del pulso de respuesta, solamente se requieren 4
hilos para completar la interfaz con el módulo de sensor HC-SR04.
El HC-SR04 es compatible con la mayoría de los microcontroladores del mercado,
incluyendo el Arduino UNO, Arduino MEGA y otras tarjetas compatibles que funcionen con 5
volts. Existen librerías para este módulo que hacen que la parte del software quede resuelta
de manera muy sencilla.

● Alimentación de 5 volts
● Interfaz sencilla: Solamente 4 hilos Vcc, Trigger, Echo, GND
● Rango de medición:2 cm a 400 cm
● Corriente de alimentación: 15 mA
● Frecuencia del pulso: 40 Khz
● Apertura del pulso ultrasónico: 15º
● Señal de disparo: 10uS
● Dimensiones del módulo: 45x20x15 mm.

● Precisión de hasta 3mm


Diagrama de conexión del sensor HC-SR04

Vcc: 5V de alimentación, Trig: Pin de disparo, Echo: pin de eco, GND: Tierra.

La operación del módulo ultrasónico consiste en mandar una señal de disparo cuando
recibe un pulso de alto nivel de 5V de por lo menos 10 µs, automáticamente el módulo
transmitirá 8 Rafagas ultrasonicas de 40kHz, si hay un objeto frente al modulo la rafaga
rebotara de regreso al sensor. Si la señal está de regreso, el pin ECHO del sensor se
encontrara en un estado alto (5V) por la relación de duración de tiempo que tardo en ir y
volver la rafaga. El ancho de pulso va desde los 150 µs hasta los 25 ms.

Principio físico de la medición de distancia que hace el HC-SRO4.

El funcionamiento del sensor ultrasónico HC-SR04 consiste en emitir una rafa de 8 ciclos de
ultrasonidos a 40 kHz desde el transmisor y contar cuanto tiempo tarda en regresar al
receptor. El principio físico es la acústica que define el sonido como una perturbación que
se propaga en un medio (generalmente aire), la velocidad de propagación de este es de 343
(m/s) en el aire a una temperatura de 20°C, 50% de humedad y presión sobre el nivel del
mar.
Entonces la velocidad es la cuantificación del desplazamiento en el tiempo, lo que permite
calcularse como: v=d/t [m/s] (1).
La mínima duración del pulso de disparo (trigger) debe ser de 10[µS] para disparar la
entrada de comienzo del cálculo de distancia.el sensor emite una rafaga de ultrasonidos a
40kHz elevando el nivel lógico de la señal de eco. Entonces el sensor “escucha” el eco y en
cuanto lo detecta, vuelve a bajar el nivel lógico de la línea de eco. La línea de eco es por lo
tanto un pulso, cuyo ancho es proporcional a la distancia respecto al objeto. Registrando la
duración del pulso del eco es posible calcular. Si no se detecta nada, el sensor baja el nivel
lógico de su línea de eco después de 25ms. Si el ancho de pulso se mide en us , el
resultado debe dividirse en 58 para saber el equivalente en centímetros.
Como la velocidad del sonido es de 343 [m/s], la ecuación nos queda como
d=343[m/s]*t[s]/2 (2). Recordemos mide la distancia ida y vuelta por lo que el resultado se
divide en 2.
Este es el principio físico para medir la distancia a la que se encuentra cualquier objeto con
respecto al sensor ultrasónico.

DISPLAY LCD, características y cómo se conectará (hardware) al PIC:


● 16 caracteres x 2 líneas
● Caracteres de 5x8 puntos
● Tamaño de carácter: 5.23 x 3 mm
● Puede mostrar letras, números, caracteres especiales, y hasta 8 caracteres creados
por el usuario
● Backlight de LED color azul
● Caracteres color blanco
● Interface paralela. Puede operar en modo de 8 bits, o de 4 bits para ahorrar pines
del microcontrolador
● Posee controlador KS0066U o equivalente on-board (compatible Hitachi HD44780)
● Voltaje de alimentación: 5 V
Conexión del PIC 16F877 con el display 16x2 y el HC-SRO4
El PIC 16F877A se alimenta en VDD con 5 volts y VSS a tierra. Se conecta el cristal de
8MHz a los pines OSC1 y OSC2 del pic, para proveer el reloj de operación. Se conectan
capacitores de 22pF con el cristal de cuarzo para dar estabilidad de oscilación. El LCD 16X2
es conectado al puerto D el cual es interconectado utilizando el modo de comunicación de 4
bis. El pin Trigger del sensor HC-SR04 es conectado al pin RB0(pin 33) el cual se configura
como pin de salida (bit TRIS en 0) y el pin Echo es conectado a RB4(pin 37) el cual será
configurado como pin de entrada (el bit TRIS en 1).
Se utiliza un preset de 10K para ajustar el contraste del LCD.

Diagrama de flujo
Seguimiento del diagrama de flujo: En el principio se define la variable tiempo que es donde
almacenaremos la duración de la señal por medio de un contador y un while activado
cuando la entrada es positiva. La segunda variable es la distancia con respecto al sensor.
La tercera variable es la estatura que es la distancia con respecto al sensor cuando este
está a 2 metros de altura. Luego se configuran los puertos de conexión del PIC con el
sensor ultrasónico, en RA0 se conectara el pulsador (botón), RBO es la salida al sensor
(Trigger) y RB4 es la entrada al sensor (Eco), RD2-7 como salidas para mostrar los datos al
LCD y configurar el pic para un oscilador de 8 MHz, luego se pregunta si el botón está
presionado, si lo esta entonces se realizará la medición si no entonces en el display dirá
“Mida su estatura”. Si está presionado el botón RBO se activa en 1 y se envía con retardo
de 10us, después se vuelve a 0, es decir, se envia un nivel alto de duración 10us, luego se
inicia a variable tiempo en 0 con retardo de 100ms, después se pregunta si la entrada al
sensor es “1” si es verdad entonces se incrementa a 1 con el retardo que se demora en
hacer ese ciclo, lo cual se va acumulando el retardo X en ms, entonces cuando el pulso eco
este en nivel bajo quiere decir que el sensor detecta ese pulso con duración del ancho de
pulso del ecor y se guarda en la variable tiempo. Luego se calcula la distancia con la
ecuación ya dicha y se pregunta si esta está en el el rango técnico de medición del sensor
(entre 2 a 4 metros) si no es verdad entonces en el display dirá fuera de rango si es cierto
entonces se procede a calcular la estatura con la ecuación estatura=200-distancia (está en
centímetros la distancia). Luego se vuelve a preguntar si la estatura es mayor a 1 metro
(100 centímetros) si es cierto entonces se mostrará en la línea 1: la estatura en metros y en
la línea 2: distancia en cm, si no es cierto entonces en la línea 1: muy bajito y en la línea 2:
distancia en centímetros. Finalmente se regresa a saber si el botón está presionado
quedando un bucle infinito con decisión principal en el botón.
Las distancias están en centímetros, por lo que en la programación se deberá dividir por
100 la estatura al momento de cumplirse si la variable estatura es mayor a 100cm (1 metro),
ESTO ES PARA MOSTRAR LA ESTATURA EN METROS.
Conversiones que serán necesarias para mostrar los datos en el LCD
Método de la librería (Programación en C)
Para este método se utilizara una librería por parte del propio LCD en el PIC 16F877, esta
librería se llama incluye en el programa como: #include<lcd.c> . Luego se inicia el LCD con
el código: lcd_init(); esto es para iniciar el lcd (encenderlo) y luego para imprimir una
palabra el código se escribe de la siguiente manera: printf(LCD_PUTC, "\f Iniciando."); Lo
que está en “” es la palabra que mostraremos en la pantalla. En el caso del PUTC significa
que al asignarle la letra C le estamos diciendo que mostraremos un carácter. En la siguiente
imagen se muestran los datos que podemos programar en el pic para luego mostrarlos en el
display.

Otro código importante para la programación es de ubicar los datos en que fila y en que
columna, el codigo seria el siguiente: LCD_GOTOXY (1,1); //Ubicamos la
palabra en la primera fila y la primera columna. Y en otro caso: LCD_GOTOXY (1,2);
//Ubicamos la palabra en la segunda fila y la primera columna.
Para borrar las palabras se usa el código: LCD_PUTC("\f");
Finalmente para mostrar los datos de distancia e estatura en el LCD seria de la forma:
printf(LCD_PUTC, "\nEstatura :%Lu \nDistancia = %Lu",estatura,distancia); para mostrar los
datos se debe usar Lu porque los datos son decimales largos sin signo. No está de más decir
que al imprimir esto en la pantalla se mostrará en la línea 1 la estatura y en la línea 2 la
distancia. Lo cual es otra forma de escribir los datos en la respectiva fila.
Por ejemplo en el caso en que se quiera decir en la línea 1: muy bajito y en la línea 2:
distancia será de la forma:
printf(LCD_PUTC, "\fMuy bajito :%Lu \nDistancia = %Lu",Muy bajito,distancia.

También podría gustarte