Está en la página 1de 15

Tarea N2 Taller de Microcontroladores

Resumen

En el presente documento se har un anlisis de los registros utilizados, bits de


cada registro y tambin sobre el funcionamiento del circuito programado en el
laboratorio N2. Por ltimo se modificar el programa para invertir el giro del motor
dc y agregndole un indicador led parpadeante.

1. Introduccin.
Los microcontroladores y la formulacin de algoritmos (programacin) son dos
herramientas fundamentales para la ingeniera en mecatrnica 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 especfico el ATmega168, del fabricante
norteamericano de semiconductores, microcontroladores y derivados ATMEL. La
programacin de este dispositivo se hizo mediante el software AVRstudio, un
software con el cul
podemos programar fcilmente esta familia de
microcontroladores RISC , y ms especficamente en esta ocasin cumplir la
funcin de regular la velocidad de un motor DC, el interactivo uso de esta
plataforma nos facilitar la programacin correspondiente y el uso en s del
programa ( cada una de sus funciones ), por otra parte se utiliz el software de
simulacin Proteus, el cual es una plataforma donde se simula todo tipo de
circuitos electrnicos, componentes y microcontroladores con su respectiva
programacin , siendo este una herramienta clave a la hora de ver si nuestro
programa y circuito funcionan correctamente o si poseen alguna falla.

2. Resumen del Laboratorio N2


Se realiz un circuito mediante el software Proteus para el control de la
velocidad de un motor dc (motor de corriente continua).Esto se efecta
mediante una seal a la base de un transistor que en este caso es un
TIP122. Dicha seal debe pasar proceso de PWM que significa modulacin
de ancho de pulso, el Atmega168 es capaz de generar una seal 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 simulacin fueron:


1. Software AVRstudio : Software para la programacin en C de nuestro
cdigo, convierte el cdigo en c a binario, tambin se puede utilizar en la
simulacin virtual de Proteus.
2. Software de simulacin Proteus: Programa que da la facilidad de la
simulacin virtual de circuitos y componentes electrnicos.
3. Microcontrolador ATMEGA168: Microcontrolador utilizado en el desarrollo
del informe, donde los registros y puertos estn basados en su
funcionalidad.
4. Transistor TIP122: Se utiliz como regulador de pulsos y como interruptor,
esto le da la funcin de regular la velocidad de un motor DC.
5. Motor DC: Motor de uso comn de corriente continua.

Circuito en Proteus.

Fig2 Circuito Funcionando en Proteus.

Fig3

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 simulacin.


Para el funcionamiento de un microcontrolador ste debe estar conectado a algn
perifrico ya sea un led, sensor o un pulsador entre otros. Para la configuracin y
accionamiento de estos perifricos se debe realizar un anlisis preliminar a los
componentes, teniendo esto en cuenta es necesario examinar el datasheet del
microcontrolador, el cual es una hoja tcnica que tiene especificados los valores
estndar 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
configuracin de los registros varan de una aplicacin a otra, en el caso del
laboratorio n2 y la tarea N2 se controla un motor DC, debido a esto los registros
de los pines que se utilizan se establecen como una salida, adems de definirlos
en un estado bajo (0 lgico), por otro lado estn el timer y el PWM que sern
iniciados como variables en 0. En esta experiencia se utilizaron las siguientes
lneas de cdigo para establecer los registros anteriormente mencionados:
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 lgico) o salida (1 lgico) de perifricos y la letra D indica el
nombre

del

puerto

que

se

est

configurando,

comnmente

los

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


consta de ocho pines o bits (Px0, Px1Px7), 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 lgico, 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 acompaa a la
palabra PORT es el nombre del puerto que se est configurando,
comnmente 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 seal 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 tambin tiene que ver con la determinacin 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.
D. TCCR0B

Este registro est declarado como: 0b00000011, dicho registro tambin est
implicado en la generacin de frecuencia y al combinarlo con el TCCR0A
producen una seal 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 enva una onda que es producida por
los registros TCCR0a y TCCR0B, adems 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 simulacin.
Ahora corresponde explicar que funcin en especial cumple cada bit
utilizado.
El programa utilizo la siguiente configuracin de registros.

A.

DDRD = 0xFF;
PORTD = 0x00;
TCCR0A = 0b10100011;
TCCR0B = 0b00000011;
TCNT0 = 0;
OCR0A = 0;

DDRD.
Esta configuracin deja todo el puerto D como bits de solo salida.

Como se muestra en la imagen N, se aprecia la descripcin del registro ya


mencionado, esta configuracin nos delimita a usar todos esos bits solo
como salida.
En el programa analizado solo se utilizada el bit PD6 o DDD6,
entonces tambin este correcto haber configuracin el puerto D como:

DDRD=0b01000000;

Fig4
B. PORTD
Este registro configura a todo el puerto D como apagado, es decir todos lo
bits de este puerto se encuentran en un estado 0 lgico. El puerto utilizado PD6 en
su estado inicial se encuentra apagado o 0 lgico.

Fig 5. bloque de configuracin registro PORT

C. TCCR0A
Este registro al estar configurado de cierta manera dejar ciertas caractersticas al
microcontrolador. Primero se deber revisar la descripcin de este puerto en el
datasheet del ATmega168, y con este se podr conocer cmo 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

Antes que todo para ver qu caractersticas tendr el programa, se debe saber
que se utilizara una seal fast PWM, debido a que el transistor funciona con una
seal electrnica.
Ahora para saber que repercusin tendr esta configuracin 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 seal obtenida entre la comparacin de la seal triangular y digital,
ser de orden no-invertido, esto quiere decir que mientras estas seales no

tengan alguna coincidencia, la seal de sala analgica estar en estado


alto, y si ocurre alguna interseccin entre estas dos pasar a ser un 0 lgico
hasta que esta otra vez tengan una interrupcin. Este se puede apreciar en
las figura N en los puntos donde coinciden la seal triangular y la digital, y
la figura N la seal de salida entre esta interaccin.

Fig 6. bloque de configuracin registro TCCR0A

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

2. COM0B1 y COM0B0: Como en el caso anterior, en este tambin se debe


revisar la tabla 16-5 y se llega a el mismo resultado pero en este caso la
seal de salida ser por el puerto PD5 que contiene la funcin OC0B, sim
embargo esta no se usara en ningn caso en el programa.

Fig 8. Compare output mode, fast PWM mode

3. WGM01 y WGM00: Estos dos bits como estn configurados no se puede


llegar a alguna conclusin, por ello se debe tomar en cuenta el bit WGM02,
segn el registros TCCR0B este bit est configurado a 0. Luego se revisa al
datasheet del ATmega168 tabla 15-8 y segn estos parmetros 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. TCCR0B
Al igual que el registro TCCR0A este registro pertenece a un Timer/counter y est
configurado de esta manera:
FOC0A=0
FOC0B=0
WGM02=0
CS02=0
CS01=1
CS00=1

Fig 10. bloque de configuracin registro TCCR0B

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


configuran para una seal 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
segn la tabla 15-9 del datasheet, y segn esta misma tabla se
podr conocer la frecuencia con que se transmitir la seal de salida,

y esto se puede calcular con la frmula 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 frmula
dar como valor la frecuencia pero con este dato se calcul adems
el periodo o T, este valor es tiempo de un ciclo.
Despus de realzar varios clculos el periodo tiene como valor 8
[Seg].

Fig 11 . frmula de clculo frecuencia de salida.

Fig 12. Clock select bit description

B. TCNT0 y OCR0A
En primer lugar el registro TCNT0 en simple palabras es la seal triangular con
valor mnimo 0 y mximo (TOP) 255, y su relacin con el registro OCR0A, es que
estas dos seales se comparan y esta comparacin es transmitida por el bit OC0A
por medio del pin PD6.

5. Funcionamiento del Programa utilizado en la simulacin.


Luego se declarar los registros y bits utilizados, queda explicar cmo 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 configuracin de registros. Como ya se
mencion el puerto D est declarado como salida y en su estado inicial apagado,

adems el pin PD6 transmite una seal analgica, esta seal se produce por la
interaccin de las seales TCNT0 y la seal modular OCR0A.
Despus se muestra el ciclo infinito o loop, en el cual contiene una simple
condicin que producto que la seal 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 mximo y en
ese momento el DC motor tendr una velocidad mxima y constante.

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,
adems de un indicador led intermitente, para realizar esta accin se utiliz
una de las propiedades de los motores de corriente continua, ya que estos
giran en el sentido de la circulacin de la corriente, por lo tanto en el circuito
solo necesitamos invertir la alimentacin con la tierra para poder establecer
una direccin de corriente distinta y as invertir el sentido de giro, adems
con este tipo de conexin 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 conexin pertinente.

Figura12
Para la parte del indicar led intermitente fue necesario introducirse en la
programacin de avr, para esto se modific el cdigo de la experiencia del
laboratorio 2, quedando de la siguiente forma:

#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 podray hacerla imagen pedro (fig13)


Notar que se utiliza el registro DDRC que fue explicado en la seccin anterior, se
utiliz este por conveniencia de puerto, establecindolo como un puerto de
escritura, adems se le da un estado inicial inactivo utilizando el registro
PORTC=0x00, luego se establece dentro del ciclo while la instruccin
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 accin de 10 milisegundos y luego se vuelve a dejar en estado inactivo
al puerto completo con la instrucin 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, adems del funcionamiento del indicador led parpadeante.

6. Conclusines
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 seal 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

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

También podría gustarte