Вы находитесь на странице: 1из 13

Controle de Velocidade de Motores DC com Auxílio da

Lógica Nebulosa
Ben Hur Gonçalves1, Roseli A. F. Romero1
1
Instituto de Ciências Matemáticas e de Computação, ICMC – Universidade de São
Paulo, USP – São Carlos – SP – Brasil
benhur@usp.br, rafrance@sc.icmc.usp.br

Abstract. Nowadays, about 90% of the industries’ control systems are PID,
but this kind of compensator is not intuitive and isn’t also robust. The aim of
this work is to implement types of fuzzy logic controllers and to compare its
results with the results of PID controllers, showing that fuzzy thinking, if
correctly used, can be more precise and efficient than the traditional control
systems.

Resumo. Hoje em dia, cerca de 90% dos sistemas de controle industriais são
PID, mas esse tipo de compensador não é nem intuitivo e nem robusto. O
objetivo deste trabalho é programar diferentes tipos de controle nebuloso e
comparar seus resultados com os resultados de um controlador PID clássico,
evidenciando que a lógica nebulosa, se corretamente usada, pode ser mais
precisa e eficiente que os sistemas de controle tradicionais.

1. Introdução
Robótica é uma ótima plataforma para realizar aprendizado multidisciplinar, além de
estar mudando o modo como sentimos e interagimos com o mundo. No entanto, a
maioria dos controles robóticos são PI (proporcional e integral) ou PID (proporcional,
integral e derivativo), que não traduzem corretamente o modo humano de pensar.
Com a evolução da inteligência computacional, um modo interessante de fazer
as máquinas pensarem como seres humanos é programar um controlador nebuloso
hierárquico [Hung e Chung 2006]. Outro método já implementado é aplicar controlador
nebuloso hierárquico para múltiplos indivíduos [Jeong e Lee 1999]. Há também
trabalhos que tratam do controle nebuloso de robôs de duas rodas [Wong 2007], mas
ainda há pouco progresso sobre ajustes do controlador PID por lógica nebulosa e seus
efeitos comparados com o controlador PID clássico.
Neste sentido, este trabalho trata da modelagem de um robô não-holonômico e
do controle de seus motores de corrente contínua. Também é realizado um controle PID
do robô, de tal forma que o desempenho do controle nebuloso possa ser comparado.
Este trabalho é de natureza empírica, e tem como intuito demonstrar, através de
simulações, que a lógica nebulosa, se corretamente utilizada, gera controles mais
eficientes que os controles clássicos. Antes da discussão dos resultados, no entanto, será
apresentada uma visão simplificada do time de futebol de robôs do Laboratório de
Aprendizado de Robôs, da Universidade de São Paulo, que são os objetos de estudo
deste trabalho.
2. Visão Geral

Apesar da dificuldade de desenvolvimento de projetos multidisciplinares, como de


robótica, o grupo de pesquisa é composto apenas por quatro alunos, tanto de graduação
quanto de mestrado, responsáveis por partes como visão computacional, controle,
mecânica, eletrônica, estratégia e programação em Assembly e C para microcontrolador.

A visão computacional utiliza uma câmera e um computador com placa de


captura, utilizando como base um filtro HSV (tonalidade, saturação e valor, em inglês).
O sistema de visão se comunica com o computador da estratégia, por um protocolo, e
passa as posições e ângulos de cada robô, assim como da bola. É possível ver como a
visão interpreta as imagens do campo de jogo na Figura 1.

Figura 1. O campo de jogo, segundo o sistema de visão.

O modulo de estratégia é baseado em campos potenciais [Melo, Maia e


Guimarães 2007]. Isso significa que esse módulo calcula forças atrativas e repulsivas,
para, respectivamente, a bola e os jogadores adversários. Nessa estratégia, as forças
atrativas da bola são constantes, o que quer dizer que os robôs sentem a bola, mesmo
quando muito distantes, e as forças geradas pela repulsão são inversamente
proporcionais ao quadrado da distância, o que quer dizer que inimigos muito distantes
não influenciam na trajetória dos robôs. Seguindo esta lógica, a estratégia calcula
velocidades ideais para as ambas as rodas de cada robô e manda um sinal de rádio para
estes últimos. Na Figura 2 é possível ver um simulador baseado em Open GL,
desenvolvido por membros do laboratório, usado para treinar e aperfeiçoar o módulo da
estratégia.

Figura 2. Simulador 3D desenvolvido por membros do grupo.


O módulo da eletrônica se comunica com dois outros: o da mecânica e o do
controle. O controle envia através do transmissor do rádio o vetor “$A,B,C,D,E*” para o
rádio da eletrônica. O rádio repassa o comando para o microcontrolador PIC através da
interface RS-232 da comunicação serial. O microcontrolador lê o sinal “$” e inicia a
rotina de nova mensagem. A partir desse ponto associa “A” ao sentido da roda esquerda,
“B” passa a ser a velocidade desejada para a mesma, numa escala de 0 a 63, “C” ao
sentido da outra roda, “D” passa a ser a velocidade desejada para a mesma, também
numa escala de 0 a 63. O caractere “*” indica o final da mensagem. Cada
microcontrolador reconhece a mensagem, decodifica, verifica a veracidade da
informação e faz a lógica de seleção de direção e potência dos motores, tudo através de
uma Ponte-H e duas portas com módulo PWM (modulação de largura de pulso, em
inglês) [Souza 2005].
A placa eletrônica de cada robô é idêntica uma à outra e foi produzida seguindo
a Figura 3. O microcontrolador, além das portas PWM, usa ainda mais quatro portas
para ativar a Ponte-H, que faz a seleção de para qual lado o motor deve girar. Apenas
um circuito integrado de Ponte-H cuida de ambos os motores DC. O circuito ainda é
constituído por acopladores ópticos, que isolam fisicamente o circuito do PIC do
circuito dos motores, o que evita que picos de corrente, na partida dos motores,
desliguem o microcontrolador [Fitzgerald 1975]. Uma dificuldade de construção desse
circuito é configurar o PIC para possuir menor freqüência possível de PWM, pois os
acopladores ópticos ficam insensíveis a pulsos de freqüência muito alta. Os motores
também foram sobrecarregados em 150% de voltagem, fazendo-os ter menor vida útil,
porém maior desempenho em termos de torque e velocidade.

Figura 3. Como funciona o circuito de cada robô.

O sistema mecânico dos robôs é relativamente simples, mas foi uma das partes
mais dispendiosas do projeto, uma vez que todo o robô deve ocupar um volume máximo
de cubo de 75 milímetros de aresta. Devido a tal complicação, o sistema mecânico foi
desenhado em CAD (desenho auxiliado por computador) e manufaturado em máquinas
de precisão na Escola de Engenharia de São Carlos. Devido à sobrecarga do motor, à
redução e ao fato do motor já possuir torque elevado, os robôs são muito imprevisíveis,
e para tanto foi necessário um sistema de controle robusto. A Figura 4 mostra como
ficaram os robôs após o término da primeira versão estável do projeto.
Figura 4. Os robôs do time de futebol.

3. Modelagem dos Robôs


Houve a necessidade de modelar os robôs, a fim de que fosse possível simulá-los e para
que as melhores soluções de controle fossem encontradas. Para realizar a modelagem do
sistema, foi preciso analisar o circuito equivalente a um motor DC [Ogata 2002]. A
Figura 5 mostra como um motor de corrente contínua pode ser considerado uma
resistência em série com uma indutância e uma força eletromotriz, que é a responsável
por gerar movimento em seu rotor.
Como a voltagem perdida pela indutância é muito menor que a perdida pela
resistência, é possível simplificar a equação (1) na equação (2). É importante ressaltar
que a força eletromotriz é diretamente proporcional à velocidade de rotação do eixo do
motor.

Figura 5. Circuito equivalente a um motor DC.

V = R m I + L&I + Vemf (1)

(V - K g ω m )
I= (2)
Rm

Outra fórmula que foi utilizada diz respeito ao torque Tm do rotor, que é
diretamente proporcional à corrente I que passa através do mesmo (3). O argumento η é
a eficiência do motor. Também foi necessário utilizar a equação (4), de momento de
inércia. O raio do pinhão, da engrenagem, e da roda são respectivamente Rsg, Rbg e Rw.
Os momentos de inércia do robô, do eixo, do motor e da engrenagem são Jrobot, Jax, Jm e
Jbg. O símbolo ω indica velocidades angulares, sendo que T1 e T2 são os torques que a
engrenagem e o pinhão causam um no outro. As equações (4) e (5) são respectivamente
as equações do eixo do motor e do eixo da roda. As equações (6) e (7) são relações
devido aos diâmetros da engrenagem e do pinhão.
Tm = ηΚ m Ι (3)

(η .Κ m ) (V - K gω w R bg ) J mω& w R bg
T2 = - (4)
Rm R sg R sg

T1 = (J bg + J ax + J w ) ω& w + f Ff R w (5)

ω w R bg
ω m = ω sg = (6)
R sg
T2 R bg
T1 = (7)
R sg

ω& w J robot R w
f Ff = (8)
4R 2robot

A equação (8) mostra a aceleração como função da força de atrito com o piso.
Unindo as equações (4), (5), (6), (7) e (8) e substituindo-as em (2), é possível obter as
equações finais da modelagem do robô. As equações (9), (10) e (11) foram encontradas
através da Laplaciana da modelagem final, sendo que podem ser usadas para simular o
comportamento do robô quando submetido a diversas entradas de voltagem, o que na
prática corresponderia ao ajuste de voltagem proveniente do PWM.

ωw A
(s) = (9)
V Bs + 1

R sg
A= (10)
R bg K g

J robot R 2w R sg2 R m
B= (11)
4R 2robot R 2bg K m K g η

Tabela 1. Variáveis e seus valores reais calculados.

Constante Valor Descrição do item


Rm 6,41 Ohms Resistência elétrica do motor
Kg 0,00505 Vs/rad Resistência de rotação do motor
Km 0,006414 Nm/A Resistência de torque do motor
2
Jrobot 0,0006125 Kg.m Momento de inércia do robô todo
Rw 0,030 m Raio da roda
Rbg/Rsg 3 Proporção da redução
η 12 – 100 % Eficiência do motor
Rrobot 0,035 Distância entre o centro de gravidade e a roda
4. Sistemas de Controle
Depois que o modelo do sistema foi conhecido, foi possível projetar compensadores que
controlassem a velocidade angular de cada roda, tendo como alimentação a velocidade
angular de cada quadro anterior, calculada pelo sistema de visão. Foi possível projetar o
PID ótimo, assim como um controlador nebuloso, do tipo PI-fuzzy, PID-fuzzy ou ainda
PID clássico com seus ganhos ajustados pela lógica nebulosa. As diferenças entre esses
compensadores estão descritas nos itens a seguir.

4.1. Controlador PID Clássico


O controlador PID possui três constantes a serem ajustadas. A constante proporcional K
acelera a reação do sistema, enquanto a constante integral Ti diminui o erro do sistema
em estado permanente e a constante derivativa Td amortece as curvas de reação,
evitando que entre em instabilidade. A parte derivativa do controle aumenta a
estabilidade do modelo matemático por adicionar um zero à função de transferência em
malha fechada, deslocando o gráfico do lugar das raízes para esquerda [Franklin, Powell
e Emami-Naeini 1994]. A fórmula padrão de um controlador proporcional-integral-
derivativo é dada:

1
D(s) = K(1 + + Td s) (12)
Ti s

Por diversas décadas os engenheiros tentaram analisar sistemas dinâmicos e


definir valores para os ganhos de um controlador PID, puramente baseados nas plantas
dos processos, mas foi com J. G. Ziegler e N. B.Nichols [Ogata 2002] que foi definida
uma lógica para K, Ti e Td. O método Z-N (Ziegler- Nichols) de malha fechada é um dos
métodos mais comumente utilizados para sintonizar controladores. O método de laço
aberto também é útil para a maioria dos processos de controle. O algoritmo de laço
fechado determina o ganho proporcional Kcr no qual um sistema ficará submetido a
oscilações sustentadas. Em seguida, o algoritmo recalcula novos ganhos proporcional,
integral e derivativo em função desse valor encontrado. Esta pode ser considerada boa
afinação, mas não é necessariamente um ajuste ótimo. Com esse segundo método, são
encontrados Kcr e T, que é o período do ciclo de oscilação sustentada, e em seguida os
outros ganhos são calculados seguindo a Tabela 2.

Tabela 2. Valores obtidos com o método Ziegler-Nichols.

K Ti Td
Fórmula 0,6.Kcr 0,5.T 0,125.T
Valor Encontrado 0,24 0,825 0,206
Figura 6. Duas entradas degrau diferentes para o PID tipo ZN.

O controlador da Figura 6 foi submetido à função de saturação, que limita o


fornecimento de até 7,4 Volts ao motor, que é a voltagem máxima utilizada nos robôs
reais. É possível observar que o chute inicial de Ziegler-Nichols funciona relativamente
bem para o controlador, porém ainda foi necessário retirar o sobressinal da resposta.
Para isso, foram feitos ajustes manuais das constantes, como na Figura 7.

Figura 7. Melhores ajustes para entrada baixa (esquerda) e alta (direita).

Pela Figura 7, é possível observar que quando o sistema é ajustado para


responder bem a pequenas referências (esquerda) o sobressinal, quando submetido a
entradas grandes, se mostra muito significativo. O contrário é válido para o ajuste de
entrada alta. Isso acontece porque o sobressinal corresponde a uma mesma porcentagem
da entrada, tanto para alta quanto para baixa. No entanto, com grandes entradas, esse
sobressinal se torna muito grande em módulo, o que pode deixar o robô instável.

4.2. Controlador PI-Fuzzy


O controlador PI-fuzzy trabalha com o erro e com a integral do erro. Isso quer dizer que
tem as mesmas entradas de um controlador PI clássico, mas ao invés dos ganhos K e Ti,
possui essas entradas tratadas por um conjunto de funções nebulosas. Essas funções
estão descritas na seqüência em termos de suas entradas, onde cada N dá uma idéia de
como a entrada é negativa e cada P indica o grau que a entrada é positiva, enquanto que
Z indica a proximidade dessa entrada com o erro no valor zero. Esse sistema de
nomeação também funciona para a saída, que é a voltagem aplicada ao motor.
Como é possível ver na Tabela 3, a variável erro tem um fator de 30% na saída,
em comparação com a variável da integral do erro. Vê-se também que o que está
aplicado na Tabela 3 abaixo possui a mesma idéia que um operador humano utilizaria
para controlar o sistema: se o erro é positivo, é porque a velocidade de referência é
maior que a real, portanto é necessária uma potência positiva na saída, enquanto que a
integral do erro detecta quando o erro de regime é grande.

Tabela 3. Relações do erro e sua integral com a voltagem.

Variável Relações entre as funções


Int. Erro NNN NN N Z P PP PPP
Voltagem NNN NN N Z P PP PPP

Erro NNN NN N Z P PP PPP

Voltagem NNN.0,3 NN.0,3 N.0,3 Z.0,3 P.0,3 PP.0,3 PPP.0,3

O fator de 30% do erro foi obtido empiricamente através das simulações no


software matemático Matlab [Davis e Sigmon 2005]. Foram testados vários tipos de
fuzzyficação e defuzzyficação [Saito e Massa 2004]. Pela Tabela 3 também vemos que
as variáveis de entrada são independentes entre si. A superfície de controle do
controlador PI-fuzzy está na Figura 8, abaixo. É possível observar pela Figura 8 que a
superfície de controle é complexa, mas ainda assim suave. A variável do erro está no
espaço [-400, 400], enquanto que a integral do erro está no espaço [-50, 50]. É
importante notar que quando se usa controle nebuloso não é necessário utilizar uma
função de saturação da saída, pois é possível configurar esse valor máximo e mínimo na
própria lógica nebulosa. No gráfico da Figura 9 fica evidente que o sistema nebuloso
respondeu mais rápido que o PID clássico, porém sobrou um erro de regime no valor de
5% do degrau de entrada.

Figura 8. Gráfico de controle do compensador PI-fuzzy.

No gráfico da Figura 9, em seqüência, vermelho indica a resposta do sistema


para uma entrada degrau no valor de 200 rad/s. O roxo indica a resposta para uma
entrada no valor de 40 rad/s. Como é possível notar, o controlador nebuloso permite
convergência tanto para entradas altas como para baixas, ao contrário do PID. O
problema do controlador nebuloso está no fato de ser mais difícil de configurar, o que
provoca o erro de regime, que segundo a Figura 9 está em torno de cinco por cento para
ambas as respostas. O controlador PI-nebuloso possui vinte e uma funções que devem
ser configuradas, cada uma com três valores (máximo, mínimo e médio), enquanto que
cada controlador PI clássico possui no total apenas duas variáveis.

Figura 9. Melhores respostas para entrada baixa e alta com o PI-fuzzy.

4.3. Controlador PID-Fuzzy


O controlador PID-fuzzy trabalha com o erro, com a integral do erro e com a derivada
do erro. Isso quer dizer que tem as mesmas entradas de um controlador PID clássico,
mas ao invés dos ganhos K e Ti e Td, possui essas entradas tratadas por um conjunto de
funções nebulosas. As mesmas funções do controlador PI-fuzzy foram mantidas, mas
também foram adicionadas novas, relacionadas à derivada do erro. As Tabelas 4 e 5 em
seqüência mostram as inferências adicionadas ao controlador nebuloso, com relação à
saída “voltagem”. Observa-se também que esse tipo de controlador possui vinte e oito
funções, cada uma com três variáveis, contra três do PID.

Tabela 4. Relações do erro e sua derivada com a voltagem.

Variável Derivada do erro


Erro NNN NN N Z P PP PPP
NNN
NN
N PPP PP P N NN NNN
Z PPP PP P N NN NNN
P PPP PP P N NN NNN
PP
PPP

Tabela 5. Relações do erro e sua integral com a voltagem.


Variável Derivada do erro
Int. Erro NNN NN N Z P PP PPP
NNN
NN
N PPP PP P N NN NNN
Z PPP PP P N NN NNN
P PPP PP P N NN NNN
PP
PPP

O fator de 30% do erro foi mantido nas funções antigas, mas essas novas
funções possuem todas fator de valor unitário. Vê-se pelas Figuras 10 e 11 que a
superfície de controle também é complexa, mas ainda assim suave. A variável do erro
do controlador está no espaço [-400, 400], enquanto que a integral do erro está no
espaço [-50, 50] e a derivada do mesmo está em [-1000, 1000]. Nota-se pelo gráfico da
Figura 12, que o sistema respondeu rapidamente e desta vez praticamente não
apresentou erro de regime. Isso mostra que o controlador PID-fuzzy respondeu melhor
que o PI-fuzzy, que respondeu melhor que o PID [Saito e Massa 2004]. O interessante é
que realmente o controlador PID tem suas limitações, principalmente quando a entrada
tem valores muito diferentes para cada situação.

Figura 10. Gráfico dos eixos erro e sua derivada em função da voltagem.
Figura 11. Gráfico dos eixos erro e sua integral em função da voltagem.

Figura 12. Gráfico da resposta para entradas altas e baixas com o PID-fuzzy.

4.4. PID Controlado Por Lógica Nebulosa


Uma solução inteligente para o problema do controlador PID seria ajustar seus ganhos
K, Ti e Td de acordo com a entrada fornecida [Saito e Massa 2004]. Uma forma de fazer
isso é utilizando um controlador nebuloso específico. A entrada do sistema é o valor da
rotação (em rad/s) e a saída é o ganho a ser utilizado no controlador clássico. As
simulações anteriores mostraram que pode-se melhorar muito o rendimento do
controlador proporcional-integral-derivativo. Quanto maior o valor da entrada, maior
deve ser o ganho derivativo ao qual a planta do sistema é submetida. Vale o mesmo para
o ganho proporcional e o inverso para o ganho integral. Para esse controle nebuloso
foram utilizadas três funções nebulosas de entrada e três de saída para cada saída (Alta,
Média, Baixa). A entrada é a rotação da roda em módulo e varia em [0, 600], enquanto
que as saídas são a constante Td que varia em [0,02 , 0,15], a constante Ti que varia em
[0,02 , 0,2] e a constante K que varia em [0,5 , 0,9]. O esquemático do projeto no
Matlab está na Figura 13 e o gráfico da transferência nebulosa é dado na Figura 14.
Figura 13. Modo como funciona o controlador fuzzy para compensadores PID.

Figura 14. Gráfico da resposta para entradas de vários níveis.

É possível observar no gráfico da Figura 14 acima, que o mesmo controlador


PID atingiu com rapidez todos os valores requisitados, o que mostra que a lógica
nebulosa foi a responsável por ajustar o mesmo, aumentando sua eficiência. Esse tipo de
projeto é recomendado para situações que o controlador deva ser mais robusto que um
controlador clássico comum, mas mesmo assim relativamente simples.

5. Conclusões
O controle PID, quando submetido a grandes variações de entrada pode deixar o sistema
instável, problema que pode ser corrigido implementando-se um controlador nebuloso
para administrar os ganhos do controlador clássico. Foi observado que a lógica nebulosa
é mais trabalhosa de se desenvolver, possuindo muito mais variáveis que o PID, mas é
mais intuitiva [Faria e Romero 2000], pois simula o pensamento humano, enquanto que
o PID é menos intuitivo, já que trabalha com erro, derivada do erro e integral do erro.
Este ponto só não é válido para o controle nebuloso dos ganhos do PID.
A lógica nebulosa precisa ser testada e otimizada antes de ser programada, pois é
muito complexa e tem muitas variáveis, mas isso pode ser feito calculando a planta do
sistema e simulando através do Matlab [Davis e Sigmon 2005], assim como foi
realizado neste trabalho. Os controladores nebulosos tendem a ser bem mais precisos e
bem mais robustos, como foi mostrado nos gráficos apresentados nesse trabalho.
Como trabalhos paralelos a este, estão o desenvolvimento e implementação de
controladores PID de posição e velocidade [Vieira, Medeiros, Alsina, e Araújo 2004]
assim como um sistema de ajuste de ganhos proporcionais, integrativos e derivativos
com base numa análise estatística de comportamento. Como trabalho futuro, está
previsto o desenvolvimento de uma rede neural que realize o ajuste dos parâmetros da
lógica nebulosa.

Referências
Davis, T. A. e Sigmon, K. (2005), “Matlab Primer”. Ed. CRC Press.
Faria, G. e Romero, R. A. F. (2000), “Incorporating Fuzzy Logic to Reinforcement
Learning”. Proceedings of the 9th IEEE International Conference of Fuzzy Systems.

Fitzgerald, A. E. (1975), “Máquinas elétricas”, Ed. McGraw-Hill.

Franklin, G. F., Powell, J. D. e Emami-Naeini, A. (1994), “Feedback Control of


Dynamic Systems”, Ed. Addison-Wesley.
Hung, L. e Chung, H. (2006), “Design of Hierarchical Fuzzy Logic Control for Mobile
Robot Systems”. IEEE Conference on Robotics, Automation and Mechatronics.
Jeong, I. e Lee, J. (1999), “Evolving Fuzzy Logic Controllers for Multiple Mobile
Robots”. Fuzzy Systems Conference Proceedings.
Melo, D. O., Maia, A. H. C. e Guimarães, J. A. A. (2007), “Aplicação de Campos
Potenciais em Estratégias de Futebol de Robôs”, Semcomp 2007.
Ogata, K. (2002), “Modern control engineering”. Ed. Pearson.

Souza, D. J. (2005), “Desbravando o PIC: ampliado e atualizado para PIC16F628A”,


Ed. Érica.

Saito, K. e Massa, M. C. (2004), “Sistemas inteligentes em controle e automação de


processos”, Ed. Ciência Moderna.

Vieira, F. C., Medeiros, A. A. D., Alsina, P. J. e Araújo Jr., A. P. (2004), “Position and
Orientation Control of a Two-Wheeled Differentially Driven Nonholonomic Mobile
Robot”, ICINCO - International Conference on Informatics in Control, Automation
and Robotics.

Wong, C., Wang, H., Li, S., e Cheng, C., (2007), “Fuzzy Controller Designed by GA for
Two-wheeled Mobile Robots”, International Journal of Fuzzy Systems, Vol. 9, No. 1,
Março de 2007.