Está en la página 1de 18

FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

MICROCONTROLADORES PROYECTO

CONTROL DE VELOCIDAD - MOTOR DC


Profesor:
Ing. Zenn Cucho Mendoza

Alumnos:
Chavez Hinostroza, Jorge Eduardo Olsson Rivas, Bruno Sven 090631F 090595J

2012-A

RESUMEN
El presente proyecto trata de la elaboracin de un controlador de velocidad para un motor de corriente continua aprovechando la modulacin 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 cdigos para los microcontroladores ATMEL, y el software de simulacin PROTEUS para la representacin virtual del funcionamiento del circuito, as como el anlisis del ciclo de trabajo correspondiente a la configuracin 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.

DIAGRAMA DEL CIRCUITO

D1
DIODE

R2 R1
10k 1k

Q1
TIP122 +88.8

ON/OFF
pc1 pc2 E RS RW 23 24 25 26 27 28 1 2 3 4 5 6 11 12 13

U1

CONTROL DEL MOTOR


PC0/ADC0 PC1/ADC1 PC2/ADC2 PC3/ADC3 PC4/ADC4/SDA PC5/ADC5/SCL PC6/RESET PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/T0/XCK PD5/T1 PD6/AIN0 PD7/AIN1 PB0/ICP1 PB1/OC1A PB2/SS/OC1B PB3/MOSI/OC2 PB4/MISO PB5/SCK PB6/TOSC1/XTAL1 PB7/TOSC2/XTAL2 14 15 16 17 18 19 9 10

LCD1
LM016L

V1 V2
R6 R7
10k 10k

pc1

pc2

d0 d1 d2 d3 d4 d5 d6 d7

VSS VDD VEE

RS RW E 4 5 6 RS RW E

1 2 3

AREF AVCC

21 20

ATMEGA8

CONTROL DEL LCD

d0 d1 d2 d3 d4 d5 d6 d7

7 8 9 10 11 12 13 14

D0 D1 D2 D3 D4 D5 D6 D7

DIAGRAMA DE FLUJO
Inicio

Declaracin de la pila

Declaracin de puertos de salida

Pulsador (PC1 PC2) Presionado?

si

Igual a $02?

no

Aumenta

Disminuye

no

Igual a 6?
no

Igual a 0?
no

si

Configura LCD Muestra velocidad LCD

Configura PWM

Muestra PWM en OC1A (Sale al motor)

FUNCIONAMIENTO
La regulacin de la velocidad del motor de corriente continua ha sido elaborada a partir de la modulacin por ancho de pulso (PWM), variando el ciclo de trabajo (duty cycle) para cada velocidad. Se considera las siguientes frmulas: Como queremos una nica seal 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 seal 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 seal ser: ICR1= Periodo x Fclk Preescalador -1

Y el valor de OCR1A que determinara el dutycycle ser: OCR1A= duty*Periodo x Fclk Preescalador -1

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 cdigo se consiguen las diferentes velocidades. Esto se puede comprobar con la simulacin en PROTEUS, donde podemos usar el osciloscopio virtual para observar el ciclo de trabajo de cada velocidad.
DUTY CYCLE = 0%

DUTY CYCLE = 20%

DUTY CYCLE = 40%

DUTY CYCLE = 60%

DUTY CYCLE = 80%

DUTY CYCLE = 100%

IMGENES IMPLEMENTCION

Funcionamiento del control de velocidad del motor DC

CDIGO
;************************************************************************************ ;************************************************************************************ ; 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) 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 ;Valor inicial del puntero de pila

andi r18,$01 cpi r18,0 breq inicio rjmp vel0 Pulsador: 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: 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: 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 ;apunta hacia el incremento de velocidad ;entradas en PC1 y PC2

;apunta hacia la disminucin de la velocidad

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) ldi ZL,low(Mensaje0*2) ldi R16,0 rjmp leer_otroc velocidad1: rcall RatardoXms rcall Configura_LCD ldi ZH,high(Mensaje1*2) ldi ZL,low(Mensaje1*2) ldi R16,0 rjmp leer_otroc velocidad2: rcall RatardoXms rcall Configura_LCD ldi ZH,high(Mensaje2*2) ldi ZL,low(Mensaje2*2) ldi R16,0 rjmp leer_otroc ;Z apunta al inicio del mensaje ;Contador de caracteres a visualizar ;Z apunta al inicio del mensaje ;Contador de caracteres a visualizar ;Z apunta al inicio del mensaje ;Contador de caracteres a visualizar

10

velocidad3: rcall RatardoXms rcall Configura_LCD ldi ZH,high(Mensaje3*2) ldi ZL,low(Mensaje3*2) ldi R16,0 rjmp leer_otroc velocidad4: rcall RatardoXms rcall Configura_LCD ldi ZH,high(Mensaje4*2) ldi ZL,low(Mensaje4*2) ldi R16,0 rjmp leer_otroc velocidad5: rcall RatardoXms rcall Configura_LCD ldi ZH,high(Mensaje5*2) ldi ZL,low(Mensaje5*2) ldi R16,0 rjmp leer_otroc leer_otroc: rcall CheckBF lpm dato,Z+ rcall WriteDR ;**** Retardo para visualizacion rcall Retardo5Xms inc R16 cpi R16,16 breq ConfigPWM rjmp leer_otroc ;Z apunta al inicio del mensaje ;Contador de caracteres a visualizar ;Z apunta al inicio del mensaje ;Contador de caracteres a visualizar ;Z apunta al inicio del mensaje ;Contador de caracteres a visualizar

;Lee y muestra caracter en LCD

;Muestra 12 caracteres

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

11

;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

12

out PORTD,instruccion ldi R17,0b00000000 out PORTC,R17 ldi R17,0b00100000 out PORTC,R17

;se envia la instruccion ;RW=0, RS=0 y E=0 ;RW=1, RS=0 y E=0

pop R17 ret ;*** Subrutina: Envia un dato al LCD WriteDR: push R16 push R17 ldi R16,0b00010000 out PORTC,R16 ldi R16,0b00011000 out PORTC,R16 out PORTD,dato ldi R16,0b00010000 out PORTC,R16 ldi R16,0b00100000 out PORTC,R16 pop R17 pop R16 ret ;*** Subrutina: Espera BF = 0 CheckBF: push R16 push R17 ldi R16,0 out DDRD,R16 LecturaBF: ldi R16,0b00100000 out PORTC,R16 ldi R16,0b00101000 out PORTC,R16 nop in R17,PIND ldi R16,0b00100000 out PORTC,R16 andi R17,0b10000000 cpi R17,0 brne LecturaBF ldi R16,$FF ;Bus de datos: entrada

;RW=0, RS=1 y E=0 ;RW=0, RS=1 y E=1

;se envia el dato ;RW=0, RS=1 y E=0 ;RW=1, RS=0 y E=0

;RW=1, RS=0 y E=0 ;RW=1, RS=0 y E=1

;Analiza bit BF (DD7) ;RW=1, RS=0 y E=0

;Si LCD esta ocupado => espera ;Bus de datos: salida

13

out DDRD,R16 pop R17 pop R16 ret ;*** Subrutina: Configura LCD Configura_LCD: push R16 push R17 rcall RatardoXms ldi instruccion,$30 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 rcall WriteIR rcall CheckBF ldi instruccion,8 rcall WriteIR rcall CheckBF ldi instruccion,1 rcall WriteIR rcall CheckBF ;Funcin Seleccionar modo: ; 0 0 0 0 0 1 ID S ; ID=0 --> incrementa la direccin DDRAM ;Clear display ;Display OFF ;Trabajar con datos de 8 bits, 1 linea ;Configuracion:8 bits

14

; ; ; ; ;

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 rcall WriteIR ;Cursor, sin desplazamiento

; Funcion ON/OFF del LCD: ; 00001DCB ; D=0 --> apagar la pantalla; D=1 -->encender ; C=0 --> desactivar cursor; D=1 -->activar ; B=0 --> no parpadea el caracter sealado por el cursor rcall CheckBF ldi instruccion,$0E 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 " ;Enciende pantalla y muestra cursor

15

DTSHEET
PANTALLA LCD 16x2 -1602D01
DIMENSIONES

CARACTERISTICAS ELCTRICAS

CONECCIONES DE LOS PINES

16

ATMEGA 8
CONFIGURACION DE LOS PINES

CARACTERISTICAS ELLCTRICAS

17

RANGOS MAXIMOS ABSOLUTOS

18

También podría gustarte