Timer Informe

SEMÁFORO DE TRES COLORES Felipe García Granados, 20131007129 José Cruz Reyes, 20132007074 Mauricio Rojas, 20132007049 Un

Views 73 Downloads 0 File size 773KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

SEMÁFORO DE TRES COLORES Felipe García Granados, 20131007129 José Cruz Reyes, 20132007074 Mauricio Rojas, 20132007049 Universidad Distrital Francisco José de Caldas Bogotá DC, Colombia [email protected] [email protected] [email protected]

I.

INTRODUCCIÓN

En esta práctica proponemos en uso la función timer, la cual nos permite establecer un temporizador para activar una interrupción en un determinado momento en el futuro, cuando llegue ese momento, puede utilizar la interrupción como una alerta, ejecutar código diferente, o cambiar un pin de salida. Lo interesante de los temporizadores es que al igual que las interrupciones externas, se ejecutan de forma asíncrona, o de forma independiente de su programa principal. En lugar de ejecutar un bucle o varias veces llamando millis (), puede dejar que un temporizador haga el trabajo para usted, mientras que su código hace otras cosas.

II.   III.    

OBJETIVOS Comprender en funcionamiento y propósito de los temporizadores. MATERIALES Arduino uno Protoboard LDR(fotoresistencia) Cable.

IV.

MARCO TEÓRICO

TIMER Un temporizador no es más que un contador que se incrementa cada intervalo de tiempo. Los temporizadores funcionan como un reloj que se puede utilizar para medir el tiempo, medir la duración de ciertos eventos, entre otras aplicaciones. Arduino está equipado con un microcontralodor ATmega168 o ATmega328 (que sólo se diferencian en la cantidad de memoria interna). Estos microcontroladores tienen en esencia tres tipos de contadores y : Timer0, Timer1 y Timer2 , Timer0 y Timer2 son contadores de 8 bits, es decir, tener 0255, y Timer1 es un contador de 16 bits, que cuenta desde 0 a 65535. El Arduino Mega está equipado con ATmega1280 o Atmega2560 (que sólo difieren en la cantidad de memoria). Tienen 6 temporizadores: Timer0, Timer1, Temporizador 2 Temporizador 3, timer4, temporizador5 Los temporizadores 0, 1 y 2 son idénticos a los ATmega168 / 328, y temporizadores 3, 4 y 5 son ambos de 16 bits. TIMER0

Timer0 es un temporizador de 8 bits, es decir, su registro contador puede grabar un valor máximo de 255 (el mismo que un byte de 8 bits sin signo). Timer0 es utilizado por las funciones nativas de temporización tales como Arduino delay()y millis(), por lo que los usuarios de Arduino no debería meterse con él a menos que se sienta cómodo con las consecuencias. TIMER1 Timer1 es un temporizador de 16 bits, con un valor de contador máximo de 65.535 (un entero de 16 bits). La biblioteca Arduino Servo utiliza este temporizador, así que ten cuidado si lo usa en sus proyectos.

utiliza Timer1 la analogWrite () en los pines 9 y 10 de la Arduino dejar de funcionar. SetPeriod (período) Modifica el período de interrupción.

AttachInterrupt (función, período) Asigna una función a ser llamada cada interrupción generada por el temporizador. Si no se especifica un período, se va a utilizar el período definido en el arranque o setPeriod .

TIMER2 Timer2 es un temporizador de 8 bits que es muy similar a Timer0. Se utiliza por el Arduino tone()función.

V.

CÓDIGO

Con siguiente código se controla las tres luces led de un semáforo:

TEMPORIZADOR 3, TIMER4, TEMPORIZADOR5 El AVR ATmega1280 y Atmega2560 (que se encuentra en las variantes de Arduino Mega) tienen otros tres temporizadores adicionales. Estos son todos los temporizadores de 16 bits, y funcionan de manera similar a Timer1.

VI.

SIMULACIONES A continuación se muestran las simulaciones del semáforo mediante la función dealay.

CONFIGURACIÓN DE LOS TEMPORIZADORES

Ajustar en "manual" los temporizadores es bastante aburrido y laborioso ya que requiere la manipulación de diversos registros de microcontrolador, pero afortunadamente hay algunas librerías que le permiten hacer este proceso de manera muy sencilla. Las principales funciones de la biblioteca son: Inicializar (período) Este método debe ser llamado antes que cualquier otro método, ya que es responsable de la configuración inicial. Puede informar opcionalmente el intervalo (en microsegundos) en el que se debe generar la interrupción. El tiempo aceptable más bajo es de 1 microsegundo, y el tiempo máximo es de 8, 388,480 microsegundos, o aproximadamente 8,3 segundos. Cuando ningún valor no es informado, se le asignará el valor predeterminado de 1.000.000 microsegundos (1) segudo. Cuando se

Figura No 1. Led verde encendido con función delay

Figura No 2. Led amarillo encendido con función delay

Figura No 5. Led verde encendido con función millis

Figura No 3. Led rojo encendido con función delay

Figura No 6. Led rojo encendido con función millis

Figura No 4. Led blanco encendido con función delay

Figura No 7. Led amarillo encendido con función millis

VII.

IMPLEMENTACIÓN PRÁCTICA

DE

LA

El primer ######################################## ######################################## ######################################## ########################################

Figura No 9. Led amarillo encendido con función millis

Figura No 8. Led rojo encendido con función millis

Figura No 10. Led verde encendido con función millis

Figura No 8. Leds amarilloy verde encendido con función millis

Figura No 11. Led rojo encendido con función delay

Figura No 12. Leds verde y amarillo encendido con función delay

Figura No 15. Led verde encendido con función delay

CONCLUSIONES 

En lugar de ejecutar un bucle o varias veces hacer la función millis y esperar a que finalice sin que se pueda hacer algo más podemos dejar que un temporizador haga el trabajo, mientras que el código hace otras cosas.



Se puede ajustar el temporizador para

Figura No 13. Led rojo encendido con función delay

utilizar

un pre-escalador,

lo

que

le

permite dividir su señal de reloj por varias potencias de dos, lo que aumenta el período del temporizador para así seguir ejecutando instrucciones (CTC).

Figura No 14. Led amarillo encendido con función delay



La medida del tiempo es muy precisa.



Código limpio y elegante. No tenemos que calcular en el loop si estaremos

perdiéndonos algo o no. Cuando el

dejaran de funcionar, entre estos están,

tiempo

los pines PWM y analogWrite() y la

programado

interrupción

salta

se y

cumple se

la

ejecuta

librería Servo.

limpiamente. REFERENCIAS  

Si utilizamos los timers, muchas de las instrucciones que dependen de ellos





http://playground.arduino.cc/ArduinoNot ebookTraduccion/Variables http://www.prometec.net/timers/ https://circuits.io/circuits/2639532