piano arduino

7
Universidad Autónoma de Ciudad Juárez Instituto de ingeniería y tecnología Examen I Maestro: Juan De Dios Cota Ruiz Materia: Sistemas embebidos Alumno: Martin Eduardo Castro Vega Matricula: 105753 Fecha de entrega: 12 – Marzo – 2014

Upload: martin-castro

Post on 18-Nov-2015

8 views

Category:

Documents


2 download

DESCRIPTION

Como realizar un Piano con Arduino utilizando programacion en base a registros.

TRANSCRIPT

Universidad Autnoma de Ciudad JurezInstituto de ingeniera y tecnologaExamen I

Maestro: Juan De Dios Cota RuizMateria: Sistemas embebidosAlumno: Martin Eduardo Castro VegaMatricula: 105753Fecha de entrega: 12 Marzo 2014

1. Introduccin.Un timer es uno de muchos registros en un microprocesador moderno que simplemente cuenta eventos, es decir, pulsos elctricos.Cada vez que un pulso es aplicado a un contador, el valor en el contador incrementa en uno. Si los pulsos son aplicados en una tasa constante conocida, entonces el contador se convierte en un timer. Conociendo la tasa del pulso y un conteo, se puede fcilmente computar un valor de tiempo. Por ejemplo, si la tasa del pulso es 100 pulsos por segundo (donde cada pulso es 1/100 segundos) y nuestro contador ha contado 20 pulsos, entonces 0.20 segundos han pasado. 20 pulsos/(100 pulsos/segundo) = 0.20 segundos.Para comprender los contadores y timers se debe saber sus lmites, hay dos lmites: las propiedades del pulso (mnima amplitud del pulso y duracin), y el mximo valor al que puede ser contado. Cuando se utiliza el reloj interno (previsto por el microcontrolador), entonces no hay que preocuparse por las propiedades mnimas del pulso. (Sin embargo, deben ser considerados si se trabaja manejando el contador con una seal externa). En arduino existen contadores de 8 bits y 16 bits, esto significa que los de 8 bits pueden contar hasta 2^8-1 o 255, mientras que los de 16 bits pueden contar hasta 2^16-1 o sea hasta 65,535. Cuando el contador alcanza el conteo a 255 o 65,535 respectivamente, este vuelve a empezar desde cero, entonces se dice que hay un desbordamiento en el conteo cuando esto pasa.Si no se para el contador o el timer antes de que alcance el valor mximo, se desborda, o empieza a contar desde cero. A menos que se quiera mantener pista de cada vez que se desborda, no se puede saber el tiempo real. Efectivamente, se extiende el ancho del registro del contador usando software.Es importante definir ciertos trminos. Por ejemplo BOTTOM es el valor 0. Este es el mnimo valor que el contador puede tener. Mientras que TOP es el valor que el contador alcanza cuando vuelve a empezar. MAX es el valor mximo que tiene el contador ya sea que es de 8 bits por lo tanto seria 255 o de un contador de 16 bits 65,535. En ciertos casos el MAX puede ser el TOP y en otros casos el valor del TOP puede ser alcanzado antes de que alcance el valor MAX. [1]2. Registro PORT del Arduino.El contador/timer puede ser registrado por una fuente interna o externa de reloj. El la fuente de reloj es seleccionada por la lgica de seleccin de reloj la cual es controlada por los bits del Clock Select (CS120) localizados en el registro b de control del timer/contador (TCCR1B).TCCR1A Timer/Counter1 Control Register A

Fig. 1 Bits del registro TCCR1ABit 10 WGM1110 Modo de generacin de ondaCombinado con los bits WGM1312 encontrados en el registro TCCR1B, esos bits controlan la secuencia del contador, la fuente para el valor mximo del contador (TOP), y qu tipo de generacin de onda ser usada. Los modos de operacin soportados por la unidad del contador/timer son: modo normal (Contador), borrar timer cuando la comparacin sea igual (CTC), y tres tipos de Pulse Width Modulation (PWM). El modo de operacin se puede observar en la Figura 2.

Fig. 2 Modo de operacin del TimerTCCR1B Timer/Counter1 Control Register B

Fig. 3 Bits del registro TCCR1ABit 43 WGM1312 Modo de generacin de ondaBit 20 CS120 Seleccin del relojLos tres bits de seleccin de reloj seleccionan la fuente de reloj que va a ser usada por el contador/timer.

Fig. 4 Descripcin de bits de seleccin de relojDependiendo de la configuracin de TCCR1A y TCCR1B, se selecciona si hay o no prescaling o si paramos el contador/timer. [2]

3. Procedimiento.El examen consisti en hacer un teclado musical con ocho notas y seis armnicos que dependiendo de la tecla presionada diera una nota, mientras que los armnicos fueron cambiados con un dip switch ingresando el valor del armnico que se quera.La clave fue el modificar el OCR1A para obtener diferentes frecuencias y por ende diferentes sonidos de las notas, dependiendo del valor dado entregaba una frecuencia diferente, al usar el TIMER1 y ser de 16 bits, el valor que poda tomar OCR1A fu entre 0 y 1023, por lo tanto se aument en 1 el valor del registro por cada 0.01 segundos para notar el cambio de la velocidad del motor.La conexin fsica del circuito fue sencilla, constaba de ocho push buttons conectados a las entradas del arduino y conectados a tierra ya que el arduino tena activado los pull-up internos, todo esto aplico de igual manera al dip switch. Mientras que la bocina fue conectada a un transistor npn para poder energizar y que funcionara correctamente, la base del transistor fue conectado a la salida del OCR1A para que funcionara como un switch y energizar la bocina.

Material 8 Push button 1 Dip Switch de 8 pines 1 Resistencia de 4.7k 1 transistor npn 2n2222 1 Bocina de 75W Arduino Uno R3 Fuente de poderEl circuito se puede visualizar en la Figura 5.

Fig. 5 Circuito esquemtico del piano

4. Conclusiones.Martin Eduardo Castro Vega. Se comprendi el funcionamiento que tienen los timers en arduino, haciendo uso del TIMER1 que es el que tiene ms resolucin al ser un contador de 16 bits, tambin se entendi el uso que se le puede dar al OCR1A que puede ser modificado para cambiar la frecuencia de la salida del registro. Por ltimo fue de gran ayuda el usar el registro OCR1A ya que permiti el descartar la utilizacin de una interrupcin por software haciendo el programa ms funcional.

5. Bibliografa.[1] http://www.wrightflyer.co.uk/Using%20AVR%20Counter.pdf, 10 de marzo del 2014. [2] http://www.atmel.com/Images/doc8161.pdf, 11 de marzo del 2014.