Cronometro 2013
Cronometro 2013
Cronometro 2013
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.
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
#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
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.
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.
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
INF-MCU
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.
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,21 10,01 20,21 40,28 100 201 300 400 500 1000
10 min
INF-MCU
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.
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
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
40,4 40,2 40
DATODATODATODATODATO 1 2 3 4 5
Anlisis de error para t=40seg.
INF-MCU
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.
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/