Você está na página 1de 3

Temporizador de dcimas de segundo Descripcin

Es un reloj de cuenta descendente, usado como temporizador de 5 dgitos y precisin de dcimas de segundo. El avance del temporizado y la entrada de valores, se visualizan en los dgitos. Est proyectado con una entrada de inicio y con una salida, pero se le pueden agregar ambas, de acuerdo a los pines disponibles. Us en el diseo el PIC 18F4550, solamente porque lo tena en stock, pero se puede usar cualquier otro, cambiando las asignaciones de las entradas y salidas de acuerdo al PIC usad, y por supuesto la configuracin. Tiene 4 pulsadores: 1) Para comenzar la entrada de valores, para seleccionar el dgito deseado y para finalizar la entrada. 2) Para subir de a uno el valor del dgito seleccionado. 3) Para parada de emergencia, que finaliza el ciclo. 4) Para comenzar el ciclo de temporizado. Se pueden agregar otros inicios de ciclo como por ejemplo: temperatura deseada, cierre de puertas, retardos externos, etc.

Fotografa

Esquema

Firmware
Est hecho en C de CCS y comenzado usando el PIC Wizzard para armar la configuracin. Bsicamente, el Firmware tiene una rutina por Interrupcin, que cada dcima de segundo, baja en una unidad el contador de dcimas. Cuando llega a cero, para el ciclo, haciendo sonar la alarma, como el horno de microondas. Suena unos segundos y para. El valor inicial del contador, se setea mediante dos pulsadores. Rutina de Interrupcin: #int_TIMER1 // Rutina de Interrupcin por timer 1, que genera las dcimas de segundo. void TIMER1_isr(void) { Contador = Contador - 1; // Contador de dcimas de segundo. if (Contador <=0) {SuenaAlarma(); Salida = 0; disable_interrupts(INT_TIMER1);} // Fin del ciclo. if (Parada == 1) {Alarma = 0; Salida = 0; disable_interrupts(INT_TIMER1);} emergencia set_timer1(15536); temporizado. } Este es el seteo del Timer 1: setup_timer_1(T1_INTERNAL|T1_DIV_BY_2); // Seteos del CCS. Con el Timer 1, de 16 Bit, el intervalo entre 0 y 65535 para el prescaler dividido por 2, y reloj de 4 MHz, el tiempo de desborde es de: Tiempo = 4 / 4000000 Hz * 2 * (65536-X)= 0.131072 seg = 131.07 ms X = 0 para el tiempo total de desborde. Para disminuirlo, no se comienza por cero. X = -((Tiempo /4 * 4000000 Hz / 2) 65536) en segundos X = -((Tiempo /4 * 4000 Hz / 2) 65536) en milisegundos Como queremos que el tiempo sea de 100 ms: X =15536, en lugar de cero debemos colocar 15536. Si se dispone de un medidor de perodo de precisin, se puede ajustar el valor, para corregir el error del cristal usado con el PIC. Los nmeros de los dgitos se guardan en la memoria EEPROM y se leen cada vez. Cuando se setean los valores de la EEPROM se usan las variables N1 a N5, que corresponden al valor de cada dgito de izquierda a derecha. Ejemplo: 00:01.7, es cero minutos, un segundo y 7 dcimas de segundo. Los nmeros son: 0,0,0,1,7. El valor mximo es 5,9,5,9,9. Cuando trabaja el temporizador se usa la variable Contador, de 16 bit. Se convierten los nmeros a Contador, se le resta 1 en la interrupcin y se vuelve a convertir a nmeros para mostrarlos en el display. Cuando se setean los nmeros, con los dos pulsadores correspondientes, no se usa la variable Contador, solo los nmeros. Cualquier duda con este Firmware, consultar a correo@arossini.com.ar 3 // Parada de

// Carga del TMR1. Ajustarlo si hace falta para darle precisin al

Você também pode gostar