Controle Fuzzy

O controle Fuzzy pertence ao grupo dos controladores baseados em inteligência artificial (I.A.) por representar um novo paradigma dentro da engenharia de controle, baseado em transferência da conhecimento sobre um problema.  Ao contrário dos controladores clássicos, o controlador Fuzzy dispensa o conhecimento do modelo matemático da planta a ser controlada, o que simplifica o design de sistemas de controle para sistemas dinâmicos em softwares como o LabView ou o Simulink.

Não entrarei nos pormenores matemáticos mais ortodoxos que tecem as bases da lógica Fuzzy. Entretanto, é bom lembrar que a lógica difusa, como também é conhecida, está intimamente ligada à teoria dos conjuntos. Se o amigo leitor detiver um pequeno conhecimento de alguns conceitos sobre conjuntos, isso irá auxiliá-lo bastante. Do contrário, espero que a minha explanação seja o mais didática possível. Aliás, pretendo inserir um tutorial passo-a-passo ensinando como desenhar um controle Fuzzy em Matlab. Peço apenas que tenham um pouco de paciência!

A lógica Fuzzy é derivada da lógica Booleana, que reconhece valores apenas como falsos (0) e verdadeiros (1). No caso da Fuzzy há, a grosso modo, valores intermediários. Uma variável pode assumir um valor intermediário a ‘falso’ e ‘verdadeiro’. Nós, humanos, empregamos termos linguísticos para dar qualidade às coisas. Quando se diz que uma pessoa é rica, podemos pensar na seguinte pergunta: “Quão rica é esta pessoa?”. Ela pode ser pouco rica, apenas rica ou muito rica. Pode até ser milionária. Isso é, o adjetivo é algo relativo, neste caso. O mesmo vale para a classificação etária de uma pessoa. Ora, o conceito da classificação etária é, também, bastante relativo. O que para alguns uma mulher de 30 anos é bastante jovem, para outras ela é apenas jovem. Par outro grupo, ela pode ser velha. Notem que foram criados conjuntos para a classificação etária. O conjunto “bastante jovem”, o conjunto “jovem” e o conjunto “velha”.

Apesar de soar estranho, na prática isso funciona bem. Dentro do escopo da engenharia, um bom exemplo é o controle de velocidade de rotação de eixo de um motor DC (corrente contínua). Imagine que não se conhece nada a respeito da função de transferência do motor ou seja, não se conhece o modelo matemático do mesmo. Se o projetista detiver o conhecimento de como manipular a corrente de armadura do motor de modo a promover a rotação do mesmo, essa expertise pode ser transferido através do chamado processo de inferência de um controlador Fuzzy. Primeiramente, lembremos os elementos que compõe  qualquer sistema retroalimentado (ou malha fechada), através da Fig. 1.

 


Fig. 1 – Diagrama de blocos de um sistema de controle com retroalimentação.

 

A partir da Fig. 2, vemos um diagrama de blocos do processo de inferência genérico, que também serve para o exemplo de controle para o motor DC. Portanto, a partir de agora, explicarei todo o processo sempre tomando o exemplo do motor.

Fig. 2 – Diagrama de blocos do processo de inferência de um controlador Fuzzy.

O processo de fuzzyficação consiste em tomar o valores de variáveis e valores para cada nível da mesma, classificada sempre ao critério do projetista. Para que o sistema de controle de fato mostre-se eficiente usaremos, como variáveis de estado (de entrada) para o sistema de controle, o erro da velocidade de rotação (E) e também a sua derivada (dE), ou seja, a taxa com que o erro aumenta ou diminui com relação ao tempo. É a partir destes valores, classificados pelo expert (com base no conhecimento do problema) que o processo de inferência se dá, com base no estabelecimento de regras, ou leis de controle. Assim, tomemos 7 valores, ou estados, tanto para a variável E e dE, respectivamente:

  • NL – Negative Large – Altamente negativo
  • NM – Negative Medium – Medianamente negativo
  • NS – Negative Small – Pouco negativo
  • Z – Zero – Zero
  • PS – Positive Small – Pouco positivo
  • PM – Positive Medium – Medianamente positivo
  • PL – Positive Large – Altamente positive

Os valores de E e dE são captados por um sensor de velocidade, como um encoder ou mesmo um tacogerador. Os conjuntos fuzzy relacionam-se cada um com o status destes sinais. O conjunto Z indica que E e dE encontram-se em uma faixa de erro tolerável, compatível com o nível de estabilidade pré-definido. Os conjuntos PS, PM e PL indicam que E e dE encontram-se em uma faixa de velocidade  positiva com relação ao valor desejado. Analogamente, os conjuntos NS, NM e NL indicam que E e dE encontram-se um uma faixa de velocidade negativa em relação ao valor desejado. Os índices S, M e L indicam que E e dE têm níveis pequeno, médio e grande, respectivamente. A saída do controlador recebe o mesmo status. As ações de controle podem ser tanto um acréscimo (PS, PM e PL) com um decréscimo (NS, NM e NL) no sinal de controle, ou seja, na corrente de armadura. Isso se dá com níveis pequeno (PS e NS), médio (PM e NM) e grande (PL e NL), dependendo diretamente das entradas fornecidas pelos sensores. A priori foram definidas 49 regras Fuzzy (uma combinação de 7 estados para E e mais 7 estados para dE), representadas pela tabela da Fig. 3.

Fig. 3 – Tabela com as regras Fuzzy pré-estabelecidas.

É como se tivéssemos 49 condicionais “SE…ENTÃO”, num bloco de programação, da seguinte forma:

SE E == NL and dE==Z então dU=NM

Para a regra exemplificada acima, se a velocidade medida pelo sensor estiver maior que o valor desejado (E == NL), intuitivamente notamos que a corrente de armadura deverá ser diminuída para que a a velocidade do eixo também diminua. Isso se dá por um decréscimo dU no fornecimento da mesma. Porém, tal decréscimo deverá se dar a um nível médio de intensidade (NM). A mesma analogia serve para as outras 48 situações possíveis par os estados de E e dE.

Uma vez estabelecidas as regras que regem o controle do motor, define-se os conjuntos Fuzzy de entrada e de saída do controlador. Os conjuntos Fuzzy referentes ao erro de posição, a derivada do erro e ao sinal de saída (sinal de controle) são ilustrados através das Figs. 4 a 6, respectivamente.

Figs. 4-6. Representação gráfica dos conjuntosFuzzy, que representam os níveis das variáveis de estado do motor, após fuzzyficação.

 

Sei que a teoria é um pouco maçante mas é necessário que se tenha um pouco do conhecimento teórico para que possamos passar para a implementação de um controlador “de verdade”. Já estou preparando um tutorial para ensinar a implementação de um controlador Fuzzy em Matlab para o controle de um motor DC de 12Volts.

Espero que tenham gostado e entendido um pouco mais sobre os controladores baseados em lógica nebulosa. Terei o prazer em responder dúvidas aqui no blog.

Até a próxima!

 

Sobre Eng. Rafael Coronel Bueno Sampaio, PhD.

Projeto & Pesquisa de Sistemas Mecatrônicos e Robótica Móvel
Esse post foi publicado em Controle, Inteligência Artificial, Lógica Fuzzy, Lógica Nebulosa, Sistemas de Controle. Bookmark o link permanente.

5 respostas para Controle Fuzzy

  1. Rafael…gostei muito de sua explicação sobre controle fuzzy! Sou estudante de eng. mecatrônica, no Instituto federal de Juiz de Fora, Minas Gerais, e estou iniciando um projeto sobre controle fuzzy. Gostaria de contar com a sua ajuda, se possível. Desde já obrigado.

    Rodrigo

    • Olá Rodrigo,

      Será um grande prazer auxiliá-lo. A propósito, tivemos a visita de alguns alunos da mecatrônica do IFJF no nosso laboratório em maio. Uma aluna do curso acabou por fazer estágio conosco! Os alunos do IF de JF são sempre bem-vindos para nos visitar em São Carlos/SP.
      Me dê mais detalhes de sua aplicação. Se preferir, podemos conversar em privado, pelo rafaelcoronel@gmail.com.
      Um grande abraço e aguardo seu contato!

  2. Rodrigo salles disse:

    Rafael,
    Muito obrigado por sua disponibilidade em ajudar. Mandei um email para você. Um abraço, e aguardo resposta.
    Rodrigo

  3. Difraê Silva disse:

    Muito obrigado Rafael, seu texto é muito esclarecedor. Ajudou demais a entender com mais firmeza os conceitos! O material que eu tinha era menos centrado, acabava gerando certa confusão, que terminou agora!

    Difraê

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s