Este documento presenta el informe de laboratorio N°1 de un curso sobre microcontroladores PIC. El objetivo del laboratorio era familiarizarse con las aplicaciones de compilación, simulación y programación para microcontroladores PIC, y aprender a definir y controlar terminales de entrada y salida. Como actividad, los estudiantes diseñaron e implementaron un semáforo simulado con luces LED y botones para automóviles y peatones utilizando un PIC16F84A. El informe explica conceptos teóricos como fuses, funciones de E/
MUROS Y CONEXIONES NTC 2017 CONCRETO REFORZADO.pptx
Control de semáforo peatonal PIC16F84
1. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
INFORME DE
LABORATORIO N°1:
“Control de entradas/salidas”
Integrantes: Diego Anabalon
Juan A. Tapia
Sección: 02
Fecha Entrega: 22/04/19
Profesor: Samuel Bustos
2. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
OBJETIVOS
Familiarizarse con las aplicaciones de Compilación, Simulación y
Programación para microcontroladores PIC.
Aprender a definir y controlar terminales de entrada y salida.
3. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
MARCO TEORICO
1) Describir el microcontrolador utilizado y sus principales
características
El PIC16F84 es un microcontrolador a 8 bits de la familia PIC perteneciente
a la Gama Media (según la clasificación dada a los microcontroladores por la
misma empresa fabricante) Microchip.
Se trata de uno de los microcontroladores más populares del mercado
actual, ideal para principiantes, debido a su arquitectura de 8 bits, 18 pines, y un
conjunto de instrucciones RISC muy amigable para memorizar y fácil de entender.
Se ha usado en numerosas aplicaciones, que van desde los automóviles a
decodificadores de televisión.
Fig. N°1 “Imagen referencia PIC16F84”
4. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
Especificaciones:
- Fabricante: Microchip
- Categoría de producto: Microcontroladores de 8 bits - MCU
- Núcleo: PIC
- Serie de procesadores: PIC16
- Ancho de bus de datos: 8 bit
- Frecuencia de reloj máxima: 20 MHz
- Tamaño de memoria del programa: 1.75 KB
- Tamaño de RAM de datos: 68 B
- Conversión analógico-digital en chip: No
- Voltaje de alimentación operativo: 2 V a 5.5 V
- Tamaño de ROM de datos: 64 B
- Temperatura de trabajo máxima: + 85 C
- Temperatura de trabajo mínima: - 40 C
- Número de entradas / salidas programables: 13
- Número de temporizadores: 1
- Empaquetado: Tube
- Tipo de memoria de programa: Flash
- Cantidad de empaque de fábrica: 25
- Voltaje de alimentación - Máx.: 5.5 V
- Voltaje de alimentación - Mín.: 4 V
2) Describir que son los #Fuses, y definir brevemente cada uno de ellos.
Son configuraciones de la forma de funcionamiento del microcontrolador, se
transfieren al PIC cada vez que se graba un programa. El PIC 16F84A posee
cuatro fusibles que son:
- Oscilador (OSC): Es el modo de oscilación que va a usar el PIC
- WDT (Watchdog Timer): El famoso “perro guardián” del PIC. Esta es una
capacidad del PIC de autoresetearse en situaciones donde por ejemplo hay
un bucle infinito.
- PWRT (Power Up Timer Reset): Si activamos este FUSE, lo que
conseguimos es que se genere un retardo en la inicialización del Pic. Esto
se usa para que la tensión se estabilice.
- CP (Code Protect): Lo único que hace es impedir que algun curioso se
apropie de tu creación no tiene efecto alguno en el correcto funcionamiento
del PIC.
5. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
3) Describir la función de la directiva #use fast_io(X)
Esta directiva se utiliza para optimizar el código generado por el compilador
cuando se utilizan funciones de manejo de entrada y salida como “input(pin)”
definidas ya en CCS.
4) Describir qué hace la función set_tris_X(value)
Estas funciones permiten escribir directamente los registros tri-estado para la
configuración de los puertos (configurar pines de entrada y salida)
5) Explicar qué hacen y cómo se utlizan las siguientes funciones:
output_high(pin), output_low(pin), output_x(value), output_bit(pin,
value), input(pin)
- output_high(pin): pone a "1" el pin indicado. Ejemplo : Output_high(PIN_C0)
- output_low(pin): pone a "0" el pin indicado. Ejemplo : Output_low(PIN_D0)
- output_x(value): Se usa para controlar el puerto entero, está la función
dónde x es la letra del puerto a usar. Ejemplo, para usar el puerto b,
pondremos output_b(DATO);
- output_bit(pin, value): Los parámetros configura el PIN ingresado con el
estado del valor "0" o "1". Esta función se utiliza para cambiar los estados
del algún PIN. Ejemplo: output_bit(PIN_D0, 0)
- input(pin): El parámetro configura un PIN específico para determinar su
estado actual. Devuelve el estado "0" o "1" de la patilla indicada en pin.
Ejemplo: if(input(pin_a1)==1 || input(pin_a2)==1)
6) Explicar las configuraciones pull-up y pull-down para las conexiones
de entrada de un microcontrolador.
- PULL-UP: En la configuración pull up, cuando el circuito está en reposo, P1
sin pulsar, la caída de tensión es de 5V (HIGH), en cambio cuando
pulsamos P1 se deriva toda la corriente a masa y la caída de tensión es 0V
(LOW).
6. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
- PULL-DOWN: En la configuración pull down, cuando el circuito está en
reposo como se muestra en la imagen de arriba, la caída de tensión en la
resistencia es prácticamente 0V (LOW), en cambio si pulsamos P1, dejará
pasar la corriente y tendremos una diferencia de potencial de 5V (HIGH).
Este es el uso normal del estado LOW y HIGH.
ACTIVIDAD DE LABORATORIO
Generar un programa en C que funcione de manera similar a un semáforo
de cruce peatonal, simulado con tres luces led para los automóviles, dos luces led
para los peatones, y dos botones.
El semáforo para los automóviles debe permanecer normalmente en verde
y el de los peatones en rojo, una vez que se detecte el accionamiento de uno de
los botones, el semáforo para automóviles debería permanecer en amarillo por
tres segundos, y luego en rojo por 10 segundos.
Luego de que el semáforo para automóviles esté en rojo, la luz para los
peatones debe cambiar a verde, y 3 segundos antes de cambiar a rojo debe
comenzar a parpadear.
Al volver a activar la luz roja para los peatones, debe activarse la luz verde
para los automóviles y permanecer así hasta que vuelva a presionarse uno de los
botones.
Utilizando el Software Proteus, diseñar el circuito necesario para
implementar el problema propuesto. Considerar en el diseño la disposición de
resistencias pull-up o pull-down para la conexión de los botones, y las resistencias
en serie con los leds. Simular el circuito con el programa realizado en C.
Grabar programa en el microcontrolador e implementar el diseño del
circuito.
7. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
PROCEDIMIENTO REALIZADO
Materiales utilizados:
- 2 leds verdes.
- 2 leds rojos.
- 1 led amarillo.
- 5 resistencias de 330[Ω].
- 1 PIC 16F84A.
- Entrenador Digital.
- Multitester
- Cable de Timbre.
El circuito con que trabajamos es:
Fig. N°2: “Circuito en Proteus”
8. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
CÓDIGO:
#include <16F628.h>
#FUSES NOWDT //"Perro guardian" en caso de entrar a un bucle infinito
#FUSES NOPROTECT //No proteccion
#FUSES INTRC //Oscilador interno del microcontrolador
#use delay(clock=4000000)
#use fast_io(A) //Directiva que me hace el codigo mas eficiente
#use fast_io(B)
void main(){
set_tris_A(0b00000011); //Defino entradas y salidas: 0=salida, 1=entradas
set_tris_B(0b00000000); //la b indica que estoy trabajando en binario
output_b(0b00000000);
delay_ms(1000); //ms=milisegundos
output_high(pin_a3); //se enciende el verde de los vehiculos
output_high(pin_b1); //se enciende el rojo de los peatones
while(true){
if(input(pin_a0) == 1){
output_low(pin_a3); //se apaga verde de autos
output_high(pin_b2); //enciende amarillo por 3s
delay_ms(3000);
12. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
Luego montar el circuito y cargar el programa al PIC tenemos las siguientes
secuencias de imágenes donde podemos ver la ejecución del programa de forma
practica:
Fig. N°3: “Rojo peatones y verde automóvil”
Fig. N°4: “Rojo peatones y amarillo
automóvil”
15. UNIVERSIDADDEL BIO-BIO
Facultadde Ingeniería
Departamentode IngenieríaEléctricayElectrónica
Laboratoriode Microcontroladores
CONCLUSION
Los #FUSES son configuraciones de la forma de funcionamiento del
microcontrolador, se transfieren al PIC cada vez que se graba un programa
#use fast_io(X) se utiliza para optimizar el código generado por el
compilador cuando se utilizan funciones de manejo de entrada y salida.
Las funcionesset_tris_X(value) permiten escribir directamente los registros
tri-estado para la configuración de los puertos
output_high(pin): pone a "1" el pin indicado
output_low(pin): pone a "0" el pin indicado
output_x(value): Se usa para controlar el puerto entero
output_bit(pin, value): configura el PIN ingresado con el estado del valor "0"
o "1". Esta función se utiliza para cambiar los estados del algún PIN
input(pin): El parámetro configura un PIN específico para determinar su
estado actual. Devuelve el estado "0" o "1" de la patilla indicada en pin.