Sunteți pe pagina 1din 6

INF-MCU

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


DEPARTAMENTO DE ELECTRICIDAD Y ELECTRNICA MICROCONTROLADORES

Versin: 1.0 Pgina: 1 de 6

Informe de la prctica de laboratorio N2: Cronmetro


Asdrbal Maximino Quinayas Ortiz Cdigo: 1090286 Joan Andrs Ordoez Lpez Cdigo: 1090281

I. INTRODUCCIN
Utilizando el PIC 16F877A se logr implementar un reloj cronmetro por medio de dos doble displays de 7 segmentos de configuracin nodo comn conectados a los respectivos pines del PIC definidos en la programacin. El funcionamiento del cronmetro est definido por la accin de dos botones pulsadores. Hay un botn de reinicio y un botn que inicia el conteo del tiempo y cumple tambin con la funcin de pausar y reanudar la cuenta; el cronmetro muestra en un inicio las centsimas y decimas de segundo para un display, y los segundos para el otro display. Al momento de llegar a 1 minuto (60 segundos), el display que muestra las centsimas pasa a contabilizar segundos y el que contabiliza segundos muestra ahora los minuto; el cronmetro se detiene a los 10 minutos de iniciar el conteo.

IV. DESARROLLO DE LA PRCTICA Desarrollo del algoritmo


Utilizando PIC C COMPILER se digit el siguiente algoritmo para cumplir con el objetivo principal. Estructura del cdigo: #include<16f877a.h>; define el PIC que vamos a trabajar. #fuses; configuramos los fuses del PIC empleado. El PIC 18f877a tiene 9 fuses. XT: Oscilador XT. Se usa cuando el PIC trabajar con un cristal o resonador de frecuencias iguales o menores que 4 MHz. WDT: El Watchdo es un temporizador que una vez vez alcanzado su tiempo lmite puede provocar un reset en el pic. LVP: Programacin en bajo voltaje. PROTECT: Proteccin del cdigo. #use delay; definimos el valor del reloj a utilizar. # use fast_io( ); se configuran los diferentes puertos definidos como entradas o salidas. BYTE CONST; se definen las constantes {0-9} en forma de vector que mostraran los displays. #INT_EXT; habilitamos la interrupcin por el PIN RBO del PIC. Void main ( ) {}; funcin principal del programa. While (TRUE) {}; para la funcin principal, cmplase lo siguiente: Se define el nombre del cdigo como initiation para usar la funcin goto dentro del cdigo. S pause==0, atienda la interrupcin y muestre el valor guardado en el display cambio==0, muestre display A, B, C, D; sino muestre C,D,E y F; esto garantiza que el valor del display queda en stop. S pause==1 se empieza el conteo de tiempo hasta 10 min a no ser de que se active la interrupcin y muestre el dato guardado en el momento de la secuencia.

II. OBJETIVOS Visualizar un reloj cronmetro utilizando los diferentes pines del PIC 16F877A por medio de dos displays 7 segmentos de configuracin nodo comn.
Crear y comprender la secuencia lgica correspondiente a la funcin requerida por medio del software PIC C Compiler. Simular en PROTEUS la secuencia lgica creando de antemano el circuito esquemtico. Comparar el funcionamiento del montaje fsico y simulado con un cronmetro real y tomar a su vez muestras de tiempo para observar la precisin del circuito.

III. HERRAMIENTAS UTILIZADAS Para el desarrollo de la prctica se cuenta con dos doble displays de configuracin nodo comn, el algoritmo original ha sido realizado en el programa PIC C COMPILER en lenguaje C. Se compil el programa creado a extensin .hex para ser cargado en PROTEUS y as realizar la respectiva simulacin antes del montaje fsico. La prueba fsica se realiz en una protoboard utilizando el PIC que se ha trabajado durante las horas tericas (PIC 16F877A); se requiri adems 14 resistencias de 220 para la conexin intermedia entre cada pin del PIC y cada segmento del display, y dos botones pulsadores para cumplir con la funcin de reiniciar, pausar y reanudar. Para el funcionamiento del circuito se realizan las respectivas conexiones y se alimenta con un Vcc de 5v.

INF-MCU

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


DEPARTAMENTO DE ELECTRICIDAD Y ELECTRNICA MICROCONTROLADORES

Versin: 1.0 Pgina: 2 de 6

#include <16F877a.h> #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock = 4000000) #use fast_io (a) #use fast_io (c) #use fast_io (d) byte CONST display[10] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; int16 t= 1950; int pause=0,cambio=0; #INT_EXT void ext_isr(void){ if(pause==0) pause=1; else pause=0; } void main (){ byte A=0,B=0,C=0,D=0,E=0,F=0; set_tris_b(0x01); set_tris_c(0x00); set_tris_d(0x00); set_tris_a(0x00); enable_interrupts(INT_EXT); ext_int_edge(L_to_H); enable_interrupts(GLOBAL); while(TRUE){ initiation: if(pause==0) { if(cambio==0) { output_a(0x01); output_c(display[A]); delay_us(t); output_a(0x02); output_c(display[B]); delay_us(t); output_a(0x04); output_d(display[C]); delay_us(t); output_a(0x08); output_d(display[D]); delay_us(t); } else { output_a(0x01); output_c(display[C]); delay_us(t); output_a(0x02); output_c(display[D]); delay_us(t); output_a(0x04); output_d(display[E]); delay_us(t); output_a(0x08); output_d(display[F]); delay_us(t); } } else { if(cambio==0) { output_a(0x01); output_c(display[A]); delay_us(t); output_a(0x02);

output_c(display[B]); delay_us(t); output_a(0x04); output_d(display[C]); delay_us(t); output_a(0x08); output_d(display[D]); delay_us(t); } else { output_a(0x01); output_c(display[C]); delay_us(t); output_a(0x02); output_c(display[D]); delay_us(t); output_a(0x04); output_d(display[E]); delay_us(t); output_a(0x08); output_d(display[F]); delay_us(t); } A = A+1; if (A<=9) goto initiation; else A=0; B=B+1; if(B<=9) goto initiation; else A=0; B=0; C=C+1; if(C<=9) goto initiation; else A=0; B=0; C=0; D=D+1; if(D<=5) goto initiation; else A=0; B=0; C=0; D=0; cambio=1; E=E+1; if(E<=9) goto initiation; else A=0; B=0; C=0; D=0; E=0; F=1; pause=0; goto initiation; } } }

INF-MCU

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


DEPARTAMENTO DE ELECTRICIDAD Y ELECTRNICA MICROCONTROLADORES

Versin: 1.0 Pgina: 3 de 6

Simulacion en PROTEUS
Para la simulacin en PROTEUS como se muestra en la figura 1 se utilizaron las siguientes librerias: o o o o o o o 7 SEG-MPX2-CA-BLUE: Doble display 7 segmentos nodo comn. RX8: Grupo de 8 resistencias. Se modificaron a 220. PIC16F877A: PIC utilizado para la prctica. POWER: Alimentacin del circuito. BUTTON: Botn pulsador. RESISTOR: Resistencias usadas para los botones pulsadores. GROUND: Tierra del circuito.

byte CONST display[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x 6f}; Aqu estn declarados los nmeros del 0 al 9, el primer nmero despus de la x corresponde a la parte decimal y el segundo nmero despus de la x corresponde a la parte hexadecimal. Esta lnea es la que se modifica para utilizar el display de configuracin nodo comn. Cada parte, decimal y hexadecimal se debe pasar al equivalente en nmero binario para luego invertirlo y sacar el equivalente en decimal y hexadecimal. Esto se debe a que en un byte hay 8 bits, los 4 primeros bits corresponden a la parte decimal y los 4 ltimos a la parte hexadecimal. En la tabla 1 se mostraran los equivalentes correspondientes para la configuracin ctodo comn.
CONFIGURACION CATODO COMUN Equivalente Parte Decimal Parte Hexadecimal 3f 0 1 1 1 1 1 1 06 0 0 0 0 1 1 0 5b 1 0 1 1 0 1 1 4f 1 0 0 1 1 1 1 66 1 1 0 0 1 1 0 6d 1 1 0 1 1 0 1 7d 1 1 1 1 1 0 1 07 0 0 0 0 1 1 1 7f 1 1 1 1 1 1 1 6f 1 1 0 1 1 1 1 g f e d c b a

Nmero 0 1 2 3 4 5 6 7 8 9

Tabla 1: Equivalente en binario de la configuracin ctodo comn. Figura 1: Conexin fsica del reloj cronmetro con dos doble display 7 segmentos configuracion nodo comn.

Modificacin del vector que muestra el display.


Para el montaje fsico se cuenta con dos displays configuracin nodo comn; para ello se ha modificado el vector trabajado en clase para un display de configuracin ctodo comn.

Como se mencion, para la configuracin nodo comn se invierten estos resultados, es decir donde es 1 se coloca 0 y donde es 0 se coloca 1; as, teniendo esto, con los nuevos nmeros binarios se sacan los respectivos equivalentes.
CONFIGURACION ANODO COMUN Parte Decimal Parte Equivalente Hexadecimal 1 0 0 0 0 0 0 40 1 1 1 1 0 0 1 79 0 1 0 0 1 0 0 24 0 1 1 0 0 0 0 30 0 0 1 1 0 0 1 19 0 0 1 0 0 1 0 12 0 0 0 0 0 1 0 02 1 1 1 1 0 0 0 78 0 0 0 0 0 0 0 00 0 0 1 0 0 0 0 10 g f e d c b a

Nmero 0 1 2 3 4 5 6 7 8 9

Fundamento:

En un display de configuracin ctodo comn para producir los correspondientes nmeros del 0 al 9 se deben mantener encendidos slo los segmentos del display que forman el dgito. Para utilizar un display de configuracin nodo comn, estos segmentos deben estar apagados.

Figura 2: Display 7 segmentos.

Tabla 2: Equivalente decimal y hexadecimal de la configuracin nodo comn.

En la figura 2 se observa como est compuesto un display 7 segmentos. En lenguaje C, para mostrar estos nmeros, se declaran unas constantes como se observa en la siguiente lnea

de cdigo trabajada en clase.

INF-MCU

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


DEPARTAMENTO DE ELECTRICIDAD Y ELECTRNICA MICROCONTROLADORES

Versin: 1.0 Pgina: 4 de 6

Caracterizacion del doble display 7 segmentos nodo comn.


Caracterizacion del display 7 segmentos anodo comun para la identificaion de sus respectivos pines. Usando una fuente de alimentacion de 5v DC, y una resistencia para proteger los diodos de cada segmento.

Figura 5: Programacin del PIC utilizado por medio del programador USB.

Prueba de montaje.
A continuacin se muestra el montaje realizado en la protoboard (figura6). Para probar el funcionamiento, se ha alimentado el circuito con la salida del programador USB que arroja 5 voltios en dos de sus terminales.

Figura 3: Definicin de pines del doble display segmentos nodo comn.

Programacin del PIC.


Para la programacin del PIC se ha utilizado el programa PICKit2 programmer, versin para Windows 7 mostrado en la figura 4, junto con el programador USB mostrado en la figura 5. En este se ha cargado el correspondiente archivo .hex para guardarlo en el PIC.

Figura 6: Prueba de funcionamiento del circuito.

Toma de datos.
Para probar la precisin del circuito se tomaron 5 datos para tiempos diferentes (tabla1) comparndolos a su vez con los tiempos medidos en un cronmetro real (tabla2). Los datos tomados se han colocado en segundos y centsimas para las pruebas de segundos (5,10,20,40) y minutos con segundos para las pruebas de minutos (1,2,3, 4, 5,10).
CRONOMETRO IMPLEMENTADO DATO 1 DATO 2 5,10 10,21 20,32 40,25 100 200 300 400 500 1000 DATO 3 5,47 10,16 20,15 40,21 100 200 300 400 500 1000 DATO 4 5,17 10,30 20,15 40,90 100 200 300 400 500 1000 DATO 5 5,22 10,26 20,20 40,22 100 200 300 400 500 1000 PROM CIR 5,215 10,135 20,205 40,25 60 120 180 240 300 600 DESV CIR 0,00353 0,08838 0,00353 0,02121 0 0 0 0 0 0

5 seg 10 seg 20 seg 40 seg 1 min 2 min 3 min 4 min 5 min

5,21 10,01 20,21 40,28 100 201 300 400 500 1000

Figura 4: Almacenamiento del archivo .hex con el programa PICKIT2.

10 min

Tabla1: Datos tomados en el cronmetro implementado.

INF-MCU

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


DEPARTAMENTO DE ELECTRICIDAD Y ELECTRNICA MICROCONTROLADORES

Versin: 1.0 Pgina: 5 de 6

NOTA: El clculo del promedio y de la desviacin estndar se ha hecho en excel, para ello se han colocado los tiempos equivalentes en una misma unidad (segundos) como se puede observar en la seccin de anexos y se han hecho los grficos correspondientes.
CRONOMETRO REAL DAT 1 5 seg 10 seg 20 seg 40 seg 1 min 2 min 3 min 4 min 5 min 10 min 4,58 8,23 16,52 32,72 48,71 138 226 315 403 805 DAT 2 4,44 8,42 16,61 32,80 49,37 137 226 314 403 805 DATO 3 4,86 8,37 16,42 32,76 49,42 137 226 315 403 805 DAT 4 4,35 8,42 16,47 32,80 49,74 137 226 314 403 805 DAT 5 4,16 8,48 16,52 33,08 49,56 138 226 314 403 805 PROM CIR 4,37 8,355 16,52 32,9 49,135 98 146 194,5 243 485 DESV CIR 0,14849 0,08838 0 0,12727 0,30052 0 0 0,35355 0 0

Anlisis grfico.
Continuacin se muestra la comparacin de resultados para la medida de tiempos del cronometro real y el implementado. Cronmetro real. Cronmetro implementado.

6 5,5 5 4,5 DATO DATO DATO DATO DATO 1 2 3 4 5


Anlisis de error para t=5seg.

Tabla2: Datos tomados en el cronmetro real.

Los datos anteriores fueron tomados para un delay de 1950 us. Como se puede observar la medida del tiempo tomada por el circuito est muy dispersa con respecto a la medida del cronmetro real. Para efecto de precisin se coloca un delay de 2400 us, tomando asi los datos nuevamente como se puede observar en la tabla 3 y 4
CRONOMETRO IMPLEMENTADO DAT 1 5,27 10,24 20,10 40,20 100 200 300 400 500 100 DAT 2 5,18 10,24 20,27 40,23 100 200 300 400 500 100 DATO 3 5,81 10,39 20,42 40,18 100 200 300 400 500 100 DAT 4 5,24 10,26 20,26 40,25 100 200 300 400 500 100 DAT 5 5,19 10,22 20,26 40,23 100 200 300 400 500 100 PROM CIR 5,23 10,23 20,18 40,215 60 120 180 240 300 600 DESV CIR 0,02828 0,00707 0,05656 0,01060 0 0 0 0 0 0

11 10,5 10

Anlisis de error para t=10seg.

5 seg 10 seg 20 seg 40 seg 1 min 2 min 3 min 4 min 5 min 10 min

21 20,5 20 19,5

Anlisis de error para t=20seg.

40,4 40,2 40

Tabla3: Datos tomados en el cronmetro implementado.


CRONOMETRO REAL DAT 1 5 seg 10 seg 20 seg 40 seg 1 min 2 min 3 min 4 min 5 min 10 min 5,81 10,30 20,12 40,28 100 159 259 358 458 955 DAT 2 5,34 10,33 20,31 40,13 100 159 259 358 458 955 DATO 3 5,17 10,27 20,57 40,23 100 159 259 358 458 955 DAT 4 5,46 10,61 20,26 40,35 100 159 259 358 458 955 DAT 5 5,67 10,34 20,39 40,18 100 159 259 358 458 955 PROM CIR 5,74 10,32 20,255 40,23 60 119 179 238 298 595 DESV CIR 0,04949 0,01414 0,09545 0,03535 0 0 0 0 0 0

DATODATODATODATODATO 1 2 3 4 5
Anlisis de error para t=40seg.

80 60 40 20 0 DATO DATO DATO DATO DATO 1 2 3 4 5

Tabla4: Datos tomados en el cronmetro real.

INF-MCU

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER


DEPARTAMENTO DE ELECTRICIDAD Y ELECTRNICA MICROCONTROLADORES

Versin: 1.0 Pgina: 6 de 6

Anlisis de error para t=1min.

V. CONCLUSIONES
El cambio de displays produjo ciertas modificaciones en la programacin, ya que para mostrar la numeracin se requiere cierta lgica binaria, hexadecimal y decimal. Y la configuracin no es la misma para nodo comn que para ctodo comn. El tema visto en clase sobre las interrupciones fue de mucha ayuda para la elaboracin del algoritmo, ya que esta interrupcin la utilizamos para que cuando se ejecute la variable asignada interrumpa el proceso y nos atienda esa interrupcin. De la simulacin a la practica siempre hay una diferencia de tiempos con respecto a los datos obtenidos, ya que cuando comparamos con un cronometro real podemos decir que si acercamos los datos simulados se nos descuadran los de la implementacin, y si acercamos los de la implementacin se nos descuadren los de la simulacin. Otros detalles de la implementacin es el parpadeo de los diodos. Ya estando el circuito bien conectado Notamos que los diodos se interfieran.

121 120 119 118 DATO DATO DATO DATO DATO 1 2 3 4 5


Anlisis de error para t=2min.

181 180 179 178 DATO DATO DATO DATO DATO 1 2 3 4 5


Anlisis de error para t=3min.

241 240 239 238 237 DATO DATO DATO DATO DATO 1 2 3 4 5
Anlisis de error para t=4min.

REFERENCIAS
[1] Garca, Eduardo, Compilador C CCS y simulador Proteus para Microcontroladores PIC 1ra Edicin, Alfaomega grupo Editor, S.A de C.V, Mxico. [2] http://www.cursomicros.com/

302 300 298 296 DATO DATO DATO DATO DATO 1 2 3 4 5


Anlisis de error para t=5min.

605 600 595 590 DATO DATO DATO DATO DATO 1 2 3 4 5


Anlisis de error para t=10min.

S-ar putea să vă placă și