TEMPORIZADOR DIGITAL

    

Introducción

 

Programa del PIC16f84

Esquema del Circuito

Pistas

Componentes Utilizados

Documentación

Información del PIC

Diseñado por...



 

 

Introducción

Desde el principio de los tiempos, en las épocas en las que Grecia y Roma eran capitales culturales de todo el mundo el hombre tuvo la obsesión de medir con precisión todo aquello que se encontraba a su paso. Así pues se medían las distancias, pesos, tamaños, profundidades, alturas, etc... y como no el Tiempo fue una de esas magnitudes que el hombre encontró necesario y muy útil medir, pero al mismo tiempo era una magnitud difícil. En tiempos antiguos (no sabría decir fechas exactas) se empezó a utilizar el reloj solar que era un instrumento que señalaba las diversas horas del día por la sombra que un estilo (barra) arrojaba sobre una superficie debidamente marcada. Después se utilizó el reloj de arena que mediante dos ampolletas (vasijas) unidas por un cuello medía el tiempo por medio de la arena que caía de una a otra. Más adelante se utilizaron los relojes de péndulo que utilizaban un mecanismo bastante más complejo que a su vez dio lugar a los relojes de pulsera (analógicos) que utilizaban (y se siguen utilizando en la actualidad) tres manillas: la más larga mide los minutos, la más pequeña mide las horas y la más delgada mide los segundos. Con estos relojes se consiguió una precisión muy alta pero no tan alta como la que posteriormente conseguiría el reloj digital, que a parte de ser más preciso que el analógico, representaba una mayor comodidad a la hora de su lectura.

Pues bien este proyecto está basado en un reloj digital pero no es exactamente un reloj. Una de las aplicaciones más importantes que ha tenido el reloj digital ha sido el Cronómetro digital en el cúal no medimos el tiempo simplemente, sino que medimos el tiempo que nosotros decidamos medir, y a su vez el cronómetro aplicado a cualquier tipo de electrodoméstico o aparato electrónico de precisión es lo que llamamos Temporizador que estamos tan acostumbrados a verlos en microondas y en tantos instrumentos electrónicos. El Temporizador que presento tiene como función hacer una cuenta regresiva y cuando llegue a cero que nos avise con una alarma óptica. Veamos pues cúal es el proceso.




 

Esquema del circuito

El Esquema del circuito del Temporizador digital ha sido realizado con la ayuda de EAGLE que es un programa de diseño de circuitos impresos por ordenador con el cúal se puede hacer un primer diseño teórico del circuito, el diseño de un posterior circuito impreso y sacar plantillas de perforaciones y máscaras de soldadura. No obstante, para el mejor entendimiento de cómo se hacen los diseños aquí se puede descargar un pequeño Manual de EAGLE que sirve de ayuda para futuros diseños.





 

Componentes Utilizados

TIPO/ REFERENCIA

Encapsulado

LIBRERÍA

DENOMINACIÓN / ANOTACIONES

UNIDADES

PRECIO/

UNIDAD en €

TOTAL en €

PIC16F84A

 

Microchip

Microcontrolador 

1

6,61

6,61

4511N 

DIL16

45xx

BCD to 7-segment Latch/Decoder/ Driver

1

0,29

0,29

RESISTOR

(180W )

0204/5

rcl

RESISTOR, American Symbol

7

0,02

0,14

RESISTOR

(10kW )

0204/5

rcl

RESISTOR, American Symbol

9

0,02

0,18

BUS 40

CON 40

Con-harting

CONNECTOR

1

0,11

0,11

ZUMBADOR

AL 11 P

buzzer

------------------------

1

1,12

1,12

Display 7-SEG

7SEG-13

Special

7-Segment DISPLAY

4

0,66

2,64

TRANSISTOR

(BC107)

TO18

Transitor-npn

NPN Transistor

5

0,29

1,45

PULSADOR

DT6

Switch-misc

ITT Switch

4

0,25

1,00

VCC

 

Supply1

PE*

--------

 

-----------

GND

 

Supply1

V+*

--------

 

-----------

                                                                    TOTAL =10,38  



 

Información sobre el pic

Los microcontroladores PIC, fabricados por Microchip, son productos de microelectrónica diseñados para facilitar y abaratar el control industrial. Los PIC pueden considerarse elementos de control incrustado y hoy en día se encuentran en amplios sectores del mercado internacional. A continuación muestro las características más importantes de este microcontrolador, no obstante para obtener una información más completa y detallada aquí dejo en formato zip el Manual del PIC16f84 procedente de Microchip.


FLASH-PROGRAMA

MEMORIA-DATOS

EEPROM-DATOS

PIC16F83 512 bytes

36 bytes

64 bytes

PIC16F84 1 K bytes

68 bytes

64 bytes


Patillaje del PIC16F8X:




Nº pin

Nombre

Tipo (E/S/A)

Tipo de buffer

Descripción

16

OSC1/CLKIN

E

ST/CMOS (3)

entrada del cristal oscilador / entrada externa de reloj

15

OSC2/CLKOUT

S

-

Salida del cristal oscilador. En el modo de oscilación por cristal se conecta al cristal o resonador. En modo RC OSC2 proporciona CLKOUT (salida de reloj), que posee 1/4 de la frecuencia de OSC1, y representa el ciclo de instrucción.

4

MCLR'

E/A

ST

Entrada de reset / entrada de voltaje de programación. Este pin es un reset activo a nivel lógico bajo del dispositivo.

17
18
1
2
3

RA0
RA1
RA2
RA3
RA4/T0CKI

E/S
E/S
E/S
E/S
E/S

TTL
TTL
TTL
TTL
ST

PORTA es un puerto de E/S bidireccional

Puede ser seleccionado también para ser la entrada de reloj al contador/temporizador TMR0. La salida es de colector abierto.

6
7
8
9
10
11
12
13

RB0/INT
RB1
RB2
RB3
RB4
RB5
RB6
RB7

E/S
E/S
E/S
E/S
E/S
E/S
E/S
E/S

TTL/ST (1)
TTL
TTL
TTL
TTL
TTL
TTL/ST (2)
TTL/ST (2)

PORTB es un puerto de E/S bidireccional que puede ser programado para levantar internamente todas las entradas.

RB0/INT puede ser seleccionado como un pin de interrupción externa

RB4 a RB7 son pines de interrupción por cambio de estado.
RB6 es la entrada de reloj de programación y RB7 la entrada de programación serie.

5

Vss

A

-

Referencia de tierra (masa) para todos los pines lógicos de E/S.

14

Vdd

A

-

Alimentación positiva para todos los pines lógicos de E/S.

Leyenda y notas:

  E=entrada  S=salida  E/S=entrada/salida   A=alimentación
  - =no empleado      TTL=entrada TTL      ST=entrada Schmitt

(1) Este buffer es una entrada Schmitt cuando se configura como interrupción externa
(2) Este buffer es una entrada Schmitt cuando se emplea en el modo de programación serie
(3) Este buffer es una entrada Schmitt cuando se configura en el modo de oscilación RC y como entrada CMOS





Arquitectura Interna

Los microcontroladores PIC utilizan la arquitectura Harvard, la cual separa la memoria de programa de la memoria de datos. Esto hace que el dispositivo tenga un bus de datos y un bus de memoria de programa, hecho que permite acceder a ambos simultáneamente. En el caso de la memoria de programa es interna, ya que se encuentra en forma de EPROM o FLASH dentro del propio PIC.

Otra característica reseñable es que las instrucciones en los PIC son de 14 bits y no de 8, permitiendo instrucciones de palabra única con operación y operando en la misma palabra.

Esta estructura, acompañada de un pipeline, permite que las instrucciones se ejecuten en un sólo ciclo de reloj, salvo en el caso de saltos/rupturas de programa. Lo que se hace internamente es que mientras se ejecuta la instrucción actual se carga la siguiente instrucción en el pipeline, con lo que se alcanza una alta velocidad de ejecución.

En cuanto a los registros los PIC pueden direccionarse tanto directa como indirectamente. Todos los registros de función especial, incluyendo el contador de programa, están accesibles en la memoria de datos y pueden ser operados de cualquier forma y empleando cualquier modo de direccionamiento (ortogonalización).

Igualmente, todos los elementos del sistema (temporizadores, puertos de e/s, etc) están implementados como registros

La unidad lógica aritmética (ALU)

Los PIC poseen una ALU de 8 bits y un registro de trabajo (W) de 8 bits, pudiéndose efectuar operaciones aritméticas y booleanas entre el registro de trabajo y cualquier otro registro. Por naturaleza los datos se operan en complemento a 2, a menos que se diga lo contrario.

En función de las instrucciones ejecutadas la ALU puede afectar los valores de los siguientes registros:

  • Acarreo (C)

  • Acarreo de dígito (DC)

  • Bit Cero (Z) del registro de estado.

Organización de la memoria

Hay dos bloques de memoria en el PIC16F8x. Éstas son la memoria del programa y la memoria de datos. Cada bloque posee su propio bus, con la finalidad que el acceso para cada bloque pueda ocurrir durante el mismo ciclo del oscilador.

 


Memoria de programa

La memoria de programa está organizada en palabras de 14 bits y es del tipo FLASH. Esta memoria es de sólo lectura y únicamente se ejecutará el código contenido en ella. El vector de reset se encuentra en la posición 0000h y el de interrupciones en la 0004h, por lo que la memoria de usuario se extiende desde la dirección 0005h.

Memoria de Datos


La memoria de datos está dividida en Registros de Propósito General (GPR) y los Registros de Función Especiales (SFR).Los SFR controlan la operación del dispositivo.

Para el estudio de esta memoria se suele dividir virtualmente la misma en dos bancos, tal y como podemos ver en el gráfico adjunto. De esta forma los registros GPR están agrupados entre 00h-0Bh y 80h-8Bh. Los registros de propósito general pueden ser accedidos desde 0Ch-2Fh o 8Ch-AFh, aunque se recomienda siempre el primer intervalo.

Las zonas de memoria 30h-7Fh y B0h-FFh no son empleadas y devuelven 0 en lectura.

El área de memoria de datos también contiene la memoria de datos EEPROM. Esta memoria no está directamente mapeada en la memoria de datos, pero está indirectamente mapeada. Esto es, un puntero de dirección indirecta especifica la dirección de la memoria de datos EEPROM para lectura/escritura. Los 64 bytes de memoria de datos EEPROM tienen el rango de dirección 00h-3Fh.

Para acceder a la EEPROM en lectura y escritura empleamos dos registros, que forman el puntero de dirección indirecta:

EEDATA (0008h), para datos
EEADR (0009h), para direcciones

Para definir el modo de funcionamiento empleamos los registro especiales:

EECON1 (0088h)
EECON2 (0089h)

 

Puertos de E/S

Disponemos de dos puertos de entrada y salida (E/S).

Puerto A

Posee 5 líneas (RA0 a RA4), en la que RA4 o T0CKI es compartida con la entrada para el temporizador 0 (TMR0).

Puerto B

Posee 8 líneas de E/S (RB0 a RB7), en la que la línea RB0 o INT es compartida con la entrada de interrupción externa.








Programa del pic16f84

Para programar el microcontrolador hemos utilizado un lenguaje de programación de bajo nivel como es Ensamblador ya que es el que mejor se adapta a las características del PIC16F84. Con tan sólo 35 instrucciones somos capaces de dar todas las ordenes que queramos que haga el PIC. Estas órdenes tienen su base fundamental en operaciones aritmético-lógicas cuyos operandos son los Bits.

En el programa del Temporizador digital hay varios puntos fuertes como por ejemplo:

Tratamiento de Interrupciones (que se llama desde el programa principal) que va a ser la base del funcionamiento del mismo ya que es en esta parte dónde se controla que la cuenta regresiva se realice correctamente y sin saltos extraños. La cuenta por defecto empezará en '9.999' e irá disminuyendo de segundo en segundo hasta que llegue a '0' . Por supuesto, la cuenta se puede modificar para que empiece en cualquier otro número que deseemos en los correspondientes pulsadores.

Rutina Start-Stop, también se llama desde el programa principal y va unida a un pulsador desde el cuál podremos iniciar o parar la cuenta en el momento que deseemos. Utilizamos una variable llamada start por la que comprobamos si se ha pulsado anteriormente y partir del dato que obtengamos se decide si debe de continuar la marcha o parar la cuenta. Para parar la cuenta deshabilitamos las interrupciones.

Rutina Todo_0, en ella vamos comprobando que todas las unidades del temporizador han llegado a '0' y cuando se produce esa circunstancia deshabilitamos las interrupciones, al igual que en el caso anterior, para que la cuenta pare. Además de eso, desde esa rutina llamamos a su vez a otra que se va a encargar de avisar, ya sea óptica o acústicamente, de que la cuenta ha finalizado pudiendo iniciarla de nuevo cuando se desee.

Otros punto que se llama desde el programa principal es la rutina que muestra los dígitos por los Displays de 7 segmentos por medio del Puerto B que no representa mayor complicación. Y por último, y no por ello menos importante, también vamos a controlar los distintos pulsadores que nos van a dar la oportunidad de modificar el tiempo a partir del cuál queremos que empiece la cuenta atrás. Eso lo hacemos con tres pulsadores: uno modifica las “unidades de segundo”, otro las “decenas de segundo” y otro las “centenas de segundo” y los “millares de segundo” al mismo tiempo, es decir, de 1.000 en 1.000.

A continuación dejo el programa del Temporizador Digital para que os lo podáis guardar.

También son de gran utilidad el Esquemático del circuito y el diagrama de Pistas.





pistas








Documentación

Para la realización de este proyecto ha sido necesario tener en cuenta alguna documentación de interés en relación a los componentes utilizados para su montaje:




 

 


 

 

Diseñado por ...


Este proyecto ha sido diseñado por Iván Ecija, alumno de segundo curso del Ciclo de Grado Superior de Desarrollo de Productos Electrónicos (D.P.E) bajo la tutoría y supervisión del Profesor Juan Muñoz Barbo en la asignatura de Desarrollo de Proyectos de Productos Electrónicos.


Consultas