Velocidade Motor DC

Velocidade Motor DC

(Parte 1 de 4)

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.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.

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

;* Centro Tecnológico (CTC) *

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

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

;* UTILIZANDO UM MICROCONTROLADOR 8051 *

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

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

(Parte 1 de 4)

Comentários