Sie sind auf Seite 1von 20

CONTROLEEMMALHAFECHADADAVELOCIDADEDEUMMOTORDCUTILIZANDO

UMMICROCONTROLADOR8051

RaphaelRochaCoelhoAcadmico,CleitonMoyadeAlmeidaAcadmico,Vincius
BerndsenPeccinAcadmico
DepartamentodeAutomaoeSistemasUniversidadeFederaldeSantaCatarina
ProgramadeEducaoTutorialdaEngenhariaEltricaUniversidadeFederaldeSanta
Catarina

Resumo

Controlar a velocidade de motores necessrio para manter a boa qualidade de


determinadosprodutosepodeserfeitoatravsdomicroprocessadorPICprogramvelem
linguagemCouC++,asquaissoaplicadasnamaioriadosprocessosautomatizveis.Um
outromtodoestnestapropostadecontroleemmalhafechadadavelocidadedeummotor
decorrentecontnuautilizandoummicrocontroladorIntel8051queserapresentadaej
verificada nos experimentos. Para fortalecer ainda mais o projeto, foi desenvolvido um
software,quepermiteocontroledavelocidadecompoucosclicksnomouse.

Introduo

Osmotoresdecorrentecontnuasolargamenteutilizadosnaindstriaparaacionamento
deequipamentosdepequenoporte,ondesonecessriasprecisodevelocidade.Existem
CI's controladores para esses motores; porm, optouse em criar um sistema capaz de
controlar a velocidade com uma interface diferenciada, podendo o operador alterar
parmetrosduranteofuncionamento.

Para tal projeto, utilizouse um microcontrolador da famlia 8051, um motor de corrente


contnua, um drive para acionlo e um sensor ptico. A programao foi feita em
assembly.

1.VisoGeraldoProjeto

Nesteprojetoimplementadoumcontroladordavelocidadedemotordecorrentecontnua.
Foi utilizado um microcontrolador da famlia 8051, em especfico o modelo AT89S8252.
Essecontrolefeitoemmalhafechada.Anexoaoeixodomotorfoiimplementadoumdisco
seccionado de forma a obter diferentes sinais pticos, utilizados para clculo de
realimentaodosistema.
Ousurioforneceovalordesejadodavelocidadeemrpm(rotaesporminuto)atravsde
uma interface num computador. Esse transferido por uma porta serial ao
microcontrolador.Duranteofuncionamento,osistemacaptaossinaispticosgeradospelo
sensor.Essessinaissotratadosporumarotinadecontroleprogramadano8051eos
resultadosenviadosviaserialparaosoftwaredeinterface.

2.ControledevelocidadedeummotorDCcomoMicrocontrolador8051

Oprogramadecontroledevelocidadedomotordecorrentecontnuadivididoemcinco
partesprincipais:

Definiesdevariveis,constanteseparmetrosdecontrole
ConfiguraesIniciais
ProgramaPrincipal
Interrupes
Subrotinas

2.0.Definiesdevariveis,constanteseparmetrosdecontrole
Almdasvariveiseconstantes,utilizamosparmetrosdeincrementododutycicleefaixas
devaloresdevelocidade.

2.1.ConfiguraesIniciais
Nestaseosoconfiguradosos3timerseacomunicaoserialdedados.

Timer0:Configuradoemmodo2paraexecuodocontrolePWM,explicadonaseo4.1

Timer1:Utilizadoemmodo1paracomunicaodaportaserial,analisadonaseo4.2

Timer2:Configuradocomocontadordossinaispticos.Atravsdestecontadorpodese
calcularavelocidadeatualdomotor.

2.2.ProgramaPrincipal
Elaboradoparaqueacada200msomicrocontroladorenvieavelocidadeatualdomotor
para a interface e execute a rotina de controle. Esse envio determinado por um flag
auxiliar,ativadoquandoocorreumainterrupodotimer0esetadoemVccaalimentao
domotor.

2.3.Interrupes
2.3.1Interrupodotimer0
GeraosinalPWMnaportaP2.1paraoacionamentodoMotordeacordocomodutycicle
especificadopelocontrole.

2.3.2Interrupodaserial

Ainstruoderecepodedadoschamadaeavelocidadedesejada
armazenadanavarivelVEL_SET.Apsissoenviadoumdadoparaaconfirmaode
recebimento.

2.4.Subrotinas

2.4.1ConfiguraodoPWM
OvalordodutyciclecarregadonoregistradorR7esubtradode0FFh.Oresultado
inseridoemTL0.EletambmovalorcorrespondenteaointervalodetempoemTlow,na
interrupodotimer0.

2.4.2ControledaVelocidade
Analisaavelocidadeatualdomotor(VEL_ATUAL)eincrementaoudecrementao
dutycyle(DUTY),deacordocomavelocidadesetada(VEL_SET)pelaserialeasfaixasde
velocidadesdantesdefinidas.

2.4.3SerialTX
Enviaumdadoqualquerpelaserial.OdadodeveestarcolocadonoAcumulador.

2.4.4SerialRX
Recebeumdadoqualquerpelaserial.OdadocolocadonoAcumulador.

3.ConhecimentoNecessrio
3.1.NoesdeControlePWM

Um motor CC (corrente contnua) utilizado quando se necessita uma velocidade alta,


pormcombaixotorquenaaplicao.AvelocidadedeummotorCCpodesercontrolada
atravs da sua tenso de entrada. No entanto, para evitar sobreaquecimentos nos

componentes, em vez de um sinal contnuo usado um sinal PWM (Pulse Width


Modulation)ondealarguradospulsoscontrolaapotnciafornecidaaomotoreporsuavez
avelocidadederotao.Avelocidadedomotorvariaproporcionalmentereadebaixoda
poropositivadecadaperodo,essarazo

denominadaDUTYCYCLE(razocclica),

eatravsdelapodemossaberavelocidadeaplicadaaomotor.

Fig.1SinalPWM

OPWMutilizadoemreguladoresdetensoeficientes.Pelochaveamentodetensona
carga,comarazocclicaapropriada,asadaseaproximardonveldetensodesejado.O
rippledatensochaveadanormalmentefiltradocomumindutoreumcapacitor.

3.2.DriverparaMotorDCeSensorptico

3.3.CdigoFonte

;***********************************************************************
;*UniversidadeFederaldeSantaCatarina(UFSC)

;*CentroTecnolgico(CTC)

;*DepartamentodeAutomaoeSistemas(DAS)

;*ProgramadeEducaoTutorialdaEngenhariaEltrica(PETEEL)

;*

;*

*
;*=====================================

;*CONTROLEEMMALHAFECHADADAVELOCIDADEDEUMMOTORDC

;*UTILIZANDOUMMICROCONTROLADOR8051

;*=====================================
*
;*
*
***********************************************************************

;==================================
;0.VARIVEISECONSTANTES
;==================================

PERIODO

equ030h

PERIODO1

equ031h

FLAG_VEL

equ032h

DUTY

equr0;(00hFFh)

VEL_SET

equr1;ndepulsos/200ms

VEL_ATUAL

equr2;ndepulsos/200ms

MODULO

equr3;|VEL_ATUALVEL_SET|

INCREM

equr4

SINAL_MOD

equf0

FLAG1

equ0D1h

;0.1Parmetrosdecontrole
;~~~~~~~~~~~~~~~~~~~~~~~~~~
VALOR_1equ03h;Valoresdasfaixasdevelocidade
VALOR_2equ07h
VALOR_3equ15h

INCREM_1equ3;Incremento(+ou)doDutyCycle

INCREM_2equ6
INCREM_3equ9

org00h
jmpINICIO

org0Bh
jmpTIMER0

org23h
jmpINT_SERIAL

;==================================
;1.CONFIGURAESINICIAIS
;==================================

org30h

INICIO:
movDUTY,#00h
movFLAG_VEL,#00h
movVEL_SET,#00h
movVEL_ATUAL,#00h

;1.1CONFIGURAESPWM(TIMER0)

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

movtmod,#00100010b;SetaoTimer0eoTimer1noModo2
callPWM_CONF
setbea;HabilitaInterrupes
setbet0;HabilitaInterrupodoTimer0
setbtr0;DisparaoTimer0

;1.2CONFIGURAESSERIAL(TIMER1)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

movth1,#11111101b;Cargainicialparaumbaudratede9600bps
movscon,#01010000b;SerialnoModo1,recepohabilitada
movtl1,TH1;

setbtr1;InciodacontagemdoTimer1
setbie.4;HabilitaainterrupodoTimer1
movPERIODO1,#02h
mova,#'Z'
callSERIAL_TX

;1.3CONFIGURAESDOCONTADORDEFAIXAS(TIMER2)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

mov0C9h,#01h
mov0C8h,#00001111b

;==================================
;2.PROGRAMAPRINCIPAL
;==================================

LOOP:
mova,FLAG_VEL
jnzENVIA_SERIAL
jmpLOOP
ENVIA_SERIAL:
movFLAG_VEL,#00h
mova,PERIODO
deca
movPERIODO,a
jnzLOOP
movPERIODO,#0A5h

mova,PERIODO1;Esperaumnmerodeinterrupes
deca
movPERIODO1,a
jnzLOOP
movPERIODO1,#4;Correspondentea200ms

mova,0CCh
movVEL_ATUAL,a
callSERIAL_TX;Escreveonmerodeciclosnaserial
mov0CCh,#00h;0CCh=T2

callCONTROLE

jmpLOOP

;=================================
;3.TRATADORESDEINTERRUPES
;=================================

;3.1TRATADORDOTIMER0
;~~~~~~~~~~~~~~~~~~~~~~~~

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DESCRIO:GeraosinalPWMparaoacionamentodoMotor
;ENTRADA:dutycycle(DUTY)Escala:0FF
;SADA:SinalPWMemP1.2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

TIMER0:
clrea
jbFLAG1,THIGH;F0:0>TLOW;1>THIGH

TLOW:
setbFLAG1
setbp1.2;VccemP1.2(ativobaixo)
clrtf0
setbea
movtl0,r7;ColocaemTL0R7=256duty

reti

THIGH:
movFLAG_VEL,#0ffh
clrp1.2;0VemP1.2(ativobaixo)
clrFLAG1
mova,#0FFh;255
clrc
subba,r7
clrc
subba,#5

SAI:clrtf0
setbea
movtl0,a
reti

;3.2TRATADORDASERIAL
;~~~~~~~~~~~~~~~~~~~~~~~

INT_SERIAL:
clrea
callSERIAL_RX
movVEL_SET,a
callSERIAL_TX
setbea
clrri

reti
;=================================
;4.SUBROTINAS
;=================================

;4.1CONFIGURAODOPWM
;~~~~~~~~~~~~~~~~~~~~~~~

PWM_CONF:
mova,DUTY
jnzPULA
mova,#01h

PULA:
movr7,a

;CarregaodutycycleemR7

mova,#0FFh;255
clrc
subba,r7
movtl0,a
ret

;4.2CONTROLEDAVELOCIDADE
;~~~~~~~~~~~~~~~~~~~~~~~~~~

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DESCRIO:Analisaavelocidadeatualdomotor(VEL_ATUAL)
;eincrementaoudecrementaodutycyle(DUTY),deacordo
;comavelocidadesetada(VEL_SET)pela
serial.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CONTROLE:
clrSINAL_MOD
mova,VEL_ATUAL;Calculaomdulodadiferenadasvelocidades
subba,VEL_SET
jncPOSITIVO
setbSINAL_MOD;SeVEL_SET>VEL_ATUAL=>SetaoflagSINAL_MOD
clrC;ClearCY
mova,VEL_SET
subba,VEL_ATUAL
POSITIVO:
movMODULO,a
cjneMODULO,#VALOR_1,DIF_1;
jmpFIM2;MODULO=VALOR_1
DIF_1:
jncMAIOR_1;MODULO>VALOR_1
jmpFIM;MODULO<VALOR_1

MAIOR_1:
cjneMODULO,#VALOR_2,DIF_2
movINCREM,#INCREM_1
jmpFIM
DIF_2:
jncMAIOR_2
movINCREM,#INCREM_1
jmpFIM

MAIOR_2:

cjneMODULO,#VALOR_3,DIF_3

movINCREM,#INCREM_2
jmpFIM
DIF_3:

jncMAIOR_3

movINCREM,#INCREM_2
jmpFIM

MAIOR_3:
movINCREM,#INCREM_3

FIM:mova,DUTY;IncrementaoudecrementaoDutyCycle
jnbSINAL_MOD,DECREM
adda,INCREM
jncSAIDA
mova,#0FAh
jmpSAIDA
DECREM:

subba,INCREM

jncSAIDA
mova,#05h
SAIDA:
movDUTY,a
callPWM_CONF

FIM2:ret

;4.3SERIALTX

;~~~~~~~~~~~~~
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DESCRIO:Enviaumdadoqualquerpelaserial
;OdadodeveestarcolocadonoAcumulador
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SERIAL_TX:
clrea
movsbuf,a
jnbti,$
clrti
setbea
ret

;4.4SERIALRX
;~~~~~~~~~~~~~
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DESCRIO:Recebeumdadoqualquerpelaserial;
;OdadocolocadonoAcumulador;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SERIAL_RX:jnbri,$
mova,sbuf
clrri
ret

end

MANUALDOUSURIO
CONTROLEEMMALHAFECHADADAVELOCIDADEDEUMMOTORDCUTILIZANDO
UMMICROCONTROLADOR8051

DescrioGeraldoPrograma

OProgramadeControledevelocidadedemotordecorrentecontnuatemumainterface
amigvelcomousurio,noqualsoespecificadososparmetroseporondepossvel
acompanharocomportamentodocontrole.Observenafiguraemanexooquerepresenta
cadacampo.
Ousurioforneceovalordesejadodavelocidadeemrpm(rotaesporminuto)atravsde
umbotolocalizadodireitainferiordainterfacedoprograma.Essedadotransferidopor
umaportaserialaomicrocontrolador.Duranteofuncionamento,osistemacaptaossinais
pticosgeradospelosensor.Essessinaissotratadosporumarotinadecontrole
programadano8051eosresultadosenviadosviaserialparaosoftwaredeinterface.

UtilizandooPrograma

Passo1
Conecteocaboserialdocontroladoremumcomputador.Aps,conecteafontedaplacana
redeeltrica.
Passo2
InicieosoftwareeacioneobotoBoolean.
Passo3
Especifiqueovalor(emrpm)davelocidadedesejada.PressioneobotoAtualizar.
Ovalordavelocidadeatualmostradanovelocmetro,enquantoqueocomportamentoda
velocidadeemfunodotempovisualizadonateladegrfico.

Passo4
Seousuriodesejaralteraravelocidade,bastaselecionarumnovovalorepressionaro
botoAtualizar,semanecessidadedepararomotor.
Passo5
Quandohouvernecessidadededesligamento,seteavelocidadeemzeroepressioneo
botoAtualizareobotoBoolean.

Parmetrosda
comunicaoserial

Botohabilita
leitura Dadosrecebidos
pelaserial

Nmerodebytes
recebidos

Comportamento
daVelocidade

EnviaVelocidadeSetada
Velocidade
setadaemhex

FatordeMultiplicao
paraclculode
velocidade

Indicadorde
velocidadeatual
emRPM

Iniciar

;*RaphaelRochaCoelho

coelholds@gmail.com

;*CleitonMoyadeAlmeida

cleitonmoya@yahoo.com.br

AjusteVelocidade
Desejadaemrpm

;*ViniciusBerndsenPeccin

vinicius.peccin@gmail.com

Das könnte Ihnen auch gefallen