Velocidade Motor DC, Notas de estudo de Engenharia Aeronáutica
joao-pereira-16
joao-pereira-16

Velocidade Motor DC, Notas de estudo de Engenharia Aeronáutica

20 páginas
50Números de download
1000+Número de visitas
100%de 0 votosNúmero de votos
Descrição
Velocidade Motor DC
90 pontos
Pontos de download necessários para baixar
este documento
Baixar o documento
Pré-visualização3 páginas / 20
Esta é apenas uma pré-visualização
3 mostrados em 20 páginas
Esta é apenas uma pré-visualização
3 mostrados em 20 páginas
Esta é apenas uma pré-visualização
3 mostrados em 20 páginas
Esta é apenas uma pré-visualização
3 mostrados em 20 páginas
Introdução

CONTROLE EM MALHA FECHADA DA VELOCIDADE DE UM MOTOR DC UTILIZANDO

UM MICROCONTROLADOR 8051

Raphael Rocha Coelho – Acadêmico, Cleiton Moya de Almeida – Acadêmico, Vinícius

Berndsen Peccin ­ Acadêmico

Departamento de Automação e Sistemas ­ Universidade Federal de Santa Catarina

Programa de Educação Tutorial da Engenharia Elétrica ­ Universidade Federal de Santa

Catarina

Resumo

Controlar   a   velocidade   de   motores   é   necessário   para   manter   a   boa   qualidade   de

determinados produtos e pode ser feito através do microprocessador PIC programável em

linguagem C ou C++, as quais são aplicadas na maioria dos processos automatizáveis. Um

outro método está nesta proposta de controle em malha fechada da velocidade de um motor

de corrente contínua utilizando um microcontrolador Intel 8051 que será apresentada e já

verificada  nos  experimentos.  Para   fortalecer   ainda  mais   o  projeto,   foi   desenvolvido  um

software, que permite o controle da velocidade com poucos “clicks no mouse”.

Introdução

Os motores de corrente contínua são largamente utilizados na indústria para acionamento

de equipamentos de pequeno porte, onde são necessárias precisão de velocidade. Existem

CI's  controladores  para esses motores;  porém, optou­se em criar  um sistema capaz de

controlar   a   velocidade   com   uma   interface   diferenciada,   podendo   o   operador   alterar

parâmetros durante o funcionamento.

Para  tal  projeto,  utilizou­se um microcontrolador  da  família  8051,  um motor  de corrente

contínua,   um   drive   para   acioná­lo   e   um   sensor  óptico.     A   programação   foi   feita   em

assembly.

1. Visão Geral do Projeto

Neste projeto é implementado um controlador da velocidade de motor de corrente contínua.

Foi  utilizado um microcontrolador  da  família  8051,  em específico o modelo AT89S8252.

Esse controle é feito em malha fechada. Anexo ao eixo do motor foi implementado um disco

seccionado   de   forma   a   obter   diferentes   sinais   ópticos,   utilizados   para   cálculo   de

realimentação do sistema. 

O usuário fornece o valor desejado da velocidade em rpm (rotações por minuto) através de

uma   interface   num   computador.   Esse   é   transferido   por   uma   porta   serial   ao

microcontrolador. Durante o funcionamento, o sistema capta os sinais ópticos gerados pelo

sensor. Esses sinais são tratados por uma rotina de controle programada no 8051 e os

resultados enviados via serial para o software de interface.

2. Controle de velocidade de um motor DC com o Microcontrolador 8051

O programa de controle de velocidade do motor de corrente contínua é dividido em cinco

partes principais:

Definições de variáveis, constantes e parâmetros de controle

Configurações Iniciais

Programa Principal

Interrupções

Subrotinas

2.0. Definições de variáveis, constantes e parâmetros de controle

Além das variáveis e constantes, utilizamos parâmetros de incremento do duty­cicle e faixas

de valores de velocidade.

2.1. Configurações Iniciais

Nesta seção são configurados os 3 timers e a comunicação serial de dados.

Timer 0: Configurado em modo 2 para execução do controle PWM, explicado na seção 4.1

Timer 1: Utilizado em modo 1 para comunicação da porta serial, analisado na seção 4.2

Timer 2: Configurado como contador dos sinais ópticos. Através deste contador pode­se

calcular a velocidade atual do motor.

2.2. Programa Principal

Elaborado para que a cada 200 ms o microcontrolador envie a velocidade atual do motor

para  a  interface e execute  a  rotina de controle.  Esse envio é  determinado por  um  flag

auxiliar, ativado quando ocorre uma interrupção do timer 0 e é setado em Vcc a alimentação

do motor.

2.3. Interrupções

2.3.1 Interrupção do timer 0

Gera o sinal PWM na porta P2.1 para o acionamento do Motor de acordo com o duty­cicle

especificado pelo controle.

2.3.2 Interrupção da serial

A instrução de recepção de dados é chamada e a velocidade desejada é

armazenada na variável VEL_SET. Após isso é enviado um dado para a confirmação de

recebimento.

2.4. Subrotinas

2.4.1 Configuração do PWM

O valor do duty­cicle é carregado no registrador R7 e subtraído de 0FFh. O resultado

é inserido em TL0. Ele também é o valor correspondente ao intervalo de tempo em Tlow, na

interrupção do timer 0.

2.4.2 Controle da Velocidade

Analisa a velocidade atual do motor (VEL_ATUAL) e incrementa ou decrementa o

duty­cyle (DUTY), de acordo com a velocidade setada (VEL_SET) pela serial e as faixas de

velocidades dantes definidas.

2.4.3 Serial TX

Envia um dado qualquer pela serial. O dado deve estar colocado no Acumulador.

2.4.4 Serial RX

Recebe um dado qualquer pela serial. O dado é colocado no Acumulador.

3. Conhecimento Necessário

3.1. Noções de Controle PWM

Um motor  CC (corrente  contínua)  é  utilizado quando se necessita  uma velocidade alta,

porém com baixo torque na aplicação. A velocidade de um motor CC pode ser controlada

através   da   sua   tensão   de   entrada.   No   entanto,   para   evitar   sobreaquecimentos   nos

componentes,   em   vez   de   um   sinal   contínuo   é   usado   um   sinal   PWM   (Pulse   Width

Modulation) onde a largura dos pulsos controla a potência fornecida ao motor e por sua vez

a velocidade de rotação. A velocidade do motor varia proporcionalmente à área debaixo da

porção positiva de cada período, essa razão   é denominada DUTY­CYCLE (razão cíclica),

e através dela podemos saber a velocidade aplicada ao motor.

Fig. 1 ­ Sinal PWM

O PWM é utilizado em reguladores de tensão eficientes. Pelo chaveamento de tensão na

carga, com a razão cíclica apropriada, a saída se aproximará do nível de tensão desejado.O

ripple da tensão chaveada normalmente é filtrado com um indutor e um capacitor.

3.2. Driver para Motor DC e Sensor Óptico

3.3. Código Fonte

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

;* Universidade Federal de Santa Catarina (UFSC)                         *

;* Centro Tecnológico (CTC)                                               *

;* Departamento de Automação e Sistemas (DAS)                          *

;* Programa de Educação Tutorial da Engenharia Elétrica (PET­EEL)       *

;*       *

;*                                                                        

*

;*   =­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­==­=­=­=­= =­=­=­==­=­=­=­=        *

;* CONTROLE EM MALHA FECHADA DA VELOCIDADE DE UM MOTOR DC     *

;*              UTILIZANDO UM MICROCONTROLADOR 8051            *

;*   =­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­=­==­==­=­=­==­=­=­=­=   

*

;*                                                                  

*

***********************************************************************

;==================================

; 0. VARIÁVEIS E CONSTANTES

;==================================

PERIODO          equ 030h

PERIODO1         equ 031h

FLAG_VEL         equ 032h

DUTY             equ r0                  ; (00h ­ FFh)

VEL_SET          equ r1                  ; nº de pulsos / 200ms

VEL_ATUAL      equ r2                  ; nº de pulsos / 200ms

MODULO           equ r3                  ; |VEL_ATUAL ­ VEL_SET|

INCREM           equ r4

SINAL_MOD        equ f0

FLAG1            equ 0D1h

; 0.1 Parâmetros de controle

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

VALOR_1         equ 03h                 ; Valores das faixas de velocidade

VALOR_2         equ 07h

VALOR_3         equ 15h

INCREM_1        equ 3                   ; Incremento (+ ou ­) do Duty­Cycle

INCREM_2        equ 6

INCREM_3        equ 9

               org 00h

               jmp INICIO

               org 0Bh

               jmp TIMER0

               org 23h

               jmp INT_SERIAL

;==================================

; 1. CONFIGURAÇÕES INICIAIS

;==================================

               org 30h

INICIO:         

   mov DUTY,#00h

               mov FLAG_VEL,#00h

               mov VEL_SET,#00h

               mov VEL_ATUAL,#00h

; 1.1 CONFIGURAÇÕES PWM (TIMER 0)

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

               mov  tmod,#00100010b    ; Seta o Timer 0 e o Timer 1 no Modo 2

               call PWM_CONF

               setb ea                 ; Habilita Interrupções

               setb et0                ; Habilita Interrupção do Timer 0

               setb tr0                ; Dispara o Timer 0

; 1.2 CONFIGURAÇÕES SERIAL (TIMER 1)

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

               mov th1,#11111101b      ; Carga inicial para um baud­rate de 9600bps

               mov scon,#01010000b     ; Serial no Modo 1, recepção habilitada

               mov tl1, TH1            ;

               setb tr1                ; Início da contagem do Timer 1

               setb ie.4               ; Habilita a interrupção do Timer 1

               mov  PERIODO1,#02h

               mov  a,#'Z'

               call SERIAL_TX

; 1.3 CONFIGURAÇÕES DO CONTADOR DE FAIXAS (TIMER 2)

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

               mov 0C9h,#01h

               mov 0C8h,#00001111b

;==================================

; 2. PROGRAMA PRINCIPAL

;==================================

LOOP:           

   mov a, FLAG_VEL

               jnz ENVIA_SERIAL

               jmp LOOP

ENVIA_SERIAL:   

   mov FLAG_VEL,#00h

               mov a,PERIODO

               dec a

               mov PERIODO,a

               jnz LOOP

               mov PERIODO,#0A5h

               mov a,PERIODO1          ; Espera um número de interrupções

               dec a

               mov PERIODO1,a

               jnz LOOP

               mov PERIODO1,#4         ; Correspondente a 200 ms

               mov  a,0CCh

               mov  VEL_ATUAL,a

               call SERIAL_TX          ; Escreve o número de ciclos na serial

               mov  0CCh,#00h          ; 0CCh = T2

               call CONTROLE

               jmp LOOP

;=================================

; 3. TRATADORES DE INTERRUPÇÕES

;=================================

; 3.1 TRATADOR DO TIMER 0

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; DESCRIÇÃO: Gera o sinal PWM para o acionamento do Motor 

; ENTRADA:duty­cycle (DUTY) Escala: 0­FF            

; SAÍDA: Sinal PWM em P1.2 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

TIMER0:        

   clr ea

               jb  FLAG1,THIGH         ; F0: 0 ­> TLOW ; 1 ­> THIGH

TLOW:          

   setb FLAG1

               setb p1.2               ; Vcc em P1.2  (ativo baixo)

               clr  tf0

               setb ea

               mov  tl0,r7             ; Coloca em TL0 R7 = 256 ­ duty

               reti

THIGH: 

               mov  FLAG_VEL,#0ffh

               clr  p1.2               ; 0V em P1.2  (ativo baixo)

               clr  FLAG1

               mov  a,#0FFh            ; 255

               clr  c

               subb a,r7

               clr  c

               subb a,#5

SAI:        clr  tf0

               setb ea

               mov  tl0,a

               reti

;3.2 TRATADOR DA SERIAL

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

INT_SERIAL:

   clr  ea

               call SERIAL_RX

               mov  VEL_SET,a

               call SERIAL_TX

               setb ea

               clr  ri

               reti

;=================================

; 4. SUBROTINAS

;=================================

; 4.1 CONFIGURAÇÃO DO PWM

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

PWM_CONF:      

   mov  a,DUTY             

               jnz  PULA

               mov  a,#01h         .

PULA:   

   mov  r7,a    ; Carrega o duty­cycle em R7

               mov  a,#0FFh             ; 255

               clr  c

               subb a,r7

               mov  tl0,a

               ret

; 4.2 CONTROLE DA VELOCIDADE

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; DESCRIÇÃO: Analisa a velocidade atual do motor (VEL_ATUAL) 

; e incrementa ou  decrementa o duty­cyle (DUTY), de acordo  

; com a velocidade setada (VEL_SET) pela

serial.              ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

CONTROLE:       

   clr  SINAL_MOD

               mov  a,VEL_ATUAL        ; Calcula o módulo da diferença das velocidades

               subb a,VEL_SET

               jnc  POSITIVO

               setb SINAL_MOD          ; Se VEL_SET > VEL_ATUAL => Seta o flag SINAL_MOD

               clr  C                  ; Clear CY

               mov  a,VEL_SET

               subb a,VEL_ATUAL

POSITIVO:       

    mov  MODULO,a

               cjne MODULO,#VALOR_1,DIF_1 ;

               jmp  FIM2                  ; MODULO = VALOR_1

DIF_1:          

   jnc  MAIOR_1               ; MODULO > VALOR_1

               jmp  FIM                   ; MODULO < VALOR_1

MAIOR_1:        

   cjne MODULO,#VALOR_2,DIF_2

               mov  INCREM,#INCREM_1

               jmp  FIM

DIF_2:   

   jnc  MAIOR_2

               mov  INCREM,#INCREM_1

               jmp  FIM

MAIOR_2:    

        cjne MODULO,#VALOR_3,DIF_3

               mov  INCREM,#INCREM_2

               jmp  FIM

DIF_3:   

           jnc  MAIOR_3

               mov  INCREM,#INCREM_2

               jmp  FIM

MAIOR_3:        

   mov  INCREM,#INCREM_3

FIM:       mov  a,DUTY             ; Incrementa ou decrementa o Duty­Cycle

               jnb  SINAL_MOD,DECREM

               add  a,INCREM

               jnc  SAIDA

               mov  a,#0FAh

               jmp  SAIDA

DECREM:   

       subb a,INCREM

               jnc  SAIDA

               mov  a,#05h

SAIDA:      

   mov  DUTY,a

               call PWM_CONF

FIM2:           ret

; 4.3 SERIAL TX

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; DESCRIÇÃO: Envia um dado qualquer pela serial

; O dado deve estar colocado no Acumulador 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SERIAL_TX:   

   clr  ea

               mov  sbuf,a

               jnb  ti,$

               clr  ti

               setb ea

               ret

; 4.4 SERIAL RX

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

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; DESCRIÇÃO: Recebe um dado qualquer pela serial ;

; O dado é colocado no Acumulador ;    ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SERIAL_RX:      jnb ri, $

               mov a, sbuf

               clr ri

               ret

               end

MANUAL DO USUÁRIO

CONTROLE EM MALHA FECHADA DA VELOCIDADE DE UM MOTOR DC UTILIZANDO

UM MICROCONTROLADOR 8051

Descrição Geral do Programa

O Programa de Controle de velocidade de motor de corrente contínua tem uma interface

amigável com o usuário, no qual são especificados os parâmetros e por onde é possível

acompanhar o comportamento do controle. Observe na figura em anexo o que representa

cada campo.

O usuário fornece o valor desejado da velocidade em rpm (rotações por minuto) através de

um botão localizado à direita inferior da interface do programa. Esse dado é transferido por

uma porta serial ao microcontrolador. Durante o funcionamento, o sistema capta os sinais

ópticos gerados pelo sensor. Esses sinais são tratados por uma rotina de controle

programada no 8051 e os resultados enviados via serial para o software de interface.

Utilizando o Programa

Passo 1

Conecte o cabo serial do controlador em um computador. Após, conecte a fonte da placa na

rede elétrica.

Passo 2

Inicie o software e acione o botão Boolean.

Passo 3

Especifique o valor (em rpm) da velocidade desejada. Pressione o botão Atualizar.

O valor da velocidade atual é mostrada no velocímetro, enquanto que o comportamento da

velocidade em função do tempo é visualizado na tela de gráfico.

Passo 4

Se o usuário desejar alterar a velocidade, basta selecionar um novo valor e pressionar o

botão Atualizar, sem a necessidade de parar o motor.

Passo 5

Quando houver necessidade de desligamento, sete a velocidade em zero e pressione o

botão Atualizar e o botão Boolean.

;*      Raphael Rocha Coelho                     coelholds@gmail.com                *

;*      Cleiton Moya de Almeida            cleitonmoya@yahoo.com.br   *

Botão habilita  leitura

Iniciar Ajuste Velocidade  Desejada em rpm

Indicador de  velocidade atual 

em RPM

Envia Velocidade Setada

Comportamento  da Velocidade

Velocidade  setada em hex

Fator de Multiplicação  para cálculo de  velocidade

Número de bytes  recebidos

Dados recebidos  pela serial

Parâmetros da  comunicação serial

;*      Vinicius Berndsen Peccin          vinicius.peccin@gmail.com  *

2

Até o momento nenhum comentário
Esta é apenas uma pré-visualização
3 mostrados em 20 páginas