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

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.

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

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.

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

Figura 3 - Levantamento das caractersticas do motor

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

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

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.

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; else if( e[n] < -p4 ) erro = -0.25; ...

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

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

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. Isto feito atravs das variveis fuzzy de entrada (LN, SN, ZE, SP, LP) que indicam a ao que o controle dever tomar. 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. 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:

Figura 7 - Sada e sinal de controle

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.

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.

u (n)

( i ) saida
i 1

(i )

(i )
i 1

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

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

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.

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. 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. A Figura 12 ilustra o clculo desses parmetros.

7.3) Pr-Processamento Depois da coleta de dados do sistema, necessrio uma etapa para prprocessamento e posterior normalizao dos dados. 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). 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

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
2

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:

= 11.3%

Para as especificaes 2: Desvio de Ts = 6.7% Desvio do erro


2

= 10.1%

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


erro
2

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

pequeno

Especificaes 2:

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

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