Beruflich Dokumente
Kultur Dokumente
UMMICROCONTROLADOR8051
RaphaelRochaCoelhoAcadmico,CleitonMoyadeAlmeidaAcadmico,Vincius
BerndsenPeccinAcadmico
DepartamentodeAutomaoeSistemasUniversidadeFederaldeSantaCatarina
ProgramadeEducaoTutorialdaEngenhariaEltricaUniversidadeFederaldeSanta
Catarina
Resumo
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.
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
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