Abstract El Objetivo de este informe de laboratorio, es presentar el trabajo tanto autónomo como de laboratorio realizado, en donde se hace una introducción a la programación de microcontroladores AVR marca Atmel, ATMEGA168, utilizado los registros adecuados para controlar la velocidad de un motor DC.
Introducción. En este laboratorio, se realiza la simulación programando el Timer/Contador 0 de 8 bits, el cual posee dos salidas independientes para comparar las unidades, doble buffer de salida, generador de frecuencia y corrector de fase para control de sistemas mediante PWM (Pulse Width Modulator), entre otros. Esta simulación, consiste en controlar la velocidad de un motor DC, mediante el control por Modulador por Ancho de pulso, lo cual, tiene una amplia gama de aplicaciones en el mundo industrial, cuando se trata de controlar velocidades del motor. Además al trabajar con el datasheet del Microcontrolador, se puede en primer lugar, rescatar que cada uno de los timers, contadores y salidas, se escriben en su forma general, en donde “n”, es el número del Timer/Counter al cual pertenece el registro que se está utilizando, y en el caso de “x”, es utilizado para referirse a que Unidad de comparación se está trabajando, Por último, se realiza el uso de dos software para la simulación del programa, en el primero se arma el circuito con los componentes correspondientes, es decir: Un motor DC de 12V, un Microcontrolador AVR Atmel ATMEGA168 y un transistor TIP122.
Registro TCCR0B = 0b00000011; Es un registro que tr abaja como temporizador de las señales que entregue el microcontrolador al sistema que se controla, es decir actúa como un sincronizador de la señal que se esté generando. En definitiva en este caso, temporiza la señal PWM que controla el motor. Al igual que el registro TCCR0A, el TCCR0B, dispone de 8 bits configurables, los cuales cada uno de ellos cumple una función específica, se distribuyen como se ve en la imagen: TABLA 1 WN OH -
Bits CS0n (n=0,1,2)
Estos bits permiten activar o desactivar los contadores del timer, con el fin de configurar el preescaler que se utilice para el ancho de pulso de la señal PWM que se envía al transistor que controla el motor.
La descripción de lo que se logra con la combinación de estos tres primeros bits, se puede ver en la siguiente tabla: OTRA TABLA WN Se puede ver que los bits están configurados de la forma CS02 = 0, CS01 = 1 y CS00 = 1, por lo que el Timer/Counter, utiliza el preescalar 64 para dividir la señal de reloj. -
Bit WGM02
Su función es controlar el conteo máximo, la secuencia de conteo y modo de operación, es decir, el tipo de estrategia para la modulación del ancho de pulso. Todo lo anterior lo realiza en conjunto con los bits WGM01 y WGM00. Entre los tres bits, hacen la combinación | 0 1 1 |, y según la tabla eso corresponde, a que el conteo máximo es el valor máximo por defecto, es decir, 0xFF. Y lo que para esta tarea importa, estos bits, nos dicen que el Timer/Counter 0, esta trabajando con el modo de operación correspondiente a Fast PWM. Luego de esto, los Bits 4 y 5, no se utilizan. -
Bits FOC0A y FOC0B.
Con el fin, de asegurar compatibilidad con otros dispositivos, siempre se configuran en 0 ambos bits, y sobre todo cuando el sistema está trabajando con PWM. Una función de estos bits, es que al escribir un 1 lógico, se fuerza una comparación de las formas de ondas que tiene el sistema. Registro TCNT0; Este registro, se encarga de ir almacenando en cada ciclo, la cuenta que es producida por la función while, que puede ser sumada o restada en cada conteo Registro OCR0A y OCR0B. El Microcontrolador cuenta con un comparador de 8 bits, dicha comparación, es utilizada por el Generador de Ondas, el cual entrega una salida. Estos registros, almacenan esa onda, y la comparan nuevamente instante a instante. En donde, cuando estos registros toman el mismo valor que TCNTn, a la salida se le asigna un valor de 0 o 1. En el siguiente diagrama en bloques, se muestra como se disponen, los registros anteriores. _delay_ms(10);