• No se han encontrado resultados

Capítulo 4 – Diseño del equipo láser

4.4. Etapa del controlador

4.4.2. Programación

El circuito controlador opera de la siguiente manera desde el momento en que se enciende:

• Despliega la versión del software por unos segundos.

• Cambia al menú de temporizado desde el cual se observa el tiempo preprogramado de 1 minuto. (el tiempo es programable entre 1 segundo y 10 minutos)

• Espera un comando. Los comandos son: “Inicia” (tecla A) y “Ajusta tiempo” (tecla B).

• En el caso de presionar “Inicia”, se enciende el láser y el tiempo programado empieza a disminuir con una resolución de 1 segundo. Cuando se ha completado el tiempo ajustado se apaga el láser. Durante este modo solo puede presionarse la tecla “Inicia”, que en este caso funciona como “Alto”, el hacerlo reiniciará la cuenta del tiempo, apagará los láseres y entrará en modo de “espera”.

• Si está en modo de “espera” y se presiona “ajuste”, el cursor se posiciona en el dígito de minutos para que mediante el teclado se ingrese el valor deseado, al terminar puede presionar la tecla “siguiente” (tecla C) con la que podrá desplazarse indefinidamente entre los dígitos de minutos, y segundos. Para terminar presione la tecla “Terminado” (tecla D).

Para explicar el programa del microcontrolador, se dividirá en diferentes secciones: • Rutina de temporizado.

• Rutina de despliegue.

4.4.2.1 Rutina de temporizado.

Para hacer el conteo de los segundos se emplea el temporizador de 8 bits del microcontrolador. Dicho temporizador tiene diferentes modos de funcionamiento, en este caso se le emplea con “timer” con interrupciones activadas. Su base de tiempo está conectada al reloj del sistema (4 MHz) y cuenta con un registro de división de frecuencias entre 8, 64, 256 y 1024. Para hacer la cuenta de segundos se requiere de una frecuencia relativamente baja por lo que se eligió el divisor de 256.

Cuando se habilita la interrupción del temporizador, éste interrumpirá al microcontrolador cada vez que exista su “sobre flujo” en el registro de conteo, es decir cada 256 conteos (puesto que el temporizador es de 8 bits), el número de conteos por unidad de tiempo está dado por la frecuencia del reloj del sistema y el ajuste del divisor de frecuencia, entonces: Hz MHz timer del Frecuencia 15625 256 4 _ _ = = s Hz conteo un por Tiempo 64µ 15625 1 _ _ _ = =

Como cada interrupción sucede cuando l registro de conteo se llena:

ms s sobreflujo por Tiempo_ _ =64µ *256=16.38 Por lo tanto: 61 04 . 61 38 . 16 1 1 _ _ _ _ _ = = ≈ ms s s acumular para s sobreflujo de Número

El quitar 0.04 se refleja en un error de:

s ms s Errors 16.38 10µ 61 1

1 = − = , por cada segundo

Que en 10 minutos representa:

ms s s Error10min =10µ *600 =6 % 001 . 0 600 100 * 6 % 10min = = s ms

La rutina de atención a la interrupción de “sobre flujo”, lleva un conteo del número de veces que se ha entrado en ella. Cuando se ha entrado 61 veces (que es el tiempo equivalente a 1 segundo) incrementa un contador, que es el encargado de llevar los segundos y minutos. Y en cada segundo se manda el estado de este contador hacia el display para actualizar la lectura del tiempo.

4.4.2.2 Rutina de despliegue.

El display empleado es de cristal líquido, 16 caracteres por 2 renglones y con microcontrolador integrado. Por ello, el despliegue de datos se lleva a cabo mediante ciertas palabras de control. Para poder comunicarse con el AVR 2313, el display consta de 8 líneas de datos y 3 de control de flujo. Por las líneas de datos circula el código ASCII del caracter que se va a desplegar o un comando. Los caracteres desplegables junto con su código ASCII se muestran en la figura 4.4.

Fig. 4.4 Caracteres imprimibles en el LCD.

Las líneas de control son RS, R/W y E, estas líneas sirven para controlar el flujo y tipo de datos que circulan en el bus de datos del display. Mediante RS se le indica si los datos en el BUS son de control (0) o un caracter (1). R/W es para determinar si se va a leer una localidad de la memoria del display o si se va a mandar un comando o caracter. Por último, E sirve como un comando de ejecución con el cual se acepta el código propuesto en el BUS de datos.

4.4.2.3 Rutina de atención al teclado.

En la rutina del teclado se utiliza una de las interrupciones externas del microcontrolador. Esto sirve para evitar el rastreo continuo del teclado, lo cual consume tiempo y recursos. Al emplear la interrupción, el teclado solo es rastreado cuando se presiona una tecla.

En el diagrama de la figura 4.3 podemos observar que existen 4 diodos conectados a 4 líneas del BUS de datos, los cátodos de los diodos están a un 1 lógico mediante la programación del microcontrolador, las 4 líneas restantes tienen un nivel de 0 lógico. Cuando se presiona una tecla, se unen una línea con una columna del teclado, esto es, el cátodo de uno de los 4 diodos cambia de 1 a 0 y este cambio activa la interrupción externa del microcontrolador provocando que el teclado sea rastreado para detectar cual fue la tecla presionada.

Para determinar cual fue la tecla presionada se procede como se indica a continuación:

1. Una vez activada la interrupción, se inicializa una variable “tecla” con FFH, este valor limpia la variable.

2. El display se encuentra desactivado ya que solo es activado para desplegar, por lo que se saca por el BUS 01111111B para que exista un 0 solo en una de las columnas del teclado (figura 4.3).

3. Supongamos que la tecla presionada fue en la coordenada C3-R2, ahora se lee el estado de BUS y si no se presionó tecla dentro de la columna 1 (Que es el caso) el BUS será leído línea por línea como 1 lógico provocando que el microcontrolador ignore el valor y continúe con el rastreo.

4. Ahora se saca por el BUS 1011111B y se lee de nuevo el BUS, al no existir tecla presionada en la columna 2, el valor de “tecla” permanece con FFH. 5. Es hasta que se saca por el BUS 11011111B cuando se leerá un valor diferente

de FFH, en este caso se leerá 11111101B, dependiendo de la línea en la que se detectó el 0 y la columna que está activada, se le asigna un valor nuevo a la variable “tecla” éste valor está entre 1 y 16.

6. El microcontrolador continua con el rastreo de la última columna y al no existir tecla presionada en ella, el valor de “tecla” no es reemplazado.

7. Al final del rastreo “tecla contiene un número entre 0 y 16 el cual es empleado para direccional una tabla de datos en la EEPROM (Previamente programada) que contiene el dígito real de la tecla presionada, este valor se le asigna ahora a “tecla”.

4.5 Matriz de láseres.

Documento similar