PROYECTO 2 GAMBOA GONZALEZ URIEL YAMIHATL
1. Propuesta de solución Este trabajo tiene como objeto el diseño y construcción de un cronómetro digital. En el diseño y construcción de este equipo se destacan esencialmente dos componentes, uno de programación y otro de circuito; como elemento esencial se emplea un microcontrolador comercial PIC16F877A. Para la construcción de un cronómetro, u n dato importante para empezar es decidir cuánto tiempo se desea controlar; de esto depende el número de dígitos a usar. En este caso se quiere que muestre minutos y segun-dos desde 00.00 hasta 59.59 en cuatro displays y que permita la parada y la puesta en marcha mediante pulsadores. El estudio de un contador digital de cuatro dígitos con el que se pueda contar en ascendente, exige obtener una señal de reloj como base de tiempos para la sincronía del equipo con otros posibles equipos, en este caso se usara TMR0; Y los pulsadores de inicio, parar y reiniciar. Siendo el microcontrolador PIC16F877A el elemento esencial en este diseño, su programación requiere la mayor dedicación. Por lo tanto, el programa está estructurado para que el microcontrolador reciba señal de 4 botones (start, stop, reset, nada), procese la información, realice unos cálculos y muestre los datos en 4 displays de 7 segmentos de cátodo común.
1. CODIGO COMENTADO #include <main.h>
#define nada 0 //Se definen los botones #define start 1 #define stop 2 #define reset 3
#define segmento1 PIN_C0// se asigna el PIN(PATITA)DE CADA DISPLAY #define segmento2 PIN_C1 #define segmento3 PIN_C2
#define segmento4 PIN_C3
char unidades=0;// SE INICIALIZAN A CERO NUESTRAS VARIABLE PARA EL CONTADOR char decenas=0; char centenas=0; char miles=0;
char boton=nada;
char segmentos[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //VALORES en dirreccion de el d7 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
#INT_RTCC void RTCC_isr(void) { static char contador=0; switch(contador) { case 0: output_low(segmento4); output_high(segmento1); output_d(segmentos[miles]); break; case 1: output_low(segmento1); output_high(segmento2); output_d(segmentos[centenas]); break; case 2: output_low(segmento2);
output_high(segmento3); output_d(segmentos[decenas]); break; case 3: output_low(segmento3); output_high(segmento4); output_d(segmentos[unidades]); break; } contador++; if(contador>=4) contador=0; }
#INT_RB void RB_isr(void) { unsigned long i;
char entrada=0;
entrada=input_b() && 0xf0;
switch(entrada)
{ case 0b11100000: boton=start; break; case 0b11010000: boton=stop;
break; case 0b10110000: boton=reset; break; default: boton=nada; } //for(i=0; i<10000; i++) }
void main() { setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256|RTCC_8_bit);
enable_interrupts(INT_RTCC); enable_interrupts(INT_RB); enable_interrupts(GLOBAL);
output_b(0); output_c(0); output_d(0);
set_tris_b(0xf0); set_tris_c(0x00); set_tris_d(0x00);
output_low(segmento1); output_low(segmento2); output_low(segmento3); output_low(segmento4);
//13.1 ms overflow
unsigned long contador=0;
while(TRUE) {
//displayValues(digits[(counter/1000)%10], digits[(counter/10)%10],digits[counter%10
digits[(counter/100)%10],
unidades=contador%10; //segundos decenas=(contador/10)%6; centenas=(contador/60)%10; miles=(contador/600)%6; delay_ms(10000); contador++;
if(contador>=10000) contador=0; } }
2. ANALISIS TECNICO
En el primer diseño que se describe a continuación y que es objeto de desarrollo, sólo se tiene en cuenta el sistema digital (microcontrolador). Se trata de realizar el diseño del programa encargado de gestionar como elemento de salida: 4 displays de 7 segmentos (con punto decimal) de cátodo común, y como elementos de entrada Los pulsadores, uno para la puesta en marcha y el otro para la Parada. Estos dos pulsadores están conectados a RA0 (marcha) y RA1 (parada) y con nivel alto en la pulsación. Este cronómetro digital debe mostrar minutos y segundos desde 00.00 hasta 59.59 en los displays.
El sistema puede encontrarse en dos estados posibles: contando o parado. El programa principal debe ejecutar un bucle c de barrido de los 4 displays que representan minu-tos y segundos, se debe temporizar la permanencia de cada dígito (que se han elegido durante unos 5ms). Se realizan por tanto dos temporizaciones: una la de permanencia de cada dígito en su display y otra la de contabilización del tiempo transcurrido cuando el cronómetro esté contando. La temporización de permanencia de cada dígito en e l display se realiza con el temporizador TMR0 y el temporizador TMR1 se empleará para generar interrupciones periódicamente que, en el supuesto de que nos encontremos en el Estado de “cuenta”, servirán para incrementar los segundos y los minutos. En este diseño del cronómetro digital se distinguen dos partes diferentes: la programación del microcontrolador en la cual se generan los pulsos eléctricos y el control de los display y la segunda parte es la de los circuitos, donde se acoplan los periféricos con el microcontrolador. Esto se puede apreciar en el circuito simulando el funcionamiento del cronómetro.
3.
Análisis de Resultados
Existen diversas alternativas para la construcción de cronómetros digitales: pueden estar basados en el u so de integrados que ejecutan funciones específicas o pueden realizarse a través del uso de microcontroladores los cuales son más versátiles. Por su parte, el uso de los microcontroladores implica un trabajo adicional, en el sentido de que estos se deben programar utilizando un lenguaje de maqui-na o de bajo nivel con el cual se le “indican” las tareas que debe desarrollar. Es por ello que el mayor trabajo para el desarrollo de este prototipo se hace en la parte de la programación del microcontroladores PIC. 4. Conclusiones En el desarrollo de este cronómetro, se tiene que la parte esencial es el uso de los microcontroladores. Es por ello que el mayor trabajo para el desarrollo de este prototipo se hace en la parte de la programación del microcontrolador PIC. Teniendo en cuenta este aspecto central en el diseño y construcción del prototipo para medir tiempo, se contempla la posibilidad de seguir trabajando en el perfecciona-miento de este prototipo medidor de tiempo. De todas estas actividades se determinó que la mejor forma de instrumentar estas experiencias es a partir del uso de cronómetros digitales, utilizando microcontroladores, y que proporcionen medidas en el orden de las centésimas de segundos pero también cambiando el sistema de accionamiento remplazándolo por un sistema de sensores que utilice puertos acopladores. Con la fabricación de este cronómetro es posible contar con instrumentos electrónicos de calidad con un costo inferior a la de la instrumentación equivalente empleada en la actualidad y que nos da la posibilidad de obtener información digitalizada de cómo se comportan las variables.