Informe de laboratorio contadores arduino...
TIMERS Felipe García Granados, 20131007129 José Cruz Reyes, 20132007074 Mauricio Rojas, 20132007049 Universidad Universidad Distrital Francisco José de Caldas Bogotá DC, Colombia
[email protected] [email protected] [email protected] .co
[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. 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 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.
OBJETIVOS Comprender en funcionamiento y propósito de los los temporizadores.
III.
MATERIALES Arduino uno Protoboard LDR(fotoresistencia) Cable.
IV.
MARCO TEÓRICO
TIMER Un temporizador no es más que un contador 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 microcontroladores tienen en esencia tres tipos de contadores y : Timer0, Timer1 y Timer2 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 temporizador5 Los temporizadores 0, 1 y 2 son idénticos a los ATmega168 / 328, y temporizadores temporizadores 3, 4 y 5 son ambos 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
AttachInterrupt (función, período)
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.
Asigna una función a ser llamada cada interrupción generada por el temporizador . Si no se especifica un período, se va a ut ilizar el período definido en el arranque o setPeriod .
TIMER2
V.
Timer2 es un temporizador de 8 bits que es muy similar a Timer0. Se utiliza por el Arduino tone()función.
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.
CONFIGURACIÓN DE
CÓDIGO
Con el siguiente código observamos el funcionamiento del timer 0 AVR como contador. Modificación de registros atmel studio (v7) Se ejecuta el programa atmel studio, en este caso se utilizó la versión 7. La figura muestra como es el entorno gráfico, en que se realizó la práctica.
LOS TEM PORIZADORES
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 utiliza Timer1 la analogWrite () en los pines 9 y 10 de la Arduino dejar de funcionar.
Figura No 1. Entorno visual Atmel Ya abierto el atmel creamos un proyecto nuevo. Abrirá un recuadro mostrando los tipos de proyectos que se pueden realizar, en nuestro caso escogimos “GCC Executable Proyect”.
SetPeriod (período) Modifica el período de interrupción.
Figura No 2. Recuadro de opc iones
Ya dándole nombre al proyecto se elige el dispositivo, en este caso se seleccionó el Arduino UNO, el cual tiene un µControlador Tmega328p.
Procedemos a la respectiva co mpilación.
Figura No 5. Ventana de compilación Damos en guardar, y procedemos a subirla al Arduino. Figura No 3. Selección del micro controlador Abre el editor y se procede a realizar el código.
Buscamos donde está guardado el Arduino e identificamos el archivo de dependencia .hex Este archivo es el cual se procede a subirlo al Arduino UNO, por medio del compilador XLoader.
Figura No 6. Ventana Xload Seleccionado el adecuado puerto COM según este conectado el Arduino UNO, y oprimiendo el botón upload, quedara subido el programa de registros sactisfactoriamente.
Figura No 4. Ventana para escribir el codigo
VI.
SIMULACIONES
Figura No 10. Numero 13 representado en formato binario por medio del led.
Figura No 7. Numero 1 representado en formato binario por medio del led.
Figura No 11. Numero 31 representado en formato binario por medio del led.
Figura No 8. Numero 5 representado en formato binario por medio del led.
Figura No 12. Numero 0 representado en formato binario por medio del led.
Figura No 9. Numero 10 representado en formato binario por medio del led.
CONCLUSIONES
CAMBIANDO EL PRESCALER A 8
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 utilizar un pre-escalador, lo que le permite dividir su señal de reloj por varias
Figura No 13. Numero 27 representado en formato binario por medio del led.
potencias de dos, lo que aumenta el período del temporizador para así seguir ejecutando instrucciones (CTC).
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 tiempo
Figura No 14. Numero 31 representado en formato binario por medio del led.
programado se cumple la interrupción salta y se ejecuta limpiamente.
VII.
IMPLEMENTACIÓN PRÁCTICA
DE
LA
Si utilizamos los timers, muchas de las instrucciones que dependen de ellos dejaran de funcionar, entre estos están, los pines PWM y analogWrite() y la librería Servo.
REFERENCIAS
Figura No 15. Leds que representan el número 31 en formato binario y el conteo.
http://playground.arduino.cc/ArduinoNot ebookTraduccion/Variables http://www.prometec.net/timers/ https://circuits.io/circuits/2639532