• Nenhum resultado encontrado

Controle NeuroFuzzy 1) Introdução 3) Plataforma de testes 2) Objetivo

N/A
N/A
Protected

Academic year: 2021

Share "Controle NeuroFuzzy 1) Introdução 3) Plataforma de testes 2) Objetivo"

Copied!
10
0
0

Texto

(1)

Controle NeuroFuzzy

Guilherme Rutzen Leonardo Adams Roni Rigoni {guirutzen,leonardoadams,ronirigoni}@gmail.com

1) Introdução

Em robótica móvel, robótica industrial, máquinas-ferramenta, elevadores e muitos outros sistemas elétricos utiliza-se motores de corrente contínua. Muitas vezes faz-se necessário que tais motores possam atuar como servo-motores de velocidade, para a odometria de robôs móveis, por exemplo.

Através de um experimento prático, este trabalho trata do desenvolvimento e análise de um controlador fuzzy, para realizar o controle de velocidade de um motor de corrente contínua, do qual a velocidade é medida a partir de um encoder óptico incremental.

Neste trabalho também é analisada a influência dos parâmetros fuzzy, que modelam as funções de pertinência, na resposta do sistema.

Finalmente é proposta uma rede neural com o intuito de ajustar estes parâmetros

fuzzy, tornando possível especificarmos as

características desejadas da resposta e obtermos assim os respectivos parâmetros

fuzzy.

2) Objetivo

O objetivo principal deste trabalho é testar a aplicabilidade de um controlador

fuzzy em um sistema de resposta rápida e que

apresenta não linearidades. Neste projeto em questão será tratado o problema de se realizar o controle de velocidade de um motor de corrente contínua.

Também objetiva-se analisar uma proposta de melhoria no ajuste do

controlador fuzzy, que normalmente é feito de uma forma empírica. Esta proposta é uma combinação de lógica fuzzy e redes neurais,

comumente chamado de controlador

NeuroFuzzy.

3) Plataforma de testes

Para que pudéssemos 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 - Esquemático da Plataforma

Ressalva-se que o sistema que queremos controlar é o motor DC, o sistema de medição é composto pelos blocos “encoder” e “Tratamento de sinal”, a atuação é realizada pelo bloco identificado como “Ponte H”, e o

controlador é implementado no

microcontrolador, representado pelo bloco “Arduino”. Em seguida explicaremos cada subsistema que compõe esta plataforma.

(2)

3.1) Sistema de Medição

O bloco “Encoder” é composto por um sensor infra-vermelho (fixo à estrutura do motor) e um disco graduado (solidário ao eixo do motor). Este é responsável por medir a velocidade do motor, à medida que gera pulsos toda vez que o sensor infra-vermelho passa de uma região escura para uma região clara do disco.

Uma amplificação, filtragem e

digitalização deste sinal é feito pelo bloco “Tratamento de Sinal”, sendo que o sinal resultante já pode ser enviado para uma porta de interrupção externa do microcontrolador Arduino.

3.2) Atuação

A atuação é realizada de maneira simples, valendo-se de um circuito integrado (L298) que contém duas pontes-H, que consistem em

drivers de acionamento bidirecional de

motores de corrente contínua.

A alimentação do motor provém de uma fonte regulada de 8V, e a variação de velocidade é realizada utilizando-se PWM (Pulse Width Modulation) gerado pelo microcontrolador Arduino.

3.3) Controle

O dispositivo responsável por realizar a função 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 rápidos. 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 configuração enfatiza a aplicação deste sistema para o controle de velocidade em sistemas embarcados.

Portanto cabe ao Arduino ler e interpretar os sinais vindos do sistema de medição, gerar a ação de controle e atuar sobre o sistema via

PWM, na ponte-H. Também utiliza-se o

Arduino para enviar os valores de cada medição e ação de controle para o computador, para que se torne possível visualizar os resultados graficamente.

3.4) O Sistema

Como foi citado, o sistema a ser controlado é um motor de corrente contínua, cuja velocidade máxima é aproximadamente 300 rad/s.

Para simularmos uma perturbação de carga foi introduzido um mecanismo que, quando em contado com o disco, aumenta o atrito deste, gerando uma perturbação aproximadamente em degrau. A Figura 2 mostra o sistema a ser controlado, assim como o mecanismo de pertubação.

Figura 2 - Motor DC com mecanismo de perturbação

4) Levantamento das características

do motor

Antes da escolha da técnica de controle que será utilizada, faz-se necessário o levantamento do comportamento dinâmico do motor. Foram aplicadas entradas na forma de degrau no motor ao longo da faixa de operação onde o mesmo será aplicado. Na

(3)

entradas. Em verde são mostrados os degraus aplicados na referência e em vermelhor a resposta obtida do motor.

Figura 3 - Levantamento das características do motor Observa-se a não-linearidade presente na resposta do sistema, tanto em relação ao ganho como em relação à constante de tempo.

5) Técnicas de Controle

Com base no comportamento do motor, foi escolhida a téncnica de controle adequada. As técnicas de controle disponíveis, mais utilizadas, são as seguintes.

 Controle linear, num ponto de operação: este controle é limitado pois permite o controle somente em torno de ponto de operação.

Gain Scheduling: necessidade do inverso

dos ganhos. Necessita de interpolação nos pontos não considerados no cálculo dos ganhos.

 Controle não-linear clássico: exige conhecimento do modelo.

 Controle Fuzzy: parâmetros são

escolhidos de forma empirica

6) Controle Fuzzy

Com base nas opções 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.

Vantagens:

 Não necessita de modelo: não existe o problema da planta ser mal modelada e por causa disso afetar o desempenho do controle

 Robusto: principal vantagem em relação aos outros. O controle é baseado em regras e na lógica fuzzy e muito adequado para sistemas não-lineares, sendo este o caso

Desvantagens:

 Implementação volumosa: como o

controle será implementado no

microcontralador Arduino, a

implementação do controle fuzzy exige bastante memória. No caso, foi ocupado grande parte da memória disponível

 Desempenho: como os parâmetros do controlador são ajustados de forma empírica, é bastante complicado ajustar o controle para que o mesmo siga uma determinada especificação

6.1) A Lógica Fuzzy

Grande parte dos problemas que lidamos atualmente são solucionados utilizando-se a lógica binária. Nesta lógica, só são aceitas duas condições: verdadeiro ou falso. Porém, existem alguns problemas em que esta lógica não é suficiente. Existem muitos problemas com imperfeições, onde existem infinitos graus de incerteza. A Lógica Fuzzy (Nebulosa), com base na teoria dos Conjutos Fuzzy, tem-se mostrada adequada para tratar este tipo de problema.

A Lógica Fuzzy consiste em aproximar a decisão computacional da decisão humana, tornando as máquinas mais capacitadas a seu trabalho. Isto é feito de forma que a decisão de uma máquina não se resuma apenas a um “sim” ou um “não”, mas também tenha decisões abstratas. Do tipo “um pouco mais”, “muito mais” entre outras variáveis que

(4)

representam as decisões humanas. A lógica

fuzzy pode ser vista como uma forma de

realizar uma interface com processos analógicos, que permite o tratamento gradual de sinais contínuos até sinais discretos, manipulados por máquinas digitais.

6.2) Controlador Fuzzy

Os controladores fuzzy baseiam-se na Lógica Fuzzy. Não é preciso conhecer muita matemática ou controle em profundidade para desenvolver uma aplicação em controle. Conttrolador Fuzzy (ou Nebuloso) tratam igualmente sistemas lineares e não lineares, além de não necessitarem a modelagem matemática do precesso a ser controlado. Isto tem sido, sem dúvida, o grande atrativo dos controladores fuzzy.

O projeto conceitual dos controladores

fuzzy é bastante simples. Estes controladores

consistem de um estágio de entrada (“fuzzificação”), um estágio de processamento (“inteligência”) e um estágio de sáida (“defuzzificação ”).

O estágio de entrada mapeia medições de sensores e outras entradas para funções de pertinência apropriadas. O estágio de processamento invoca as regras apropriadas e gera os resultados para cada uma, e depois combina os resultados de cada regra. O estágio de saída converte o resultado da combinação em um valor de saída preciso para o controle.

6.3) Variáveis Fuzzy

Uma variável linguística é uma vasial que assume palavras ou sentenças como valores. O conjunto de valores que ela pode assumir é dito “conjunto de termos”. Cada valor no conjunto de termos é uma “variável fuzzy” definida sobre a “variável base”. A “variável base” define o universo do discurso para

todas as variáveis fuzzy no conjunto de termos.

6.3.1) Definindo variáveis fuzzy para o problema de controle de velocidade do motor:

Foram definidas 3 “variáveis base” para o controle do motor: erro, derivada do erro e saída. As “variáveis 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}

 SAÍDA = {LN, SN, ZE, SP, LP} 6.4) Fuzzificação

As variáveis de entrada de um sistema de controle fuzzy são geralemente mapeadas para o sistema por meio de funções de pertinência. O precesso de conversão de valores de entrada precisos para valores fuzzy é conhecido por “fuzzificação”.

O formato de função de pertinência mais comum é o triangular, sendo que o número e localização das curvas desempenham papel crítico.

No controle do motor de velocidade foram utilizadas curvas tringulares como função de pertinência para as variáveis fuzzy, conforme a Figura 4.

(5)

Os parâmetros P1, P2, P3 e P4 são utilizados para definir as regiões de mapeamento. Ao variar estes parâmetros, altera-se a largura da base do triângulo, ou seja, a abrangência das variáveis fuzzy.

O mapeamento das variáveis de entrada, erro e derivada do erro, são feitas conforme a

Tabela 1.

Tabela 1

Para mostrar como a função de

pertinência foi implementada no

microcontrolador, é mostrado um pedaço do código 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; ... 6.5) Regras

O estágio de processamento é baseado em uma coleção de regras lógicas da forma “se-então” . Sistemas de controle fuzzy tipicamente possuem dezenas de regras.

Dados os “mapeamentos” das variáveis de entrada para as funções de pertinência e valores verdade, um microcontrolador pode então pode tomar decisões sobre a ação a ser tomada baseado neste conjunto de regras. Operadores fuzzy que aparecem comumente em regras são “e”, “ou” e “não”.

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]);

// Regra 5: Se e=ZE e de=SP entao saida=SP mi[4] = min(mi_e[SP],mi_de[SP]);

A criação das regras foram baseadas no estado do erro e da derivada do erro. No gráfico da Figura 5 é representada a função erro, calcula fazendo-se:

motor vel referência

Y   .

Desta forma, se a velocidade do motor for menor que a referência, teremos um erro positivo. Caso contrário o erro será negativo.

Figura 5 - Sinal do erro

O gráfico da Figura 6, representa a função 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)

Figura 6 - Sinal da derivada do erro

Assim, a partir da função do erro e da derivada do erro, criam-se as regras. Elas são criadas levando em consideração se o erro, no momento, é positivo ou negativo e se a derivada, no instante, está crescendo ou decresendo.

Isto é feito através das variáveis fuzzy de entrada (LN, SN, ZE, SP, LP) que indicam a ação que o controle deverá tomar.

6.6) Defuzzificação

Há diferentes maneiras de se definir o resultado de uma regra, mas uma das mais comuns e mais simples é por meio do método de inferência “max-min”, a qual passa os valores verdade gerados pelas premissas à função de pertinência de saída.

Os resultados de todas as regras que foram disparadas são “defuzzificados” para valores exatos por meio de um dentro os vários métodos. O método da “centróide” é 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 método de inferência “max-min” e o método do “centróide”. A equação utilizada para o cálculo exato da saída é mostrada abaixo:

6.7) Resultados do controle fuzzy

No gráfico 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 satisfatória, com pouca oscilação e com rápida estabilização. Na Figura 7 tamém pode ser observado a ação de controle.

Figura 7 - Saída e sinal de controle

Outra experimentação realizada foi a aplicação de uma perturbação para ver se o controle ia rejeitá-la. Como pode ser visto no gráfico da Figura 8, a perturbação foi rejeitada pelo controlador. Também no gráfico da

Figura 8 é mostrada ação de controle.

Figura 8 - Saída e controle para um perturbação em 3s

6.8) Influência da variação dos parâmetros Para analisar a influência dos parâmetros

fuzzy na resposta do sistema, foram realizadas

duas experimentações com parâmetros fuzzy diferentes.

   N i N i i i saida i n u 1 1 ) ( ) ( ) ( ) (  

(7)

No gráfico da Figura 9, observa-se a resposta do sistema para a primeira configuração. Nesta configuração os parâmetros adotados foram: P1 = 50, P2 = 30,

P3 = 12, P4 = 04.

Figura 9

No gráfico da Figura 10 pode ser observado a resposta do sistema para a segunda configuração. Nesta configuração os parâmetros adotados foram os seguintes:

P1 = 25, P2 = 20, P3 = 12, P4 = 04.

Figura 10

Assim pode concluir-se que os valores dos parâmetros P1, P2, P3 e P4 possuem bastante influência na resposta do sistema.

7) Controlador NeuroFuzzy

Para resolver o problema de definição dos parâmetros do controlador fuzzy, é proposta uma rede neural para determiná-los. A seguir é descrito a estrutura da rede neural, a definição de suas entradas, a coleta, pré-processamento e normalização dos dados, bem como o treinamento e execução da rede.

7.1) Estrutura da Rede Neural

A rede neural proposta é composta de 3 camadas. A primeira, camada de entrada, recebe três diferentes entradas. Essas entradas correspondem a: referência do sistema de controle, tempo de subida e erro quadrático.

A camada escondida possui cinco neurônios e a camada de saída quatro, que correspondem aos quatro parâmetros do controlador fuzzy que se quer determinar.

Todas as funções de ativação são funções sigmoidais e todos os neurônios estão ligados através de sinapses a todos os neurônios da camada anterior e posterior.

A estrutura da rede neural proposta é ilustrada na Figura 11.

Figura 11

As entradas da rede foram definidas da seguinte forma:

 Referência: informa o ponto de operação do sistema. É importante devido às características não-lineares intrínsecas do modelo.

 Tempo de subida: relacionado ao aspecto de velocidade de resposta do controle.

 Erro quadrático: relacionado à resposta oscilatórias. Quanto maior a oscilação da resposta, maior será o erro quadrático. É importante salientar a característica correlacionada entre o tempo de subida e o erro quadrático. Enquanto que o tempo

(8)

informa características de rapidez de resposta, quanto mais rápido o sistema, maior será a oscilação da resposta, portanto, maior será o erro quadrático. Essas duas características estão relacionadas devido as características do sistema.

O tempo de subida é a medida de tempo que o sistema leva para chegar próximo do ponto de operação (numa faixa de ±5% do degrau em torno da referência). O erro quadrático é o quadrado do erro associado a resposta, após o sistema ter atingido a faixa em torno da referência.

A Figura 12 ilustra o cálculo desses parâmetros.

Figura 12 - Erro quadrático e tempo de subida 7.2) Coleta de Dados

Assim que a rede neural está definida, é necessário coletar os dados para o treinamento da rede.

A coleta de dados do sistema foi feita de

forma automatizada. Foram geradas

referências e parâmetros do controlador fuzzy de forma randômica 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.

7.3) Pré-Processamento

Depois da coleta de dados do sistema, é

necessário uma etapa para

pré-processamento e posterior normalização 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 são as entradas (referência, tempo de subida e erro quadrático) e as saídas (parâmetros fuzzy).

Assim que os dados estão dispostos de forma organizada para a rede neural, é necessário fazer a normalização destes.

A Figura 13 ilustra todo o processo de pré-processamento e normalização dos dados coletados.

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 auxílio da ferramenta.

(9)

Figura 14 - Interface da API Joone

Características para o treinamento da rede:

 110 exemplos

 50.000 épocas

 Taxa de aprendizado: 0.8

 Momento: 0.3

As características do treinamento foram determinadas a partir de várias tentativas, bem como a determinação do número de neurônios na camada intermediária. A configuração mais satisfatória foi a apresentada.

8) Resultados

Para executar a rede, foi feito mais um ensaio para a validação dos resultados provindos da rede.

Os dados de entrada da rede foram os seguintes:

Especificações 1:

 Ref. Inicial = 0 rad/s

 Ref. Final = 190 rad/s

 Ts = 0.8s

 2

erro → pequeno

Especificações 2:

 Ref. Inicial = 190 rad/s

 Ref. Final = 240 rad/s

 Ts = 0.6s

 2

erro → pequeno

Figura 15 - Resultado do controle NeuroFuzzy

Os erros quadráticos foram classificados como “pequenos” tomando-se como base os resultados da simulação, e não foram apresentados numericamente pois não trariam muito significado ao leitor.

Como visto na Figura 15, o resultado do

controle NeuroFuzzy atendeu às

especificações com uma margem de erro aceitável.

Em relação às especificações (em termos percentuais) os erros dos resultados obtidos foram: Para as especificações 1:  Desvio de Ts = 9.2%  Desvio do 2 erro = 11.3% Para as especificações 2:  Desvio de Ts = 6.7%  Desvio do 2 erro = 10.1%

9) Conclusão

Como visto na seção 8, os erros relativos às especificações se mostraram plausíveis, o que justifica a utilização de uma rede neural para melhor estimar os parâmetros fuzzy.

Pensando na viabilidade desta proposta, concluímos que o melhor seria utilizar a rede neural off-line, ou seja, utilizá-la para estimar os parâmetros de um número N de

(10)

referências desejadas, e guardar estes resultados em um arquivo, a ser consultado em tempo de execução pelo controlador

fuzzy.

A solução apresentada neste trabalho mostra que a parametrização de controles

fuzzy pode ser menos empírica e custosa,

levando-se em conta a mão de obra do engenheiro de controle.

Neste trabalho também pudemos

comprocar a robustez do controle fuzzy, pois desejávamos trabalhar em uma ampla região de atuação do motor, o que acentua suas características não lineares, e mesmo assim o controlador correspondeu às nossas espectativas.

Por fim, considerando que todo o sistema, desde a atuação, medição, controle e interface para visualização 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) Referências

Camponogara E., Introdução à Inteligência

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

Referências

Documentos relacionados

1 (uma) parcela R$ 120,00 Auxílio Moradia Destinado, exclusivamente, aos estudantes de cursos presenciais em situação de vulnerabilidade social, com matrícula e

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Percentagem de utentes em espera para cirurgia com tempo superior a 12 meses &lt; X % 10,00 14,0 N.º de projectos de articulação com os cuidados de saúde primários (CSP)

Assim, almeja-se que as ações propostas para a reformulação do sistema sejam implementadas na SEDUC/AM e que esse processo seja algo construtivo não apenas para os

Para avaliação do estado imunológico da população em estudo, foram colhidas amostras de soro sanguíneo de 133 aves e submetidas a provas sorológicas como a Reação

O Plano de Manutenção dos Monumentos é uma ferramenta de gestão e de conservação preventiva que tem os seguintes objetivos: melhorar a gestão de recursos (reduzindo custos a

O facto da execução das tarefas do plano não exigirem um investimento avultado a nível das tarefas propostas é possível neste caso em concreto visto que na Empresa A

A partir da análise das Figuras 5.20, 5.21, 5.22 e 5.23 pode-se afirmar que a variação do início da altura de queda do bloco não alterou os resultados da energia cinética e alturas