Contador de 4 dígitos configurable
Dada la versatilidad de este circuito se lo puede colocar virtualmente en cualquier desarrollo o equipo.
El contador funciona alrededor de un µC de Microchip, el PIC16F84 cuyo programa se encarga de llevar la cuenta de los impulsos recibidos así como controlar los displays y demás aspectos que se verán a continuación...
Doble entrada de disparo:
Una con un pulsador hacia el positivo (para flancos de subida) y otra con un
pulsador hacia la masa (para flancos de bajada). En ambos casos la señal puede
ser TTL siempre que al circuito se lo conecte a 5V de tensión. Gracias a que el
sistema de anti rebote puede ser configurado la entrada de disparo puede
provenir tanto de un pulsador como de una barrera infra roja de cruce peatonal
como así también un censor de efecto Hall o cualquier otro reproductor
mecánico.
Anti rebote configurable:
Por medio del interruptor marcado como AR se puede seleccionar entre un anti
rebote por tiempo (esto quiere decir que entre pulsación y pulsación el µC
esperará un tiempo previamente definido) un un anti rebote por retorno a reposo
de la línea de disparo (cuando se produzca la vuelta a su estado de reposo del
pulsador o entrada). El caso del anti rebote por tiempo suele ser el mas
empleado cuando un contador es disparado por un pulsador dado que éste presenta
repiques mecánicos indeseados. El tiempo de retardo se puede configurar por
medio de los interruptores J1 y J2 los cuales en combinación permiten hasta
cuatro tiempos diferentes. En tanto, el anti rebote por retorno a reposo de la
línea de disparo es mas apropiado cuando se lo conecta a barreras IR en líneas
industriales, censores mecánicos o levas (entre varios ejemplos). Si se
selecciona por tiempo y el pulsador permanece presionado el conteo irá
avanzando de uno en fondo y el tiempo de espera entre cada avance dependerá de
como estén los interruptores J1 y J2. Estando ambos abiertos (sus líneas en
estado alto) el tiempo es breve, mientras que estando ambos cerrados (sus
líneas a masa) el tiempo es el mas largo posible. En tanto, si se configura
para esperar la vuelta a reposo de la línea de disparo por mas que el pulsador
permanezca presionado la cuenta no avanzará sino hasta que se lo suelte. En
este caso los interruptores J1 y J2 no cumplen ninguna función.
Descripción del circuito:
El µC en su interior tiene cuatro variables (dig1, dig2, dig3 y dig4) en las
que va acumulando la cantidad de veces que se disparo el sistema. Este disparo
puede producirse tanto por un flanco ascendente en el pin 2 como por un flanco
descendente en el pin 3. Debido a la limitada cantidad de líneas de E/S de este
chip se decidió implementar un integrado decodificador de BCD a display de 7
segmentos a fin de formar los números sobre los mismos. Este integrado necesita
solo cuatro líneas de entrada para mostrar el número en los segmentos de un
display. Por medio de cuatro transistores actuando como llaves (corte/
saturación) se logra manejar cuatro dígitos independientes con tan solo ocho
líneas o cables. Al hacerse el encendido alternado de los dígitos a gran
velocidad para la vista pareciese que están los cuatro encendidos al mismo
tiempo, cuando en verdad solo uno lo esta. Cada display permanece encendido
aproximadamente 3 milisegundos. Las resistencias de 10K ohms se encargan de
fijar estados lógicos definidos. Las de 4.7K ohms se encargan de limitar tanto
la corriente en las bases de los transistores como así también la carga sobre
los pines del puerto B del microcontrolador. En tanto las de 150 ohms se
encargan de limitar la corriente en los displays. Para mayor brillo se puede
probar con resistencias de 100 ohms o incluso 56 ohms. La alimentación
recomendada es de 5V y el consumo no llega a los 100mA. El pulsador marcado como
R es el que reinicia el micro, volviendo la cuenta a cero.
El firmware:
Este, como todo desarrollo micro controlado necesita de un firmware (o programa
de dispositivo) para funcionar. El mismo puede ser descargado en versiones ASM
(para ver y modificar si de desea) o HEX (listo para
cargar en el PICmicro). Como todo programa de estos dispositivos comienza
definiendo equivalencias para nombrar posiciones de la memoria así como valores
literales; luego configura los puertos de E/S (el A como entradas, el B como
salidas). Seguidamente se inicializan los acumuladores (dig1 o unidades, dig2 o
decenas, dig3 o centenas y dig4 o millares) y se ponen en bajo todas las líneas
del puerto B consiguiendo con esto que ningún display quede iluminado. Luego el
programa queda en un ciclo infinito el cual comprueba si hay actividad en las
líneas de entrada (pines 2 y 3) y muestra el contenido actual de la cuenta
(haciendo una llamada a la sub-rutina display). Si no hay actividad en ninguna
de las dos líneas de entrada el ciclo solo se encarga de hacer que en los
displays se vean los acumuladores. Un pulso bajo en el pin 3 o uno alto en el
pin 2 hará que el programa salte a la sub-rutina "increm" la cual
aumenta en uno el acumulador de unidades (y maneja el acarreo de ser necesario).
Esta rutina, además, deriva al programa a otra sub-rutina la cual se encargará
de llevar a cabo el anti rebote que se haya configurado. En caso de ser un anti
rebote por retorno a estado de reposo lo único que se hace es quedar a la
espera que el pin 2 quede en estado lógico bajo y el pin 3 en alto. Mientras se
espera que esto suceda se llama a la rutina de display para que los dígitos
sigan mostrando el estado actual del conteo. Sin esta llamada los mismos
quedarían apagados. En tanto, en caso de ser configurado para un anti rebote
por tiempo el sistema primero determinará dicho tiempo cargando a W
inicialmente con 25 y agregándole mas valor según el estado de los pines 17 y
18. el número restante será la cantidad de veces que se ejecute la sub-rutina
de display antes de retornar al programa principal. Pero el retorno se produce
incondicionalmente, sin verificar en que estado se encuentran las líneas por lo
que si algún pulsador continua pulsado la cuenta se aumentará nuevamente.