19
Tarea N°2 Taller de Microcontroladores Resumen En el presente documento se hará un análisis de los registros utilizados, bits de cada registro y también sobre el funcionamiento del circuito programado en el laboratorio N°2. Por último se modificará el programa para invertir el giro del motor dc y agregándole un indicador led parpadeante. 1. Introducción. Los microcontroladores y la formulación de algoritmos (programación) son dos herramientas fundamentales para la ingeniería en mecatrónica donde el concepto de control es esencial, ya que todo el funcionamiento y estructura del dispositivo depende en su gran parte del controlador que se encarga de optimizar el desarrollo de funciones para cada una de las necesidades que se requieran. Principalmente para este informe y su trabajo respectivo, se utilizó un microcontrolador de la familia AVR, en específico el ATmega168, del fabricante norteamericano de semiconductores, microcontroladores y derivados ATMEL. La programación de este dispositivo se hizo mediante el software AVRstudio, un software con el cuál podemos programar fácilmente esta familia de microcontroladores RISC , y más específicamente en esta ocasión cumplirá la función de

Tarea N_2 de micro

Embed Size (px)

DESCRIPTION

informe sobre control de motores mediante microcontrolador atmega168 y pwm

Citation preview

Page 1: Tarea N_2 de micro

Tarea N°2 Taller de Microcontroladores

Resumen

En el presente documento se hará un análisis de los registros utilizados, bits de cada registro y también sobre el funcionamiento del circuito programado en el laboratorio N°2. Por último se modificará el programa para invertir el giro del motor dc y agregándole un indicador led parpadeante.

1. Introducción.

Los microcontroladores y la formulación de algoritmos (programación) son dos herramientas fundamentales para la ingeniería en mecatrónica donde el concepto de control es esencial, ya que todo el funcionamiento y estructura del dispositivo depende en su gran parte del controlador que se encarga de optimizar el desarrollo de funciones para cada una de las necesidades que se requieran.

Principalmente para este informe y su trabajo respectivo, se utilizó un microcontrolador de la familia AVR, en específico el ATmega168, del fabricante norteamericano de semiconductores, microcontroladores y derivados ATMEL. La programación de este dispositivo se hizo mediante el software AVRstudio, un software con el cuál podemos programar fácilmente esta familia de microcontroladores RISC , y más específicamente en esta ocasión cumplirá la función de regular la velocidad de un motor DC, el interactivo uso de esta plataforma nos facilitará la programación correspondiente y el uso en sí del programa ( cada una de sus funciones ), por otra parte se utilizó el software de simulación Proteus, el cual es una plataforma donde se simula todo tipo de circuitos electrónicos, componentes y microcontroladores con su respectiva programación , siendo este una herramienta clave a la hora de ver si nuestro programa y circuito funcionan correctamente o si poseen alguna falla.

Page 2: Tarea N_2 de micro

2. Resumen del Laboratorio N°2

Se realizó un circuito mediante el software Proteus para el control de la velocidad de un motor dc (motor de corriente continua).Esto se efectúa mediante una señal a la base de un transistor que en este caso es un TIP122. Dicha señal debe pasar proceso de PWM que significa modulación de ancho de pulso, el Atmega168 es capaz de generar una señal PWM como salida, por lo que fue posible controlar la velocidad del motor dc mediante este procedimiento.

Figura 1 Modulacion de ancho de Pulso.

Los materiales a utilizar en esta simulación fueron:

1. Software AVRstudio : Software para la programación en C de nuestro código, convierte el código en c a binario, también se puede utilizar en la simulación virtual de Proteus.

2. Software de simulación Proteus: Programa que da la facilidad de la simulación virtual de circuitos y componentes electrónicos.

3. Microcontrolador ATMEGA168: Microcontrolador utilizado en el desarrollo del informe, donde los registros y puertos están basados en su funcionalidad.

4. Transistor TIP122: Se utilizó como regulador de pulsos y como interruptor, esto le da la función de regular la velocidad de un motor DC.

5. Motor DC: Motor de uso común de corriente continua.

Page 3: Tarea N_2 de micro

Circuito en Proteus.

Fig2 Circuito Funcionando en Proteus.

Fig3

Page 4: Tarea N_2 de micro

Programacion respectiva del circuito en proteus.

#include <avr/io.h>#include <inttypes.h>#include <util/delay.h>

int main ( void) { unsigned char a;DDRD = 0b11111111;PORTD= 0X00;TCCR0A = 0b10100011;TCCR0B = 0b00000011;TCNTOA= 0;OCR0A = 0;a = 0;while (1)

{If (a<255){

OCR0A = a++; _delay_ms(10);

} }

}

3. Funciones de los registros utilizados en la simulación.

Para el funcionamiento de un microcontrolador éste debe estar conectado a algún periférico ya sea un led, sensor o un pulsador entre otros. Para la configuración y accionamiento de estos periféricos se debe realizar un análisis preliminar a los componentes, teniendo esto en cuenta es necesario examinar el datasheet del microcontrolador, el cual es una hoja técnica que tiene especificados los valores estándar que se pueden usar para trabajar con el microcontrolador. Entre estos podemos encontrar sus registros que pueden ser de entrada, salida, pines entre otros.

Cada tarea o necesidad requiere de un programa en especial, por lo tanto la configuración de los registros varían de una aplicación a otra, en el caso del laboratorio n°2 y la tarea N°2 se controla un motor DC, debido a esto los registros de los pines que se utilizan se establecen como una salida, además de definirlos en un estado bajo (0 lógico), por otro lado están el timer y el PWM que serán iniciados como variables en 0. En esta experiencia se utilizaron las siguientes líneas de código para establecer los registros anteriormente mencionados:

Page 5: Tarea N_2 de micro

A. DDRD

Este registró está declarado en el programa como: DDRD = 0b11111111 o

DDRD =0xFF, este tipo de registro (DDR) se puede configurar como

entrada (0 lógico) o salida (1 lógico) de periféricos y la letra D indica el

nombre del puerto que se está configurando, comúnmente los

microcontroladores cuentan con cuatro puertos (A, B, C, D) y cada puerto

consta de ocho pines o bits (Px0, Px1…Px7), los cuales pueden ser

configurados de entrada o salida como se dijo anteriormente. En este caso

se usa el puerto D y se configuró como salida ya que todos sus pines o bits

se encuentran con un 1 lógico, esto es razonable ya que solo se necesita

enviar datos.

B. PORTD

Este registro está declarado en el programa como: PORTD =0b00000000 o

PORTD=0x00, este tipo de registro (PORT) se puede configurar en dos

tipos de estados, 0 para un estado bajo o de inactividad o 1 para un estado

alto o de actividad, al igual que el anterior la letra que acompaña a la

palabra PORT es el nombre del puerto que se está configurando,

comúnmente se pueden usar cuatro puertos (A, B, C, D) y cada uno de

estos puertos consta con ocho pines o bits. En este caso se puede apreciar

el uso del Puerto D que se configuró con un estado bajo (0x00) para evitar

enviar una señal no deseada al momento de activar el microcontrolador.

C. TCCR0A

Este registro está declarado en el programa como: 0b10100011, dicho

registro tiene que ver con el tipo de frecuencia que se generará (PWM, fast

PWM, etc.) y también tiene que ver con la determinación de ancho de pulso

que se genera e incidencias con otras frecuencias, este registro se usa en

conjunto con el TCCR0B para determinar el tipo de frecuencia y con TCNT0

para determinar incidencias.

Page 6: Tarea N_2 de micro

D. TCCR0B

Este registro está declarado como: 0b00000011, dicho registro también

está implicado en la generación de frecuencia y al combinarlo con el

TCCR0A producen una señal fast PWM.

E. TCNT0

Este registro es un emisor de la frecuencia generada por los registros

TCCR0B y TCCR0A y en el programa está declarado como TCNTO=0, esto

quiere decir en un estado bajo o inactivo.

F. OCR0A

Este registro al igual que el TCNT0 envía una onda que es producida por

los registros TCCR0a y TCCR0B, además dicha onda puede tomar valores

entre 0 y 255 debido a que tiene 8 bits. Al igual que en el apartado interior

este registro se inicializó en 0.

4. Bits utilizados en la simulación.

Ahora corresponde explicar que función en especial cumple cada bit

utilizado.

El programa utilizo la siguiente configuración de registros.

• DDRD = 0xFF;

• PORTD = 0x00;

• TCCR0A = 0b10100011;

• TCCR0B = 0b00000011;

• TCNT0 = 0;

• OCR0A = 0;

A. DDRD.

Esta configuración deja todo el puerto D como bits de solo salida.

Como se muestra en la imagen N, se aprecia la descripción del registro ya

Page 7: Tarea N_2 de micro

mencionado, esta configuración nos delimita a usar todos esos bits solo

como salida.

En el programa analizado solo se utilizada el bit PD6 o DDD6,

entonces también este correcto haber configuración el puerto D como:

• DDRD=0b01000000;

Fig4

B. PORTDEste registro configura a todo el puerto D como apagado, es decir todos lo

bits de este puerto se encuentran en un estado 0 lógico. El puerto utilizado PD6 en

su estado inicial se encuentra apagado o 0 lógico.

Fig 5. bloque de configuración registro PORT

C. TCCR0A Este registro al estar configurado de cierta manera dejará ciertas características al

microcontrolador. Primero se deberá revisar la descripción de este puerto en el

datasheet del ATmega168, y con este se podrá conocer cómo se trabaja el

problema propuesto.

TCCR0A = 0b10100011

Cada bit de este puerto se configuro de esta manera: COM0A1=0 COM0A0=1 COM0B1=1 COM0B0=0 WGM01=1 WGM00=1

Page 8: Tarea N_2 de micro

Antes que todo para ver qué características tendrá el programa, se debe saber que se utilizara una señal fast PWM, debido a que el transistor funciona con una señal electrónica.

Ahora para saber que repercusión tendrá esta configuración se debe dar una vista a las tablas que se encuentran en el datasheet del microcontrolador.

1. COM0A1 y COM0A0:

Para estos bits se debe revisar la tabla 15-3. Con este se puede concluir

que la señal obtenida entre la comparación de la señal triangular y digital,

será de orden no-invertido, esto quiere decir que mientras estas señales no

tengan alguna coincidencia, la señal de salía analógica estará en estado

alto, y si ocurre alguna intersección entre estas dos pasará a ser un 0 lógico

hasta que esta otra vez tengan una interrupción. Este se puede apreciar en

las figura N en los puntos donde coinciden la señal triangular y la digital, y

la figura N la señal de salida entre esta interacción.

Fig 6. bloque de configuración registro TCCR0A

Fig 7. table 15-3 Compare output mode, fast PWM mode

2. COM0B1 y COM0B0: Como en el caso anterior, en este también se debe revisar la tabla 16-5 y se llega a el mismo resultado pero en este caso la señal de salida será por el puerto PD5 que contiene la función OC0B, sim embargo esta no se usara en ningún caso en el programa.

Page 9: Tarea N_2 de micro

Fig 8. Compare output mode, fast PWM mode

3. WGM01 y WGM00: Estos dos bits como están configurados no se puede

llegar a alguna conclusión, por ello se debe tomar en cuenta el bit WGM02,

según el registros TCCR0B este bit está configurado a 0. Luego se revisa al

datasheet del ATmega168 tabla 15-8 y según estos parámetros se concluye

que: el programa está configurado para un modo FATS PWN y el TOP o

tope de conteo será 0xFF, y este valor en el sistema decimal corresponde a

255.

Fig 9. Waveform generation mode bit description.

A. TCCR0BAl igual que el registro TCCR0A este registro pertenece a un Timer/counter y está

configurado de esta manera:

FOC0A=0

Page 10: Tarea N_2 de micro

FOC0B=0

WGM02=0

CS02=0

CS01=1

CS00=1

Fig 10. bloque de configuración registro TCCR0B

1. FOC0A y FOC0B: Estos bits se activan cuando los bits WGM se

configuran para una señal no-PWM.

2. CS02, CS01 y CS00: Estos bits corresponden al registro Clock

Select, el cual configura la frecuencia del reloj, para el Timer/counter.

Como fueron modificados estos bits son 0,1 y 1 respectivamente, y

según la tabla 15-9 del datasheet, y según esta misma tabla se

podrá conocer la frecuencia con que se transmitirá la señal de salida,

y esto se puede calcular con la fórmula de la figura N, donde Fclk es

la capacidad del CPU, N es un escalar corresponden a tabla de la

figura N y TOP es otro dato sacado como el anterior. Esta fórmula

dará como valor la frecuencia pero con este dato se calculó además

el periodo o T, este valor es tiempo de un ciclo.

Después de realzar varios cálculos el periodo tiene como valor 8

[μSeg].

Fig 11 . fórmula de cálculo frecuencia de salida.

Page 11: Tarea N_2 de micro

Fig 12. Clock select bit description

B. TCNT0 y OCR0A

En primer lugar el registro TCNT0 en simple palabras es la señal triangular con

valor mínimo 0 y máximo (TOP) 255, y su relación con el registro OCR0A, es que

estas dos señales se comparan y esta comparación es transmitida por el bit OC0A

por medio del pin PD6.

5. Funcionamiento del Programa utilizado en la simulación.

Luego se declarar los registros y bits utilizados, queda explicar cómo se

relacionaran con el programa ya mencionado.

En primer lugar se declaran las bibliotecas a utilizar, luego en el cuerpo del

programa se declaran las variables y configuración de registros. Como ya se

mencionó el puerto D está declarado como salida y en su estado inicial apagado,

además el pin PD6 transmite una señal analógica, esta señal se produce por la

interacción de las señales TCNT0 y la señal modular OCR0A.

Después se muestra el ciclo infinito o loop, en el cual contiene una simple

condición que producto que la señal OCR0A sea modificada cada 10

milisegundos, hasta llegar a su tope del registro. Con esto se logra que la

velocidad del DC motor vaya aumentando.

Finalmente una vez que el registro OCR0A llegue a su valor máximo y en

ese momento el DC motor tendrá una velocidad máxima y constante.

Page 12: Tarea N_2 de micro

6. Mejora del circuito implementando un Led parpadeante durante su

funcionamiento y agregando un motor que gire en sentido contrario.

Se pide que se implemente un motor extra que gire en sentido contrario,

además de un indicador led intermitente, para realizar esta acción se utilizò

una de las propiedades de los motores de corriente continua, ya que estos

giran en el sentido de la circulación de la corriente, por lo tanto en el circuito

solo necesitamos invertir la alimentación con la tierra para poder establecer

una dirección de corriente distinta y así invertir el sentido de giro, además

con este tipo de conexión aprovecha la intermitencia de voltaje que entrega

el atmega 168 y el tip 122, por lo que ambos motores giran en sentido

contrario entre sì y aumentando progresivamente su velocidad. En la figura

12 se observa la conexión pertinente.

Figura12

Para la parte del indicar led intermitente fue necesario introducirse en la

programación de avr, para esto se modificò el código de la experiencia del

laboratorio 2, quedando de la siguiente forma:

Page 13: Tarea N_2 de micro

#include <avr/io.h>#include <inttypes.h>#include <util/delay.h>

int main ( void){

unsigned char a;DDRD = 0b11111111;DDRC = 0b11111111;PORTD = 0X00;PORTC = 0X00;TCCR0A = 0b10100011;TCCR0B = 0b00000011;TCNT0= 0;OCR0A = 0;a = 0;while (1){

PORTC = 0b00000001;_delay_ms(10);PORTC = 0b00000000;

if (a<255){

OCR0A = a++;_delay_ms(10);

}}

}Esta wea podrìay hacerla imagen pedro (fig13)

Notar que se utiliza el registro DDRC que fue explicado en la sección anterior, se

utilizò este por conveniencia de puerto, estableciéndolo como un puerto de

escritura, además se le da un estado inicial inactivo utilizando el registro

PORTC=0x00, luego se establece dentro del ciclo while la instrucción

PORTC=0b00000001, la cual da un estado inactivo desde el pin 1 al pin 7 del

puerto C, ya que el puerto 0 serà por donde salga el voltaje, por lo tanto este tiene

un estado activo (1), posteriormente con el fin de producir el parpadeo e le da un

tiempo de acción de 10 milisegundos y luego se vuelve a dejar en estado inactivo

al puerto completo con la instruciòn PORTC=0b00000000; y asì hasta que se

vuelva a ejecutar otra vez el argumento del ciclo while, en este caso es 1 por lo

tanto se ejecutarà indefinidamente. En la figura 14 se observa el funcionamiento

integrado de ambos motores con giro contrario entre sì y aumento progresivo de

velocidad, además del funcionamiento del indicador led parpadeante.

Page 14: Tarea N_2 de micro

6. Conclusiónes

Para concluir se puede decir que para lograr resultados mas abundantes en cuanto a programacion y/o circuiteria el datasheet de cada componente es de vital importancia, en el caso de los microcontroladores esta es mayor, ya que es muy importante saber el funcionamiento que respecta a cada registro para que el microchip se aproveche en su totalidad. En la practica , en el programa habia que acceder a los registros del microcontrolador ATmega168 y realizar la programacion correspondiente con el fin de provocar una señal para controlar la velocidad de un motor dc, para esto fue necesario acceder al datasheet para la respectiva configuracion de los registros para lograr el objetivo.

Para finalizar se puede decir que el aprendizaje principal de este informe fueron los registros, ya que estos son fundamentales por la simple razon de que ellos son los que le dan la funcionalidad al microcontrolador. Tambien se rescato que cada registro depende bastante del uso que se le quiera dar, por lo tanto se puede afirmar que es muy probable que en cada proyecto nuevo se deba aprender a usar

Page 15: Tarea N_2 de micro

otros registros y sus configuraciones pertinentes para poder resolver nuestros problemas los cuales se tengan que afrontar mediante programacion , circuitos electronicos y principalmente microcontroladores.

7. Referencias.

[1] datasheet ATmega168(PDF)[2] www.olimex.cl [3] www.mikroe.cl[4] www.avrmicrorobot.com.ar