You are on page 1of 12

USO DEL TIMER EN SISTEMAS EMBEBIDOS

Brcenas Gonzlez Erick Aldair, Valega Velilla Harold Yamith, Garca Clavijo
Anibal Andres, Dilzon Zuleta
UNIVERSIDAD POPULAR DEL CESAR

RESUMEN
Se realiz este laboratorio con el fin de aprender a jugar y utilizar los timer
de los microcontroladores (los cuales en este caso utilizamos Pic y Arduino
Mega) y a su vez poder realizar procesos matemticos usndolos como
contador o temporizador y mostrarlos en una LCD.
Un microcontrolador es un circuito integrado programable, capaz de
ejecutar las rdenes grabadas en su memoria. Est compuesto de varios
bloques funcionales, los cuales cumplen una tarea especfica. Un
microcontrolador incluye en su interior las tres principales unidades
funcionales
de
una computadora: unidad
central
de
procesamiento, memoria y perifricos de entrada/salida.
Palabras claves: Microcontrolador, Picc, PCW Compiler, proteus, lcd,
Arduino.
INTRODUCCIN
Los avances electrnicos han servido de gran importancia a la ciencia dando
aportes a los aparatos de mediciones que el hombre ha inventado en los
tiempos antiguos, en este caso podemos referirnos a Arduino como una
plataforma
de hardware
libre,
basada
en
una placa con
un microcontrolador y un entorno de desarrollo, diseada para facilitar el
uso de la electrnica en proyectos multidisciplinares y a Pic como una
familia de microcontroladores tipo RISC fabricados por Microchip Technology
Inc. y derivados del PIC1650, originalmente desarrollado por la divisin
de microelectrnica de General Instrument.3
El compilador de C que vamos a utilizar es el PCW de la casa CCS Inc y el
compilador de Arduino es ARDUINO. A su vez, el compilador lo integraremos
en un entorno de desarrollo integrado (IDE) que nos va a permitir
desarrollar todas y cada una de las fases que se compone este laboratorio,
desde la edicin hasta la compilacin pasando por la depuracin de errores.
La ltima fase, a excepcin de la depuracin y retoques hardware finales,
ser programar el PIC o ARDUINO.

OBJETIVOS GENERALES
Realizar Prcticas de uso de TIMER en Sistemas Embebidos, Usndolo como
contador, y temporizador.
OBJETIVOS ESPECIFICOS

Desarrollar un cdigo en C utilizando el PIC 16f628A y en Arduino que


pueda encender un led con diferentes frecuencia al pulsar un botn.
Desarrollar un cdigo en que muestre las minutos y segundos en un
desplegador de 7 segmentos
Desarrollar un cdigo en C y ARDUINO que mida la frecuencia de una
seal, luego mostrarla en una LC

METODOLOGIA
La metodologa a desarrollar ser la siguiente:
1. Se desarrollara primeramente el programa ya sea en Picc o en
Arduino
2. Se simulara el programa en Proteus con sus respectivas conexiones.
3. Se proceder a realizar el montaje fsico de nuestro laboratorio.

MARCO TERICO
En
los
microcontroladores
Pic
el Timer
1 es
un
mdulo temporizador/contador de 16 bits, que consiste en dos registros de
8 bits (TMR1H y TMR1L) que son de lectura y escritura. Este mdulo
incrementa su cuenta desde 0x000 hasta 0xFFFF y al desbordarse vuelve
a 0x0000. Al presentarse el desborde la bandera de interrupcin TMR1IF se
pone a 1 y, si est habilitada, la interrupcin se presenta.
Este mdulo al igual que el Timer 0 puede funcionar en modo temporizador
y en modo contador. En modo temporizador el par de registros TMR1 se
incrementa en cada ciclo de instruccin, este modo se selecciona poniendo
a 0 el bit TMR1CS del registro T1CON.En modo contador el par de
registros TMR1 se incrementa en cada flanco ascendente de una seal de
reloj externa, este modo se selecciona poniendo a 1 el bit TMR1CS del
registro T1CON.

RESULTADOS OBTENIDOS
Se presentala simulacin del circuito de visualizacin del control manual en
el ambiente de simulacin ISSIS de Proteus, el diseo y construccin del
sistema de medicin automtica de tiempos experimentales para el clculo
de variables fsicas.

PRACTICA 1
Hacer un programa y probarlo en el protoboard que encienda y apague un
LED con una frecuencia de 1ms, 10ms, 100ms y 1seg. Esta frecuencia
cambia al pulsar un botn en el orden antes mencionado. Comprobar con el
osciloscopio que se tiene el tiempo deseado. Usando el Timer del
microcontrolador. Realizarlo en PIC y en Arduino (void loop)

1.
2.
3.
4.

Diseo del cdigo en Picc:

Usamos el Pic 16f628A, un cristal de 4 MHz y configuramos los fuses


Declaramos las variables cont (de 16 bits), selecf (de 8 bits)
Cambiamos el estado del pin a0
Declaramos las interrupciones, luego incrementamos la variable
selecf y cuando esta sea mayor a 3 se reinicie en 0
5. Declaramos las interrupciones del Pic por Timer
6. Nuestro timer se dispara cada 1ms, de acuerdo a esto segn
presionamos nuestro botn va incrementando la variable selecf que
nos llevara a cada uno de los casos para variar la frecuencia de
encendido
de
nuestro
led.
{(Timer1=65536(Periodo/CM*Preescala)=65411==>1ms}

Simulacin del circuito de visualizacin del control manual en


el ambiente ISIS

Diseo del cdigo en Arduino:

1. Incluimos la librera del timer 1


2. Declaramos cuales pines se van a utilizar para el led y para el
pulsador, tambien podemos el led en low para que comience apagado
3. Creamos las variables Harold y estado y las inicializamos en 1 y 0
respectivamente
4. Ponemos el pin donde se encuentra el led como salida y el pin donde
se encuentra el pulsador como entrada.
5. Creamos una funcin que cambie el estado led
6. Leemos el estado del pulsador, si pulsador es igual a alto y estado
igual a bajo incrementamos la variable Harold en 1
7. Luego si Harold es igual a 1 el timer se disparara en 1 ms, si es igual
a 2 el timer se disparara 10ms, si es igual a 3 a 100ms, si es igual a 4
a 1 segundo y si es mayor que 4 harold vuelve a tomar el valor de 1.

Simulacin del circuito de visualizacin del control manual en


el ambiente ISIS

PRACTICA 2
Hacer un reloj que muestre los minutos y segundos en un desplegador de 7
segmentos (4 display). Cuando se activa una entrada externa BT1 Resetea
los contadores a cero. Cuando se presione otro botn BT2 la velocidad en
que aumentan el reloj vara de 1ms, 10ms, 100ms y 1seg. Usando el Timer
del Microcontrolador.

Diseo del cdigo en Picc:

1. Incluimos las libreras del Pic a utilizar, declaramos los fuses y usamos
un cristal de 4 Mega Hertz
2. Declaramos los puertos y registros especiales del Pic con la lcd
3. Creamos las variables cont, seg1, selecf, seg2, min1 y min2 y las
inicializamos en 0
4. Al pin E0 le asignamos led_estate
5. Declaramos las interrupciones del Pic externas y a su vez la variable
selecf va incrementando en 1 hasta 3, cuando sea mayor a 3 se
reinicia en 0, para luego ms adelante poder seleccionar la frecuencia
6. Luego pregunto por el flanco de bajada de cont, seg1, seg2, min1 y
min2
7. Declaramos las interrupciones del Pic por Timer. La variable cont va
incrementando en 1. Luego depende el valor que valla tomando
selecf va cayendo en los diferentes casos.
8. Luego habilitamos las resistencias de Pullupp, el puerto b0 como
entrada, como flanco de bajada y habilitamos las interrupciones
9. Calculamos
el
timer
a
1ms
Timer1=65536(Periodo/CM*Preescalar)=65411==>1ms
10.Habilitamos las interrupciones globales, y ponemos el puerto e0 como
salida e inicializando en 0
11.Realizamos ciclos PARA para as poder realizar la el reloj ya que la
variable min2 solo puede incrementar hasta 5, la variable min1 puede
incrementar hasta 9, la variable seg2 hasta 5 y la variable seg 1
hasta 9.
Caso0: Si cont es mayor o igual a 1, reinicia la variable cont y va
incrementando la variable seg1 en 1, cambiamos el estado del led. Si
seg1 es igual a 10 aumentamos la variable seg2, si seg2 es igual a 6
aumentamos la variable min1, si min1 es igual a 10 aumentamos la
variable min2
Caso1: Si cont es mayor o igual a 10, reinicia la variable cont y va
incrementando la variable seg1 en 1, cambiamos el estado del led. Si
seg1 es igual a 10 aumentamos la variable seg2, si seg2 es igual a 6

aumentamos la variable min1, si min1 es igual a 10 aumentamos la


variable min2
Caso2: Si cont es mayor o igual a 100, reinicia la variable cont y va
incrementando la variable seg1 en 1, cambiamos el estado del led. Si
seg1 es igual a 10 aumentamos la variable seg2, si seg2 es igual a 6
aumentamos la variable min1, si min1 es igual a 10 aumentamos la
variable min2
Caso3: Si cont es mayor o igual a 1000, reinicia la variable cont y va
incrementando la variable seg1 en 1, cambiamos el estado del led. Si
seg1 es igual a 10 aumentamos la variable seg2, si seg2 es igual a 6
aumentamos la variable min1, si min1 es igual a 10 aumentamos la
variable min2

Simulacin del circuito de visualizacin del control manual en


el ambiente ISIS

PRACTICA 4
Hacer un programa que mida la frecuencia de una seal, el resultado se
debe mostrar en una pantalla LCD. Usando un Arduino
Diseo del cdigo en Arduino:
1. Incluimos la librera LiquidCrystal
2. Asignamos los pin de la LCD
3. Declaramos las variables cont1, cont2, cont3, ciclo1 y ciclo2 y las
inicializamos en 0
4. Luego decimos la posicin en la que va a trabajar la lcd y ponemos en
pin a0 como entrada
5. Se lee el pin a0 y se le asigna a la variable in y se dice que salida
ser igual a cont3/2 y ser una variable de tipo flotante
6. Luego si el micro es igual a cont1 ms 2 Megas, limpie la LCD e
imprima Salida seguido de la palabra Hz (Hertz)

Simulacin del circuito de visualizacin del control manual en


el ambiente ISIS

CONCLUSION
Este Laboratorio fue realizado con el fin de aprender a utilizar y manipular
los timer de los microcontroladores en sistemas embebidos como contador o
como temporizador de esta forma poder controlarlos en nuestros proyectos
mostrando los resultados requeridos como lo fueron en este caso las
prcticas de laboratorio.

You might also like