informe proyecto micro

18
1 FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA MICROCONTROLADORES PROYECTO “CONTROL DE VELOCIDAD - MOTOR DC” Profesor: Ing. Zenón Cucho Mendoza Alumnos: Chavez Hinostroza, Jorge Eduardo 090631F Olsson Rivas, Bruno Sven 090595J 2012-A

Upload: percy-vicente-leiva

Post on 28-Apr-2015

178 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Informe Proyecto Micro

1

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

MICROCONTROLADORES

PROYECTO

“CONTROL DE VELOCIDAD - MOTOR DC”

Profesor:

Ing. Zenón Cucho Mendoza

Alumnos:

Chavez Hinostroza, Jorge Eduardo 090631F

Olsson Rivas, Bruno Sven 090595J

2012-A

Page 2: Informe Proyecto Micro

2

RESUMEN

El presente proyecto trata de la elaboración de un controlador de velocidad para un

motor de corriente continua aprovechando la modulación por ancho de pulso (PWM).

Para esto hemos realizado un programa en el lenguaje ensamblador orientado a

microcontroladores ATMEGA8 de la marca ATMEL.

Las herramientas utilizadas en el desarrollo del proyecto son el programa VMLAB para

desarrollar códigos para los microcontroladores ATMEL, y el software de simulación

PROTEUS para la representación virtual del funcionamiento del circuito, así como el

análisis del ciclo de trabajo correspondiente a la configuración del PWM.

El circuito consta de 3 pulsadores, el primero (conectado a PC0) nos permitirá iniciar el

programa. El pulsador conectado a PC1 permitirá aumentar la velocidad del motor,

mientras que el pulsador conectado a PC0 hará lo contrario. Se han seleccionado 5

velocidades para este controlador (sin contar la velocidad al 0%).

El porcentaje de la velocidad del motor se mostrará en una pantalla LCD de 16x2, la

cual está programada en el mismo microcontrolador.

Page 3: Informe Proyecto Micro

3

DIAGRAMA DEL CIRCUITO

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

+88.8

R110k

pc1

pc2

pc1

pc2

E

RS

RW

R610k

R710k

Q1TIP122

R2

1k

D1

DIODE

D7

14

D6

13

D5

12

D4

11

D3

10

D2

9D

18

D0

7

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

LCD1LM016L

d6

d5

d4

d3

d2

d7

d1

d0

RS

RW E

d0

d1

d2

d3

d4

CONTROL DEL LCD

CONTROL DEL MOTOR

V1

V2

ON/OFF

d5

d6

d7

Page 4: Informe Proyecto Micro

4

si

no

no

si

no no

DIAGRAMA DE FLUJO

Inicio

Declaración de la pila

Declaración de puertos de salida

Pulsador (PC1 – PC2)

¿Presionado?

¿Igual a $02?

Aumenta Disminuye

¿Igual a 6? ¿Igual a 0?

Configura LCD

Muestra velocidad LCD

Configura PWM

Muestra PWM en OC1A

(Sale al motor)

Page 5: Informe Proyecto Micro

5

FUNCIONAMIENTO

La regulación de la velocidad del motor de corriente continua ha sido elaborada a partir

de la modulación por ancho de pulso (PWM), variando el ciclo de trabajo (duty cycle)

para cada velocidad.

Se considera las siguientes fórmulas:

Como queremos una única señal PWM usaremos solo salida OC1A del generador de

ondas del TIMER1.

Para esto se utilizará el generador de ondas en modo 14, donde el periodo de la señal

está dado por el valor asignado a ICR1 y el duty cycle dependerá del valor en el

OCR1A.

El valor de ICR1 que determinara el periodo de la señal será:

ICR1= Periodo x Fclk - 1

Preescalador

Y el valor de OCR1A que determinara el dutycycle será:

OCR1A= duty*Periodo x Fclk - 1

Preescalador

Utilizamos un periodo de 20 ms, frecuencia de 1MHz y un preescalador 1:1. El duty

cycle determinará las velocidades siendo estas:

D.C(0%) : OCR1A= 0

D.C(20%) : OCR1A= 999

D.C(40%) : OCR1A= 4999

D.C(60%) : OCR1A= 9999

D.C(80%) : OCR1A= 14999

D.C(100%) : OCR1A= 19999

Haciendo los reemplazos en el código se consiguen las diferentes velocidades. Esto se

puede comprobar con la simulación en PROTEUS, donde podemos usar el osciloscopio

virtual para observar el ciclo de trabajo de cada velocidad.

DUTY CYCLE = 0%

Page 6: Informe Proyecto Micro

6

DUTY CYCLE = 20%

DUTY CYCLE = 40%

DUTY CYCLE = 60%

DUTY CYCLE = 80%

DUTY CYCLE = 100%

Page 7: Informe Proyecto Micro

7

IMÁ GENES IMPLEMENTÁCIO N

Funcionamiento del control de velocidad del motor DC

Page 8: Informe Proyecto Micro

8

CÓDIGO

;************************************************************************************

;************************************************************************************

; UNIVERSIDAD NACIONAL DEL CALLAO

; FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

; ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

;

; PROYECTO DE MICROCONTROLADORES

; "CONTROL DE VELOCIDAD MOTOR DC"

;

; ALUMNOS: OLSSON RIVAS, BRUNO SVEN

; CHAVEZ HINOSTROZA, JORGE EDUARDO

; PROFESOR: ZENON CUCHO MENDOZA

;

; JULIO DEL 2012

;************************************************************************************

;************************************************************************************

.nolist

.include "C:\VMLAB\include\m8def.inc"

.list

.def instruccion=R16

.def dato=R17

.def PWM=r21

.dseg

.org $60

.cseg

.org 0

rjmp Inicio

Inicio:

ldi R16,high(RAMEND) ;Valor inicial del puntero de pila

out SPH,R16

ldi R16,low(RAMEND)

out SPL,R16

;Configura puertos D (datos) y C (control)

Configura_puertos:

ldi R16,$FF ;Puerto D: bus de datos del LCD

out DDRD,R16

ldi R16,0b00111000 ;PC0, PC1 y PC2: lineas de control del LCD

out DDRC,R16 ;PC0=E PC1=RS PC2=R/W

ldi R16,$07

out ddrb,r16

ldi r16,0

out PORTD,r16 ; inicialmente el pin PD1 a 0

Pulsadorinicial:

in r18,pinc

Page 9: Informe Proyecto Micro

9

andi r18,$01

cpi r18,0

breq inicio

rjmp vel0

Pulsador: ;entradas en PC1 y PC2

in r19,pinc

andi r19,$06

mov r22,r19

cpi r19,0

breq Pulsador

Espera:

in r19,pinc

andi r19,$06

cpi r19,0

brne Espera

cpi r22,$04

breq disminuye

cpi r22,$02

breq aumenta

aumenta: ;apunta hacia el incremento de velocidad

cpi r20,6

breq Pulsador

inc r20

cpi r20,0

breq vel0

cpi r20,1

breq vel1

cpi r20,2

breq vel2

cpi r20,3

breq vel3

cpi r20,4

breq vel4

rjmp vel5

disminuye: ;apunta hacia la disminución de la velocidad

cpi r20,0

breq Pulsador

dec r20

cpi r20,0

breq vel0

cpi r20,1

breq vel1

cpi r20,2

breq vel2

cpi r20,3

breq vel3

cpi r20,4

breq vel4

Page 10: Informe Proyecto Micro

10

rjmp vel5

vel0:

ldi r23,high(0)

ldi r24,low(0)

rjmp velocidad0

vel1:

ldi r23,high(999)

ldi r24,low(999)

rjmp velocidad1

vel2:

ldi r23,high(4999)

ldi r24,low(4999)

rjmp velocidad2

vel3:

ldi r23,high(9999)

ldi r24,low(9999)

rjmp velocidad3

vel4:

ldi r23,high(14999)

ldi r24,low(14999)

rjmp velocidad4

vel5:

ldi r23,high(19999)

ldi r24,low(19999)

rjmp velocidad5

velocidad0:

rcall RatardoXms

rcall Configura_LCD

ldi ZH,high(Mensaje0*2) ;Z apunta al inicio del mensaje

ldi ZL,low(Mensaje0*2)

ldi R16,0 ;Contador de caracteres a visualizar

rjmp leer_otroc

velocidad1:

rcall RatardoXms

rcall Configura_LCD

ldi ZH,high(Mensaje1*2) ;Z apunta al inicio del mensaje

ldi ZL,low(Mensaje1*2)

ldi R16,0 ;Contador de caracteres a visualizar

rjmp leer_otroc

velocidad2:

rcall RatardoXms

rcall Configura_LCD

ldi ZH,high(Mensaje2*2) ;Z apunta al inicio del mensaje

ldi ZL,low(Mensaje2*2)

ldi R16,0 ;Contador de caracteres a visualizar

rjmp leer_otroc

Page 11: Informe Proyecto Micro

11

velocidad3:

rcall RatardoXms

rcall Configura_LCD

ldi ZH,high(Mensaje3*2) ;Z apunta al inicio del mensaje

ldi ZL,low(Mensaje3*2)

ldi R16,0 ;Contador de caracteres a visualizar

rjmp leer_otroc

velocidad4:

rcall RatardoXms

rcall Configura_LCD

ldi ZH,high(Mensaje4*2) ;Z apunta al inicio del mensaje

ldi ZL,low(Mensaje4*2)

ldi R16,0 ;Contador de caracteres a visualizar

rjmp leer_otroc

velocidad5:

rcall RatardoXms

rcall Configura_LCD

ldi ZH,high(Mensaje5*2) ;Z apunta al inicio del mensaje

ldi ZL,low(Mensaje5*2)

ldi R16,0 ;Contador de caracteres a visualizar

rjmp leer_otroc

leer_otroc:

rcall CheckBF

lpm dato,Z+ ;Lee y muestra caracter en LCD

rcall WriteDR

;**** Retardo para visualizacion

rcall Retardo5Xms

inc R16

cpi R16,16 ;Muestra 12 caracteres

breq ConfigPWM

rjmp leer_otroc

ConfigPWM:

;Esta subrutina configura los registros del TIMER1 para obtener una onda

; con una frecuencia de 50Hz (20ms) y un DutyCycle variable%

;periodo de la onda T=20ms=20,000us, ICR1=19999, Con Pre escalador 1:1

;duty cycle 5%, D=1ms=1,000us, OCR1A=999

out OCR1AH,r23

out OCR1AL,r24

ldi r16,high(19999)

out ICR1H,r16

ldi r16,low(19999)

out ICR1L,r16

;configuro el generador de ondas del timer 1 en modo 14

;WGM13..0= 1110

Page 12: Informe Proyecto Micro

12

;Salida solo en OC1A, en modo no invertido

;COM1A1..0= 10

;Preescalador 1:1

;CS12..10= 001

ldi r16,(1<<COM1A1|0<<COM1A0|1<<WGM11|0<<WGM10)

out TCCR1A,r16

ldi r16,(1<<WGM13|1<<WGM12|0<<CS12|0<<CS11|1<<CS10)

out TCCR1B,r16

rjmp Pulsador

;**** Subrutina: Retardo de X ms (Calcule el valor de X)

RatardoXms:

push R16

push R17

clr R16

lazo_ext:

clr R17

lazo_int:

inc R17

brne lazo_int

inc R16

cpi R16,1

brne lazo_ext

pop R17

pop R16

ret

;**** Subrutina: Retardo para visualizacion

Retardo5Xms:

push R17

ldi R17,0

lazo_retardo:

rcall RatardoXms

inc R17

cpi R17,1

brne lazo_retardo

pop R17

ret

;**** Subrutina: Envia una instruccion al LCD

WriteIR:

push R17

ldi R17,0b00000000 ;RW=0, RS=0 y E=0

out PORTC,R17

ldi R17,0b00001000 ;RW=0, RS=0 y E=1

out PORTC,R17

Page 13: Informe Proyecto Micro

13

out PORTD,instruccion ;se envia la instruccion

ldi R17,0b00000000 ;RW=0, RS=0 y E=0

out PORTC,R17

ldi R17,0b00100000 ;RW=1, RS=0 y E=0

out PORTC,R17

pop R17

ret

;*** Subrutina: Envia un dato al LCD

WriteDR:

push R16

push R17

ldi R16,0b00010000 ;RW=0, RS=1 y E=0

out PORTC,R16

ldi R16,0b00011000 ;RW=0, RS=1 y E=1

out PORTC,R16

out PORTD,dato ;se envia el dato

ldi R16,0b00010000 ;RW=0, RS=1 y E=0

out PORTC,R16

ldi R16,0b00100000 ;RW=1, RS=0 y E=0

out PORTC,R16

pop R17

pop R16

ret

;*** Subrutina: Espera BF = 0

CheckBF:

push R16

push R17

ldi R16,0 ;Bus de datos: entrada

out DDRD,R16

LecturaBF:

ldi R16,0b00100000 ;RW=1, RS=0 y E=0

out PORTC,R16

ldi R16,0b00101000 ;RW=1, RS=0 y E=1

out PORTC,R16

nop

in R17,PIND ;Analiza bit BF (DD7)

ldi R16,0b00100000 ;RW=1, RS=0 y E=0

out PORTC,R16

andi R17,0b10000000

cpi R17,0

brne LecturaBF ;Si LCD esta ocupado => espera

ldi R16,$FF ;Bus de datos: salida

Page 14: Informe Proyecto Micro

14

out DDRD,R16

pop R17

pop R16

ret

;*** Subrutina: Configura LCD

Configura_LCD:

push R16

push R17

rcall RatardoXms

ldi instruccion,$30 ;Configuracion:8 bits

rcall WriteIR

rcall RatardoXms

ldi instruccion,$30

rcall WriteIR

rcall RatardoXms

ldi instruccion,$30

rcall WriteIR

rcall RatardoXms

; Funcion SET. Activa funcion:

; 0 0 1 DL N F x x

; DL=1 --> 8 bits; DL=0 --> 4 bits

; N=0 --> una linea; N=1 --> dos lineas

; F=0 --> 5x7 puntos; F=1 --> 5x10 puntos

ldi instruccion,$38 ;Trabajar con datos de 8 bits, 1 linea

rcall WriteIR

rcall CheckBF

ldi instruccion,8 ;Display OFF

rcall WriteIR

rcall CheckBF

ldi instruccion,1 ;Clear display

rcall WriteIR

rcall CheckBF

;Función Seleccionar modo:

; 0 0 0 0 0 1 ID S

; ID=0 --> incrementa la dirección DDRAM

Page 15: Informe Proyecto Micro

15

; ID=0 --> decrementa

; S=1 --> desplazamiento de toda la pantalla

; (con ID=1 --> desplaz. a la izquierda)

; (con ID=0 --> desplaz. a la derecha)

; S=0 --> no desplaza

ldi instruccion,6 ;Cursor, sin desplazamiento

rcall WriteIR

; Funcion ON/OFF del LCD:

; 0 0 0 0 1 D C B

; D=0 --> apagar la pantalla; D=1 -->encender

; C=0 --> desactivar cursor; D=1 -->activar

; B=0 --> no parpadea el caracter señalado por el cursor

rcall CheckBF

ldi instruccion,$0E ;Enciende pantalla y muestra cursor

rcall WriteIR

rcall CheckBF

pop R17

pop R16

ret

Mensaje:

.db "MOTOR FIEE-UNAC"

Mensaje0:

.db "0% velocidad "

Mensaje1:

.db "20% velocidad "

Mensaje2:

.db "40% velocidad "

Mensaje3:

.db "60% velocidad "

Mensaje4:

.db "80% velocidad "

Mensaje5:

.db "100% velocidad "

Page 16: Informe Proyecto Micro

16

DÁTÁSHEET

PANTALLA LCD 16x2 -1602D01

DIMENSIONES

CARACTERISTICAS ELÉCTRICAS

CONECCIONES DE LOS PINES

Page 17: Informe Proyecto Micro

17

ATMEGA 8

CONFIGURACION DE LOS PINES

CARACTERISTICAS ELÉLCTRICAS

Page 18: Informe Proyecto Micro

18

RANGOS MAXIMOS ABSOLUTOS