jueves, 17 de abril de 2014

Contador de eventos hasta 999,999 usando multitareas PICAXE18M2+

Con la actual generación de picaxe (M2 y X2) algunos chips como el 18M2+ tienen más capacidades en cada pin. El picaxe18M2+ ahora viene con más salidas y entradas digitales, por lo que podemos controlar más cosas con un solo chip. A diferencia del contador anterior, éste utiliza la nueva función de multitareas. Gracias a esta función podemos realizar varias tareas (hasta 8 con este chip) al "mismo tiempo" como si estuvieran 8 chips en un sólo encapsulado. Para este contador use sólo 3 tareas paralelas. Use 6 displays por que ya no caben más en una protoboard pero se pueden agregar hasta el número de salidas disponibles (menos las 4 que van al 74LS48) que tenga en el microcontrolador. Algo importante de aclarar es que en el anterior contador utilicé resistores de 390 ohms en cada salida del 74LS48 pero al revisar la ficha técnica, leí que no necesita resistores externos y efectivamente los displays que use no los necesitaron porque se ven bien. Pero con algunos de mis compañeros discutimos bastante el tema y observamos que los displays que son más oscuros o casi negros eran los que menos se veían a pesar de llevar resistores (los que yo uso son displays que son muy claros, en tonalidades de gris), y creemos que para que se vean mejor sólo necesitan más corriente y por lo tanto necesitan un 74HC48 y otro transistor con más potencia. Parece que no tiene nada que ver pero ustedes saquen sus propias conclusiones.

Material:
*1 Microcontrolador PICAXE18M2+
*1 IC 74LS48
*6 Displays de siete segmentos cátodo común
*6 Transistores BC547B
*6 Resistores de 820 ohms, 2 de 1000 ohms y 1 de 22000 ohms
*1 Push button

Diagrama:

Programa:

start0:
;***********************************************************************************************
;    CONFIGURACION DE LOS PUERTOS
;***********************************************************************************************
let dirsB = %11111111        ;Puerto B como salidas digitales
let dirsC = %11001111        ;C.4 y C.5 como entradas digitales
;***********************************************************************************************
;    INICIALIZACION DE VARIABLES
;***********************************************************************************************
let b1=0
let b2=0
let b3=0
let b4=0
let b5=0
let b6=0

;***********************************************************************************************
;    PROGRAMA PRINCIPAL
;***********************************************************************************************
main:
let pinsB=b6
pulsout C.0,100            ;Se activa solo el transistor de las centenas de millar
let pinsB=b5
pulsout C.1,100            ;Se activa solo el transistor de las decenas de millar
let pinsB=b4
pulsout C.2,100            ;Se activa solo el transistor de las unidades de millar
let pinsB=b3
pulsout C.3,100            ;Se activa solo el transistor de las centenas
let pinsB=b2
pulsout C.6,100            ;Se activa solo el transistor de las decenas
let pinsB=b1
pulsout C.7,100            ;Se activa solo el transistor de las unidades
goto main

start1:                ;En esta tarea se realiza el conteo
if b1=10 then
    let b1=0
    inc b2
endif
if b2>9 then
    let b2=0
    inc b3
endif
if b3>9 then
    let b3=0
    inc b4
endif
if b4>9 then
    let b4=0
    inc b5
endif
if b5>9 then
    let b5=0
    inc b6
endif
if b6>9 then
    let b6=0
endif
goto start1

start2:
if pinC.5 = 1 then bajo        ;Si es recibido un pulso se espera a que termine el pulso
goto start2
bajo:
if pinC.5 = 0 then incrementa    ;Una vez que termino el pulso se incrementa la variable b1
goto bajo
incrementa:
inc b1
goto start2

Video:

No hay comentarios:

Publicar un comentario