Upload
phamkhanh
View
213
Download
0
Embed Size (px)
Citation preview
CONTROLE RPM DE MOTOR DE CORRENTE CONTÍNUA
CARLOS MASSAO FUZITAKI1 [email protected]
Prof. ILDEBERTO DE GENOVA BUGATTI2
Resumo – O trabalho de pesquisa foi motivado pela necessidade de acionar motores de corrente contínua controlando sua velocidade de rotação, para contemplar as especificações de precisão e velocidade de uma diversidade de aplicações que utilizam motores de corrente contínua para acionar sistemas mecânicos. Foram estudadas as características de diversos motores de corrente contínua disponibilizados no mercado e, também formas de controle utilizadas. O controle de velocidade desenvolvido é realizado por um microcontrolador que altera a potência do motor conforme a necessidade da aplicação. Para validar o sistema de controle proposto, foi desenvolvido o protótipo de um guindaste utilizando recursos da Mecatrônica Industrial na sua síntese e construção. O protótipo utiliza dois motores para realizar movimentos verticais e de rotação. A velocidade e precisão dos deslocamentos realizados e tratamentos de emergência e segurança é controlada por um programa desenvolvido utilizando linguagem C. Os testes executados com o protótipo confirmaram a viabilidade na obtenção da precisão e velocidade com o uso das tecnologias propostas. Palavras-chave: Guindaste. Motores. Controle. Velocidade. Abstract - The research work was motivated by need to activate dc motor controlling its spin velocity to fullfill the specifications of precision and velocity of a variety of applications wich uses dc motors to activate mechanical systems. It was made a study of characteristics of various dc motors available in market and ways of controls used. The velocity control developed is realized with a microcontroller witch change the electric power applied to motor according to need of the application. To validate the proposed control, was developed a prototype of a crane using the knowledge of Industrial Mecatronics to project and make it. The prototype uses 2 motors to make vertical and spin movements. The velocity and precision movements and emergency treating is made with a program developed using C language. The tests made with the prototype confirmed the viability to fullfill de specifications of the precision and velocity related using the technologies proposed. Keywords: Crane. DC Motor. Control. Velocity.
1. INTRODUÇÃO
O trabalho de pesquisa foi motivado pela necessidade de acionar motores de
corrente contínua controlando sua velocidade de rotação, para contemplar as
especificações de precisão e velocidade de uma diversidade de aplicações que
utilizam motores de corrente contínua para acionar sistemas mecânicos.
1Aluno do curso de Tecnologia em Mecatrônica Industrial de Garça - FATEC
2Docente do curso de Tecnologia em Mecatrônica Industrial de Garça – FATEC
Objetivo específico – para validar o sistema de controle proposto, foi
desenvolvido um protótipo de um guindaste utilizando recursos da Mecatrônica
Industrial na sua síntese e construção.
Justificativa ou relevância – o parque industrial regional tem forte atuação na
área de eletroeletrônica, caracterizando-se como um pólo de desenvolvimento
tecnológico de referência na área.
A diversidade e quantidade de produtos produzidos por essas empresas
requerem automação dos processos de manufatura para obter qualidade, eficiência,
ganho nos custos e competitividade.
Nas linhas de produção de muitas dessas empresas, são utilizados uma
diversidade de equipamentos mecânicos que são acionados por motores de corrente
contínua, que geram movimentos necessários e adequados a aplicações
específicas. Em muitos casos há necessidade de precisão no controle desses
movimentos.
Para o controle do motor será utilizado o microcontrolador PIC 16F877A da
fabricante Microchip, como afirma Renato A. Silva (2007, p. 17):
O atual desenvolvimento tecnológico nas áreas de automação e robótica deve se principalmente ao desenvolvimento dos microcontroladores e processadores digitais de sinais (DSP), que possuem memórias e cuja estrutura lembra os microcomputadores atuais.
O protótipo é um guindaste de madeira na parte da estrutura, com os
movimentos verticais e horizontais feitos por dois motores aproveitados de uma
impressora, alimentados com uma fonte de 12 V e controlados por um
microcontrolador modelo PIC16F877A, da fabricante Microchip e para programá-lo
foi utilizado o compilador PICC-Lite Compiler, da HI-TECH Software que gera um
código em linguagem de máquina com extensão .HEX que pode ser gravado no
microcontrolador através do software K-150 e um dispositivo onde se encaixa o PIC
e comunica com o micro através de um adaptador USB-RS232 (ambos da empresa
DIY eletronics (HK) Ltd.
2. METODOLOGIA
Para o desenvolvimento desse trabalho foi efetuado um aprofundamento
teórico sobre o microcontrolador, tipos de motores, e as interfaces do
microcontrolador com os sensores e atuadores utilizados.
2.1 Referencial teórico.
2.1.1 Microcontrolador
O microcontrolador utilizado foi o PIC 16F877A, da fabricante Microchip, cujas
características mais importantes são:
- velocidade de operação de até 20 MHz de clock;
- memória interna de dados RAM (368 bytes);
- memória de programa FLASH (8000 palavras de 14 bits cada);
- 33 pinos de I/O individualmente configurados;
- 3 timers configuráveis (temporizador e/ou contador);
- 2 módulos de Captura/Comparação/PWM;
- interface serial RS232 (USART);
- 14 fontes de interrupção.
No protótipo foi utilizado um oscilador de 14.302.444 Hz entre os pinos 13. Os
capacitores são de 22pF, que conforme o fabricante não são valores ideais, mas
para um protótipo não haveria maiores problemas. O resistor entre o pino 14 e o
cristal oscilador seria para evitar que o sinal senoidal ficasse truncado o que poderia
ser observado por um osciloscópio, conforme figura 1.
Figura 1: cristal oscilador
Fonte: Zanco (2011)
O botão de reinício do programa (ou reset) fica no pino e os resistores r1 e r2
e o capacitor de 100nF são recomendações do fabricante para manter as tensões
estáveis no PIC.
Fonte: Zanco (2011).
Os bits dos registradores de 8 bits PORTA, PORTB, PORTC, PORTD e
PORTE correspondem aos pinos das entradas/saídas digitais do PIC. Porém no
registrador PORTA apenas os bits 0 a 5 correspondem aos pinos de I/O, e no
PORTE apenas os bits 0, 1 e 2 correspondem aos pinos de I/O. Os registradores
TRISA, TRISB, TRISC, TRISD e TRISE definem se os pinos correspondentes aos
registradores serão de entrada (valor 1) ou saída (valor 0).
Os pinos 33 a 40 que correspondem aos bits 0 a 7 registrador PORTB
possuem PULL UP intermo de modo que quando definimos o pino correspondente
Figura 2: Botão reset
aos bits 0 e 6 do registrador RB como entrada, eles ficam em nível lógico 1 (5V) e os
demais ficam com 0 (0 V).
O pino correspondente ao RB0 estará sendo usado como entrada do sinal
proveniente dos codecs. Quando há passagem de luz infra-vermelho (IR) do led
emissor para o receptor o circuito envia sinal 0 para o PIC enquanto quando a luz é
bloqueada pelo disco do codec, temos sinal 1 (5v) na entrada do PIC. Cada vez que
há uma mudança de 0 para 1 a rotina de interrupção externa detecta e incrementa
um contador. Como há 2 motores e portanto 2 codecs mas apenas uma entrada
para interrupção externa (RB0) há um relê controlado através do pino
correspondente ao bit 2 do registrador PORTB (ou RB0) para receber o sinal
chegando na entrada NA (normalmente aberto) ou NF (normalmente fechado) do
relê. Para tanto, foi necessário eliminar o repique causado no momento da mudança
da chave do relê através de um atraso de 15ms, para aguardar que o sinal se
estabilize, de acordo com a figura 3.
Figura 3: emissor/receptor para codec
Fonte: autor
A cada 100 milésimos de segundo (0,1 s) o programa envia uma certa tensão
(val1) para o motor por 30ms(0,03s) e depois desliga por 70ms(0,07s). A cada
100ms o programa verifica se chegou 1 pulso; se não chegou, aumenta a tensão em
4 unidades (máximo 1023); se ultrapassou, diminui em 4 unidades.
A saída dessa tensão é enviada para o pino 17 (RC2) ou 16 (RC1) do PIC e
depois amplificada, convertida em corrente e enviada aos motores; entre a saída do
amplificador e o motor há também um conjunto de 2 relés de 12V que faz com que
possamos inverter o sentido de rotação do motor se enviar uma corrente ao circuito
de amplificação para os relés. O controle destes reles é feito através de 2 pinos
correspondentes aos bits 3 e 4 do registrador PORTB (Figura 4).
Figura 4: circuito de amplificação para motores
Fonte: autor
Para o controle da PWM são usados vários registradores, como T2CON que
define parametros do TMR2; CCPxCON (x=1 ou x=2) onde ficam os 2 bits mais
significativos e definimos o registrador CCP como sendo para uso em PWM (pode
também ser usado para captura e comparação); PR2, onde definimos o período
PWM; e CCPRxL e CCPRxH. O registrador CCPRxH é somente de leitura, de modo
que somente quando PR2 = TMR2 os 2 bits (CCP1x e CCP1Y) são transferidos para
o registrador CCPRxH.
registrador CCP1CON e CCP2CON
7 6 5 4 3 2 1 0
- - CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0
Duty cycle = (CCPR1L:CCP1CON<5,4> * (TMR2 pre scale) / FOSC
Período = ((PR2+1) * 4 * (TMR2 pre scale)) / FOSC
Para o caso do protótipo temos:
Período = (256*4*16)/14302444 = 1,1 ms (aproximadamente)
Veja trecho da programação:
PR2 = 0xff; masc = 0x00; CCPR1L = pot >> 2; // pot = valor do PWM
masc = pot << 6; masc = masc >> 2; CCP1CON = CCP1CON | masc; TRISC2 = 0; // pino RC2 = saída T2CON = 0x06; // habilita timer2, pre-scale = 1:16
CCP1CON = CCP1CON | 0x0c; Para o controle da entrada analógica temos principalmente os registradores
PORTA (registrador RA), ADCON0 e ADCON1 onde podemos definir quais pinos do
registrador RA funcionarão como entrada analógica ou digital, ligar/desligar a
conversão analógico para digital (A/D), o início da conversão A/D, se o clock será
FOSC/2 ou FOSC/64 (frequência de oscilação), etc; o resultado da conversão será
armazenada nos registradores ADRESH e ADRESL. Se o bit 7 (ADFM) do
registrador ADCON1 for 0(zero) os 8 bits mais significativos ficarão no registrador
ADRESH e os 2 restantes no outro registrador; se for 1, os 8 bits menos
significativos ficarão no registrador ADRESL e os 2 bits restantes no ADRESH.
registrador ADCON0
7 6 5 4 3 2 1 0
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE - AD0N
registrador ADCON1
7 6 5 4 3 2 1 0
ADFM ADCS2 - - PCFG3 PCFG2 PCFG1 PCFG0
Trecho da programação:
TRISA = 0b00001011; // bits A3, A1, A0 = entrada, restante saida ADCON0 = 0b10000001; // fosc/64, canal A0 como entrada analogica, habilita
conversão ADCON1 = 0b11000100; // fosc/64, RA0, RA1 e RA3 = entrada, resultado
justificado à direita (adresh:adresl) … CHS0 = 0; // leitura do pino A0 delay67(); // pausa de 67 micro-segundos
ADG0 = 1; // liga go/done while (ADG0); val1 = ADRESH * 256 + ADRESL;
A entrada analógica foi utilizada para poder encontrar e definir os pontos p1,
p2, p3 e p4 para uso na subrotina de automação, através de um potenciômetro para
controlar o movimento dos motores.
Para a comunicação com o PC foi utilizado a conexão serial assíncrona RS-
232, onde os principais registradores são TXSTA e RCSTA:
Registrador TXSTA
7 6 5 4 3 2 1 0
CSRC TX9 TXEN SYNC
BRGH TRMT TX9D
registrador RXSTA
7 6 5 4 3 2 1 0
SPEN RX9 SREN CREN ADDEN FERR OERR RX9
Para escolha do baud rate(velocidade de transmissão), fazemos:
SPBRG = FOSC / (16 * (baud rate)) – 1, e BRGH = 1 (transmissão alta
velocidade).
Para implementação de transmissão serial assíncrona:
a) iniciar o registrador BRGH para o baud rate desejado;
b) configurar pinos RC7 e RC6 como entrada;
c) habilitar porta de comunicação serial: SYNC=0 e SPEN=1;
d) habilitar transmissão: TXEN=1;
e) TXREG = dado a transmitir;
f) TRMT = 1 → indicação de transmissão efetuada.
Para a recepção:
a), b) e c): mesmo que na transmissão;
d) habilitar recepção: CREN=1;
e) ler FERR e OERR para ver se houve erro;
f) dado = RCREG (8bits);
g) se houver erro, apagar CREN=0.
A comunicação com o PC foi utilizada para fins de depuração do programa
no PIC para facilitar na identificação mais rápida na localização de eventuais erros
na lógica de programação ou erro de hardware.
2.1.2 Motores
Existem diversos tipos de motores de corrente alternada como os de indução
monofásico, bifásico, trifásico, síncronos, assíncronos, mas como o motor escolhido
foi o tipo de corrente contínua, o estudo foi focado neste tipo.
Mesmo entre motores de contínua existem os vários tipos, como os de ímã
permanente no lugar do estator, e os que possuem dois enrolamentos: um com fios
de seção grossa e poucas espiras, ligado em série com o enrolamento da armadura,
chamado de enrolamento série, e outro de seção fina com muitas espiras ligada em
paralelo com o enrolamento da armadura, chamado de enrolamento shunt, de
acordo com a figura 5.
Os motores com enrolamento em série possuem alto torque porém possuem
péssimo controle de velocidade, pois se partir sem carga a velocidade pode
aumentar muito, quebrar e até ferir pessoas que estiverem por perto.
Figura 5: tipos de enrolamentos
Fonte: Nascimento Junior (2011)
Os motores com enrolamento em shunt possuem alto torque e baixa
velocidade com pouca variação mesmo variando a carga.
Os motores compound podem ser de dois tipos: cumulativo e diferencial. No
tipo cumulativo o enrolamento shunt deve produzir campo magnético com mesma
direção e sentido ao campo produzido no enrolamento série; como resultado temos
alto torque na partida, velocidade limitada, baixa variação de velocidade mesmo com
variação de carga;
No tipo diferencial o enrolamento shunt deve produzir campo magnético com
mesma direção mas sentido oposto ao campo produzido no enrolamento série;
como resultado temos uma queda significativa com o aumento da carga.
Figura 6: motor série
Figura 7: motor paralelo (shunt)
Fonte: Nascimento Junior (2011)
Fonte: Nascimento Junior (2011)
Os motores utilizados foram de uma impressora que são do tipo corrente
contínua com escovas/comutador e estator de imã permanente (portanto não é
série, nem paralelo, nem compound).
Conforme Nascimento Junior (2011, p. 85):
A principal aplicação de motor de CC está ligada ao controle de velocidade com necessidade crítica de torque, isto é, motores de corrente contínua são excelentes escolhas quando necessitamos manter um torque considerável, mesmo variando a velocidade.
Atualmente é possível variar a velocidade de motores CA com inversores de frequência, mas em algumas situações esse tipo de conjunto simplesmente não atende às condições de torqe exigidas e traz outros problemas, como a poluição da rede, que talvez o futuro resolva.
2.1.3 Técnicas de controle existentes
Os controladores industriais têm como princípio de funcionamento a
comparação do valor real da saída do sistema onde estão aplicados com o valor
desejado para essa saída. Podemos classificar de acordo com a sua ação de
controle como:
a) controladores ON-OFF – apenas dois valores: ligado ou desligado;
b) controladores proporcionais (P) – amplificador com ganho ajustável de
acordo com o erro/desvio;
Figura 8: motor compound
Fonte: Nascimento Junior (2011)
c) controladores de ação integral (I) – o sinal de saída em cada instante é
dado pela área sob a curva do erro até esse instante. O controle Integral é
sempre usado em conjunto com o controle proporcional, pois sem este
auxílio pode assumir valor não nulo mesmo quando o erro é zero.
d) Controladores de ação derivativo (PD) – a ação de controle derivativo tem
um efeito antecipado. A sua principal desvantagem reside no fato de que
os sinais de ruído são amplificados e pode ocorrer saturação do atuador. É
sempre usado em combinação com ação proporcional (P) ou proporcional-
integral (PI).
e) Controladores de ação proporcional-integral-derivativa (PID) – é uma
combinação dos controles proporcionais, integrais e derivativos.
2.2 Desenvolvimento do protótipo
A metodologia escolhida foi estudar a geometria e funcionalidades do
protótipo para depois definir a técnicas de programação do microcontrolador.
No caso a geometria seria a de um guindaste com movimento de subida e
descida e giro para esquerda ou direita em 90° ou pouco mais.
Para o controle do motor foi utilizado o seguinte método: o programa envia
uma certa tensão PWM ao circuito de potência para movimentar o motor durante 30
ms (milissegundos ) , em seguida o motor fica desligado por 70 ms. A cada 100 ms o
programa verifica se o sensor de rotação do motor (encoder) enviou um pulso
indicando que o eixo se moveu um certo ângulo (no caso de um encoder com 4
furos, seria de 90 graus) nesse intervalo de tempo; se a tensão não foi suficiente, ela
aumenta de 4 unidades (que vai de 0 a 1023) para o próximo ciclo; se moveu mais
do que o esperado, ela diminui em 4 unidades para o próximo ciclo.
O circuito de potência foi descrito na seção 2.1 referencial teórico onde
descrevemos sobre o PWM.
Os pinos 33 a 40 que correspondem aos bits 0 a 7 do registrador PORTB
possuem PULL UP interno de modo que quando setamos o bit 7 do registrador
OPTION_REG (registrador que configura as interrupções externa e timer0), isto é
RBPU = 1, todos os pinos configurados como entrada ficam no nível 1 (5v).
O pino correspondente ao bit 0 do PORTB é a entrada dos sensores do
encoder. Como existe apenas uma interrupção externa no PIC 16F877A e portanto
apenas um pino associado a ela, foi utilizado um relê para selecionar o sinal
proveniente do sensor de rotação do motor de subida/descida da carga ou do giro da
plataforma.
O pino correspondente ao bit ao bit 6 foi usado como entrada do botão de
parada de emergência e o pino 7 para o botão de inversão de rotação do motor na
direção vertical.
Para a saída aos amplificadores que movimentarão os motores temos os
pinos 16 e 17 que correspondem ao registrador PORTC, bits 1 e 2 (pwm1 e pwm2)
Figura 9: protótipo do guindaste
Fonte: autor
Parte mecânica
Para movimentação do objeto na vertical, temos 3 eixos para redução:
redução do motor para eixo 2: 8,0mm/37,5mm = 0,213
redução do eixo 2 para eixo 3: 12mm/46mm = 0,2609
redução total = 0.213*0,2609 = ,05557
Portanto, para cada 1/0.05557 = 18 rotações do eixo motor temos 1 volta no eixo que
vai elevar/abaixar a carga; para cada volta, o guincho sobe ou desce 8*pi = 25 mm; no
início da subida, a cada volta no eixo motor, o guincho sobre 25/18 = 1,39 mm.
Levando-se em consideração que a altura máxima do guicho é de 180mm, o eixo
motor girará 180/1,39 = 129 voltas, mas como o codec está instalado no eixo 2, e possui 3
furos, deverá chegar 129*0,213*3 = 82 pulsos ao controlador.
Sendo um protótipo com as polias feitas de borracha de chinelo cortadas a mão com
estilete, e as correias feitas de elástico, as medidas podem resultar bem diferente do
calculado, de modo que para programação foi considerado máximo de 80 voltas no eixo
motor antes de parar.
Para a movimentação horizontal, temos 4 eixos:
redução do motor para eixo 2: 7,0/37,5 = 0,187
redução do eixo 2 para eixo 3: 13/50 = 0,26
redução do eixo 3 para o eixo 4: 18,5/66,3 = 0,279
redução total = 0.187*0,260*0,279=0,01356
Portanto, para cada 1/0.01356 = 73,7 rotações do eixo motor temos 1 volta no eixo
que vai girar a plataforma do guindaste. Fixando num máximo de 180° de giro, o eixo motor
deverá girar no máximo 73,7/2/2 = 18,4 voltas para direita ou esquerda.
Porém o codec está instalado no eixo 2, temos 18,4*0.187 = 3,44; e como o disco do
codec possui 4 furos, deverá chegar 3,44*4 = 13.7, isto é, aproximadamente 14 pulsos para
chegar da posição zero para 90° ou -90°.
2.3 Resultados
Nas primeiras tentativas, ocorreram muitos problemas de mau contato na parte entre
os emissores e sensores porque a conexão era feita por “amarração” mas quando foi
devidamente soldada, esta parte foi resolvida, porém a imprecisão na parte mecânica ainda
trouxe muitos atrasos.
O controle de velocidade está bastante satisfatório considerando as imprecisões na
estrutura mecânica, pois mesmo variando o peso da carga de 20g a 220g a velocidade se
manteve a mesma, e o motor consome somente o necessário para mover o guindaste.
Nos últimos testes foi perdido muito tempo tentando descobrir a causa de um
problema que fazia o microcontrolador reiniciar depois de concluir metade do trajeto (os
movimentos foram divididos em 6 fases: 1.levantar o objeto até certa altura, 2.girar um certo
ângulo, 3.pousar o objeto, 4.depois de uma pausa, levantar o objeto para voltar a posição
inicial ou apenas devolver o guincho à posição inicial, 5.girar no sentido contrario ao item 2,
6.abaixar até a posição inicial).
Obviamente a primeira coisa a fazer foi conferir a tensão, mas no momento estava
dentro dos limites, porém como não fiquei de olho todos os momentos, achei que o
problema estava em outro lugar, mas quando substituí a fonte de energia (uma fonte
originária de um PC) por uma bateria de 12v e um conjunto de 4 pilhas, percebi que era
mesmo a fonte o problema de reinicializar toda hora.
3. CONSIDERAÇÕES FINAIS
A idéia original seria medir a posição inicial do guincho, a altura máxima, o
ângulo de giro e a posição de pouso apertando um botão a cada vez que chegasse
em uma dessas posições (que seria medido pelos pulsos enviados do codec ao
microcontrolador e visualizados em um display) movendo o guincho com 2
potenciômetros (um para descida/subida e outro para giro na horizontal), porém foi
deixado de lado em vista do pouco tempo que faltava e o foco era o controle de
velocidade e precisão dos motores, não as várias funcionalidades que o protótipo
deveria apresentar para ficar mais parecido com um guindaste comercial.
4. REFERÊNCIAS
NASCIMENTO JUNIOR, Geraldo Carvalho do. Máquinas elétricas: teoria e
ensaios. 4. ed. São Paulo: Érica, 2011. SILVA, Renato A.. Programando microcontroladores PIC: linguagem C. São
Paulo: Ensino profissional, 2006. ZANCO, Wagner da Silva. Microcontroladores PIC: técnicas de software e
hardware para projetos de circuitos eletrônicos. 2. ed. São Paulo: Érica, 2011. ______. Microcontrolador PIC 18 com linguagem C: uma abordagem prática e
objetiva com base no PIC 18F4520. São Paulo: Érica, 2011.