You are on page 1of 10

Controle NeuroFuzzy

Guilherme Rutzen

Leonardo Adams

Roni Rigoni

{guirutzen,leonardoadams,ronirigoni}@gmail.com

1) Introduo
Em robtica mvel, robtica industrial,
mquinas-ferramenta, elevadores e muitos
outros sistemas eltricos utiliza-se motores de
corrente contnua. Muitas vezes faz-se
necessrio que tais motores possam atuar
como servo-motores de velocidade, para a
odometria de robs mveis, por exemplo.
Atravs de um experimento prtico, este
trabalho trata do desenvolvimento e anlise
de um controlador fuzzy, para realizar o
controle de velocidade de um motor de
corrente contnua, do qual a velocidade
medida a partir de um encoder ptico
incremental.

controlador fuzzy, que normalmente feito


de uma forma emprica. Esta proposta uma
combinao de lgica fuzzy e redes neurais,
comumente chamado de controlador
NeuroFuzzy.

3) Plataforma de testes
Para que pudssemos aplicar o
controlador fuzzy a um sistema real,
desenvolvemos uma plataforma de hardware
e software que nos permitisse realizar os
ensaios.
Na Figura 1 podemos ver um esquema
funcional da plataforma.

Neste trabalho tambm analisada a


influncia dos parmetros fuzzy, que
modelam as funes de pertinncia, na
resposta do sistema.
Finalmente proposta uma rede neural
com o intuito de ajustar estes parmetros
fuzzy, tornando possvel especificarmos as
caractersticas desejadas da resposta e
obtermos assim os respectivos parmetros
fuzzy.
2) Objetivo
O objetivo principal deste trabalho
testar a aplicabilidade de um controlador
fuzzy em um sistema de resposta rpida e que
apresenta no linearidades. Neste projeto em
questo ser tratado o problema de se
realizar o controle de velocidade de um motor
de corrente contnua.
Tambm objetiva-se analisar uma
proposta de melhoria no ajuste do

Figura 1 - Esquemtico da Plataforma

Ressalva-se que o sistema que queremos


controlar o motor DC, o sistema de medio
composto pelos blocos encoder e
Tratamento de sinal, a atuao realizada
pelo bloco identificado como Ponte H, e o
controlador

implementado
no
microcontrolador, representado pelo bloco
Arduino. Em seguida explicaremos cada
subsistema que compe esta plataforma.

3.1) Sistema de Medio


O bloco Encoder composto por um
sensor infra-vermelho (fixo estrutura do
motor) e um disco graduado (solidrio ao eixo
do motor). Este responsvel por medir a
velocidade do motor, medida que gera
pulsos toda vez que o sensor infra-vermelho
passa de uma regio escura para uma regio
clara do disco.
Uma
amplificao,
filtragem
e
digitalizao deste sinal feito pelo bloco
Tratamento de Sinal, sendo que o sinal
resultante j pode ser enviado para uma porta
de interrupo externa do microcontrolador
Arduino.
3.2) Atuao
A atuao realizada de maneira simples,
valendo-se de um circuito integrado (L298)
que contm duas pontes-H, que consistem em
drivers de acionamento bidirecional de
motores de corrente contnua.

Portanto cabe ao Arduino ler e interpretar


os sinais vindos do sistema de medio, gerar
a ao de controle e atuar sobre o sistema via
PWM, na ponte-H. Tambm utiliza-se o
Arduino para enviar os valores de cada
medio e ao de controle para o
computador, para que se torne possvel
visualizar os resultados graficamente.
3.4) O Sistema
Como foi citado, o sistema a ser
controlado um motor de corrente contnua,
cuja velocidade mxima aproximadamente
300 rad/s.
Para simularmos uma perturbao de
carga foi introduzido um mecanismo que,
quando em contado com o disco, aumenta o
atrito deste, gerando uma perturbao
aproximadamente em degrau. A Figura 2
mostra o sistema a ser controlado, assim
como o mecanismo de pertubao.

A alimentao do motor provm de uma


fonte regulada de 8V, e a variao de
velocidade realizada utilizando-se PWM
(Pulse Width Modulation) gerado pelo
microcontrolador Arduino.
3.3) Controle
O dispositivo responsvel por realizar a
funo de controle o Arduino. Arduino
um projeto open-hardware e open-software,
que tem como objetivo tornar o
desenvolvimento
de
projetos
com
microcontroladores mais simples e rpidos.
Neste projeto o Arduino utilizado para
realizar o controle do motor, ou seja, a lei de
controle deve ser gravada em ROM, e o
controle executado diretamente pelo
dispositivo. Esta configurao enfatiza a
aplicao deste sistema para o controle de
velocidade em sistemas embarcados.

Figura 2 - Motor DC com mecanismo de perturbao

4) Levantamento das caractersticas


do motor
Antes da escolha da tcnica de controle
que ser utilizada, faz-se necessrio o
levantamento do comportamento dinmico
do motor. Foram aplicadas entradas na forma
de degrau no motor ao longo da faixa de
operao onde o mesmo ser aplicado. Na
Figura 3 mostrado a resposta a estas

entradas. Em verde so mostrados os degraus


aplicados na referncia e em vermelhor a
resposta obtida do motor.

Vantagens:

Figura 3 - Levantamento das caractersticas do motor

Observa-se a no-linearidade presente na


resposta do sistema, tanto em relao ao
ganho como em relao constante de
tempo.

5) Tcnicas de Controle
Com base no comportamento do motor,
foi escolhida a tncnica de controle adequada.
As tcnicas de controle disponveis, mais
utilizadas, so as seguintes.

Controle linear, num ponto de operao:


este controle limitado pois permite o
controle somente em torno de ponto de
operao.
Gain Scheduling: necessidade do inverso
dos ganhos. Necessita de interpolao nos
pontos no considerados no clculo dos
ganhos.
Controle no-linear clssico: exige
conhecimento do modelo.
Controle
Fuzzy:
parmetros
so
escolhidos de forma empirica

6) Controle Fuzzy
Com base nas opes de controladores e
no comportamento do sistema, foi escolhido
o Controle Fuzzy para realizar o controle de
velocidade do motor da plataforma. A escolha
foi realizada devido as vantagens que o
mesmo oferece.

No necessita de modelo: no existe o


problema da planta ser mal modelada e
por causa disso afetar o desempenho do
controle
Robusto: principal vantagem em relao
aos outros. O controle baseado em
regras e na lgica fuzzy e muito adequado
para sistemas no-lineares, sendo este o
caso

Desvantagens:

Implementao volumosa: como o


controle
ser
implementado
no
microcontralador
Arduino,
a
implementao do controle fuzzy exige
bastante memria. No caso, foi ocupado
grande parte da memria disponvel
Desempenho: como os parmetros do
controlador so ajustados de forma
emprica, bastante complicado ajustar o
controle para que o mesmo siga uma
determinada especificao

6.1) A Lgica Fuzzy


Grande parte dos problemas que lidamos
atualmente so solucionados utilizando-se a
lgica binria. Nesta lgica, s so aceitas
duas condies: verdadeiro ou falso. Porm,
existem alguns problemas em que esta lgica
no suficiente. Existem muitos problemas
com imperfeies, onde existem infinitos
graus de incerteza. A Lgica Fuzzy (Nebulosa),
com base na teoria dos Conjutos Fuzzy, temse mostrada adequada para tratar este tipo
de problema.
A Lgica Fuzzy consiste em aproximar a
deciso computacional da deciso humana,
tornando as mquinas mais capacitadas a seu
trabalho. Isto feito de forma que a deciso
de uma mquina no se resuma apenas a um
sim ou um no, mas tambm tenha
decises abstratas. Do tipo um pouco mais,
muito mais entre outras variveis que

representam as decises humanas. A lgica


fuzzy pode ser vista como uma forma de
realizar uma interface com processos
analgicos, que permite o tratamento gradual
de sinais contnuos at sinais discretos,
manipulados por mquinas digitais.
6.2) Controlador Fuzzy
Os controladores fuzzy baseiam-se na
Lgica Fuzzy. No preciso conhecer muita
matemtica ou controle em profundidade
para desenvolver uma aplicao em controle.
Conttrolador Fuzzy (ou Nebuloso) tratam
igualmente sistemas lineares e no lineares,
alm de no necessitarem a modelagem
matemtica do precesso a ser controlado. Isto
tem sido, sem dvida, o grande atrativo dos
controladores fuzzy.
O projeto conceitual dos controladores
fuzzy bastante simples. Estes controladores
consistem de um estgio de entrada
(fuzzificao), um estgio de processamento
(inteligncia) e um estgio de sida
(defuzzificao ).
O estgio de entrada mapeia medies
de sensores e outras entradas para funes
de pertinncia apropriadas. O estgio de
processamento invoca as regras apropriadas e
gera os resultados para cada uma, e depois
combina os resultados de cada regra. O
estgio de sada converte o resultado da
combinao em um valor de sada preciso
para o controle.
6.3) Variveis Fuzzy
Uma varivel lingustica uma vasial que
assume palavras ou sentenas como valores.
O conjunto de valores que ela pode assumir
dito conjunto de termos. Cada valor no
conjunto de termos uma varivel fuzzy
definida sobre a varivel base. A varivel
base define o universo do discurso para

todas as variveis fuzzy no conjunto de


termos.
6.3.1) Definindo variveis fuzzy para o
problema de controle de velocidade do
motor:
Foram definidas 3 variveis base para o
controle do motor: erro, derivada do erro e
sada. As variveis fuzzy escolhidas forma:
LN (grande negativo), SN (pequeno negativo),
ZE (zero), SP (pequeno positivo), LP (grande
positivo).
Assim, tem-se:

ERRO = {LN, SN, ZE, SP, LP}


DERIVADA DO ERRO = {LN, SN, ZE, SP, LP}
SADA = {LN, SN, ZE, SP, LP}

6.4) Fuzzificao
As variveis de entrada de um sistema de
controle fuzzy so geralemente mapeadas
para o sistema por meio de funes de
pertinncia. O precesso de converso de
valores de entrada precisos para valores fuzzy
conhecido por fuzzificao.
O formato de funo de pertinncia mais
comum o triangular, sendo que o nmero e
localizao das curvas desempenham papel
crtico.
No controle do motor de velocidade
foram utilizadas curvas tringulares como
funo de pertinncia para as variveis fuzzy,
conforme a Figura 4.

Figura 4 - Funes de Pertinncia Fuzzy

Os parmetros P1, P2, P3 e P4 so


utilizados para definir as regies de
mapeamento. Ao variar estes parmetros,
altera-se a largura da base do tringulo, ou
seja, a abrangncia das variveis fuzzy.
O mapeamento das variveis de entrada,
erro e derivada do erro, so feitas conforme a
Tabela 1.

Algumas regras definidas para o controle


de velocidade do motor, e implementadas no
microcontrolador, podem ser conferidas
abaixo:
// Regra 1: Se e=LP entao saida=LP
mi[0] = min(mi_e[LP],mi_de[LP]);
// Regra 2: Se e=LN entao saida=LN
mi[1] = min(mi_e[LN],mi_de[LN]);
// Regra 3: Se e=ZE e de=ZE entao saida=ZE
mi[2] = min(mi_e[ZE],mi_de[ZE]);
// Regra 4: Se e=ZE e de=SN entao saida=SN
mi[3] = min(mi_e[SN],mi_de[SN]);

Tabela 1

Para mostrar como a funo de


pertinncia
foi
implementada
no
microcontrolador, mostrado um pedao do
cdigo abaixo:
if( e[n] <= -p1 )
erro = -1;
else
if( e[n] < -p2 )
erro = -0.75;
else
if( e[n] < -p3 )
erro = -0.5;

// Regra 5: Se e=ZE e de=SP entao saida=SP


mi[4] = min(mi_e[SP],mi_de[SP]);

A criao das regras foram baseadas no


estado do erro e da derivada do erro. No
grfico da Figura 5 representada a funo
erro, calcula fazendo-se:
Y referncia

vel .motor

Desta forma, se a velocidade do motor


for menor que a referncia, teremos um erro
positivo. Caso contrrio o erro ser negativo.

else
if( e[n] < -p4 )
erro = -0.25;
...

6.5) Regras
O estgio de processamento baseado
em uma coleo de regras lgicas da forma
se-ento . Sistemas de controle fuzzy
tipicamente possuem dezenas de regras.
Dados os mapeamentos das variveis
de entrada para as funes de pertinncia e
valores verdade, um microcontrolador pode
ento pode tomar decises sobre a ao a ser
tomada baseado neste conjunto de regras.
Operadores fuzzy que aparecem comumente
em regras so e, ou e no.

Figura 5 - Sinal do erro

O grfico da Figura 6, representa a


funo derivada do erro. Neste caso, a
derivada do erro ser negativa se a mesma
decresce com o passar do tempo, e positiva se
ela cresce com o passar do tempo.

6.7) Resultados do controle fuzzy

Figura 6 - Sinal da derivada do erro

Assim, a partir da funo do erro e da


derivada do erro, criam-se as regras. Elas so
criadas levando em considerao se o erro, no
momento, positivo ou negativo e se a
derivada, no instante, est crescendo ou
decresendo.

No grfico da Figura 7 pode ser observado


os resultados obtidos com o controle fuzzy
implementado. A resposta ao degrau obtida
com o controle fuzzy foi bastante satisfatria,
com pouca oscilao e com rpida
estabilizao. Na Figura 7 tamm pode ser
observado a ao de controle.

Isto feito atravs das variveis fuzzy de


entrada (LN, SN, ZE, SP, LP) que indicam a
ao que o controle dever tomar.
Figura 7 - Sada e sinal de controle

6.6) Defuzzificao
H diferentes maneiras de se definir o
resultado de uma regra, mas uma das mais
comuns e mais simples por meio do mtodo
de inferncia max-min, a qual passa os
valores verdade gerados pelas premissas
funo de pertinncia de sada.

Outra experimentao realizada foi a


aplicao de uma perturbao para ver se o
controle ia rejeit-la. Como pode ser visto no
grfico da Figura 8, a perturbao foi rejeitada
pelo controlador. Tambm no grfico da
Figura 8 mostrada ao de controle.

Os resultados de todas as regras que


foram disparadas so defuzzificados para
valores exatos por meio de um dentro os
vrios mtodos. O mtodo da centride
bastante popular, no qual o centro de massa
do resultado prov o valor exato.
No caso do controle de velocidade do
motor foram justamente utilizados o mtodo
de inferncia max-min e o mtodo do
centride. A equao utilizada para o
clculo exato da sada mostrada abaixo:
N

u (n)

( i ) saida
i 1

(i )
i 1

(i )

Figura 8 - Sada e controle para um perturbao em 3s

6.8) Influncia da variao dos parmetros


Para analisar a influncia dos parmetros
fuzzy na resposta do sistema, foram realizadas
duas experimentaes com parmetros fuzzy
diferentes.

No grfico da Figura 9, observa-se a


resposta do sistema para a primeira
configurao.
Nesta
configurao
os
parmetros adotados foram: P1 = 50, P2 = 30,
P3 = 12, P4 = 04.

7.1) Estrutura da Rede Neural


A rede neural proposta composta de 3
camadas. A primeira, camada de entrada,
recebe trs diferentes entradas. Essas
entradas correspondem a: referncia do
sistema de controle, tempo de subida e erro
quadrtico.
A camada escondida possui cinco
neurnios e a camada de sada quatro, que
correspondem aos quatro parmetros do
controlador fuzzy que se quer determinar.

Figura 9

No grfico da Figura 10 pode ser


observado a resposta do sistema para a
segunda configurao. Nesta configurao os
parmetros adotados foram os seguintes:
P1 = 25, P2 = 20, P3 = 12, P4 = 04.

Todas as funes de ativao so funes


sigmoidais e todos os neurnios esto ligados
atravs de sinapses a todos os neurnios da
camada anterior e posterior.
A estrutura da rede neural proposta
ilustrada na Figura 11.

Figura 11
Figura 10

Assim pode concluir-se que os valores


dos parmetros P1, P2, P3 e P4 possuem
bastante influncia na resposta do sistema.

As entradas da rede foram definidas da


seguinte forma:

7) Controlador NeuroFuzzy
Para resolver o problema de definio dos
parmetros do controlador fuzzy, proposta
uma rede neural para determin-los. A seguir
descrito a estrutura da rede neural, a
definio de suas entradas, a coleta, prprocessamento e normalizao dos dados,
bem como o treinamento e execuo da rede.

Referncia: informa o ponto de operao


do sistema. importante devido s
caractersticas no-lineares intrnsecas do
modelo.
Tempo de subida: relacionado ao aspecto
de velocidade de resposta do controle.
Erro quadrtico: relacionado resposta
oscilatrias. Quanto maior a oscilao da
resposta, maior ser o erro quadrtico.

importante salientar a caracterstica


correlacionada entre o tempo de subida e o
erro quadrtico. Enquanto que o tempo

informa caractersticas de rapidez de


resposta, quanto mais rpido o sistema, maior
ser a oscilao da resposta, portanto, maior
ser o erro quadrtico. Essas duas
caractersticas esto relacionadas devido as
caractersticas do sistema.

7.3) Pr-Processamento

O tempo de subida a medida de tempo


que o sistema leva para chegar prximo do
ponto de operao (numa faixa de 5% do
degrau em torno da referncia). O erro
quadrtico o quadrado do erro associado a
resposta, aps o sistema ter atingido a faixa
em torno da referncia.

O pr-processamento corresponde a
varrer todo o arquivo de dados, e transformar
isso em dados teis para a rede neural. Esses
dados so as entradas (referncia, tempo de
subida e erro quadrtico) e as sadas
(parmetros fuzzy).

A Figura 12 ilustra o clculo desses


parmetros.

Depois da coleta de dados do sistema,


necessrio
uma
etapa
para
prprocessamento e posterior normalizao dos
dados.

Assim que os dados esto dispostos de


forma organizada para a rede neural,
necessrio fazer a normalizao destes.
A Figura 13 ilustra todo o processo de
pr-processamento e normalizao dos dados
coletados.

Figura 12 - Erro quadrtico e tempo de subida

7.2) Coleta de Dados


Assim que a rede neural est definida,
necessrio coletar os dados para o
treinamento da rede.
A coleta de dados do sistema foi feita de
forma
automatizada.
Foram
geradas
referncias e parmetros do controlador fuzzy
de forma randmica a cada 5 segundos. A
resposta do sistema foi gravada em um
arquivo, a cada tempo de amostragem, por
alguns minutos. Foram coletados mais de
300.000 pontos.

Figura 13

7.4) Treinamento
Agora a rede neural deve ser treinada.
Foi utilizada a ferramenta open-source Joone
Editor para implementar a rede apresentada.
A Figura 14 ilustra a rede montada com o
auxlio da ferramenta.

Figura 15 - Resultado do controle NeuroFuzzy


Figura 14 - Interface da API Joone

Caractersticas para o treinamento da rede:

110 exemplos
50.000 pocas
Taxa de aprendizado: 0.8
Momento: 0.3

As caractersticas do treinamento foram


determinadas a partir de vrias tentativas,
bem como a determinao do nmero de
neurnios na camada intermediria. A
configurao mais satisfatria foi a
apresentada.

8) Resultados
Para executar a rede, foi feito mais um
ensaio para a validao dos resultados
provindos da rede.
Os dados de entrada da rede foram os
seguintes:
Especificaes 1:

Ref. Inicial = 0 rad/s


Ref. Final = 190 rad/s
Ts = 0.8s

erro

pequeno

Especificaes 2:

Ref. Inicial = 190 rad/s


Ref. Final = 240 rad/s
Ts = 0.6s
2
erro pequeno

Os erros quadrticos foram classificados


como pequenos tomando-se como base os
resultados da simulao, e no foram
apresentados numericamente pois no
trariam muito significado ao leitor.
Como visto na Figura 15, o resultado do
controle
NeuroFuzzy
atendeu
s
especificaes com uma margem de erro
aceitvel.
Em relao s especificaes (em termos
percentuais) os erros dos resultados obtidos
foram:
Para as especificaes 1:

Desvio de Ts = 9.2%

Desvio do erro

= 11.3%

Para as especificaes 2:

Desvio de Ts = 6.7%

Desvio do erro

= 10.1%

9) Concluso
Como visto na seo 8, os erros relativos
s especificaes se mostraram plausveis, o
que justifica a utilizao de uma rede neural
para melhor estimar os parmetros fuzzy.
Pensando na viabilidade desta proposta,
conclumos que o melhor seria utilizar a rede
neural off-line, ou seja, utiliz-la para estimar
os parmetros de um nmero N de

referncias desejadas, e guardar estes


resultados em um arquivo, a ser consultado
em tempo de execuo pelo controlador
fuzzy.
A soluo apresentada neste trabalho
mostra que a parametrizao de controles
fuzzy pode ser menos emprica e custosa,
levando-se em conta a mo de obra do
engenheiro de controle.
Neste trabalho tambm pudemos
comprocar a robustez do controle fuzzy, pois
desejvamos trabalhar em uma ampla regio
de atuao do motor, o que acentua suas
caractersticas no lineares, e mesmo assim o
controlador
correspondeu
s
nossas
espectativas.
Por fim, considerando que todo o sistema,
desde a atuao, medio, controle e
interface para visualizao dos resultados foi
um projeto desenvolvido pelos membros do
grupo, e considerando os resultados obtidos,
podemos concluir que o projeto se mostrou
muito gratificante para todos os integrantes
do grupo.

10) Referncias
Camponogara E., Introduo Inteligncia
Computacional, 2006.
Russel S., Norvig P., Artificial Intelligence - A
Modern Approach, 2003.
http://www.arduino.cc
http://sourceforge.net/projects/joone/
http://www.din.uem.br/ia/controle/fuz_prin.
htm

You might also like