pendulo invertido com lógica fuzzy

175
UNIVERSIDADE PAULISTA - UNIP Engenharia de Controle e Automação Industrial Cesar Umberto Modesti David Luna Santos João Claudio dos Santos Thiago Henrique Marques Silva SISTEMA COM PENDULO INVERTIDO UTILIZANDO LÓGICA FUZZY SÃO PAULO 2013

Upload: david-luna-santos

Post on 16-Apr-2017

658 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Pendulo invertido com lógica Fuzzy

UNIVERSIDADE PAULISTA - UNIP

Engenharia de Controle e Automação Industrial

Cesar Umberto Modesti

David Luna Santos

João Claudio dos Santos

Thiago Henrique Marques Silva

SISTEMA COM PENDULO INVERTIDO UTILIZANDO LÓGICA

FUZZY

SÃO PAULO

2013

Page 2: Pendulo invertido com lógica Fuzzy

UNIVERSIDADE PAULISTA - UNIP

Instituto de Ciências Exatas e Tecnologia (ICET)

Engenharia de Controle e Automação Industrial

Cesar Umberto Modesti

David Luna Santos

João Claudio dos Santos

Thiago Henrique Marques Silva

SISTEMA COM PENDULO INVERTIDO UTILIZANDO LÓGICA

FUZZY

Trabalho de Conclusão de Curso apresentado ao Instituto de Ciências Exatas e Tecnologia da Universidade Paulista – UNIP, como requisito parcial para a obtenção do título de Engenheiro de Controle e Automação Industrial.

Orientador:

Prof. MSc. Hugo Magalhães Martins

Co-orientador:

Prof. MSc. Rafael Bachega

SÃO PAULO

2013

Page 3: Pendulo invertido com lógica Fuzzy

Sistema com pendulo invertido utilizando lógica Fuzzy / Cesar Humberto Modesti ... [et al.]. – 2013.

175 f. : il. color.

Trabalho de Conclusão de Curso (graduação) – Universidade Paulista, Instituto de Ciências e Tecnologia, 2013.

Orientação: Prof. Hugo Martins Magalhães

Co-Orientação: Prof. Rafael Bachega

1. MICROCONTROLADOR. 2. SISTEMAS DE CONTROLE. 3. SISTEMAS NÃO LINEARES. I. Modesti, Cesar Humberto. II. Magalhães, Hugo Martins, orient. II. Bachega, Rafael, co-orient.

Page 4: Pendulo invertido com lógica Fuzzy

CESAR UMBERTO MODESTI

DAVID LUNA SANTOS

JOÃO CLAUDIO DOS SANTOS

THIAGO HENRIQUE MARQUES SILVA

SISTEMA COM PENDULO INVERTIDO UTILIZANDO LÓGICA

FUZZY

Trabalho de Conclusão de Curso apresentado ao Instituto de Ciências Exatas e Tecnologia da Universidade Paulista – UNIP, para a obtenção do título de Engenheiro de Controle e Automação Industrial.

BANCA EXAMINADORA

Aprovado em:

______/______/______

______________________________________________________

Prof. Diogo Ferreira L. Filho

Universidade Paulista - UNIP

______________________________________________________

Prof. Marcos Rosa

Universidade Paulista - UNIP

______________________________________________________

Prof. Hugo M. Martins

Universidade Paulista - UNIP

Page 5: Pendulo invertido com lógica Fuzzy

DEDICATÓRIA

Aos nossos pais, os primeiros e maiores amores de nossas vidas a quem

dedicamos todas as nossas vitórias.

As nossas esposas, namoradas e filhos, a quem negamos o precioso tempo

na dedicação de esforços para este trabalho.

Aos nossos amigos, pessoas especiais que nos motivam diariamente.

Page 6: Pendulo invertido com lógica Fuzzy

AGRADECIMENTOS

Agradecemos primeiramente a Deus por nos proporcionar o dom da vida e

nos permitir adquirir conhecimento em todos estes dias.

A nossas famílias, pelo amor e apoio, estando ao nosso lado mesmo diante

de todas as dificuldades.

Ao nosso orientador, Prof. MSc. Hugo Magalhães Martins, pela competência

com que conduziu este trabalho e por nos auxiliar em nossas dificuldades, dividindo

sua sabedoria e nos instigando a desenvolver novas ideias.

Ao nosso co-orientador, Prof. MSc. Rafael Bachega, por nos mostrar a

importância dos detalhes e a análise crítica dos conceitos de projeto, propondo uma

melhoria contínua nos estudos.

Page 7: Pendulo invertido com lógica Fuzzy

“A natureza do homem comum é ir em frente e fazer o melhor que puder.”

(John Prine).

Page 8: Pendulo invertido com lógica Fuzzy

RESUMO

O presente trabalho trata do estudo, construção e controle de um sistema de

pendulo invertido utilizando lógica fuzzy embarcada em um microcontrolador de

baixo custo. Para esta finalidade foi realizada uma extensa pesquisa sobre o tema

onde foram demonstrados conceitos básicos do sistema de pendulo invertido e

discutidos alguns modelos de controle, em especial a lógica fuzzy, seu

funcionamento e aplicabilidade.

Foi construído um protótipo simples para testes iniciais da lógica fuzzy e

comportamento de mecanismos, posteriormente foi projetada e construída uma

planta maior e mais robusta para os testes de controle. Para realizar o

processamento foi utilizado um microcontrolador ATmega 2560 embarcado em um

hardware de linguagem aberta, chamado ARDUINO. A programação foi escrita em

uma versão da linguagem C própria para este tipo de microcontrolador.

A implementação do sistema de controle ao protótipo possibilitou analisar o

desempenho do controlador na planta e ajusta-lo de forma a obter a melhor

resposta. Simulações computacionais foram utilizadas de forma a auxiliar a

construção das funções de pertinência da lógica fuzzy e realizar comparações

quando se modificavam as quantidades de regras e pertinências. Uma segunda

placa de ARDUINO foi utilizada para realizar aquisição de dados em tempo real da

planta em conjunto com o Matlab. Os resultados obtidos foram satisfatórios

mostrando que é possível o controle de um problema complexo como é o caso do

pendulo invertido, com lógica fuzzy embarcada em microcontrolador mesmo com as

limitações de velocidade e armazenamento de informações do mesmo.

Palavras-chave: Pendulo invertido, lógica fuzzy, microcontrolador, sistemas de

controle, sistemas não-lineares.

Page 9: Pendulo invertido com lógica Fuzzy

ABSTRACT

The present work deals with the study, construction and control of an inverted

pendulum system using fuzzy logic embedded in a low cost microcontroller. To this

end, we performed extensive research on the topic where they were shown the

basics of inverted pendulum system and discussed some models of control,

especially the fuzzy logic operation and applicability.

We built a simple prototype for initial testing of fuzzy logic and behavior

mechanisms, was later designed and built a larger plant and more robust control

tests. To realize the processing, we used a microcontroller ATmega 2560 embarked

on an open hardware language called ARDUINO. The program was written in C

language version suitable for this type of microcontroller.

The implementation of the control system to the prototype possible to analyze

the performance of the controller in the plant and set it in order to get the best

response. Computer simulations were used in order to assist the construction of the

membership functions of fuzzy logic and comparisons were modified when the

quantity of rules and pertinence. Arduino a second plate was used to perform data

acquisition in real time of the plant in conjunction with Matlab. The results were

satisfactory, showing that it is possible to control a complex problem such as inverted

pendulum, fuzzy logic in microcontroller embedded with the same speed limits and

information storage thereof.

Keywords: Inverted pendulum, fuzzy logic, microcontroller, control systems,

nonlinear systems.

Page 10: Pendulo invertido com lógica Fuzzy

LISTA DE FIGURAS

Figura 1 - Pendulo clássico ....................................................................................... 24

Figura 2 - Corte transversal do Single Pendulum e Triple Pendulum ........................ 27

Figura 3 - Friction Pendulum no Trans-European Motorway Viaduct ........................ 28

Figura 4 - Esquema geométrico de um bípede com seis articulações ...................... 29

Figura 5 - Pendulo Invertido Móvel JOE .................................................................... 30

Figura 6 - Mecanismo de teste com pendulo invertido .............................................. 31

Figura 7 - Modelo de sustentação simples do corpo humano ................................... 32

Figura 8 - Protótipo do pendulo em “T” desenvolvido por Iida ................................... 33

Figura 9 - Diagrama de blocos de um sistema de controle ....................................... 34

Figura 10 - Sistema de controle de Malha Aberta ..................................................... 35

Figura 11 - Sistema de controle com de Malha Fechada .......................................... 35

Figura 12 - Esquema do Pendulo Invertido ............................................................... 36

Figura 13 - Protótipo do pendulo invertido OWIPS .................................................... 41

Figura 14 - Diagrama de blocos representado no espaço de estados. ..................... 42

Figura 15 - Modelo do sistema pêndulo invertido com suspensão veicular. ............. 43

Figura 16 - Comportamento do sistema com suspensão veicular ............................. 44

Figura 17 - Modelo de Rede Neural Artificial ............................................................. 45

Figura 18 - Estrutura com Algoritmos Genéticos, Fuzzy e Redes Neurais ................ 46

Figura 19 - Exemplo de Função de Pertinencia Booleana ........................................ 49

Figura 20 - Exemplo de Função de Pertinencia fuzzy ............................................... 50

Figura 21 - Diagrama de blocos da operação inicial ................................................. 57

Figura 22 - Fluxograma da lógica de controle ........................................................... 58

Figura 23 - Diagrama de blocos da operação inicial revisado ................................... 59

Figura 24 - Vista em perspectiva do Protótipo Planta Menor montado ..................... 60

Figura 25 - Vista frontal do Protótipo Planta Menor ................................................... 61

Figura 26 - Detalhe do carro com o eixo de transmissão da Planta Menor ............... 61

Figura 27 - Detalhe do carro com o suporte para o potenciômetro ........................... 62

Figura 28 - Detalhe da correia dentada e mola nas extremidades ............................ 62

Figura 29 - Detalhe do Pendulo Invertido IP01 da Quanser ...................................... 63

Figura 30 - Placa de Teste Pic Board V3.0 ............................................................... 64

Page 11: Pendulo invertido com lógica Fuzzy

Figura 31 - Drive LM298 ............................................................................................ 65

Figura 32 - Placa com circuito do Driver LM298 completo ........................................ 65

Figura 33 - Diagrama de hardware com Pic Board e LM298 .................................... 66

Figura 34 - Parte do equipamento de Análises Clínicas reaproveitado ..................... 67

Figura 35 - Trilho com carros independentes ............................................................ 68

Figura 36 - Detalhe do trilho montado sobre perfil de alumínio ................................. 68

Figura 37 - Detalhe da base do carro com correia dentada ...................................... 69

Figura 38 - Detalhe do carro montado com coroa e cremalheira .............................. 70

Figura 39 - Detalhe do fim de curso e carro montado ............................................... 70

Figura 40 - Perspectiva da planta maior montada ..................................................... 71

Figura 41 - Detalhe do carro montado com o motor .................................................. 71

Figura 42 - Detalhe da redução para o potenciômetro .............................................. 72

Figura 43 - Detalhe da montagem do acoplamento do potenciômetro ...................... 73

Figura 44 - Motor Jhonston Eletric HC785LP-012 ..................................................... 75

Figura 45 - Fonte industrial DC ................................................................................. 76

Figura 46 - Relação entre Corrente máxima e Temperatura do IRF3205 ................. 76

Figura 47 - Diagrama de Hardware da ponte H ......................................................... 77

Figura 48 - Diagrama do circuito dobrador de tensão ............................................... 78

Figura 49 - Diagrama de hardware do driver completo ............................................. 79

Figura 50 - Arduino Mega 2560 ................................................................................. 80

Figura 51 - Interface de programação do Arduino ..................................................... 82

Figura 52 - Função de pertinência da entrada Ângulo da Haste ............................... 86

Figura 53 - Função de pertinência da entrada Velocidade Angular ........................... 86

Figura 54 - Função de pertinência da variável Tensão do Motor .............................. 87

Figura 55 - Inserção da base de regras no sistema Mandami................................... 87

Figura 56 - Surface .................................................................................................... 88

Figura 57 - Rule Viewer ............................................................................................. 89

Figura 58 - Pertinências para entrada posição 5 regras ............................................ 92

Figura 59 - Pertinências para saída velocidade 5 regras .......................................... 93

Figura 60 - Pertinências para entrada posição 9 regras ............................................ 95

Figura 61 - Pertinências para saída velocidade 9 regras .......................................... 96

Figura 62 - Pertinências para entrada posição 21 regras .......................................... 98

Figura 63 - Pertinências para entrada velocidade haste 21 regras ........................... 98

Page 12: Pendulo invertido com lógica Fuzzy

Figura 64 - Pertinências para saída velocidade motor 21 regras .............................. 99

Figura 65 - Pertinências para entrada posição 54 regras ........................................ 100

Figura 66 - Pertinências para entrada velocidade haste 54 regras ......................... 101

Figura 67 - Pertinências para saída velocidade motor 54 regras ............................ 101

Figura 68 - Pertinências para entrada posição 15 regras ........................................ 103

Figura 69 - Pertinências para entrada velocidade haste 15 regras ......................... 103

Figura 70 - Pertinências para saída velocidade haste 15 regras............................. 104

Figura 71 - Oscilação livre do pendulo com carro livre ............................................ 105

Figura 72 - Oscilação livre do pendulo com carro preso ......................................... 106

Figura 73 – Oscilação do pendulo com carro livre sem ruídos ................................ 107

Figura 74 - Oscilação do pendulo com carro preso sem ruídos .............................. 107

Figura 75 - Estrutura para aquisição de dados em tempo real com Simulink ......... 108

Figura 76 - Teste de aquisição de dados em tempo real com Simulink .................. 109

Figura 77 - Estrutura em Simulink para controlador com 9 regras .......................... 111

Figura 78 - Variação Angular da haste com 9 regras .............................................. 111

Figura 79 - Resposta do controlador com base de 9 regras.................................... 112

Figura 80 - Estrutura em Simulink para controlador com 25 regras ........................ 112

Figura 81 - Variação Angular da haste com 25 regras ............................................ 113

Figura 82 - Resposta do controlador com base de 25 regras.................................. 113

Figura 83 - Estrutura para comparação entre controladores ................................... 114

Figura 84 - Gráfico comparativo entre base 9 regras e 25 regras ........................... 114

Page 13: Pendulo invertido com lógica Fuzzy

LISTA DE TABELAS

Tabela 1 - Comparativo entre o Protótipo e equipamento Quanser IP01 .................. 63

Tabela 2 - Comparativo entre a Planta e o equipamento Quanser IP01. .................. 74

Tabela 3 - Características básicas do Arduino Mega 2560 ....................................... 81

Tabela 4 - Parâmetros das Variáveis de Entrada e Saída. ....................................... 85

Tabela 5 - Base de regras do sistema para duas variáveis ....................................... 85

Tabela 6 - Controle de 21 regras ............................................................................... 99

Tabela 7 - Controle 54 regras .................................................................................. 102

Tabela 8 - Controle 15 regras .................................................................................. 104

Tabela 9 - Parâmetros da Planta para simulação ................................................... 110

Tabela 10 - Custos do Projeto ................................................................................. 116

Page 14: Pendulo invertido com lógica Fuzzy

LISTA DE ABREVIATURAS E SIGLAS

°C – Celsios

A – Amper

AC - Corrente alternada

CI - Circuito Integrado

Ctr – Centro

D – Drain

DC - Corrente continua

DirG - Direita grande

DirM - Direita médio

DirMP - Direita médio pequeno

DirMP - Direita médio pequeno

DirP - Direita pequeno

EsqG - Esquerda grande

EsqM - Esquerda médio

EsqMG - Esquerda médio grande

EsqMP - Esquerda médio pequeno

EsqP - Esquerda pequeno

FET - Transistor de efeito de campo

G – Gate

g – Gramas

Page 15: Pendulo invertido com lógica Fuzzy

Hz – Frequência

I/O - Imput output

KB - Kilo bytes

Kn - Kilo Newtons

Kohm - Kilo ohm

mA - Mili amper

MHz - Mega Hertz

mm – Milímetros

NpN - Negativo positivo negativo

PID - Posicional Integrativo Derivativo

PnP - Positivo negativo positivo

PWM - Modulador de largura de pulso

soQ 1-4 - Componentes utilizados no diagrama

rad – Radianos

rad/s - Radianos por segundo

RPM - Rotações por minuto

S – Source

SCI - Sistema de controle inteligente

TCC - Trabalho de conclusão de curso

USB - Universal Serial Bus

V – Volt

Valta - Velocidade alta

Vbaixa - Velocidade baixa

Page 16: Pendulo invertido com lógica Fuzzy

Vmedia - Velocidade media

Vmtbaixa - Velocidade muito baixa

W - Potencia em Wats

Page 17: Pendulo invertido com lógica Fuzzy

LISTA DE SIMBOLOS

= constante

= amplitude do sinal senoidal aplicado ao amplificador

= amortecimento combinado do motor e do carro

= constante de amortecimento viscoso do carro

= constante de amortecimento viscoso do motor

= constante de amortecimento viscoso do eixo do servo-potenciômetro

= centro de gravidade

= primeira derivada de Xp

= segunda derivada de Xp

= primeira derivada de Yp

= segunda derivada Yp

= primeira derivada Xcg

= segunda derivada Xcg

= primeira derivada Ycg

= segunda derivada Ycg

= força contra eletromotriz no motor

= erro de estado estacionário

= força transmitida a correia de transmissão

= aceleração da gravidade

= força na direção horizontal

= momento de inércia do pendulo (ml2/3 para uma haste uniforme)

= corrente de armadura do motor

= momento de inércia do motor

= inércia combinada do motor e do carro (J = Im + Mr2)

= Amplitude máxima do sinal senoidal amortecido obtido no ensaio do pendulo

Page 18: Pendulo invertido com lógica Fuzzy

= ganho constante do amplificador

= constante de amortecimento viscoso (Kc = )

= constante de tensão induzida no motor

= constante de torque do motor

= constante do transdutor de posição utilizado no ensaio (Volts/m)

= metade do comprimento do pendulo

M = massa do carro

! = máximo pico da variável a ser controlada

" = massa do pendulo

# = ponto de pivotamento do eixo do pendulo

$= raio efetivo do eixo do motor (∆Xp = r∆ϕ)

% = resistência de armadura do motor

& = tempo de amostragem do sistema de controle

& = tempo de acomodação da variável a ser controlada

'( = torque requerido do motor

' = torque resistente no eixo do motor

'= torque total requerido do motor

) = força na direção vertical

)* = tensão de entrada do amplificador

)+ = tensão de saída do amplificador

= coordenada no eixo X do centro de gravidade

= coordenada no eixo X do ponto de pivotamento

= coordenada no eixo Y do centro de gravidade

= coordenada no eixo Y do ponto de pivotamento

, = ângulo do eixo do motor

- = ângulo do pendulo com relação à linha vertical

Page 19: Pendulo invertido com lógica Fuzzy

SUMÁRIO

1 INTRODUÇÃO ....................................................................................................... 20

2 MOTIVAÇÃO E CONTEXTO ............................ ..................................................... 21

2.1 JUSTIFICATIVA .................................................................................................... 21

3 REVISÃO BIBLIOGRÁFICA ........................... ....................................................... 23

3.1 O PÊNDULO CLÁSSICO ........................................................................................ 23

3.2 O PENDULO INVERTIDO ....................................................................................... 26

3.3 SISTEMAS DE CONTROLE ..................................................................................... 34

3.4 LÓGICA FUZZY .................................................................................................... 47

3.4.1 Teoria de Conjuntos Fuzzy ........................................................................ 48

3.4.2 Fuzzificação ............................................................................................... 51

3.4.3 Base de Regras ......................................................................................... 51

3.4.4 Inferência e Tomada de Decisões ............................................................. 52

3.4.5 Defuzzificação ........................................................................................... 53

4 PROPOSTA E CONTRIBUIÇÃO ......................... .................................................. 55

4.1 MÉTODO PROPOSTO ........................................................................................... 55

4.2 DIAGRAMA DE BLOCOS ........................................................................................ 57

5 RESULTADOS PRELIMINARES ......................... .................................................. 60

5.1 PROTÓTIPO MECÂNICO ....................................................................................... 60

5.2 PROTÓTIPO ELÉTRICO: PIC BOARD V3.0 .............................................................. 64

5.3 PROJETO MECÂNICO DA PLANTA .......................................................................... 67

5.4 PROJETO ELÉTRICO ............................................................................................ 74

5.4.1 Hardware: Arduino Mega 2560 .................................................................. 79

5.4.2 Ambiente de desenvolvimento ................................................................... 81

5.4.3 Linguagem de programação ...................................................................... 83

5.5 LÓGICA DE CONTROLE ........................................................................................ 84

6 TESTES E RESULTADOS ............................. ....................................................... 90

6.1 TESTES COM O PROTÓTIPO .................................................................................. 90

Page 20: Pendulo invertido com lógica Fuzzy

6.2 TESTES COM A PLANTA ........................................................................................ 94

6.3 AQUISIÇÃO DE DADOS ....................................................................................... 105

6.4 SIMULAÇÃO DE DESEMPENHO ............................................................................ 109

6.5 DISCUSSÕES .................................................................................................... 115

6.6 CUSTO DO PROJETO: PLANILHA DE CUSTOS ....................................................... 116

7 CONCLUSÃO ....................................... ............................................................... 117

7.1 SUGESTÕES PARA TRABALHOS FUTUROS ........................................................... 118

8 REFERÊNCIAS BIBLIOGRÁFICAS ...................... .............................................. 120

ANEXO A - DATASHEET POTENCIÔMETRO DE PRECISÃO ..... ........................ 123

ANEXO B - DATASHEET DO MOTOR ...................... ............................................ 124

ANEXO C - DATASHEET DO IRF3205 .................... .............................................. 126

ANEXO D - DATASHEET DO CI555 ..................... ................................................ 128

ANEXO E - DATASHEET DO PATIN ...................... ............................................... 131

APENDICE A - PROGRAMAÇÃO EM C ..................... ........................................... 133

APENDICE B - DIAGRAMA DO DRIVER DE POTÊNCIA ....... .............................. 147

APENDICE C - PLACA DE POTÊNCIA .................... ............................................. 148

APENDICE D - DESENHOS DA PLANTA ................... .......................................... 149

Page 21: Pendulo invertido com lógica Fuzzy

20

1 INTRODUÇÃO

Neste trabalho analisamos o pendulo invertido, que é um mecanismo

extremamente dinâmico e complexo, tornando-se de grande valia para o estudo não

apenas deste em si, mas também de problemas com uma dinâmica similar. Para

entender este problema de uma maneira simples basta compará-lo a uma antiga

brincadeira de tentar manter em equilíbrio um cabo de vassoura ou uma caneta na

ponta dos dedos, o que é extremamente instável, pois a todo o momento é

necessário movimentar a mão para fazer com que o eixo da caneta fique o mais

próximo possível da posição vertical ou não caia.

Da mesma forma é o pendulo invertido, porem ao invés de termos uma

caneta ou um cabo de vassoura temos uma haste ou barra metálica, e em

substituição ao dedo temos um carro que se desloca em apenas uma direção,

porém nos dois sentidos, sempre buscando manter a haste na posição vertical. A

haste á fixada em um eixo preso ao carro, este eixo devera ser um sensor de

deslocamento angular, o qual informara o quanto a haste esta deslocada de sua

posição desejada, fazendo com que o motor de acionamento do carro se desloque

proporcionalmente ao desvio angular da haste.

Para controlar este complexo problema optou-se por utilizar um sistema de

controle inteligente, neste caso o controlador nebuloso, mais conhecido como fuzzy.

Conforme demonstrado por Silva (2009), sistemas de controle baseados em

métodos estocásticos apresentam um bom desempenho no controle de problemas

não lineares, como é o caso pendulo invertido.

Page 22: Pendulo invertido com lógica Fuzzy

21

2 MOTIVAÇÃO E CONTEXTO

Ao analisarmos a aplicação e o desenvolvimento dos sistemas de controle

surgiram ideias com relação aos tipos de processadores e seus desempenhos, de

acordo com a complexidade da planta, o tempo de resposta exigido e a viabilidade

do controlador.

Desta forma, a aplicação de um sistema de controle inteligente em uma planta

de caráter não linear através de um microcontrolador tornou-se atraente para o

estudo possibilitando a análise do desempenho do controlador e a comparação entre

técnicas de controle, além da implementação em hardware de baixo custo.

Propondo uma solução com desempenho satisfatório no controle da

estabilidade do pendulo invertido, o objetivo do trabalho é demonstrar e analisar a

adequação de um sistema de controle inteligente em um hardware de baixo custo

através do microcontrolador e validar seu funcionamento aplicando-o em dois

protótipos de proporções diferentes.

2.1 Justificativa

O pendulo invertido vem sendo estudado durante décadas, inúmeras

propostas de controle já foram publicadas, muitas delas utilizando controladores

clássicos como o PID e processamento através de circuitos comparadores baseados

em amplificadores operacionais conforme demonstrado pelos trabalhos de Abelsson

(1996), Grasser (2002) e Silva (2010).

A utilização de lógica fuzzy para sistemas não lineares se mostra vantajosa

devido a possibilidade de utilizar variáveis linguísticas ao invés de modelagem

Page 23: Pendulo invertido com lógica Fuzzy

22

matemática, outra vantagem desta proposta se mostra através da utilização de um

microcontrolador de baixo custo, que pode processar as informações em uma

velocidade satisfatória.

Page 24: Pendulo invertido com lógica Fuzzy

23

3 REVISÃO BIBLIOGRÁFICA

Neste capítulo, abordaremos o desenvolvimento histórico dos estudos do

pendulo, desde as primeiras teorias sobre a dinâmica do pendulo clássico, até a

aplicação de sistemas de controle com desempenho avançado no pendulo invertido.

Através deste levantamento será possível demonstrar como o pendulo

auxiliou no desenvolvimento de alguns dos principais conceitos físicos e como o

estudo de seu modelo inverso ainda produz grandes avanços científicos.

3.1 O Pêndulo Clássico

Os primeiros estudos do pendulo datam de 1638, onde Galileu Galilei em seu

livro “Two New Sciences” descreve o pendulo como um assunto extremamente

árido, dando assim início a um estudo que se delongaria por séculos. Drake (1990)

aponta que sem os primeiros estudos do pendulo, muitas das leis da física que

conhecemos hoje não existiriam ou teriam levado algum tempo a mais para serem

descobertas.

Em 1656, Huygens desenvolveu as primeiras definições da utilização do

pendulo como meio de obter uma medição acurada de tempo e patenteou o primeiro

relógio de pendulo. Suas pesquisas continuaram e uma das utilizações de seu

relógio pendular foi a detecção da longitude no mar.

Outra citação da importância do pendulo foi feita pelo historiador Westfall

(1990), ele descreve a relevância do pendulo demonstrando a influencia deste em

um dos principais trabalhos de Newton, intitulado ‘Principia’. Boulos (2005) escreveu

sobre a importância que o pendulo representou nos trabalhos de Newton, onde o

Page 25: Pendulo invertido com lógica Fuzzy

24

pendulo foi utilizado para demonstrar que os corpos celestes obedecem a leis físicas

tanto quanto corpos terrestres.

O pendulo se tornou extremamente notável também através do trabalho de

Stokes (1851), onde foi deduzida uma série de equações que consideravam os

fatores influentes no período do movimento pendular.

Outro avanço científico baseado na dinâmica do pendulo foi realizado por

Léon Foucault (1878), onde utilizando um pendulo longo e pesado demonstrou a

rotação da terra em torno de seu eixo.

Segundo Galilei (1638), o pendulo simples ideal consiste de uma partícula

que oscila em torno de um ponto fixo, suspensa por um fio inextensível e de massa

desprezível. Este sistema esta em equilíbrio quando o centro de gravidade da

partícula esta alinhada verticalmente com o ponto fixo.

Figura 1 - Pendulo clássico

Page 26: Pendulo invertido com lógica Fuzzy

25

Quando a partícula é afastada de sua posição de equilíbrio e solta, a ação da

gravidade a fará oscilar em um plano vertical, em movimento periódico e oscilatório

(Figura 1). Através deste movimento é possível determinar o período do movimento.

Conforme demonstrado na figura 1, temos o comprimento do fio dado por L, a

massa da partícula dada por m, o peso da partícula dado por mg, a tração no fio

dada por T (tempo de um ciclo), o ângulo do fio com a vertical dado por θ, e a

decomposição da força atuante dada por mgcosθ (força centrípeta) e mgsenθ (força

tangencial).

A força centrípeta faz com que a partícula mantenha sua trajetória circular, já

a força tangencial atua contrariamente ao aumento do ângulo entre o fio e a vertical,

por isso a força tangencial também é tida como força restauradora.

O movimento do pendulo não é harmônico simples devido à força

restauradora não ser proporcional ao deslocamento angular θ. Porém, caso o

deslocamento angular θ for muito pequeno a função senθ resultante será

aproximadamente igual a θ, isto torna o deslocamento ao longo do arco

aproximadamente retilíneo tendo . = 01. Considerando a aceleração da gravidade e

utilizando a segunda lei de Newton temos:

= " (1.1)

Aplicando o deslocamento angular contrário, temos:

= −"1 (1.2)

Substituindo o deslocamento ao longo do arco em (1.2), resulta em:

−" 345 = − 3" 45 . (1.3)

A força restauradora será proporcional ao deslocamento quando este for

pequeno, tendo porem sentido contrario. Dentro desta condição é possível obter o

movimento harmônico simples. É possível ainda fazer uma analogia com a equação

da mola, onde = −6., tendo 6 representando o termo 4 . Tendo formulado as

equações básicas do pendulo, ainda podemos calcular o tempo de um ciclo,

denominado período T. O período não depende da massa da partícula conforme

pode ser visto em (1.4).

Page 27: Pendulo invertido com lógica Fuzzy

26

' = 289"6 = 28: "3"0 5

' = 2894 (1.4)

3.2 O Pendulo Invertido

O pendulo invertido é um sistema altamente instável e de caráter não linear.

Ao contrário do pendulo clássico, onde o amortecimento ocorre pela frequência de

oscilação e ação da gravidade, o pendulo invertido desenvolvido neste protótipo

obtém o amortecimento através do controle da variação angular e variação da

velocidade da haste, isto ocorre por meio do deslocamento linear do ponto de

pivotamento da haste.

Assim como o pendulo clássico, o pendulo invertido foi e é alvo de estudo de

muitos pesquisadores. Contudo, ao longo dos anos surgiram diversos tipos de

abordagem sobre o pendulo invertido.

Um dos primeiros trabalhos sobre o controle do pendulo foi elaborado por

Roberge (1960) que confeccionou um protótipo do pendulo invertido e adicionou a

este um controlador PID, observou o desempenho do controlador que se mostrou

satisfatório, mas levantou questões, como por exemplo, a interferência causada por

fatores físicos que não podem ser previstos com a variação na resposta do sistema

e como é realizado o ajuste das constantes do controlador PID.

Foram desenvolvidas várias aplicações práticas utilizando os conceitos dos

pêndulos. Dentre elas uma de grande importância foi desenvolvida por Zayas

(1985), que utilizando a analogia de edifícios submetidos a terremotos e o pendulo

invertido criou um sistema de proteção sísmica em estruturas. Patenteado como

Page 28: Pendulo invertido com lógica Fuzzy

27

Friction Pendulum, este se tornou uma concepção extremamente aplicável tendo

ainda outros avanços, como por exemplo, o pendulo triplo (Figura 2), que para

certos casos oferece um amortecimento ainda melhor.

Figura 2 - Corte transversal do Single Pendulum e Triple Pendulum

Fonte: Zayas, 2009.

O pendulo de fricção consiste de três partes, sendo elas uma base convexa a

qual é fixada no solo ou entre as partes da estrutura, uma base reta com suporte

central a qual é fixada na parte móvel (ou que tende a mover-se) da estrutura e uma

semiesfera que é colocada entre as bases. Durante um abalo sísmico, a semiesfera

se desloca sobre a base convexa, permitindo que haja um movimento linear por

parte da base reta que sustenta a parte superior do conjunto.

Um exemplo da aplicação deste mecanismo foi a Trans European Motorway

(Figura 3). A rodovia estava sendo construída utilizando-se meios convencionais

quando a região foi atingida por um terremoto causando danos a partes da estrutura.

Como parte do projeto de reestruturação da ponte foi incluída o sistema

Friction Pendulum nas quatro principais estruturas do trecho situado em Bolu,

Turquia.

Após analises da vulnerabilidade da região a abalos sísmicos, este sistema foi

tido como o único capaz de atender todas as especificações do projeto. Conforme

Page 29: Pendulo invertido com lógica Fuzzy

28

especificações divulgadas, cada um dos componentes instalados contam com uma

capacidade de 8.886,44 kN, podendo deslocar-se de entre 700mm e 900mm.

Figura 3 - Friction Pendulum no Trans-European Motorway Viaduct

Fonte: Zayas, 2009.

Surgiram também muitos trabalhos na área de robótica, com enfoque na

aplicação dos conceitos do pendulo em sistemas de movimentação autônoma.

Estes sistemas consideram a posição ereta de um ser humano ao caminhar, o

movimento individual das pernas caracteriza o controle de equilíbrio do pendulo,

onde há a necessidade de mantê-lo na posição vertical de modo semelhante ao

equilíbrio do corpo durante a caminhada.

Parseghian (2000) desenvolveu uma modelagem matemática para simulação

de um bípede iniciando uma caminhada, mantendo-se na caminha e balançando

sem perder o equilíbrio (Figura 4).

Para tanto foram levantados parâmetros do funcionamento do pendulo

invertido individual e logo após foram somados novos graus de liberdade.

Page 30: Pendulo invertido com lógica Fuzzy

29

Com isto foi necessário simular o funcionamento de uma articulação na base

igualmente ao tendão de Aquiles, uma segunda articulação ligando o pendulo um ao

pendulo dois semelhante ao joelho e por ultimo uma articulação ligando o pêndulo

dois a um eixo ligado à outra perna.

O desenvolvimento exigiu também as análises de equilíbrio para dois graus

de liberdade, já que o corpo do protótipo movia-se independente de um ponto fixo.

Figura 4 - Esquema geométrico de um bípede com seis articulações

Fonte: Parseghian, 2000.

Grasser et al (2002) desenvolveram um modelo de um pendulo invertido

móvel denominado “JOE”, com o objetivo de ter um mecanismo que se movimenta

livremente enquanto corrige sua posição vertical (Figura 5).

O mecanismo é composto por duas rodas coaxiais, porém, para cada roda há

um motor de corrente contínua e um sistema de controle independente que monitora

os deslocamentos tanto nos eixos de rotação quanto no deslocamento angular do

pendulo com relação ao plano horizontal.

Page 31: Pendulo invertido com lógica Fuzzy

30

Isto possibilita que o mecanismo se movimente livremente ao controlar

constantemente as perturbações angulares e ao mesmo tempo restringe o

comportamento dos motores para que o conjunto não gire constantemente em torno

de seu próprio eixo ou haste.

Figura 5 - Pendulo Invertido Móvel JOE

Fonte: Grasser, 2002.

Outra aplicação relevante do pendulo invertido foi desenvolvida por Lakie et al

(2003) em uma pesquisa na área de fisiologia. O objetivo do trabalho era demonstrar

como é possível manter o equilíbrio do corpo humano com baixa rigidez do tornozelo

através da correção de postura e da sustentação dos pés, porém foi levantada a

questão do efeito mola das panturrilhas.

Para esta demonstração foi montado um mecanismo de pendulo invertido

acoplado a um braço através de um fio com mola (Figura 6). O equilíbrio do pendulo

Page 32: Pendulo invertido com lógica Fuzzy

31

não se deu por força e rigidez, mas sim por movimentos intermitentes contrários ao

movimento do deslocamento angular com auxílio da mola, isto amorteceu a

oscilação do pendulo de forma a alcançar o equilíbrio.

Os resultados dos experimentos com o pendulo invertido foram extremamente

satisfatórios, pois levantaram outras hipóteses com relação à dinâmica dos membros

inferiores ao realizarem os controles musculares de correção de equilíbrio.

Figura 6 - Mecanismo de teste com pendulo invertido

Fonte: Lakie, 2006.

Seguindo o objetivo de identificar o comportamento de equilíbrio humano

através do pendulo invertido, Borg (2003) analisou o desempenho do controle do

equilíbrio utilizando um mecanismo com uma mola acoplada à haste do pendulo e

sua base (Figura 7), simulando um tendão igual ao de um ser humano.

Page 33: Pendulo invertido com lógica Fuzzy

32

Figura 7 - Modelo de sustentação simples do corpo humano

Fonte: Borg, 2003.

Este modelo é também chamado de Pendulo Invertido Humano (HIP – Human

Inverted Pendulum). O autor destaca a relevância do pendulo na ciência tanto em

teoria de controle quanto em modelos biomecânicos, que também são de grande

instabilidade.

Conforme os sistemas de controle e as pesquisas na área de robótica

avançam, novas aplicações dos conceitos do pendulo invertido surgem propondo

soluções mais complexas.

Estas soluções visam envolver outras variáveis que aproximam o

desempenho dos sistemas ao funcionamento real dos mecanismos, podendo utilizar

seus resultados em áreas onde se tem ainda grande dependência do envolvimento

humano.

Page 34: Pendulo invertido com lógica Fuzzy

33

Iida et al (2003) desenvolveram um protótipo de um pendulo invertido em “T”

utilizando uma estrutura bípede com quatro pés (Figura 8). A proposta do projeto é a

utilização do mecanismo na exploração de terrenos irregulares.

Figura 8 - Protótipo do pendulo em “T” desenvolvido por Iida

Fonte: Iida, 2003.

Dentro desta proposta esta a movimentação do robô em linha reta, podendo

este também inverter o sentido de sua movimentação e controlar seu raio de giro. O

diferencial nesta aplicação é a capacidade de saltar que o robô apresenta

juntamente com os dois graus de liberdade no pendulo, com isso é possível, através

dos sensores angulares, determinar as inclinações no solo por onde o robô estiver

caminhando e assim emitir sinais de controle aos atuadores.

Page 35: Pendulo invertido com lógica Fuzzy

34

3.3 Sistemas de Controle

Os sistemas de controle estão presentes não só nas aplicações da ciência

moderna como também nos seres vivos, e nestes últimos são os responsáveis pelas

tomadas de decisões que regem a sobrevivência. Nise (2011) exemplifica os

sistemas de controle que nós, seres humanos possuímos, citando o exemplo de

situações em que, sofrendo pressões e havendo necessidade de maior raciocínio e

maior velocidade na execução de tarefas, nosso corpo libera adrenalina aumentando

os batimentos cardíacos e liberando uma maior quantidade de oxigênio. Este é

apenas um exemplo entre muitos outros que ocorrem sem que percebamos ou que

possamos interferir.

Nise (2011) define que, sistemas de controle são constituídos por processos e

subsistemas que leem uma informação, processam e ajustam de forma a obter uma

saída nas condições desejadas.

Segundo Dorf & Bishop (2009), sistemas de controle são formados por

componentes interligados que operam de forma estruturada para produzir uma

resposta satisfatória a uma entrada (Figura 9).

Figura 9 - Diagrama de blocos de um sistema de controle

Dentro ainda do conceito de sistemas de controle, pode-se diferenciar os

tipos de controle devido sua tratativa com relação à resposta fornecida. Esta tratativa

é o que define sistemas de controle de malha aberta e sistemas de controle de

malha fechada. Sistemas de controle de malha aberta usam dispositivos para atuar

Page 36: Pendulo invertido com lógica Fuzzy

35

de acordo com sua resposta, porem, não verificam se a resposta é satisfatória

(Figura 10).

Figura 10 - Sistema de controle de Malha Aberta

Surge então à necessidade de sistemas de controle com realimentação que

emitem um sinal de controle, comparam a saída real com a saída desejada e

realimentam a entrada com um sinal de erro, deixando de atuar apenas quando

alcançam o resultado desejado (Figura 11).

Figura 11 - Sistema de controle com de Malha Fechada

Conforme o avanço nas pesquisas relacionadas às formas de se controlar

sistemas, foram surgindo diversos tipos de sistemas de controle, entre eles podemos

citar as principais divisões, tais como o controle clássico e o controle moderno que

serão discutidos adiante.

Dentro do controle clássico estão técnicas de definição de sistemas através

de modelagem matemática, esta modelagem estabelece as variáveis físicas do

Page 37: Pendulo invertido com lógica Fuzzy

36

sistema que se pretende controlar e equaciona suas variações a fim de obter

respostas satisfatórias de acordo com a entrada.

O controle clássico é largamente utilizado em processos com sistemas

lineares, que produzem uma resposta equivalente à entrada. Segundo Ogata (2010),

a obtenção da resposta de um sistema com diversas entradas pode se dar através

do tratamento de cada entrada individualmente, somando os resultados.

Entre as técnicas que compõem o controle clássico estão o controle

proporcional, o controle integrativo, o controle derivativo, o controle PID

(Proporcional Integrativo Derivativo), o controle por atraso de fase, controle por

avanço de fase e o controle por avanço e atraso de fase.

A dinâmica do pendulo invertido caracteriza um sistema não linear devido a

quantidade de variáveis de entrada que não podem ser diretamente correlacionadas

com a saída, porem sistemas não lineares podem passar por um processo de

linearização. Para a simulação é necessário que se obtenha o maior numero de

informações a fim de aproximar os resultados ao real comportamento da planta.

Figura 12 - Esquema do Pendulo Invertido

Fonte: Ribeiro, 2007.

A fim de simular o comportamento do sistema é necessário obter uma

modelagem matemática do mesmo. O modelo matemático apresentado foi

desenvolvido por Deley (2006), que levou em consideração no calculo, tanto a

posição da haste como a posição do carro, tornando a modelagem mais complexa,

Page 38: Pendulo invertido com lógica Fuzzy

37

abrangendo mais variáveis de forma a aproximar ao máximo os resultados obtidos

na simulação com a realidade.

= + <=(1); @ = i@ + B<(1)1@;

Ẍ = Ẍ + B<(1)1D – <=(1)1@ ; (1.1)

= + B<(1); @ = @– <=(1)1@ ; @ = 0;

D = − <=(1)1D – B<(1)θ@ ². (1.2)

Somando as forças na direção do eixo X tem-se a força horizontal

representada por H, como segue em (1.3) e (1.4).

∑ = "D; (1.3)

= "[ẌL + B<(1)1D − <=(1)1@²], = "D + " B<(1)1D – " <=(1)1@². (1.4)

Somando as forças na direção do eixo Y tem-se a força vertical representada

por V, como segue em (1.5) e (1.6).

∑O = "D (1.5)

)– " = "[− <=(1)1D − B<(1)1@²],) = −" <=(1)1D – " B<(1)1@² + ".(1.6)

Modelando a soma dos momentos de inércia temos (1.7) e (1.8).

∑! = 1D + θ@ (1.7)

) <=(1)– B<(1) = 1D + 1@ (1.8)

Page 39: Pendulo invertido com lógica Fuzzy

38

Combinando as equações de forma a obter a redução vem:

1D + 1@ = ) <=(1)– B<(1);1D +1@ = Q−" <=(1)1D – " B<(1)1@ + "R <=(1)–

−["D + " B<(1)1D – " <=(1)1@ ] B<(1);1D + 1@ = −" ²<=²(1)1D – " ²<=(1)B<(1)1@² −

+" <=(1)– " DB<(1)– " ²B<²(1)1D ++" ²<=(1)B<(1)1@²;

1D + 1@ = −" ²1D + " <=(1) − " DB<(1);( + " ²)1D + 1@ – " <=(1) = −" DB<(1). (1.9)

Adotando que o pendulo seja feito de haste uniforme, possuindo momento de

inércia de STU e também que 1 é muito pequeno, temos:

43 " 1D(&) +1@(&) − " 1(&) = −" D(&);1D + UXYZST 1 −@ UZS 1 = − UZS XD \.(1.10)

Aplicando a nomenclatura definida a seguir à transformada de Laplace

podemos obter a função de transferência típica do sistema do pendulo invertido.

2]^_ = UXYZS²,^_² = UZS , = UZS,(1.11)1D(&) + 2]^_1@(&) −^_²1(&) = −D(&)(1.12)

`()a() = bc²²d efgbfg² (1.13)Para controlar o pendulo invertido na posição vertical é utilizado um carro que

se desloca ao longo de um eixo através de uma correia dentada, que por sua vez

recebe um torque de um motor de corrente contínua. O motor é controlado através

de um driver amplificador que recebe um sinal do microcontrolador. As seguintes

Page 40: Pendulo invertido com lógica Fuzzy

39

equações descrevem a relação entre a corrente com o torque resultante e também a

tensão induzida.

)* = h )+(1.14))+ = + i%(1.15)

= j@ (1.16)i = hk '((1.17)

Substituindo as equações de forma a combiná-las temos:

)* = k lk $j@ + $'(m.(1.18)Para o torque total requerido do motor temos

' = jD + j@ + '.Considerando o torque resistente no motor vem

' = $.Equacionando a força (F) exercida na correia de transmissão do carro temos,

= !D + @ + = "Ẍ.

Analisando a estrutura e assumindo que a massa da haste seja menor do que

a massa do carro, podemos dizer que a aceleração do centro de gravidade da haste

é aproximadamente a mesma do ponto de pivotamento da haste no carro e, portanto

a força horizontal é desprezível. Equacionando temos que m<<M implica em

Ẍno ≈ XD \ e, portanto H<<MẌr + BnX@ \, assim,

= !D + @' = jD + j@ + $t!D + @u

Substituindo na equação (2.8) temos

Page 41: Pendulo invertido com lógica Fuzzy

40

)* = k lk $j@ + $tjD + j@ + !$D + $@um,)* = k lk $j@ + $t$jD + $j@ + !$ D + $ @um,

)* = k l$jD + 3k + 5 $j@ + !$ D + $ @m. (1.19)

São conhecidas as relações a seguir:

v = $vj; @ = $j@ ; D = $jD .Substituindo na equação (1.19) vem

)* = k lD + 3k + 5 $j@ + !$ D + $ @m,)* = k l( + !$ )D + 3k + + $ 5 @m.

Adotando = + !$ temos

= h 3k + + $ 5,hw = k,

)* = 1 QD + @R.Resultando em (1.20):

(<) = )*(<) <(< + )Aplicando a transformada de Laplace tem-se a função de transferência do

conjunto amplificador-motor-carro em (1.21).

ac()yz() = w(dX) (1.21)

Pode-se notar a complexidade do desenvolvimento matemático para o

levantamento das variáveis e dos fatores que compõem este sistema.

Page 42: Pendulo invertido com lógica Fuzzy

41

Utilizando o controle PID, Lee et al (2012) desenvolveram um protótipo do

pendulo invertido chamado OWIPS, estruturado sobre uma roda, podendo mover-se

livremente por um espaço (Figura 13).

Figura 13 - Protótipo do pendulo invertido OWIPS

Fonte: Lee, 2012.

Os controladores modernos contemplam sistemas extremamente dinâmicos,

caracterizados por equações não lineares. Para resolver estes problemas, o controle

moderno conta com técnicas como o controle multivariável, o controle adaptativo, o

controle ótimo, o controle de caráter não linear, o controle preditivo, o controle

robusto e o controle inteligente.

Dentro da analise do problema do pendulo invertido, foram propostas diversas

soluções, com utilização do controle moderno. Dentre elas, um trabalho interessante

foi desenvolvido por Zhang et al (2011), o desenvolvimento e modelagem

matemática foi feito utilizando a análise por espaço de estados, as equações

resultantes da análise foram testadas através de simulação, demonstrando resposta

satisfatória à dinâmica do sistema.

Ogata (2010) define estado como o menor conjunto de variáveis conhecidas

que determinam o comportamento de um sistema. Nise (2011) aborda a utilização

Page 43: Pendulo invertido com lógica Fuzzy

de técnicas no espaço de estados, justificando sua utilização

entradas e saídas múltiplas (Figura 14).

Figura 14 - Diagrama de blocos representado no espaço de estados.

Dentro deste conceito, é possível fazer uma analogia com os resultados

obtidos de varias pesquisas com o objetivo de estabilizar o pendulo, as quais foram

desenvolvidas utilizando equações no espaço de estados.

Outro trabalho interessante utilizando o con

desenvolvido por Belusso (2010), que tratou da dinâmica caótica de um sistema de

pendulo invertido duplo montado sobre um sistema de suspensão móvel

caracterizado por um sistema massa mola (Figura 15).

de técnicas no espaço de estados, justificando sua utilização

entradas e saídas múltiplas (Figura 14).

Diagrama de blocos representado no espaço de estados.

Fonte: Ogata, 2010

Dentro deste conceito, é possível fazer uma analogia com os resultados

obtidos de varias pesquisas com o objetivo de estabilizar o pendulo, as quais foram

desenvolvidas utilizando equações no espaço de estados.

Outro trabalho interessante utilizando o conceito de variáveis de estado foi

desenvolvido por Belusso (2010), que tratou da dinâmica caótica de um sistema de

pendulo invertido duplo montado sobre um sistema de suspensão móvel

caracterizado por um sistema massa mola (Figura 15).

42

de técnicas no espaço de estados, justificando sua utilização em sistemas com

Diagrama de blocos representado no espaço de estados.

Dentro deste conceito, é possível fazer uma analogia com os resultados

obtidos de varias pesquisas com o objetivo de estabilizar o pendulo, as quais foram

ceito de variáveis de estado foi

desenvolvido por Belusso (2010), que tratou da dinâmica caótica de um sistema de

pendulo invertido duplo montado sobre um sistema de suspensão móvel

Page 44: Pendulo invertido com lógica Fuzzy

43

Figura 15 - Modelo do sistema pêndulo invertido com suspensão veicular.

Fonte: Sartori, 2008.

Nele foram levantadas as variáveis de estado e agrupadas em equações,

estas equações foram inseridas no MATLAB para simulação e obtenção de gráficos

que permitem a analise do desempenho do sistema às perturbações inerentes a

planta em estudo.

A resposta às simulações (Figura 16) demonstra que as equações e o

sistema proposto para o controle da planta são insuficientes, sendo necessária uma

melhoria na estrutura de controle ou talvez até o desenvolvimento de um sistema de

controle mais inteligente, que se adapte a complexidade desta planta.

Page 45: Pendulo invertido com lógica Fuzzy

44

Figura 16 - Comportamento do sistema com suspensão veicular

Fonte: Sartori, 2008.

Este é um entre muitos casos em que se deve avaliar o tipo de controlador a

ser aplicado de acordo com a complexidade do sistema. Nestes casos muitas vezes

é necessário adotar sistemas inteligentes, que na resposta as múltiplas entradas se

adaptam, aprendendo de acordo com os erros registrados. Entre eles pomos citar

controladores fuzzy, redes neurais, algoritmos genéticos, controladores adaptativos

entre outros.

Como citado anteriormente, os sistemas de controle fornecem resposta a uma

determinada entrada de acordo com funções pré-estabelecidas. Estes sistemas, no

entanto, dependem do desenvolvimento de modelos matemáticos tanto para o

controlador quanto para a planta.

Os sistemas de controle inteligente têm como objetivo fornecer respostas às

perturbações de uma planta ou processo sem a necessidade de que haja a

modelagem matemática do mesmo. Para atender seus objetivos de controle, os

Page 46: Pendulo invertido com lógica Fuzzy

45

sistemas inteligentes recorrem a técnicas similares ao funcionamento do raciocínio

humano, que age de forma qualitativa e não apenas quantitativa. Entre estas

técnicas podemos citar a tomada de decisões mesmo com base em informações

vagas ou confusas, a extração de informações de uma determinada planta ou

processo e o aprendizado automático.

Simões e Shaw (2007) descrevem o controle inteligente como um sistema

capaz de responder a determinadas entradas de forma a solucionar os erros mesmo

que estes sejam diferentes dos previstos, agindo de forma única e dinâmica.

Existem diversos tipos de sistemas de controle inteligentes em

desenvolvimento, entre eles podemos citar as redes neurais, lógica fuzzy, e

algoritmos genéticos. É interessante também notar o desenvolvimento de sistemas

que se utilizam da integração de duas ou mais técnicas de controle, por exemplo, as

redes neurofuzzy.

Figura 17 - Modelo de Rede Neural Artificial

Fonte: Cavalcanti (1998)

Utilizando os conceitos de Sistema de Controle Inteligente (SCI), Cavalcanti

(1998) um controlador para o pendulo invertido utilizando as técnicas de Algoritmos

Genéticos, Lógica Nebulosa e Redes Neurais Artificiais. Um dos objetivos do projeto

foi desenvolver um controlador capaz de processar as informações recebidas

reduzindo as incertezas provenientes das respostas através da análise da própria

resposta, agindo de forma a corrigi-la.

Page 47: Pendulo invertido com lógica Fuzzy

46

O desempenho do controlador foi testado através de simulações e as

conclusões obtidas por análise das curvas levantadas sem a confecção de um

protótipo físico.

Figura 18 - Estrutura com Algoritmos Genéticos, Fuzzy e Redes Neurais

Fonte: Cavalcanti, 1998.

Outro trabalho interessante foi desenvolvido por Lu et al. que utilizaram uma

rede neurofuzzy com controle adaptativo aplicado ao problema do pendulo invertido.

É importante salientar que o sistema por eles desenvolvido visava à obtenção

de uma lógica fuzzy autoajustável, onde o próprio controlador identifica as falhas em

sua base de regras, adicionando e eliminando regras conforme o acúmulo de

resultados e a análise destes, baseando-se no método estocástico.

Page 48: Pendulo invertido com lógica Fuzzy

47

3.4 Lógica Fuzzy

A lógica fuzzy, ou lógica nebulosa, foi desenvolvida por Zadeh (1965), que

propôs uma nova forma de tratar conjuntos de informações. Ao contrário da lógica

clássica, binária [0,1], em que algo é verdadeiro ou não, a lógica fuzzy permite o

tratamento de informações qualitativas, possibilitando um funcionamento semelhante

à forma de raciocínio humano, que toma decisões baseado em informações já

conhecidas, porém imprecisas.

Sistemas lineares, que possuem variações nas saídas proporcionais às

variações nas entradas, podem ser controlados facilmente através de sistemas de

controle baseados em modelagem matemática, no entanto, os sistemas não lineares

apresentam uma maior complexidade de controle devido a fatores como valores

imprecisos de parâmetros, dimensão e complexidade do modelo elevadas,

fenômenos físicos não compreendidos ou de pobre compreensão e distúrbios e

perturbações externas não mensuráveis.

A aplicação de controladores baseados em lógica fuzzy em sistemas não

lineares apresenta desempenho superior com relação aos controladores baseados

em modelagem matemática, pois permitem que sejam inseridas variáveis linguísticas

que são mais rápidas e fáceis de manipular.

Sendo assim, podemos descrever as características da lógica fuzzy da

seguinte maneira:

• A lógica fuzzy é capaz de trabalhar com múltiplos valores, fazendo com

que a verdade numérica seja apenas uma questão de ponto de vista;

• Através da lógica fuzzy é possível trabalhar com incertezas, onde a

certeza absoluta é demonstrada através dos valores 0 ou 1;

• A lógica fuzzy possibilita que computadores trabalhem com variáveis

linguísticas traduzidas em grupos numéricos;

Page 49: Pendulo invertido com lógica Fuzzy

48

• Através da lógica fuzzy é possível manusear facilmente expressões

verbais carregadas de incertezas tais como claro, talvez, alto, baixo,

quente, frio, rápido, devagar, grande, pequeno e etc;

De forma geral, a lógica fuzzy opera transformando valores em variáveis

linguísticas, acessando uma base de regras através do peso ou valor da variável

linguística, tomando uma decisão com base nas regras predeterminadas e emitindo

um valor defuzzificado, sendo composta das seguintes etapas:

• Fuzzificação dos dados de entrada;

• Base de conhecimento ou base de regras;

• Lógica de tomada de decisões;

• Defuzzificação.

Para termos uma melhor compreensão do fluxo de funcionamento desta

lógica iremos expor os componentes de cada etapa de forma sequencial.

3.4.1 Teoria de Conjuntos Fuzzy

Dentro da teoria de conjuntos fuzzy desenvolvida por Zadeh (1965) é tido

como base a pertinência de um elemento x em um conjunto A, sendo a pertinência

representada matematicamente através do símbolo ∈:

x ∈A (3.4.1)

Com base na pertinência de um elemento em um conjunto é demonstrada a

função de pertinência através de µ_A (x). Simões e Shaw (2007) descrevem que

todos os valores dentro de um intervalo [0,1] estão contidos em uma função de

Page 50: Pendulo invertido com lógica Fuzzy

49

pertinência µ_A (x), sendo assim um membro pode estar contido parcialmente em

um conjunto sendo representado por um valor fracionário.

Para demonstrar a diferença entre os conjuntos fuzzy e os conjuntos

baseados na lógica booleana tradicional são mostrados dois gráficos conforme as

figuras 19 e 20 seguintes:

Figura 19 - Exemplo de Função de Pertinencia Booleana

Pode-se observar que os valores entre 50 e 100 fazem parte do conjunto em

que a condição imposta para valores verdadeiros no universo de discurso que varia

entre o e 100 é obedecida.

Um exemplo desta utilização seria o levantamento de uma pesquisa com

conclusão precisa do tipo: “Uma pesquisa mostrou que pessoas com mais de 50

anos tendem a gastar mais com remédios do que com entretenimento”. Onde todos

os dados pesquisados estão contidos nos valores entre 50 e 100.

Page 51: Pendulo invertido com lógica Fuzzy

50

Figura 20 - Exemplo de Função de Pertinencia fuzzy

Na figura 20 é demonstrada uma função de pertinência do tipo fuzzy, onde é

possível observar que uma reta característica de uma equação de segundo grau é

aplicável.

Utilizado o exemplo da relação idade/medicação citado anteriormente

poderíamos adaptar a conclusão da seguinte maneira: “Uma pesquisa mostrou que

a partir dos 40 anos, uma pessoa passa a diminuir os gastos com entretenimento

para gastar mais com remédios, sendo que a partir dos 55 anos isto já é uma

certeza”.

Sendo assim é definido que um elemento fuzzy pode pertencer totalmente ou

parcialmente a uma função:

A=x∈X | µ_A (x)= ξ,0≤ξ ≤1 (3.4.2)

Onde ξ é o valor de pertinência de x no conjunto A, contido no intervalo entre

0 e 1.

Page 52: Pendulo invertido com lógica Fuzzy

51

3.4.2 Fuzzificação

Segundo Zadeh (1965), fuzzificação é a conversão de um valor que o torna

parte de um universo de discurso, possibilitando sua inserção em uma função de

pertinência. Neste trabalho isto se aplica basicamente através da leitura de sensores

que emitem um sinal analógico ou digital.

Este valor fuzzificado aciona uma determinada função de pertinência,

podendo acionar mais do que uma função ao mesmo tempo, o que é a base do

sistema fuzzy. Neste projeto, a variável fuzzificada é a tensão fornecida através do

potenciômetro, que é lida pelo Hardware e processada na base de regras.

3.4.3 Base de Regras

A base de regras tem por objetivo avaliar as entradas e direcioná-las para que

atuem de uma maneira pré-determinada. Em muitas aplicações fuzzy, a base de

regras é criada a partir da experiência de um operador sobre determinado processo,

com isto garante-se que o sistema irá ter um comportamento semelhante ao de um

operador.

Esta base é composta por funções linguísticas que representam as funções

de pertinência, através delas é possível determinar o tipo de reação para cada valor

de entrada ou ação lida pelo sensor. Abaixo é mostrado o exemplo de uma base de

regras:

• SE entrada for ErroBaixo ENTÃO saída será SaídaBaixa

• SE entrada for ErroAlto ENTÃO saída será SaídaAlta

Page 53: Pendulo invertido com lógica Fuzzy

52

Onde os nomes “ErroBaixo”, “ErroAlto”, “SaídaBaixa” e “SaídaAlta”

representam as funções de pertinência de entrada e saída. Cada uma destas

funções possui valores pré determinados e são ativadas de acordo com a entrada

lida.

3.4.4 Inferência e Tomada de Decisões

A tomada de decisões, também conhecida como inferência, é o

processamento das regras e a execução de suas decisões. Esta inferência atua

diretamente na saída da informação, executando informações pré-determinadas.

Basicamente, o processo de tomada de decisões respeita uma sequencia

lógica de ação e reação, esta sequencia utiliza variáveis linguísticas do tipo “se” e

“então”. Na linguagem fuzzy pode-se considerar que a condição “se” representa um

antecedente e a reação “então” representa uma inferência, com isto é tomada a

decisão que irá agir no controlador.

Abaixo é descrito um exemplo de base de regras utilizado no

desenvolvimento deste projeto:

• SE entrada for ErroMédio ENTÃO saída será SaídaMédia

• SE entrada for ErroGrande ENTÃO saída será SaídaGrande

A base de regras fuzzy pode operar no sistema SISO (Simple Input Simple

Output) e também no sistema MIMO (Multiple Input Multiple Output), sendo assim é

possível utilizar parte da lógica booleana na lógica fuzzy através das funções “AND”

e “OR”, estas funções podem ser aplicadas na tomada de decisões para inferência

quando se utiliza mais de uma entrada. Para exemplificar esta estrutura podemos

utilizar um trecho do projeto onde foram adicionadas duas entradas e uma saída. As

entradas utilizadas foram a posição angular da haste e a velocidade da haste.

Page 54: Pendulo invertido com lógica Fuzzy

53

SE posição for Média E velocidade for Média ENTÃO saída será Média;

SE posição for Alta E velocidade for Alta ENTÃO saída será Alta;

Vale salientar que as condições impostas na base de regras podem ser

também do tipo “OU”. Isto depende da aplicação do controlador, da resposta que se

pretende obter por parte da tomada de decisões e do tipo de experiência em que as

regras foram baseadas.

3.4.5 Defuzzificação

A defuzzificação consiste em transformar um valor linguístico, proveniente das

funções de pertinência em um valor real, capaz de ser utilizado no mundo real. Isto é

aplicável quando é necessário que a tomada de decisão do controlador emita algum

tipo de sinal para o mundo físico.

Simões & Shaw (2007) exemplificam a defuzzificação através do acionamento

de motores e também demonstram que em certos casos a defuzzificação não é

necessária, já que a resposta pode ser considerada apenas qualitativamente.

Existem alguns métodos de defuzzificação que são largamente utilizados,

entre eles estão:

• Defuzzificação pelo Centro de Area (C-o-A);

• Defuzzificação pelo Centro do Máximo (C-o-M);

• Defuzzificação pela Média do Máximo (M-o-M);

Neste trabalho optou-se por utilizar a defuzzificação por centro de área (C-o-

A). Este método também é conhecido como Centro-de-Gravidade, pois calcula o

“peso” de uma entrada através da localização do centro de gravidade das funções

ativadas. O calculo da defuzzificação por Centro de Área baseia-se na posição das

Page 55: Pendulo invertido com lógica Fuzzy

54

coordenadas de uma função de pertinência com relação ao universo de discurso e a

pertinência de um erro com relação a função. Sendo demonstrada conforme

equação 3.4.5:

| = ∑ z~(z)

∑ ~(z)

(3.4.5)

Onde, (|*) descreve a área da função de pertinência ativada,

considerando que seja uma porcentagem da área total, dependendo da localização

do dado de entrada no universo de discurso e |* representa a localização do centro

da função de pertinência com relação ao universo de discurso da função de entrada.

Page 56: Pendulo invertido com lógica Fuzzy

55

4 PROPOSTA E CONTRIBUIÇÃO

Neste tópico serão apresentados os conceitos de construção dos protótipos

mecânico e elétrico para implementação física do modelo do pendulo invertido. De

forma geral o pendulo invertido é constituído por uma haste montada sobre uma

base móvel com um grau de liberdade apenas, com o deslocamento da base através

de um motor pretende-se manter a haste equilibrada a noventa graus com relação

ao trilho.

4.1 Método Proposto

A princípio, as tarefas planejadas para o desenvolvimento e execução do

projeto foram conduzidas da seguinte maneira:

• Projetar a estrutura mecânica para deslocamento em um eixo;

• Modelar matematicamente o conjunto do pendulo em um eixo;

• Modelar matematicamente o Conjunto Carro/Motor;

• Adquirir os atuadores;

• Adquirir os sensores;

• Realizar ensaio com o Pendulo;

• Identificar os parâmetros do conjunto do pendulo;

• Realizar ensaio com o Carro/Motor;

• Identificar os parâmetros do conjunto do carro/motor;

Page 57: Pendulo invertido com lógica Fuzzy

56

• Desenvolver o modelo completo em MATLAB;

• Adequar as variáveis do processo à lógica fuzzy;

• Criar programação em C;

• Adicionar o controlador ao protótipo;

• Testar a operação do conjunto completo.

Para desenvolver um controlador adequado, é necessário que haja um

protótipo da planta, onde serão levantados parâmetros e após isso serão feitos

testes. Sendo assim, a primeira etapa do trabalho consistiu em desenvolver o

protótipo, obedecendo a configurações pré-determinadas por questões físicas e

financeiras.

Na segunda etapa, foram feitos testes com o protótipo e o hardware inicial. No

decorrer do desenvolvimento do projeto, algumas das tarefas que não estavam

previstas e que, no entanto, eram necessárias para dar continuidade no projeto,

foram incluídas. Entre elas identificamos:

• Montar o protótipo e analisar as interferências;

• Desenvolver driver para o motor;

• Simular o controlador através de software;

• Desenvolver placa de aquisição de dados;

• Desenvolver interface para visualização em tempo real.

Algumas destas tarefas não eram imprescindíveis para realização do trabalho,

porem através delas seria possível fazer uma análise mais criteriosa do

desempenho do controlador e do comportamento da planta.

O desenvolvimento da placa de aquisição de dados e a interface para

visualização em tempo real são itens que não influenciam diretamente no

desenvolvimento e execução do projeto, porem, na fase de testes de desempenho

do controlador estes se mostraram extremamente úteis devido a facilidade de

interpretação dos gráficos obtidos.

Page 58: Pendulo invertido com lógica Fuzzy

4.2 Diagrama de Blocos

A princípio, a sequência de funcionamento da planta completa consistia em: O

potenciômetro – encoder

ao Microcontrolador, o microcontrolador transforma o sinal analógico em digital e

transmite a informação ao computador, o computador recebe e processa a

informação emitindo um sinal de comando ao circuito de acionamen

circuito de acionamento do motor processa o sinal e converte em tensão acionando

o motor de acordo com a necessidade de controle, o motor movimenta o carrinho

causando uma nova posição e deslocamento na haste.

Figura 21

Este procedimento pode ser observado no diagrama de blocos da sequencia

de operação do protótipo (Figura 21) e diagrama de blocos de funcionamento da

lógica de controle (Figura 22).

A princípio, a sequência de funcionamento da planta completa consistia em: O

encoder - lê o desvio angular da haste e emite um sinal analógico

ao Microcontrolador, o microcontrolador transforma o sinal analógico em digital e

transmite a informação ao computador, o computador recebe e processa a

informação emitindo um sinal de comando ao circuito de acionamen

circuito de acionamento do motor processa o sinal e converte em tensão acionando

o motor de acordo com a necessidade de controle, o motor movimenta o carrinho

causando uma nova posição e deslocamento na haste.

21 - Diagrama de blocos da operação inicial

Este procedimento pode ser observado no diagrama de blocos da sequencia

de operação do protótipo (Figura 21) e diagrama de blocos de funcionamento da

lógica de controle (Figura 22).

57

A princípio, a sequência de funcionamento da planta completa consistia em: O

ar da haste e emite um sinal analógico

ao Microcontrolador, o microcontrolador transforma o sinal analógico em digital e

transmite a informação ao computador, o computador recebe e processa a

informação emitindo um sinal de comando ao circuito de acionamento do motor, o

circuito de acionamento do motor processa o sinal e converte em tensão acionando

o motor de acordo com a necessidade de controle, o motor movimenta o carrinho

Diagrama de blocos da operação inicial

Este procedimento pode ser observado no diagrama de blocos da sequencia

de operação do protótipo (Figura 21) e diagrama de blocos de funcionamento da

Page 59: Pendulo invertido com lógica Fuzzy

Figura

Porém, após a analise do tipo de hardware utilizado para implementação do

controlador, foi verificado que não seria necessária a utilização de um computador

para o processamento da lógi

caso um Arduino Mega 2560, apresentou um desempenho satisfatório.

Sendo assim, foi alterado a sequencia de funcionamento da lógica, como

segue: O potenciômetro lê o desvio angular da haste e emite um si

Microcontrolador, o microcontrolador transforma o sinal analógico em digital, o sinal

digital é lido através da lógica fuzzy e processado através das funções de

pertinências e base de regras, o controlador fuzzy emite um sinal em forma de

ao driver do motor, o driver transforma este sinal em tensão e aplica

motor movimenta o carrinho causando uma nova posição e deslocamento na haste.

Figura 22 - Fluxograma da lógica de controle

Porém, após a analise do tipo de hardware utilizado para implementação do

controlador, foi verificado que não seria necessária a utilização de um computador

para o processamento da lógica de controle já que o hardware implementado, neste

caso um Arduino Mega 2560, apresentou um desempenho satisfatório.

Sendo assim, foi alterado a sequencia de funcionamento da lógica, como

segue: O potenciômetro lê o desvio angular da haste e emite um si

Microcontrolador, o microcontrolador transforma o sinal analógico em digital, o sinal

digital é lido através da lógica fuzzy e processado através das funções de

pertinências e base de regras, o controlador fuzzy emite um sinal em forma de

ao driver do motor, o driver transforma este sinal em tensão e aplica

motor movimenta o carrinho causando uma nova posição e deslocamento na haste.

58

Fluxograma da lógica de controle

Porém, após a analise do tipo de hardware utilizado para implementação do

controlador, foi verificado que não seria necessária a utilização de um computador

ca de controle já que o hardware implementado, neste

caso um Arduino Mega 2560, apresentou um desempenho satisfatório.

Sendo assim, foi alterado a sequencia de funcionamento da lógica, como

segue: O potenciômetro lê o desvio angular da haste e emite um sinal analógico ao

Microcontrolador, o microcontrolador transforma o sinal analógico em digital, o sinal

digital é lido através da lógica fuzzy e processado através das funções de

pertinências e base de regras, o controlador fuzzy emite um sinal em forma de PWM

ao driver do motor, o driver transforma este sinal em tensão e aplica-o no motor, o

motor movimenta o carrinho causando uma nova posição e deslocamento na haste.

Page 60: Pendulo invertido com lógica Fuzzy

O diagrama de blocos resultante desta sequencia de operação pode ser

verificado na figura 23.

Figura 23 - Diagrama de blocos da operação inicial revisado

O diagrama de blocos resultante desta sequencia de operação pode ser

Diagrama de blocos da operação inicial revisado

59

O diagrama de blocos resultante desta sequencia de operação pode ser

Diagrama de blocos da operação inicial revisado

Page 61: Pendulo invertido com lógica Fuzzy

60

5 RESULTADOS PRELIMINARES

Neste tópico são apresentadas e descritas as etapas que compõem o

desenvolvimento do projeto. Cada uma das etapas apresentadas são descritas na

ordem de sua ocorrência ao longo do trabalho, levando em consideração a influencia

da alteração de características antecedentes nas decorrentes.

5.1 Protótipo Mecânico

Na primeira etapa do projeto foi construído um protótipo simples do pendulo

invertido, a fim de inicializar os testes e aprender sobre a dinâmica da planta.

Figura 24 - Vista em perspectiva do Protótipo Planta Menor montado

Page 62: Pendulo invertido com lógica Fuzzy

61

Como base foi utilizada o trilho e o carro de uma impressora jato de tinta

modelo HP Officejet J3680, para sustentar o trilho com o carro foram adaptados

perfis de alumínio o que permitiu aproveitar apenas a parte metálica da impressora.

O carro é movimentado por um motor DC 12 V que transmite o torque ao carro

através de uma correia dentada.

Figura 25 - Vista frontal do Protótipo Planta Menor

O carro foi adaptado para instalação da haste do pendulo e do potenciômetro

através da confecção de um eixo que é preso à ponta do potenciômetro e passa por

um rolamento preso ao carro, fazendo com que seja garantido o posicionamento

perpendicular da haste com o trilho.

Figura 26 - Detalhe do carro com o eixo de transmissão da Planta Menor

Page 63: Pendulo invertido com lógica Fuzzy

62

O trilho da impressora foi montado sobre uma base de alumínio que permite a

movimentação do carro sem interferência mecânica, apenas atrito viscoso. Esta

configuração foi escolhida para os testes preliminares pela facilidade de montagem e

baixo custo.

Figura 27 - Detalhe do carro com o suporte para o potenciômetro

Após a realização do acionamento básico do motor, foi verificada a

necessidade de amortecedores nas extremidades do trilho, devido ao impacto

causado pelo carro quando este se deslocava em velocidade considerável.

Para fins de amortecimento foram adicionado molas, o que reduziu o

desgaste causado pelos impactos do carro com as extremidades do trilho.

Figura 28 - Detalhe da correia dentada e mola nas extremidades

Page 64: Pendulo invertido com lógica Fuzzy

63

Como base para as relações dimensionais entre os componentes dos

protótipos, foram utilizados os parâmetros de um modelo profissional desenvolvido

para fins didáticos, este modelo foi desenvolvido pela Quanser, o IP01.

Figura 29 - Detalhe do Pendulo Invertido IP01 da Quanser

Fonte: Quanser, 2008.

A relação entre as características de ambas as plantas pode ser observado

na Tabela 1.

Tabela 1 - Comparativo entre o Protótipo e equipamento Quanser IP01

Características Dimensões

Unidade IPO1 Protótipo Menor

Comprimento total do percurso 1.02 0.37 m

Trajeto do Carro 0.814 0.33 m

Relação das engrenagens 3.71 Não Aplicável -

Massa do Pendulo 0.23 0.17 Kg

Massa média do Pendulo 0.127 0.085 Kg

Comprimento total do pendulo 0.6413 0.3 m

Comprimento médio do Pendulo 0.3365 0.15 m

Page 65: Pendulo invertido com lógica Fuzzy

Vale ressaltar que os valores do equipamento IP01 serviram apenas como

comparativo, já que o protótipo planta menor

retirado de uma impressora de uso pessoal.

5.2 Protótipo Elétrico: Pic Board V3.0

O acionamento elétrico inicial foi implementado com a utilização do

PIC16F877A em uma placa teste denominada Pic Board V3.

possível, através do software MPLAB, desenvolver um programa em C, para realizar

o acionamento do motor.

Este PIC possui dois canais PWM que foram utilizados para emissão de

sinais de forma que o motor se movesse no sentido horário

se variar a velocidade do mesmo.

Figura

Vale ressaltar que os valores do equipamento IP01 serviram apenas como

comparativo, já que o protótipo planta menor teve seu componente básico, o trilho,

retirado de uma impressora de uso pessoal.

5.2 Protótipo Elétrico: Pic Board V3.0

O acionamento elétrico inicial foi implementado com a utilização do

PIC16F877A em uma placa teste denominada Pic Board V3.0. Com esta placa foi

possível, através do software MPLAB, desenvolver um programa em C, para realizar

o acionamento do motor.

Este PIC possui dois canais PWM que foram utilizados para emissão de

sinais de forma que o motor se movesse no sentido horário ou anti

se variar a velocidade do mesmo.

Figura 30 - Placa de Teste Pic Board V3.0

64

Vale ressaltar que os valores do equipamento IP01 serviram apenas como

teve seu componente básico, o trilho,

O acionamento elétrico inicial foi implementado com a utilização do

0. Com esta placa foi

possível, através do software MPLAB, desenvolver um programa em C, para realizar

Este PIC possui dois canais PWM que foram utilizados para emissão de

ou anti-horário podendo-

Page 66: Pendulo invertido com lógica Fuzzy

65

A princípio o objetivo era identificar os valores de tensão necessários para

que o carro do protótipo planta menor saísse de seu estado de inércia. Sendo assim

o desenvolvimento de um programa simples para acionamento básico através de

PWM era satisfatório.

Para enviar efetivamente uma tensão que acionasse o motor foi utilizado um

drive LM298. Este drive fez a interface com o motor transformando os sinais de

PWM em tensão equivalente.

Figura 31 - Drive LM298

Uma vez montado o circuito com o drive LM298, foi possível acionar a

movimentação do motor do carro da impressora em ambos os sentidos por um

tempo e velocidade pré-determinados no programa.

Figura 32 - Placa com circuito do Driver LM298 completo

Page 67: Pendulo invertido com lógica Fuzzy

No diagrama de hardware (figura 33) é possível observar a conexão completa

entre a placa de teste Pic Board V3.0, o driver LM298

programação desenvolvida para acionamento bási

Figura 33 -

Desta forma foram realizados os testes iniciais de acionamento elétrico e

verificação da eficiência mecânica da planta menor para a posterior construção de

um novo protótipo de pendulo em uma escala maior. Com isto foi possível, a

princípio, verificar que a transmissão de força por correia dentada exigia um torque

maior do motor, este foi um dos pontos levados em consideração na construção do

protótipo planta maior.

Outro ponto levantado foi à necessidade de criar uma redução por

engrenagens no potenciômet

fornecer baixa precisão já que a princípio foi utilizado um potenciômetro de baixo

custo. A utilização de uma redução por engrenagens no potenciômetro o tornaria

No diagrama de hardware (figura 33) é possível observar a conexão completa

entre a placa de teste Pic Board V3.0, o driver LM298 e a planta menor. A

programação desenvolvida para acionamento básico pode ser verificada no Anex

Diagrama de hardware com Pic Board e LM298

Desta forma foram realizados os testes iniciais de acionamento elétrico e

verificação da eficiência mecânica da planta menor para a posterior construção de

um novo protótipo de pendulo em uma escala maior. Com isto foi possível, a

a transmissão de força por correia dentada exigia um torque

maior do motor, este foi um dos pontos levados em consideração na construção do

Outro ponto levantado foi à necessidade de criar uma redução por

engrenagens no potenciômetro, isto devido à leitura efetuada pelo potenciômetro

fornecer baixa precisão já que a princípio foi utilizado um potenciômetro de baixo

custo. A utilização de uma redução por engrenagens no potenciômetro o tornaria

66

No diagrama de hardware (figura 33) é possível observar a conexão completa

e a planta menor. A

co pode ser verificada no Anex

Diagrama de hardware com Pic Board e LM298

Desta forma foram realizados os testes iniciais de acionamento elétrico e

verificação da eficiência mecânica da planta menor para a posterior construção de

um novo protótipo de pendulo em uma escala maior. Com isto foi possível, a

a transmissão de força por correia dentada exigia um torque

maior do motor, este foi um dos pontos levados em consideração na construção do

Outro ponto levantado foi à necessidade de criar uma redução por

ro, isto devido à leitura efetuada pelo potenciômetro

fornecer baixa precisão já que a princípio foi utilizado um potenciômetro de baixo

custo. A utilização de uma redução por engrenagens no potenciômetro o tornaria

Page 68: Pendulo invertido com lógica Fuzzy

67

mais preciso já que para dar uma volta completa seria necessário que a haste desse

mais do que uma volta em torno do eixo de pivotamento.

5.3 Projeto Mecânico da Planta

Após os testes com o protótipo, foi dado início ao desenvolvimento de uma

planta em escala maior do que o desenvolvido inicialmente. Para construção deste

protótipo foram utilizadas peças de sucatas especiais, que possibilitaram o

desenvolvimento de um protótipo com qualidade superior no que tange à mecânica.

As dificuldades e interferências mecânicas encontradas na planta menor serviram

com base de melhoria no pré-projeto do protótipo da planta maior.

O trilho utilizado foi reaproveitado de um equipamento de analises clínicas

(Figura 34), sucateado devido inviabilidade de sua reabilitação. Deste equipamento

foi aproveitado não só o trilho como também o carro que desliza sobre ele já que o

ajuste mecânico entre as partes era extremamente satisfatório.

Figura 34 - Parte do equipamento de Análises Clínicas reaproveitado

Page 69: Pendulo invertido com lógica Fuzzy

68

O carro montado sobre este trilho possui engraxadeiras que facilitam na sua

manutenção. O atrito entre as partes do conjunto é mínimo, o que torna a demanda

de potencia do motor menor.

O equipamento foi desmontado atentando-se para que fosse mantida a

integridade dos componentes a serem utilizados. A figura 35 mostra os carros

independentes previamente montados sobre o trilho do equipamento.

Figura 35 - Trilho com carros independentes

Como suporte ao trilho, foi adicionado um perfil de alumínio que é de mesmo

comprimento, com isto, caso houvesse necessidade de qualquer adaptação de

suporte ou itens a serem adicionados, não seria necessário retrabalhar o trilho

principal.

Figura 36 - Detalhe do trilho montado sobre perfil de alumínio

Page 70: Pendulo invertido com lógica Fuzzy

69

A partir do desenvolvimento e montagem da estrutura foram feitas

observações com base na planta menor para determinar qual seria a melhor

maneira de fazer o deslocamento do transportador (carro) do pendulo. Ainda

aproveitando o equipamento que estava sendo reaproveitado, surgiu a ideia de

utilizar patim e trilho. Com esta parte já determinada optamos por fazer a

movimentação do carro através do patim e trilho por correia sincronizada.

Figura 37 - Detalhe da base do carro com correia dentada

Foram desenvolvidos os desenhos mecânicos e a partir dos mesmos foi

inicializada a construção física da Planta. Após a primeira versão da montagem da

Planta com a utilização da transmissão por correias, foi constatado que o torque do

motor estava sendo muito exigido, por causa das perdas ocasionadas por tal

transmissão. Essa exigência de torque aumentou consideravelmente a corrente

solicitada pelo motor.

Após verificarmos que devido ao torque exigido do motor precisaríamos

investir em um motor mais potente ou uma fonte de maior capacidade, decidimos

fazer o teste com a transmissão por coroa e cremalheira, pois assim não

precisaríamos modificar tanto a Planta que estava montada. Foi feita a modificação

e o dispositivo assimilou muito bem a mudança. A transmissão ficou leve e não foi

exigido torque elevado para a movimentação do motor.

Page 71: Pendulo invertido com lógica Fuzzy

70

Figura 38 - Detalhe do carro montado com coroa e cremalheira

Após a execução desta montagem, e com os testes com motor já realizados,

verificamos que para valores de tensão altos, o deslocamento do motor e a baixa

resistencia apresentada pela cremalheira permitiam que houvessem colisões nas

extremidades do trilho. Sendo assim, onde a pricípio estava o motor e a polia que

conectava a correia dentada, foram implementados dois amortecedores hidráulicos

de final de curso para reduzir os impactos que os deslocamentos causavam.

Figura 39 - Detalhe do fim de curso e carro montado

A figura 40 mostra a montagem completa da planta. O carro maior foi usinado

em alumínio e montado sobre os carros que foram reaproveitados.

Page 72: Pendulo invertido com lógica Fuzzy

71

Figura 40 - Perspectiva da planta maior montada

Figura 41 - Detalhe do carro montado com o motor

Com o trilho e o carro montado, o próximo passo era então definir como seria

feito para adaptar a haste do pendulo no carrinho de deslocamento.

A haste do pendulo necessitaria de uma transmissão para se comunicar com

o potenciômetro. Como utilizamos um potenciômetro de precisão com 10 voltas

Page 73: Pendulo invertido com lógica Fuzzy

72

desenvolvemos uma redução do eixo da haste do pendulo para o eixo do

potenciômetro.

Figura 42 - Detalhe da redução para o potenciômetro

Foi projetado uma caixa de redução (Figura 42) com a relação de 1 para 3,

com uma engrenagem de 20 dentes para uma engrenagem de 60 dentes. Esta caixa

de redução foi constituída de placas de policarbonato para suas paredes, rolamentos

para suavizar os movimentos dos eixos, um eixo motor da haste e um eixo movido

do potenciômetro.

Após a montagem da caixa de redução atentamos a necessidade de

implementar um acoplamento elástico no potenciômetro, pois apesar dos eixos

estarem bem alinhados o potenciômetro tinha uma pequena variação de centro na

sua montagem original. Foi preciso dimensionar um suporte para fazer a integração

entre eixo movido, acoplamento e potenciômetro (Figura 43), após feito isto notou-se

que o mecanismo funcionou bem suave e ficou mais fácil de ajustá-lo.

Page 74: Pendulo invertido com lógica Fuzzy

73

Figura 43 - Detalhe da montagem do acoplamento do potenciômetro

No desenvolvimento do projeto mecânico a utilização de perfis de alumínio

contribuiu muito nas mudanças que a Planta sofreu, pois se a estrutura tivesse sido

usinada com materiais sólidos não pré-montáveis seria quase que impossível ter

avanços no desenvolvimento da Planta. Entre os materiais utilizado para confecção

deste protótipo podemos citar os mais signifcativos:

• Perfil de alumínio 40x80 e 40x40;

• Trilho THK SR20W;

• Patim THK SR20W;

• Amortecedor YSR 20-20 Festo;

• Engrenagem 20 dentes modulo 1;

• Engrenagem 60 dentes modulo 1;

• Potenciômetro de precisão;

• Esteira porta cabos Igus;

Page 75: Pendulo invertido com lógica Fuzzy

74

Os detalhes e características dos itens citados acima podem ser encontrados

nos anexos. É interessante tambem comparar as dimensões obtidas no protótipo

desenvolvido com o protótipo profissional da Quanser, o IP01, conforme tabela 2:

Tabela 2 - Comparativo entre a Planta e o equipamento Quanser IP01.

5.4 Projeto Elétrico

No projeto optou-se por utilizar um motor DC em vez de um de motor de

passo que requer certo grau de complexidade para ser operado e tem um baixo

desempenho em altas velocidades. Já o motor DC, além da precisão no

posicionamento, tem um controle bem desenvolvido de torque e velocidade,

fundamentais para o controle do pendulo.

Nos primeiros testes utilizamos motores de baixo torque e pouca rotação e

observamos que para realizar o controle do pendulo, não bastaria ser um motor DC

qualquer. Seria necessário que tivesse uma rotação alta e um torque grande para

movimentar o carrinho.

Características Dimensões

Unidade IPO1 Protótipo Maior

Comprimento total do percurso 1.02 1.0 M

Trajeto do Carro 0.814 0.92 M

Relação das engrenagens 3.71 3.0 -

Massa do Pendulo 0.23 0.221 Kg

Massa média do Pendulo 0.127 0.1105 Kg

Comprimento total do pendulo 0.6413 0.275 M

Comprimento médio do Pendulo 0.3365 0.1375 M

Page 76: Pendulo invertido com lógica Fuzzy

75

Sendo assim selecionamos o motor HC785LP-012 da Johnson Electric, com

uma rotação nominal de 18310 rpm.

Figura 44 - Motor Jhonston Eletric HC785LP-012

Este motor possui as seguintes especifições:

Dimensões: Ø 42,3 X 67,0 mm

Diâmetro do eixo: Ø 5,005 mm

Tensão de entrada: 18,0 V DC

Velocidade sem carga: 20950 rpm

Corrente sem carga: 2,90 A

Máx corrente: 138,64 A

Potência máxima: 644,74 W

Eficiência máxima: 78%

Velocidade com eficiência máxima: 18.300 rpm

Vida (estimada): 18 horas

Peso: 380 g

Com estas características é possível obter um bom desempenho no

deslocamento do carro.

Page 77: Pendulo invertido com lógica Fuzzy

76

Para alcançar um bom desempenho, o motor necessita de uma alimentação

considerável com uma tensão de 12V, utilizando uma corrente de 22A no arranque.

Vendo esta necessidade foi utilizada uma fonte DC industrial estabilizada com

entrada: 110-230V AC 50/60Hz e saída: 12V DC 25A, suficientes para alimentar o

motor.

Figura 45 - Fonte industrial DC

Para construção do driver de acionamento do motor DC foi confeccionado um

circuito utilizando transistores de efeito de campo (FET de código IRF3205).

O limite de corrente deste semicondutor é 110A, mas como pode ser

observado no datasheet, o encapsulamento limita a corrente máxima em 75A.

Figura 46 - Relação entre Corrente máxima e Temperatura do IRF3205

Fonte: Datasheet IRF3205

Page 78: Pendulo invertido com lógica Fuzzy

77

Para uma ponte-h com transistores FET, são necessários transistores canal P

e canal N, como no exemplo da ponte bipolar onde usamos transistores PNP e NPN

complementares conforme datasheet do TIP31. Como transistor complementar foi

utilizado um transistor FET canal N devido ao baixo custo e a grande disposição no

mercado. Foi projetada uma ponte H conforme o circuito da imagem 47.

Figura 47 - Diagrama de Hardware da ponte H

Ao analisar o circuito em funcionamento, foi possível notar duas coisas: O

motor não recebe 12 Volts e sim 7,9 Volts aproximadamente, fazendo com que ele

não atinja sua velocidade máxima.

O outro detalhe é que o transistor FET Q1 superaquece e queima. Através de

consultas do datasheet foi verificado que a tensão Gate-Source não estava dentro

da range de trabalho do FET. E a razão do funcionamento inadequado é que o

transistor FET é um dispositivo controlado por tensão (transcondutância). A tensão

no pino G (gate) controla a corrente na saída (corrente dreno-fonte ou drain-source).

Page 79: Pendulo invertido com lógica Fuzzy

A tensão no gate tem que ser maior que a tensão de gatilho

Volts na maioria dos FETs canal N. Essa tensão deve ser medida entre o pino G

(gate) e o pino Source (S) do transistor. Para que o transistor "ligue" a tensão entre o

Gate e o Source deve ser de 2 a 4 Volts maior que a tensão no pino D

conectar o dreno do transistor Q1 direto nos 12V não conseguimos que a tensão no

gate ficasse mais de 4V acima desta tensão pois esta é a tensão de alimentação,

portanto a maior tensão no circuito é 12 Volts. Ao acionar o transistor Q1 para ligar,

o pino S (source) do transistor ficará com a tensão muito parecida com a tensão de

alimentação, e, portanto a condição de gatilho (4V acima da tensão D

Volts) nunca poderá ser atingida.

Como a tensão de gatilho não é atingida, o transistor entra

condução chamado "zona linear" onde a corrente chaveada é proporcional à tensão

no pino G (gate) antes do gatilho, o transistor funciona como um resistor dissipando

potência em forma de calor. Com os transistores Q2 e Q4 não tivemos proble

pois o seu pino Source está conectado no 0 Volts, portanto a tensão Gate

sempre vai ser maior que zero. Para resolver o problema, é necessário aplicar 12 +

4 Volts no pino G de Q1 ou Q3.

Como citado anteriormente, os transistores FET são contro

as correntes necessárias para o controle são muito baixas. Para solucionar o

problema foi utilizado o circuito dobrador de tensão.

Figura 48

A tensão no gate tem que ser maior que a tensão de gatilho (Vg

Volts na maioria dos FETs canal N. Essa tensão deve ser medida entre o pino G

(gate) e o pino Source (S) do transistor. Para que o transistor "ligue" a tensão entre o

Gate e o Source deve ser de 2 a 4 Volts maior que a tensão no pino D

conectar o dreno do transistor Q1 direto nos 12V não conseguimos que a tensão no

gate ficasse mais de 4V acima desta tensão pois esta é a tensão de alimentação,

portanto a maior tensão no circuito é 12 Volts. Ao acionar o transistor Q1 para ligar,

o pino S (source) do transistor ficará com a tensão muito parecida com a tensão de

alimentação, e, portanto a condição de gatilho (4V acima da tensão D

Volts) nunca poderá ser atingida.

Como a tensão de gatilho não é atingida, o transistor entra

condução chamado "zona linear" onde a corrente chaveada é proporcional à tensão

no pino G (gate) antes do gatilho, o transistor funciona como um resistor dissipando

potência em forma de calor. Com os transistores Q2 e Q4 não tivemos proble

pois o seu pino Source está conectado no 0 Volts, portanto a tensão Gate

sempre vai ser maior que zero. Para resolver o problema, é necessário aplicar 12 +

4 Volts no pino G de Q1 ou Q3.

Como citado anteriormente, os transistores FET são contro

as correntes necessárias para o controle são muito baixas. Para solucionar o

problema foi utilizado o circuito dobrador de tensão.

48 - Diagrama do circuito dobrador de tensão

78

Vgs) que é entre 2 e 4

Volts na maioria dos FETs canal N. Essa tensão deve ser medida entre o pino G

(gate) e o pino Source (S) do transistor. Para que o transistor "ligue" a tensão entre o

Gate e o Source deve ser de 2 a 4 Volts maior que a tensão no pino Drain. Ao

conectar o dreno do transistor Q1 direto nos 12V não conseguimos que a tensão no

gate ficasse mais de 4V acima desta tensão pois esta é a tensão de alimentação,

portanto a maior tensão no circuito é 12 Volts. Ao acionar o transistor Q1 para ligar,

o pino S (source) do transistor ficará com a tensão muito parecida com a tensão de

alimentação, e, portanto a condição de gatilho (4V acima da tensão Drain ou 16

Como a tensão de gatilho não é atingida, o transistor entra em um estado de

condução chamado "zona linear" onde a corrente chaveada é proporcional à tensão

no pino G (gate) antes do gatilho, o transistor funciona como um resistor dissipando

potência em forma de calor. Com os transistores Q2 e Q4 não tivemos problemas,

pois o seu pino Source está conectado no 0 Volts, portanto a tensão Gate-Source

sempre vai ser maior que zero. Para resolver o problema, é necessário aplicar 12 +

Como citado anteriormente, os transistores FET são controlados por tensão e

as correntes necessárias para o controle são muito baixas. Para solucionar o

Diagrama do circuito dobrador de tensão

Page 80: Pendulo invertido com lógica Fuzzy

Esse circuito utiliza um o

de capacitores e diodos dobrando a tensão de alimentação. Depois de construir o

circuito dobrador de tensão, foram adicionados os transistores com função de

chaveamento e transistores bipolares para contro

FETs.

Figura 49

5.4.1 Hardware: Arduino Mega 2560

Neste projeto foi utilizado o microcontrolador Arduino Mega 2560, que surgiu

na italia em 2005, criado pelo professor Massimo Banzi que tinha o intuito de ensinar

Esse circuito utiliza um oscilador baseado no CI 555 que chaveia um conjunto

de capacitores e diodos dobrando a tensão de alimentação. Depois de construir o

circuito dobrador de tensão, foram adicionados os transistores com função de

chaveamento e transistores bipolares para controlar as tensões de acionamento dos

49 - Diagrama de hardware do driver completo

5.4.1 Hardware: Arduino Mega 2560

Neste projeto foi utilizado o microcontrolador Arduino Mega 2560, que surgiu

na italia em 2005, criado pelo professor Massimo Banzi que tinha o intuito de ensinar

79

scilador baseado no CI 555 que chaveia um conjunto

de capacitores e diodos dobrando a tensão de alimentação. Depois de construir o

circuito dobrador de tensão, foram adicionados os transistores com função de

lar as tensões de acionamento dos

Diagrama de hardware do driver completo

Neste projeto foi utilizado o microcontrolador Arduino Mega 2560, que surgiu

na italia em 2005, criado pelo professor Massimo Banzi que tinha o intuito de ensinar

Page 81: Pendulo invertido com lógica Fuzzy

80

eletrônica e programação de computadores para seus alunos de design que não

tinham conhecimentos nestas áreas. Neste contesto o professor criou uma placa

poderosa, de simples utilização e barata.

O Arduino utiliza uma variação da linguagem de programação C/C++, sendo

esta de mais simples compreensão para usuários pouco familiarizados com

programação, porém não limitando sua capacidade comparada com variações mais

complexas desta linguagem.

O Arduino é constituido por uma placa de controle com diversas entradas e

saída de dados, botão de reset, regulador de tenção de 5v, plugue de alimentação,

porta USB (que pode fornecer também a alimentação da placa), pinos conectores

(entradas e saídas), led indicativos e um cristal oscilador de 16MHz.

Figura 50 - Arduino Mega 2560

Sua alimentação pode variar de 7V a 12V (graças ao seu regulador de

tenção) e sua comunicação com o computadores e outros componentes pode ser

realizada por porta USB, Bluetooth, wireless entre outros.

O Arduino Mega 2560 utilizado no projeto é baseado no micro controlador

Atmega2560, possui 54 portas entrada/saída digitais, 16 portas de entrada analógica

e 4 portas seriais de hardware. Esta placa também é compativel com a maioria dos

Shields feitos para o arduino.

Na tabela 3 é possível verificar as características básicas do Arduino,

Page 82: Pendulo invertido com lógica Fuzzy

81

Tabela 3 - Características básicas do Arduino Mega 2560

5.4.2 Ambiente de desenvolvimento

O ambiente de desenvolvimento do arduino é simples, possui um editor de

texto onde é escrito o código, com uma barra de ferramentas com diversas funções,

como por exemplo, dar acesso às bibliotecas, fazer upload de programas para a

placa, verificar o código entre outros.

O software ainda possui uma barra de mensagens que apresenta o retorno

das ações e mensagens de erro, que podem aparecer no programa, e de outras

informações. Os programas escritos nesta plataforma são chamados de sketches e

Micro controlador ATmega2560

Tensão de operação 5V

Tensão de entrada (recomendada) 7-12V

Tensão de entrada (limites) 6-20V

Pinos (I/O) digitais 54 (14 podem ser saídas PWM)

Pinos de entradas analógicas 16

Corrente DC por pino I/O 40mA

Memória Flash 256KB (8KB para o bootloader)

SRAM 8KB

EEPROM 4KB

Velocidade de Clock 16MHz

Page 83: Pendulo invertido com lógica Fuzzy

82

são salvas com a extensão “.ino”. Este editor ainda possui a função de monitor

serial o que mostra a resposta física da placa em tempo real.

Os principais botões de comando estam localizados acima do campo de

escrita do codigo e são:

Verify: verifica se o programa escrito contem erros;

Upload: compila e faz a transferência do código para a placa;

New: cria um novo sketch;

Open: apresenta as sketches criadas para serem abertas;

Save: salva a sketch;

Serial Monitor: abre o monitoramento serial.

Figura 51 - Interface de programação do Arduino

Page 84: Pendulo invertido com lógica Fuzzy

83

5.4.3 Linguagem de programação

Como já dito anteriormente a linguagem de programação do arduino é

baseada nas linguagens C e C++, utiliza os conceitos básicos destas linguagens

como, por exemplo, a declaração de variáveis, a estrutura, a manipulação de vetores

etc. São utilizadas dois tipos de funções principais: Setup() e Loop().

A função Setup() é utilizada basicamente para configuração do arduino e

manipulação das bibliotecas. Pode-se também declarar variáveis nesta função,

porém não é obrigatório que estas sejam declaradas nela. A função Setup() é

executada no programa durante a inicialização apenas uma vez.

A função Loop() serve para executar um código em looping permitindo ao

programa criado executar as operações dentro dela, pode ser considerada a função

principal do programa.

A linguagem utiliza a maioria dos comandos básicos de qualquer lógica de

programação (IF, ELSE, CASE...), porém possui alguns comandos específicos para

a interface com o arduino.

A razão da escolha do arduino como plataforma base para o desenvolvimento

do código para o controle da planta do pendulo invertido deve-se a vários motivos,

dentre eles esta principalmente o baixo custo deste tipo de placa o que vem de

encontro à proposta de nosso trabalho que é desenvolvê-lo com materiais de custo

reduzido.

A linguagem de programação que é utilizada no arduino é simples e dada à

complexidade do desenvolvimento do controle por lógica fuzzy, se mostrou a melhor

escolha uma vez que em nosso grupo de trabalho não possuímos nenhum

integrante com amplo conhecimento em programação e o tempo reduzido se mostra

insuficiente para o aprendizado de uma complexa linguagem de programação.

O microcontrolador do arduino já vem pré-configurado o que facilita seu

manuseio em detrimento a outros microcontroladores como o PIC , por exemplo, o

Page 85: Pendulo invertido com lógica Fuzzy

84

que possibilita uma maior agilidade nas alterações que são necessárias durante os

testes na planta.

O software do arduino é livre e compatível com a maioria dos sistemas

operacionais como o, por exemplo, o Windows 7 64bits, em nossos trabalhos

anteriores e preparatórios ao TCC o grupo encontrou dificuldades de comunicação

entre alguns modelos de PIC e esta plataforma.

Outra facilidade é que no próprio website do arduino encontramos um vasto

material para a utilização do deste, além disso, por todas as facilidades

apresentadas, muitos estudantes e profissionais utilizam este microcontrolador, o

que invariavelmente forma uma ampla comunidade na internet onde se podem trocar

experiências e informações.

O arduino se comunica de forma ideal ao matlab, por meio de uma biblioteca

deste último, o que facilita a aquisição de dados para a coleta de informações para o

TCC.

5.5 Lógica de Controle

Para modelar o controlador fuzzy foi utilizada a Tollbox de lógica Fuzzy

disponível no MatLab (Fuzzy Logic Toollbox). Inicialmente foram definidas duas

variáveis de entrada (ângulo da haste e velocidade angular da mesma) e uma saída

(tensão aplicada ao motor) para realizar testes, afim de levantar os parametros do

sistema e observar o comportamento do mesmo.

Os valores dos limites das variáveis de entrada e saída são mostrados na

tabela 4.

Page 86: Pendulo invertido com lógica Fuzzy

85

Tabela 4 - Parâmetros das Variáveis de Entrada e Saída.

Os valores dos limites foram definidos de forma empírica por Dietrich (2008)

através de simulações e conhecimento de fenômenos físicos. Para o nosso estudo,

no entanto, o valor dos limites da saída diferem devido as especificações do motor

utilizado serem diferentes.

O ângulo da haste foi tido como aceito em -45º e 45º, que convertidos em

radianos resultam em -0.8 e 0.8 rad. A velocidade admitida após as simulações

variam entre -2 rad/s e 2 rad/s.

Foram definidas 7 funções de pertinência para cada variável sendo 5

triangulares e 2 trapezoidais, visando abranger todas as possíveis variações do

sistema. Segundo Simões e Shaw (2007), a precisão do controlador aumenta

conforme o número de funções de pertinencia porem, atraves de experiencias

realizadas, não há aumento significativo na precisão para valores maiores do que 7.

Afim de facilitar a montagem das funções de pertinencia no software foi criado um

quadro com as regras, conforme segue abaixo

Tabela 5 - Base de regras do sistema para duas variáveis

Variáveis Descrição das Variáveis Limites

Entradas Angulo da Haste (rad) [-0.8 0.8]

Velocidade Angular (rad/s) [-2 2]

Saída Tensão aplicada ao Motor (V) [-12 12]

ω\θ NG NM NB Z PB PM PG NG PG PG PM PG NB NB NB NM PG PM PM PM NB NB NM NB PM PM PM PB NM NM NG Z PG PM PB Z NB NB NG PB PG PM PM NB NM NM NM PM PM PB PB NM NM NM NG PG PB PB PB NG NM NM NG

Page 87: Pendulo invertido com lógica Fuzzy

86

Inserindo os valores limites para o ângulo da haste temos:

Figura 52 - Função de pertinência da entrada Ângulo da Haste

Inserindo os valores limites para a velocidade angular temos:

Figura 53 - Função de pertinência da entrada Velocidade Angular

Page 88: Pendulo invertido com lógica Fuzzy

87

Inserindo os valores de saída de tensão temos:

Figura 54 - Função de pertinência da variável Tensão do Motor

Inserindo as regras quantitativas temos:

Figura 55 - Inserção da base de regras no sistema Mandami

Page 89: Pendulo invertido com lógica Fuzzy

88

Na tabela de inferência é descrita a ação do controlador para as possíveis

situações nas quais o modelo pode se encontrar. São estimativas que foram

encontradas interpolando os valores de posição angular e velocidade angular. O

intervalo de saída de tensão foi dividido em 7 regiões: Tensão Positiva Grande

(TPG), Tensão Positiva Média (TPM), Tensão Positiva Baixa (TPB), Tensão Zero

(TZ), Tensão Negativa Baixa (TPB), Tensão Negativa Média (TPM) e Tensão

Negativa Baixa (TPM).

Sendo assim gerada a curva mostrada abaixo:

Figura 56 - Surface

Após a inserção dos valores nas funções de pertinência, criação da base de

regras e inserção da base de regras no controlador podemos verificar como ele

responde a cada tipo de entrada e combinações de entradas através da ferramenta

Page 90: Pendulo invertido com lógica Fuzzy

89

Rule Viewer. Pode-se variar apenas uma das entradas e verificar a saída, a fim de

perceber e analisar a coerência da base de regras.

Figura 57 - Rule Viewer

Page 91: Pendulo invertido com lógica Fuzzy

90

6 TESTES E RESULTADOS

Os testes realizados e resultados obtidos têm por finalidade avaliar o

desempenho de um controlador fuzzy embarcado em um microcontrolador ao

problema complexo do pendulo invertido.

6.1 Testes com o protótipo

Foram feitos testes com o protótipo desenvolvido através do microcontrolador.

Os testes consistiram de um acionamento básico, que faz com que o carro da

impressora corra alternadamente para a esquerda e direita.

Com isto foi possível identificar uma tendência do carro de correr para a

esquerda, sendo assim necessários ajustes na frequência do PWM quando este

inverte a rotação do motor.

Este deslocamento progressivo do carro para a esquerda só foi observado

após alguns minutos do movimento ininterrupto, de outra forma não seria possível

identificar a falha já que por hora a velocidade do motor esta elevada, tanto para

testes da parte mecânica, quanto de acionamento por parte do driver.

Para os testes preliminares da aplicação da lógica Fuzzy para o controle do

pendulo invertido foi utilizado protótipo onde foi instalado na base da haste móvel um

potenciômetro padrão de 1k ohm para gerar os parâmetros de posição angular da

mesma. Este potenciômetro foi ligado a uma tensão de 5v e o terminal central foi

ligado a entrada analógica da placa do Arduino, logo o deslocamento da haste no

sentido angular gera um determinado sinal elétrico, de 0v a 5v, que é interpretado

pela entrada analógica do Arduino e convertido em um número com resolução de 10

Page 92: Pendulo invertido com lógica Fuzzy

91

bits tento então para efeito de cálculo dentro da programação do Arduino uma

resolução que varia de 0 a 1024 sendo 0v igual 0 e 5v igual a 1024.

O dado lido na entrada analógica é convertido e armazenado em uma variável

dentro do programa escrito no Arduino, esta variável é a entrada do Fuzzy, neste

estágio do trabalho optamos em trabalhar com apenas uma entrada e uma saída

para testar o funcionamento da biblioteca Fuzzy, que foi instalada no Arduino, esta

biblioteca (efll) foi criada por Msc. Marvin Lemos da Universidade Estadual do Piauí

(UESPI) e disponibilizada para download.

Tendo como base a resolução e as limitações mecânicas do potenciômetro

foram definidas as pertinências de entrada, uma vez que o potenciômetro tem o giro

limitado em 280º, definimos como ponto de equilíbrio o valor de 2,5v de tensão ou

512, limitamos também a queda do pendulo em 45º para esquerda ou para a direita,

sendo assim as pertinências de entrada ficaram limitadas a valores de 320 a 720.

Com base na entrada o Fuzzy gera uma saída que será responsável pelo

acionamento do motor que move o carro onde a haste esta instalada, para o

acionamento deste motor foram utilizadas as saídas PWM da placa do Arduino,

desta forma foi possível aplicar diretamente um sinal de controle no drive do motor,

as saídas de PWM do Arduino são de resolução de 8 bits sendo assim podemos

variar a saída de 0 a 255, sendo 0 igual a 0v e 255 igual a 5v. Para o correto

funcionamento da alimentação do motor foram utilizadas duas saídas PWM uma que

manda o sinal de controle para o motor girar no sentido horário e outra no sentido

anti-horário, o programa seleciona a porta de saída PWM (neste projeto utilizamos

as saídas 9 e 10) de acordo com o valor lido na entrada do potenciômetro, uma vez

que este esta definido para um valor de equilíbrio de 512 (haste a 90º em relação a

mesa), se os valores forem menores que 512 significa que o pendulo esta caindo

para a esquerda e a saída PWM responsável pelo giro anti-horário do motor é

acionada fazendo o carro se movimentar para tentar equilibrar o pendulo, se os

valores forem maiores do que 512 a saída acionada é a responsável pelo giro

horário, quem determina a velocidade do giro é o algoritmo do Fuzzy, de acordo com

a entrada que é lida pelo potenciômetro, por exemplo, se o pendulo estiver mais

próximo ao centro de equilíbrio a correção da velocidade será menor se estiver

muito afastado do ponto de equilíbrio a velocidade será maior.

Page 93: Pendulo invertido com lógica Fuzzy

92

Para conseguirmos este tipo de controle os valores de entrada foram

classificados em cinco pertinências: EsqG (caindo para esquerda grande), EsqP

(caindo para esquerda pequeno), Ctr (Centro), DirP (caindo para a direita pequeno)

e DirG (caindo para a direita grande).

Também foram criadas pertinências de saída, que determina o valor a ser

aplicado ao PWM variando de 180 a 255: Baixa (velocidade baixa), Media

(velocidade media) e Alta (velocidade alta).

Figura 58 - Pertinências para entrada posição 5 regras

Page 94: Pendulo invertido com lógica Fuzzy

93

Figura 59 - Pertinências para saída velocidade 5 regras

Com as pertinências de entrada e saída do Fuzzy criadas foram estabelecidas 5

regras para o controle da velocidade:

1) Se a posição for EsqG a velocidade será Alta;

2) Se a posição for EsqP a velocidade será Media;

3) Se a posição for CTR a velocidade será Baixa;

4) Se a posição for DirP a velocidade será Media;

5) Se a posição for DirG a velocidade será Alta;

Desta forma o Fuzzy consegue calcular um sinal de saída para cada entrada

apresentada, este sinal de saída é guardado em uma variável e aplicado ao PWM.

De forma resumida o ciclo de operação do controle é: se aplica uma

perturbação na haste do pendulo, o potenciômetro lê a posição atual, este valor é

guardado em uma variável de entrada, esta variável é fuzzyficada, é calculada sua

pertinência pelo Fuzzy, esta pertinência cai em uma das regras, é calculado o valor

de saída, o valor é defuzzyficado, o valor é guardado em uma variável de saída, o

programa usa a variável de entrada para decidir em qual saída PWM (horário ou

Page 95: Pendulo invertido com lógica Fuzzy

94

anti-horário) a saída será aplicada, a saída defuzzyficada é aplicada a saída PWM

escolhida, isto cria uma nova perturbação no sistema proporcional e contraria a

perturbação original criando um novo valor de entrada e o ciclo se reinicia.

Os testes preliminares se mostraram satisfatórios, no que se diz respeito ao

funcionamento da lógica Fuzzy e da biblioteca instalada no Arduino, porém neste

primeiro momento não se avançou muito na questão do equilíbrio do pendulo

propriamente dito, devido principalmente as próprias limitações do protótipo e ao fato

de estarmos trabalhando com uma só entrada e poucas pertinências de entrada e

saída.

6.2 Testes com a planta

Para a continuação dos testes foi utilizada a planta, pois esta possui uma

mecânica mais precisa, um motor com torque maior e um potenciômetro de precisão

de 10 voltas e 5k ohm instalado a haste com uma redução de 3 para 1, o que

possibilita a queda do pendulo sem a quebra do potenciômetro.

Em um primeiro momento foram utilizadas as mesmas entradas, saídas e

regras Fuzzy utilizadas no controle do protótipo, porém foram realizados ajustes nos

parâmetros uma vez que se mudou o potenciômetro de leitura da entrada. Com os

valores de queda da haste limitados a 45º para a esquerda ou para a direita a partir

do centro, os valores das pertinências ficaram na faixa de 480 a 544. Outra mudança

foi na distribuição dos valores dentro das pertinências de saída uma vez que

começamos a trabalhar com um motor de maior torque.

Já em um primeiro momento os resultados de controle do pendulo foram

melhores do que na planta menor, porém ainda longe do equilíbrio.

Page 96: Pendulo invertido com lógica Fuzzy

95

A próxima etapa foi adicionar novas pertinências a entrada e a saída, dentro

das faixas estabelecidas (de 480 a 540 na entrada e de 100 a 255 na saída) foram

elas:

Entrada posição angular: EsqG (caindo para esquerda grande), EsqMG

(caindo para esquerda médio grande), EsqP (caindo para esquerda pequeno),

EsqMP (caindo para a esquerda médio pequeno), Ctr (Centro), DirMP (caindo para a

direita médio pequeno), DirP (caindo para a direita pequeno), DirMG (caindo para a

direita médio grande) e DirG (caindo para a direita grande);

Saída velocidade do motor: Baixa (velocidade baixa), Mbaixa (velocidade

media baixa), Media (velocidade media), Malta (velocidade media alta) e Alta

(velocidade alta).

Figura 60 - Pertinências para entrada posição 9 regras

Page 97: Pendulo invertido com lógica Fuzzy

96

Figura 61 - Pertinências para saída velocidade 9 regras

Com a entrada das novas pertinências as regras aumentaram em número e

também foram modificadas:

1. Se a posição for EsqG a velocidade será Alta;

2. Se a posição for EsqMG a velocidade será Malta;

3. Se a posição for EsqP a velocidade será Media;

4. Se a posição for EsqMP a velocidade será Mbaixa;

5. Se a posição for CTR a velocidade será Baixa;

6. Se a posição for DirMP a velocidade será Mbaixa;

7. Se a posição for DirP a velocidade será Media;

8. Se a posição for DirMG a velocidade será Malta;

9. Se a posição for DirG a velocidade será Alta;

Somente esta alteração melhorou muito o controle o que resultou em uma

resposta muito perto do equilíbrio do pendulo. Neste estagio do trabalho

adicionamos ao projeto um sensor de posição ultrassônico que por meio de regras

dentro da programação seria utilizado para mandar o carro onde o pendulo fica

fixado para o centro uma vez que o potenciômetro atingisse a posição de equilíbrio,

Page 98: Pendulo invertido com lógica Fuzzy

97

o que acontecia em tempo real toda vez que o pendulo ficava a 90º com relação a

mesa mesmo ainda não estando em estado estático.

A inserção do sensor de posição ultrassônico causou dois problemas: o

superaquecimento do motor e um atraso intermitente no ciclo do programa, por

conta disto foi retirado do circuito para a continuidade dos testes.

O próximo passo foi inserir mais uma entrada para o controle fuzzy, a

velocidade de queda da haste, para isso foi derivado dentro do programa o valor de

posição lido pelo potenciômetro, a variação desta posição dentro do ciclo do próprio

programa apresentou um valor de velocidade em números inteiros (lembrando que

derivamos o valor de posição já convertido pelo arduino) que varia de 0 a 10, sendo

0 a velocidade mínima e 10 a velocidade máxima.

Com a inserção uma nova entrada no fuzzy foram criadas pertinências para a

mesma, obedecendo os valores de velocidade máxima e mínima observados, são

elas: Vbaixa (velocidade de queda baixa), Vmedia (velocidade de queda media) e

Valta (velocidade de queda alta).

Foram modificadas também as pertinências da entrada de posição angular:

EsqG (caindo para esquerda grande),EsqM (caindo para esquerda médio), EsqP

(caindo para esquerda pequeno), Ctr (Centro), DirP (caindo para a direita pequeno),

DirM(caindo para a direita médio) e DirG(caindo para a direita grande). As

pertinências de saída continuaram as mesmas.

Page 99: Pendulo invertido com lógica Fuzzy

98

Figura 62 - Pertinências para entrada posição 21 regras

Figura 63 - Pertinências para entrada velocidade haste 21 regras

Page 100: Pendulo invertido com lógica Fuzzy

99

Figura 64 - Pertinências para saída velocidade motor 21 regras

Com a inserção destas pertinências foram criadas 21 novas regras levando-se em

conta as duas entradas e a saída para o PWM do motor:

Tabela 6 - Controle de 21 regras

Esta alteração resultou em uma melhora considerável no controle, com o

pendulo chegando ao controle para perturbações grandes, porém na área central de

equilíbrio o pendulo ainda não apresentava uma condição estável, pois tendia a cair

para um dos lados, era necessário trabalhar com mais posições e mais faixas de

Velocidade Vbaixa Vmedia Valta Posição EsqG alta Alta Alta EsqM media media Malta EsqP mbaixa mbaixa Media Ctr baixa baixa Mbaixa

DirP mbaixa mbaixa Media DirM media media Malta DirG alta Alta Alta

Page 101: Pendulo invertido com lógica Fuzzy

100

velocidade, foram adicionadas então novas pertinências na entrada de posição, na

entrada de velocidade e uma nova pertinência de saída. Na entrada de posição

foram adicionadas as pertinências: EsqMP (caindo para esquerda médio pequeno) e

DirMP (caindo para direita médio pequeno). Na entrada de velocidade foram

adicionadas as pertinências: vmtbaixa (velocidade muito baixa), Vmbaixa

(velocidade média baixa), Vmalta (velocidade media alta). Na saída foi adicionada a

pertinência: mtbaixa (muito baixa).

Figura 65 - Pertinências para entrada posição 54 regras

Page 102: Pendulo invertido com lógica Fuzzy

101

Figura 66 - Pertinências para entrada velocidade haste 54 regras

Figura 67 - Pertinências para saída velocidade motor 54 regras

Page 103: Pendulo invertido com lógica Fuzzy

102

Com as novas pertinências foi construída uma nova base com 54 regras:

Tabela 7 - Controle 54 regras

Com esta alteração o pendulo chegou ao equilíbrio, apresentando uma boa

performance e uma rápida resposta a perturbações.

É importante ressaltar que nesta nova configuração a entrada de posição

ficou com nove pertinências, segundo Simões & Shaw (2007) é aconselhável usar

no máximo sete pertinências, porém em nosso caso conseguimos um melhor

resultado com um número maior que o recomendado, isto pode ser explicado devido

a trabalharmos com duas saídas PWM, sendo que cada metade controla a resposta

para um dos lados, esquerda ou direita, portanto se dividirmos a entrada de posição

ao meio teremos quatro pertinências e meia para cada lado.

Neste ponto do projeto iniciamos os testes aquisição de dados e simulações

no Simulink e no Matlab. Com ajuda destes softwares conseguimos diminuir o

número de pertinências de entrada e otimizar os conjuntos fuzzy. Foram utilizadas 5

pertinências na entrada de posição (EsqG, EsqP, Ctr, DirP e DirG), 3 pertinências na

entrada de velocidade (baixa, media e alta) e 4 saídas de velocidade para o motor

(vmtbaixa, baixa, media e alta).

Velocidade Vmtbaixa Vbaixa Vmbaixa Vmedia Vmalta Valta Posição EsqG malta alta Alta alta alta alta EsqM media malta Malta alta alta alta EsqP mbaixa media Media malta malta alta

EsqMP baixa baixa Mbaixa mbaixa media media Ctr mtbaixa mtbaixa Mtbaixa mtbaixa mtbaixa mtbaixa

DirMP baixa baixa Mbaixa mbaixa media media DirP mbaixa media Media malta malta alta DirM media malta Malta alta alta alta DirG malta alta Alta alta alta alta

Page 104: Pendulo invertido com lógica Fuzzy

103

Figura 68 - Pertinências para entrada posição 15 regras

Figura 69 - Pertinências para entrada velocidade haste 15 regras

Page 105: Pendulo invertido com lógica Fuzzy

104

Figura 70 - Pertinências para saída velocidade haste 15 regras

A nova base totalizou 15 regras:

Tabela 8 - Controle 15 regras

Com esta configuração o pendulo demonstrou um comportamento ainda

melhor diminuindo o tempo de estabilização da haste. Vale ressaltar que os valores

utilizados na simulação tiveram que ser adaptados aos valores reais da planta por

este motivo o range, grandezas e faixas de trabalho são diferentes.

Velocidade Vbaixa Vmedia Valta Posição EsqG media alta Alta EsqP baixa media Alta Ctr mtbaixa baixa Media

DirP baixa media Alta DirG media alta Alta

Page 106: Pendulo invertido com lógica Fuzzy

105

6.3 Aquisição de dados

Com o objetivo de observar o comportamento do controlador e as variações

decorrentes das ações de controle, foi desenvolvida uma comunicação entre a

planta e o software Matlab.

Para aquisição de dados foi utilizada uma placa Arduino 2560 dedicada

apenas a esta finalidade. Existem diversos arquivos disponíveis na internet que

descrevem como utilizar o Arduino como placa de aquisição de dados. Entre estes

arquivos foi selecionado um que estava disponível no site Mathworks, o site possui

uma série de aplicações e exemplos de utilização. O pacote de bibliotecas foi

disponibilizado por Campa (2012), que inclui um arquivo a ser compilado no Arduino

e uma pasta de diretório a ser instalada no Matlab, este pacote, chamado Arduino

IO, pode ser baixado gratuitamente.

Os testes iniciais de aquisição de dados possibilitaram a observação de

interferências que não haviam sido detectadas. A figura abaixo mostra o primeiro

teste com oscilação livre da haste, é possível notar nos picos, pequenos

sobressinais e variações decorrentes da existência de ruídos.

Figura 71 - Oscilação livre do pendulo com carro livre

Page 107: Pendulo invertido com lógica Fuzzy

106

O movimento pendular foi finalizado após aproximadamente 750 ciclos de

aquisição, é possível observar que após este período foi registrada ainda uma

variação na leitura. Na imagem abaixo é demonstrada a oscilação pendular com o

carro preso.

Figura 72 - Oscilação livre do pendulo com carro preso

De forma semelhante ao movimento pendular com o carro livre, ocorreu

sobressinais e variações na leitura, porém, é possível observar que o tempo de

oscilação aumentou, finalizando em aproximadamente 850 ciclos de aquisição, isto

se deve ao fato de que não havendo amortecimento combinado com o carro a haste

leva mais tempo para amortecer seu movimento.

Com o objetivo de eliminar o ruído proveniente da leitura do potenciômetro, foi

adicionado um capacitor na entrada da porta analógica do Arduino, com isto os

sobressinais e variações de leitura foram reduzidos consideravelmente, como pode

ser observado nas figuras 73 e 74.

Page 108: Pendulo invertido com lógica Fuzzy

107

Figura 73 – Oscilação do pendulo com carro livre sem ruídos

Tendo reduzido o ruído na leitura dos sinais é possível perceber que a

oscilação da haste com o carro livre terminou após aproximadamente 790 ciclos de

aquisição. A oscilação da haste com o carro preso terminou após aproximadamente

860 ciclos de aquisição.

Figura 74 - Oscilação do pendulo com carro preso sem ruídos

Page 109: Pendulo invertido com lógica Fuzzy

108

Após ter realizado aquisições com auxílio do Matlab, foi criada uma estrutura

no Simulink para observação em tempo real do comportamento do controlador. O

Simulink possui em sua biblioteca um bloco denominado Fuzzy Logic Controller,

com este bloco é possível inserir um arquivo de dados fuzzy criado através da

interface do Matlab e simular o comportamento da estrutura fuzzy.

Para visualizar a aquisição de dados através do Simulink foi montada uma

estrutura com blocos já existentes no software, porém, para que o Simulink pudesse

se comunicar com o Arduino foi necessário inserir o pacote Arduino IO,

disponibilizado por Campa (2012), no Matlab. Este pacote inclui alguns blocos que o

Simulink não possui em sua configuração padrão, com eles é possível receber ou

enviar dados ao Arduino, podendo utiliza-lo apenas como placa de comunicação

com o hardware.

A estrutura montada no Simulink para obtenção de gráficos em tempo real

pode ser observada na figura abaixo:

Figura 75 - Estrutura para aquisição de dados em tempo real com Simulink

Page 110: Pendulo invertido com lógica Fuzzy

109

Após a configuração do sistema no Simulink, foi possível obter gráficos da

variação da leitura do potenciômetro e saída do bloco fuzzy em tempo real. Vale

salientar que a imagem demonstra a leitura do potenciômetro e a saída calculada do

fuzzy em tempo real, partindo de uma perturbação gerada manualmente apenas

para testes do desempenho da aquisição.

Figura 76 - Teste de aquisição de dados em tempo real com Simulink

6.4 Simulação de desempenho

Após concluída a estrutura de aquisição de dados com Simulink, foi elaborada

uma estrutura mais complexa, capaz de simular o comportamento do controlador em

frente a diferentes tipos de perturbações.

Page 111: Pendulo invertido com lógica Fuzzy

110

Para que fosse possível simular o comportamento do controlador, foi

necessário o levantamento da função de transferência da planta, levando em

consideração informações básicas a seu respeito, para que o resultado fosse o mais

próximo possível da realidade. Entre estas informações podemos citar a massa do

carro, massa do pendulo, distancia da ponta da haste ao seu centro de gravidade, o

momento de inércia da haste e o atrito do carro com o trilho, os valores podem ser

observados abaixo:

Característica Sigla Unidade Valor Massa do Carro M Kg 2,4282 Massa da Haste m Kg 0.221 Comprimento da Metade da Haste l m 0.275 Fricção do Carro b N.s/m 0.1 Momento de Inércia da Haste I Kg.m² 0.00000176 Gravidade g m/s² 9.8

Tabela 9 - Parâmetros da Planta para simulação

Com base nestes valores, a função de transferência foi obtida através do

Matlab, utilizando uma equação que considera a força necessária para movimentar o

carro e, por conseguinte o ângulo da haste. A equação para obtenção da função de

transferência foi demonstrada no trabalho de Vasconcelos (2012) onde foram

comparados os valores simulados de um controlador com PID e um controlador

baseado em fuzzy. A função de transferência pode ser observada abaixo na

equação (6.4).

& = ,hh

,³d ,Z²b, b,hh (6.4)

Utilizando esta função de transferência, foram feitas simulações com os

arquivos fuzzy através do Simulink, onde foi possível observar diferentes respostas

de acordo com as alterações feitas em qualquer dos componentes da estrutura

fuzzy.

Entre estas alterações foram testadas modificações na base de regras, porem

mantendo o numero e tamanho das funções de pertinência e também foram

testadas alterações na quantidade de dados de entrada.

Page 112: Pendulo invertido com lógica Fuzzy

111

A estrutura montada no software Simulink considerou 2 perturbações em

sentidos diferentes, com um espaço de tempo entre cada para que fosse possível

observar o amortecimento. A figura 77 mostra a estrutura do controlado com uma

base de 9 regras.

Figura 77 - Estrutura em Simulink para controlador com 9 regras

Simulando o comportamento do controlador foi possível obter o gráfico da

figura 78. É possível observar que a resposta às perturbações é satisfatória.

Figura 78 - Variação Angular da haste com 9 regras

Page 113: Pendulo invertido com lógica Fuzzy

112

A figura 79 mostra os sinais obtidos da saída do controlador fuzzy, é possível

observar que o sistema estabiliza de forma satisfatória.

Figura 79 - Resposta do controlador com base de 9 regras

Após as simulações do controlado com base de 9 regras foi alterado o bloco

fuzzy para um controlador com base de 25 regras. A estrutura pode ser observada

na figura 80.

Figura 80 - Estrutura em Simulink para controlador com 25 regras

Page 114: Pendulo invertido com lógica Fuzzy

113

Simulando o comportamento do controlador foi possível obter o gráfico da

figura 81. É possível observar que a resposta às perturbações já apresenta

diferenças com relação ao controlador de 9 regras porém também é satisfatória.

Figura 81 - Variação Angular da haste com 25 regras

Figura 82 - Resposta do controlador com base de 25 regras

Page 115: Pendulo invertido com lógica Fuzzy

114

A figura 82 mostra os sinais obtidos da saída do controlador fuzzy, também é

possível observar que o sistema se comportou de forma diferente ao apresentado

com 9 regras e estabiliza de forma satisfatória.

Ficou claro após as simulações que a alteração na quantidade de funções de

pertinência de entrada altera de forma significativa o comportamento do controlador,

com base nesta observação foi criada uma estrutura que possibilitasse a

visualização simultânea do comportamento dos controladores, esta estrutura pode

ser observada na figura 83.

Figura 83 - Estrutura para comparação entre controladores

Figura 84 - Gráfico comparativo entre base 9 regras e 25 regras

Page 116: Pendulo invertido com lógica Fuzzy

115

A figura 84 mostra os resultados da comparação entre os controladores com

diferentes números de funções de pertinência e regras. É possível observar que o

controlador com 9 regras apresentou um pico menor do que o controlador com 25

regras, o desvio angular da haste controlada com nove regras foi maior do que a

haste controlada por 25 regras. Com isto é possível concluir que aumentando o

numero de regras na base e a quantidade de funções de pertinência na entrada

obtém-se uma melhora significativa na resposta.

6.5 Discussões

A implementação de uma lógica de controle inteligente em um hardware de

baixo custo tem se mostrado viável em muitos casos, em outros porem, onde a

necessidade de processamento e monitoramento de sensores é maior, deve ser

avaliado, pois demandaria um alto processamento do microcontrolador, com

possibilidades de não atingir os objetivos por saturação de memória. Para o caso

específico da planta apresentada neste trabalho o microcontrolador embarcado na

placa Arduino Mega conseguiu suprir as necessidades mesmo com uma velocidade

limitada pelo cristal de 16MHz.

Durante os testes na planta foi notado que a quantidade de pertinências e

consequentemente de regras criadas no fuzzy influencia no controle, porém não

necessariamente um número maior de pertinências e regras deixará o controlador

mais preciso, pois a partir de um ponto acrescentar novas pertinências a uma

entrada se torna irrelevante ou até prejudica o controle. Por outro lado acrescentar

uma nova entrada ao conjunto fuzzy deixou o controle da planta mais preciso.

Outro ponto que chamou a atenção durante os testes foi os inúmeros

interferentes físicos e elétricos que alteram e até impossibilitam o controle como, por

exemplo, um ruído no potenciômetro que não permitia definir a posição de setpoint.

Page 117: Pendulo invertido com lógica Fuzzy

116

6.6 Custo do Projeto: Planilha de Custos

Conforme tabela 9 o custo do projeto do foi de R$12.024,18 porém, é

importante salientar que o custo elevado deu-se em razão da construção do

protótipo e da planta, uma vez que do montante geral foram gastos apenas R$90,00

com a placa microcontroladora o que vem de encontro com a proposta do trabalho

que é de controlar o pendulo com um microcontrolador de baixo custo.

Tabela 10 - Custos do Projeto

Custos do Projeto

Materiais Elétricos Controle

Componentes Diversos R$ 254,76 Microcontrolador R$ 90,00

Fonte R$ 170,00 Total controle R$ 90,00

Motores R$ 425,24

Total Elétrica R$ 850,00

Horas Trabalhadas

Materiais Mecânicos João Claudio R$ 3.236,00

Materia Prima R$ 500,00 Cesar R$ 1.730,91

Perfil R$ 200,00 Thiago R$ 1.236,36

Trilho R$ 250,00 David R$ 1.730,91

Patin R$ 200,00 Usinagem R$ 2.000,00

Total Mecânica R$ 1.150,00 Total Horas de trabalho R$ 9.934,18

Total Geral R$ 12.024,18

Page 118: Pendulo invertido com lógica Fuzzy

117

7 CONCLUSÃO

Este trabalho apresenta a compilação de uma extensa pesquisa realizada

para a viabilização da aplicação de lógica fuzzy embarcada em microcontrolador

para o controle de um sistema de pendulo invertido, bem como a construção de um

protótipo e de uma planta e os testes realizados para averiguar o controle.

Na primeira etapa do projeto foram definidos procedimentos, métodos e linha

de pesquisa o que nos proporcionou grande aprendizado com relação ao

desenvolvimento de um controlador, a aplicação de uma lógica estruturada em

linguagem adequada para microcontrolador e a criação de um protótipo capaz de

integrar os sensores, o controlador e os atuadores.

Em uma segunda etapa foi construída a planta final onde pode ser testado o

controle utilizando lógica fuzzy, o projeto físico e lógico ocorreu dentro da

normalidade e prazos estabelecidos, resaltando que a maioria dos componentes

mecânicos foram fabricados por membros da equipe assim como a montagem do

protótipo e da planta. A programação realizada no arduino apesar de apresentar

uma linguagem simples se mostrou complexa na construção das pertinências e

regras fuzzy, porém uma vez criada esta programação é de fácil manipulação.

É importante ressaltar também os avanços alcançados por meio de simulação

computacional que ajudou a definir os parâmetros para criação das pertinências

fuzzy além da própria aquisição de dados dos testes práticos.

A maioria das dificuldades encontradas durante os testes estão relacionadas

a interferentes físicos e elétricos da planta e sua correção pelo controlador.

Os resultados adquiridos mostraram que a proposta do trabalho foi atingida e

que este controlador pode ser aplicado ao pendulo invertido o que pode contribuir

para o desenvolvimento de diversos sistemas na área da robótica e automação.

Page 119: Pendulo invertido com lógica Fuzzy

118

7.1 Sugestões para Trabalhos Futuros

Para trabalhos futuros, seria válida a troca da transmissão dos cabos de

acionamento e controle do motor por um barramento elétrico para diminuir a

interferência mecânica que o cabeamento causa no deslocamento do motor.

Outro ponto de melhoria seria a substituição do potenciômetro de precisão

por um encoder incremental, melhorando a precisão e eliminando interferência de

ruídos elétricos.

A inclusão de um acelerômetro seria de grande valia, pois possibilitaria a

criação de mais uma entrada para o controlador o que possivelmente melhoraria o

controle.

Outra sugestão seria testar outras geometrias nas funções de pertinência

dentro do fuzzy o que também poderia resultar em um controle mais preciso.

Page 120: Pendulo invertido com lógica Fuzzy

119

Page 121: Pendulo invertido com lógica Fuzzy

120

8 REFERÊNCIAS BIBLIOGRÁFICAS

BELL, A. E. Christian Huygens and The development of Science int he

Seventh Century . [S. I.], [s. d.]. Disponível em: http://ia600502.us.archive.org

BELUSSO, C. L. M.; FÉLIX, J. L. P. Dinâmica Caótica de Um Sistema

Pêndulo Invertido com Suspensão Veicular . [S. I.], 1999. Disponível em:

http://www.sbmac.org.br/eventos/cnmac/xxxiii_cnmac/pdf/568.pdf. Acesso em: 03

mar, 2013.

BORG, F. G. An Inverted Pendulum with Springly Control As A Mod el Of

Human Standing . Jyväskylä, 2003. Disponível em: http://arxiv.org/

abs/physics/0512122. Acesso em: 16 mar, 2013.

BOULOS, P. Newton’s Path to Universal Gravitation: The Role of the

Pendulum. [S. I.], 2005. Disponível em: http://link.springer.com/

article/10.1007/s11191-005-1790-5. Acesso em: 05 mai, 2013.

CAMPA, G. Matlab Support Package For Arduíno . [S. I.], 2012 Disponível

em http://www.mathworks.com/matlabcentral/fileexchange/27843. Acesso em: 06

set,2013.

DELEY, D. W. Controlling an Inverted Pendulum. An Example of a D igital

Feedback Control System. [S. I.], [s. d.]. Disponível em:http://www.

daviddeley.com/pendulum/synopsis.htm. Acesso em: 16 mar, 2013.

DORF, R. C.; BISHOP, R. H. Sistemas de Controle Modernos. 11 ed. Rio

de Janeiro: LTC, 2009.

FOUCAULT, L.; GARIEL, C. M. LISSAJOUS, J. A. Recueil des travaux

scientifiques de Léon Foucault 1878. [S. I.], 1878. Disponível em:

http://archive.org/details/recueildestrava00lissgoog. Acesso em: 05 mai, 2013.

GALILEI, G. Dialogues Concerning Two New Sciences. [S. I.], 1638.

Disponível em: http://www.dominiopublico.gov.br/pesquisa/Detalhe

ObraForm.do?select_action=&co_obra=3933. Acesso em: 04 mai, 2013.

Page 122: Pendulo invertido com lógica Fuzzy

121

GRASSER, F. et al. JOE, A Mobile Inverted Pendulum. [S. I.], 2002.

Disponível em: http://www.cec.uchile.cl/~lemoreno/segway/Memoria/

grasser_darrigo_colombi_rufer_ieee_02.pdf. Acesso em: 16 mar, 2013.

HUYGENS, C. Horologium Oscillatorium. [S. I.], 1656. Disponível em:

http://www.17centurymaths.com/contents/huygenscontents.html. Acesso em: 05 mai,

2013.

IIDA, F. DRAVID, R. PAUL, C. Design and Control of a Pendulum Driven

Hopping Robot. [S. I.], [s. d.]. Disponível em: http://people.csail.mit.edu/

iida/papers/stumpyIROS02.pdf. Acesso em: 16 mar, 2013.

LAKIE, M.; CAPLAN, N.; LORAM, I. D. Human balancing of an inverted

pendulum with a compliant linkage: neural control b y anticipatory intermittent

bias. Pennsylvania, 2002. Disponível em:

http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2343154/pdf/tjp0551-0357.pdf+M46.

Acesso em: 16 mar, 2013.

LEMOS, M. Biblioteca Fuzzy eFLL. [S. I.], [S.D.], Diponivel em:

http://zerokol.com/product/51e93616e84c5571b7000018/1/pt-BR. Acesso em: 15

ago,2013

NISE, N. S. Engenharia de Sistemas de Controle . 5 ed. Rio de Janeiro:

LTC, 2011.

OGATA, K. Engenharia de Controle Moderno . 5 ed. São Paulo: Pearson

Prentice Hall, 2010.

PARSEGHIAN, A. S. Control of a Simulated, Three Dimensional Bipedal

Robot to Initiate Walking, Continue Walking, Rock S ide-to-Side and Balance .

Massachusetts, 2000. Disponível em: http://citeseerx.ist.psu.edu/viewdoc/

summary?doi=10.1.1.23.3602. Acesso em: 16 mar, 2013.

RIBEIRO, R. Implementação de um Sistema de Controle de Um Pendulo

Invertido. Itajubá, 2007. Disponível em: http://www.joinville.udesc.br/portal/

professores/farias/materiais/Controle_de_um_Pendulo_Invertido.pdf. Acesso em: 03

mar, 2013.

Page 123: Pendulo invertido com lógica Fuzzy

122

ROSÁRIO, J. M. Princípios de Mecatrônica . São Paulo: Prentice Hall, 2005.

SILVA, E. M.; ANTUNES, R. Controle de em Pendulo Invertido . Rio de

Janeiro, 2010. Disponível em: http://www.lee.eng.uerj.br/~elaine/pend.pdf. Acesso

em: 03 mar, 2013.

SILVA, M. A. O. Estudo de Técnicas de Controle Aplicada ao Sistema

Pendulo Invertido . Disponível em: http://www.em.ufop.br/cecau/monografias/2009/

MOZZER%20ANTONIO%20DE%20OLIVEIRA%20SILVA.pdf. Acesso em: 03 mar,

2013.

SIMÕES, M. G.; SHAW, I. S. Controle e Modelagem Fuzzy . 2 ed. São Paulo:

Blucher, 2007.

SOUZA, D. J. Desbravando o PIC: Ampliado e Atualizado para

PIC16F628A. 12 ed. São Paulo: Érica, 2008.

STOKES, G. On the Motion of Pendulums, Transactions of the Cam bridge

Philosophical Society IX . [S. I.], 1851. Disponível em: http://ia700301.

us.archive.org/2/items/transactionsofca09camb/transactionsofca09camb.pdf. Acesso

em: 05 mai, 2013.

VASCONCELOS, V. B. et. al. Controle de um sistema pendulo invertido

usando controladores inteligentes. 2012. Disponível em:

http://www.cobenge.edu.br/artigos/pdfcduspiuci.pdf. Acesso em: 05 mai, 2013.

ZAYAS, H. Earthquake Protection Systems, Inc.; Technical

Characteristics of Friction Pendulum. 1985. Disponível em:

http://www.earthquakeprotection.gov/pmc/articles/PMC2343154/pdf/tjp0551-

0357.pdf+M46. Acesso em: 16 mar, 2013.

Page 124: Pendulo invertido com lógica Fuzzy

Features

Bushing mount

Optional AR pin feature

Plastic or metal shaft and bushings

Wirewound

Solder lugs or PC pins

Sealable (Full body seal)

Designed for use in HMI applications

RoHS compliant*

3590 - Precision Potentiometer

Specifi cations are subject to change without notice.Customers should verify actual device performance in their specifi c applications.

*RoHS Directive 2002/95/EC Jan. 27, 2003 including annex and RoHS Recast 2011/65/EU June 8, 2011.

Electrical Characteristics1

Standard Resistance Range........................................................................................................................................................................ 200 to 100 K ohmsTotal Resistance Tolerance ................................................................................................................................................................................................ ±5 %Independent Linearity ................................................................................................................................................................................................... ±0.25 %Effective Electrical Angle ................................................................................................................................................................................3600 ° +10 °, -0 ° Absolute Minimum Resistance ......................................................................................................................1 ohm or 0.1 % maximum (whichever is greater)Noise ................................................................................................................................................................................................ 100 ohms ENR maximumDielectric Withstanding Voltage (MIL-STD-202, Method 301) Sea Level ...............................................................................................................................................................................................1,500 VAC minimumPower Rating (Voltage Limited By Power Dissipation or 450 VAC, Whichever is Less) +40 °C .........................................................................................................................................................................................................................2 watts +125 °C .........................................................................................................................................................................................................................0 wattInsulation Resistance (500 VDC) .....................................................................................................................................................1,000 megohms minimumResolution..............................................................................................................................................................................See recommended part numbers

Environmental Characteristics1

Operating Temperature Range ...................................................................................................................................................................... -40 °C to +125 °CStorage Temperature Range ......................................................................................................................................................................... -55 °C to +125 °CTemperature Coeffi cient Over Storage Temperature Range2 .........................................................................................................±50 ppm/°C maximum/unitVibration .............................................................................................................................................................................................................................15 G Wiper Bounce ................................................................................................................................................................................0.1 millisecond maximumShock..................................................................................................................................................................................................................................50 G Wiper Bounce ................................................................................................................................................................................0.1 millisecond maximumLoad Life ....................................................................................................................................................................................................1,000 hours, 2 watts Total Resistance Shift ....................................................................................................................................................................................±2 % maximumRotational Life (No Load)................................................................................................................................................................ 1,000,000 shaft revolutions Total Resistance Shift ....................................................................................................................................................................................±5 % maximumMoisture Resistance (MIL-STD-202, Method 103, Condition B) Total Resistance Shift ....................................................................................................................................................................................±2 % maximumIP Rating Sealed Versions (-3, -4, -7, and -8) ............................................................................................................................................................................... IP 65 Unsealed Versions (-1 -2, -5, and -6) ............................................................................................................................................................................ IP 40

Mechanical Characteristics1

Stop Strength..............................................................................................................................................................................45 N-cm (64 oz.-in.) minimumMechanical Angle ...........................................................................................................................................................................................3600 ° +10 °, -0 °Torque (Starting & Running) ................................................................................................................................0.35 N-cm (0.5 oz.-in.) maximum (unsealed) 1.1 N-cm (1.5 oz.-in.) maximum (sealed) Mounting ..............................................................................................................................................................................55-80 N-cm (5-7 lb.-in.) (plastic) 90-113 N-cm (8-10 in.-lb.) (metal)Shaft Runout......................................................................................................................................................................................0.13 mm (0.005 in.) T.I.R.Lateral Runout ...................................................................................................................................................................................0.20 mm (0.008 in.) T.I.R.Shaft End Play ...................................................................................................................................................................................0.25 mm (0.010 in.) T.I.R.Shaft Radial Play ...............................................................................................................................................................................0.13 mm (0.005 in.) T.I.R.Pilot Diameter Runout .......................................................................................................................................................................0.08 mm (0.003 in.) T.I.R.Backlash ............................................................................................................................................................................................................ 1.0 ° maximumWeight ........................................................................................................................................................................................................Approximately 19 GTerminals ................................................................................................................................................................................................Solder lugs or PC pinsSoldering Condition Manual Soldering...........................................................96.5Sn/3.0Ag/0.5Cu solid wire or no-clean rosin cored wire; 370 °C (700 °F) max. for 3 seconds Wave Soldering ...................................................................................96.5Sn/3.0Ag/0.5Cu solder with no-clean fl ux; 260 °C (500 °F) max. for 5 seconds Wash processes .......................................................................................................................................................................................Not recommendedMarking .....................................Manufacturer’s name and part number, resistance value and tolerance, linearity tolerance, wiring diagram, and date code.Ganging (Multiple Section Potentiometers) ......................................................................................................................................................1 cup maximumHardware ............................................................................................................ One lockwasher and one mounting nut is shipped with each potentiometer.

NOTE: For Anti-rotation pin add 91 after confi guration dash number. Example: -2 becomes -291 to add AR pin.1At room ambient: +25 °C nominal and 50 % relative humidity nominal, except as noted. 2Consult manufacturer for complete specifi cation details for resistances below 1k ohms.

BOLDFACE LISTINGS ARE IN STOCK AND READILY AVAILABLE

THROUGH DISTRIBUTION. FOR OTHER OPTIONS CONSULT FACTORY.

ROHS IDENTIFIER:

L = COMPLIANT

Recommended Part Numbers

(Printed Circuit) (Solder Lug) (Solder Lug) Resistance (Ω) Resolution (%)3590P-2-102L 3590S-2-102L 3590S-1-102L 1,000 .0293590P-2-202L 3590S-2-202L 3590S-1-202L 2,000 .0233590P-2-502L 3590S-2-502L 3590S-1-502L 5,000 .0253590P-2-103L 3590S-2-103L 3590S-1-103L 10,000 .0203590P-2-203L 3590S-2-203L 3590S-1-203L 20,000 .0193590P-2-503L 3590S-2-503L 3590S-1-503L 50,000 .0133590P-2-104L 3590S-2-104L 3590S-1-104L 100,000 .009

*RoH

S C

OM

PLI

ANT

Page 125: Pendulo invertido com lógica Fuzzy

Johnson Motor web: www.johnsonelectric.com email: [email protected]

Ø 4

0.0

– 4

4.9

mm

Page 126: Pendulo invertido com lógica Fuzzy

Johnson Motor web: www.johnsonelectric.com email: [email protected]

Ø 40.0 –

44.9 mm

Page 127: Pendulo invertido com lógica Fuzzy

IRF3205HEXFET® Power MOSFET

01/25/01

Absolute Maximum Ratings

Parameter Typ. Max. Units

RθJC Junction-to-Case ––– 0.75

RθCS Case-to-Sink, Flat, Greased Surface 0.50 ––– °C/W

RθJA Junction-to-Ambient ––– 62

Thermal Resistance

www.irf.com 1

VDSS = 55V

RDS(on) = 8.0mΩ

ID = 110AS

D

G

TO-220AB

Advanced HEXFET® Power MOSFETs from InternationalRectifier utilize advanced processing techniques to achieveextremely low on-resistance per silicon area. Thisbenefit, combined with the fast switching speed andruggedized device design that HEXFET power MOSFETsare well known for, provides the designer with an extremelyefficient and reliable device for use in a wide variety ofapplications.

The TO-220 package is universally preferred for all

commercial-industrial applications at power dissipation

levels to approximately 50 watts. The low thermal

resistance and low package cost of the TO-220 contribute

to its wide acceptance throughout the industry.

l Advanced Process Technology

l Ultra Low On-Resistance

l Dynamic dv/dt Rating

l 175°C Operating Temperature

l Fast Switching

l Fully Avalanche Rated

Description

Parameter Max. Units

ID @ TC = 25°C Continuous Drain Current, VGS @ 10V 110

ID @ TC = 100°C Continuous Drain Current, VGS @ 10V 80 A

IDM Pulsed Drain Current 390

PD @TC = 25°C Power Dissipation 200 W

Linear Derating Factor 1.3 W/°C

VGS Gate-to-Source Voltage ± 20 V

IAR Avalanche Current 62 A

EAR Repetitive Avalanche Energy 20 mJ

dv/dt Peak Diode Recovery dv/dt 5.0 V/ns

TJ Operating Junction and -55 to + 175

TSTG Storage Temperature Range

Soldering Temperature, for 10 seconds 300 (1.6mm from case )

°C

Mounting torque, 6-32 or M3 srew 10 lbf•in (1.1N•m)

PD-91279E

Page 128: Pendulo invertido com lógica Fuzzy

IRF3205

2 www.irf.com

S

D

G

Parameter Min. Typ. Max. Units Conditions

IS Continuous Source Current MOSFET symbol

(Body Diode)––– –––

showing the

ISM Pulsed Source Current integral reverse

(Body Diode)––– –––

p-n junction diode.

VSD Diode Forward Voltage ––– ––– 1.3 V TJ = 25°C, IS = 62A, VGS = 0V

trr Reverse Recovery Time ––– 69 104 ns TJ = 25°C, IF = 62A

Qrr Reverse Recovery Charge ––– 143 215 nC di/dt = 100A/µs

ton Forward Turn-On Time Intrinsic turn-on time is negligible (turn-on is dominated by LS+LD)

Source-Drain Ratings and Characteristics

110

390

A

Starting TJ = 25°C, L = 138µH

RG = 25Ω, IAS = 62A. (See Figure 12)

Repetitive rating; pulse width limited by

max. junction temperature. ( See fig. 11 )

Notes:

ISD ≤ 62A, di/dt ≤ 207A/µs, VDD ≤ V(BR)DSS,

TJ ≤ 175°C

Pulse width ≤ 400µs; duty cycle ≤ 2%.

Electrical Characteristics @ TJ = 25°C (unless otherwise specified)

Calculated continuous current based on maximum allowable

junction temperature. Package limitation current is 75A.

Parameter Min. Typ. Max. Units Conditions

V(BR)DSS Drain-to-Source Breakdown Voltage 55 ––– ––– V VGS = 0V, ID = 250µA

∆V(BR)DSS/∆TJ Breakdown Voltage Temp. Coefficient ––– 0.057 ––– V/°C Reference to 25°C, ID = 1mA

RDS(on) Static Drain-to-Source On-Resistance ––– ––– 8.0 mΩ VGS = 10V, ID = 62A

VGS(th) Gate Threshold Voltage 2.0 ––– 4.0 V VDS = VGS, ID = 250µA

gfs Forward Transconductance 44 ––– ––– S VDS = 25V, ID = 62A

––– ––– 25µA

VDS = 55V, VGS = 0V

––– ––– 250 VDS = 44V, VGS = 0V, TJ = 150°C

Gate-to-Source Forward Leakage ––– ––– 100 VGS = 20V

Gate-to-Source Reverse Leakage ––– ––– -100nA

VGS = -20V

Qg Total Gate Charge ––– ––– 146 ID = 62A

Qgs Gate-to-Source Charge ––– ––– 35 nC VDS = 44V

Qgd Gate-to-Drain ("Miller") Charge ––– ––– 54 VGS = 10V, See Fig. 6 and 13

td(on) Turn-On Delay Time ––– 14 ––– VDD = 28V

tr Rise Time ––– 101 ––– ID = 62A

td(off) Turn-Off Delay Time ––– 50 ––– RG = 4.5Ω

tf Fall Time ––– 65 ––– VGS = 10V, See Fig. 10

Between lead,––– –––

6mm (0.25in.)

from package

and center of die contact

Ciss Input Capacitance ––– 3247 ––– VGS = 0V

Coss Output Capacitance ––– 781 ––– VDS = 25V

Crss Reverse Transfer Capacitance ––– 211 ––– pF ƒ = 1.0MHz, See Fig. 5

EAS Single Pulse Avalanche Energy ––– 1050 264 mJ IAS = 62A, L = 138µH

nH

LD Internal Drain Inductance

LS Internal Source Inductance ––– –––S

D

G

IGSS

ns

4.5

7.5

IDSS Drain-to-Source Leakage Current

This is a typical value at device destruction and represents

operation outside rated limits.

This is a calculated value limited to TJ = 175°C.

Page 129: Pendulo invertido com lógica Fuzzy

July 1998

®

N

DIP8

(Plastic Package)

D

SO8

(Plastic Micropackage)

1

2

3

4 5

6

7

8 1 - GND

2 - Trigger

3 - Output

4 - Reset

5 - Control voltage

6 - Threshold

7 - Discharge

8 - VCC

PIN CONNECTIONS (top view)

. LOW TURN OFF TIME.MAXIMUM OPERATING FREQUENCYGREATER THAN 500kHz. TIMING FROM MICROSECONDS TO HOURS.OPERATES IN BOTH ASTABLE ANDMONOSTABLE MODES.HIGH OUTPUT CURRENT CAN SOURCE OR

SINK 200mA. ADJUSTABLE DUTY CYCLE. TTL COMPATIBLE. TEMPERATURE STABILITY OF 0.005%PER

oC

ORDER CODES

PartNumber

TemperatureRange

Package

N D

NE555 0oC, 70

oC • •

SA555 –40oC, 105

oC • •

SE555 –55oC, 125

oC • •

DESCRIPTION

The NE555 monolithic timing circuit is a highly stable

controller capable of producing accurate time delaysor oscillation. In the time delay mode of operation,the time is precisely controlled by one external re-

sistor and capacitor. For a stable operation as an os-cillator, the free running frequency and the duty cy-cle are both accurately controlled with two external

resistors and one capacitor. The circuit may be trig-gered and reset on falling waveforms, and the out-

put structure can source or sink up to 200mA. TheNE555 is available in plastic and ceramic minidippackage and in a 8-lead micropackage and in metalcan package version.

NE555SA555 - SE555

GENERAL PURPOSE SINGLE BIPOLAR TIMERS

1/10

Page 130: Pendulo invertido com lógica Fuzzy

THRESHOLD

COMP

5kΩ

5kΩ

5kΩ

TRIGGER

R

FLIP-FLOP

S

Q

DISCHARGE

OUT

INHIBIT/

RESET

RESET

COMP

S - 8086

S

+

CONTROL VOLTAGE

VCC

BLOCK DIAGRAM

OUTPUT

CONTROL

VOLTAGE

THRESHOLD

COMPARATOR

VCC

R1

4.7kR2

830

Q5 Q6 Q7 Q8 Q9

R3

4.7kR4

1kR8

5k

Q1

Q2 Q3

Q4

Q10

Q11 Q12

Q13

THRESHOLD

TRIGGER

RESET

DISCHARGE

G N D

2

4

7

1

Q14

Q15

R5

10kR6

100kR7

100kR10

5k

Q17

Q16 Q18

R9

5k D2

R16

100R15

4.7k

R14

220

Q24

Q23

R17

4.7k

3

Q22

D1

Q19

Q20

Q21

R12

6.8k

5

TRIGGER COMPARATOR FLIP FLOP

R11

5k

3.9k

SCHEMATIC DIAGRAM

ABSOLUTE MAXIMUM RATINGS

Symbol Parameter Value Unit

Vcc Supply Voltage 18 V

Toper Operating Free Air Temperature Range for NE555for SA555for SE555

0 to 70–40 to 105–55 to 125

oC

Tj Junction Temperature 150oC

Tstg Storage Temperature Range –65 to 150oC

NE555/SA555/SE555

2/10

Page 131: Pendulo invertido com lógica Fuzzy

ELECTRICAL CHARACTERISTICS

Tamb = +25oC, VCC = +5V to +15V (unless otherwise specified)

Symbol ParameterSE555 NE555 - SA555

UnitMin. Typ. Max. Min. Typ. Max.

ICC Supply Current (RL ∞) (- note 1)Low State VCC = +5V

VCC = +15VHigh State VCC = 5V

3102

512

3102

615

mA

Timing Error (monostable)(RA = 2k to 100kΩ, C = 0.1µF)Initial Accuracy - (note 2)Drift with TemperatureDrift with Supply Voltage

0.530

0.05

21000.2

1500.1

3

0.5

%ppm/°C

%/V

Timing Error (astable)(RA, RB = 1kΩ to 100kΩ, C = 0.1µF,VCC = +15V) Initial Accuracy - (note 2)Drift with TemperatureDrift with Supply Voltage

1.590

0.15

2.251500.3

%ppm/°C

%/V

VCL Control Voltage levelVCC = +15VVCC = +5V

9.62.9

103.33

10.43.8

92.6

103.33

114

V

Vth Threshold VoltageVCC = +15VVCC = +5V

9.42.7

103.33

10.64

8.82.4

103.33

11.24.2

V

Ith Threshold Current - (note 3) 0.1 0.25 0.1 0.25 µA

Vtrig Trigger VoltageVCC = +15VVCC = +5V

4.81.45

51.67

5.21.9

4.51.1

51.67

5.62.2

V

Itrig Trigger Current (Vtrig = 0V) 0.5 0.9 0.5 2.0 µA

Vreset Reset Voltage - (note 4) 0.4 0.7 1 0.4 0.7 1 V

Ireset Reset CurrentVreset = +0.4VVreset = 0V

0.10.4

0.41

0.10.4

0.41.5

mA

VOL Low Level Output VoltageVCC = +15V, IO(sink) = 10mA

IO(sink) = 50mAIO(sink) = 100mAIO(sink) = 200mA

VCC = +5V, IO(sink) = 8mAIO(sink) = 5mA

0.10.42

2.50.1

0.05

0.150.52.2

0.250.2

0.10.42

2.50.3

0.25

0.250.752.5

0.40.35

V

VOH High Level Output VoltageVCC = +15V, IO(source) = 200mA

IO(source) = 100mAVCC = +5V, IO(source) = 100mA

133

12.513.33.3

12.752.75

12.513.33.3

V

Notes : 1. Supply current when output is high is typically 1mA less.2. Tested at VCC = +5V and VCC = +15V.3. This will determine the maximum value of RA + RB for +15V operation the max total is R = 20MΩ and for 5V operation

the max total R = 3.5MΩ.

OPERATING CONDITIONS

Symbol Parameter SE555 NE555 - SA555 Unit

VCC Supply Voltage 4.5 to 18 4.5 to 18 V

Vth, Vtrig, Vcl, Vreset Maximum Input Voltage VCC VCC V

NE555/SA555/SE555

3/10

Page 132: Pendulo invertido com lógica Fuzzy

Codificação do número do modelo

A1-214 Para baixar os dados desejados, procureo número do modelo correspondente no site técnico. https://tech.thk.com

Modelos SR-W, SR-WM, SR-V e SR-VM

W

M

T

W2 W1

B

(K)

H3

Modelo

Dimensões externas Dimensões do bloco

Altura Lar-gura

Com-pri-

mento Niple de

lubrifi ca-ção

M W L B C S×ℓ L 1 T K N E H 3

SR 15V/VM SR 15W/WM 24 34 40,4

57 26 — 26 M4×7 22,9

39,5 5,7 18,2 6 5,5 PB1021B 5,8

SR 20V/VM SR 20W/WM 28 42 47,3

66,2 32 — 32 M5×8 27,8

46,7 7,2 22 6 12 B-M6F 6

SR 25V/VM SR 25W/WM 33 48 59,2

83 35 — 35 M6×9 35,2

59 7,7 26 7 12 B-M6F 7

SR 30V/VM SR 30W/WM 42 60 67,9

96,8 40 — 40 M8×12 40,4

69,3 8,5 32,5 8 12 B-M6F 9,5

SR 35V/VM SR 35W/WM 48 70 77,6

111 50 — 50 M8×12 45,7

79 12,5 36,5 8,5 12 B-M6F 11,5

SR 45W 60 86 126 60 60 M10×15 90,5 15 47,5 11,5 16 B-PT1/8 12,5 SR 55W 68 100 156 75 75 M12×20 117 16,7 54,5 12 16 B-PT1/8 13,5 SR 70T 85 126 194,6 90 90 M16×25 147,6 24,5 70 12 16 B-PT1/8 15 SR 85T 110 156 180 100 80 M18×30 130 25,5 91,5 27 12 A-PT1/8 18,5 SR 100T 120 178 200 120 100 M20×35 150 29,5 101 32 12 A-PT1/8 19 SR 120T 110 205 235 160 120 M20×35 180 24 95 14 13,5 B-PT1/4 15 SR 150T 135 250 280 200 160 M20×35 215 24 113 17 13,5 B-PT1/4 22

Símbolo paranº de trilhos usadosno mesmo plano (*4)Símbolo para

trilho unidoAplicado apenasao 15 e 25

Comprimento do trilho (em mm)

Símbolo do raspador contra contaminação (*1)

Bloco em aço inoxidável

Trilho em aço inoxidável

Símbolo de precisão (*3)Classe normal (sem símbolo)/Classe de precisão (H)Classe de alta precisão (P)/Classe de superprecisão (SP)Classe de ultraprecisão (UP)

Símbolo de folga radial (*2)Normal (sem símbolo)Pré-carga leve (C1)Pré-carga média (C0)

Nº de blocos usados no mesmo trilho

Tipo deBloco

Modelo

SR25 W 2 UU C0 M +1240L Y P T M -Ⅱ

(*1) Consulte o raspador contra contaminação em A1-510 . (*2) Consulte A1-71 . (*3) Consulte A1-77 . (*4) Consulte A1-13 .

Nota) Este número de modelo indica que uma unidade de trilho único constitui um conjunto (isto é, o número necessário de conjuntos quando 2 trilhos são usados é, no mínimo, 2.)

503BR

Page 133: Pendulo invertido com lógica Fuzzy

A1-215

Guia Linear

SR

Opcionais⇒A1-473

Modelo SR-WModelo SR-V

L1L

Cφ d2

φ d1F

Nh

M1

(E)4-S×ℓ

L1L

φ d2

φ d1F

Nh

M1

(E)2-S×ℓ

Unidade: mm

Dimensões do trilho Capacidade de carga nominal

Momento de carga estática permitida kN-m * Massa

Lar-gura Altura Pas-

so Compri-mento * C C 0

M A M B M C Bloco Trilho

W 1 0,05 W 2 M 1 F d 1 ×d 2 ×a Máx. kN kN 1

bloco 2

blocos 1

bloco 2

blocos 1

bloco kg kg/m

15 9,5 12,5 60 3,5×6×4,5 (1240) 2500

5,39 9,51

11,1 19,3

0,0326 0,0925

0,224 0,516

0,0203 0,0567

0,143 0,321

0,0654 0,113

0,12 0,2 1,2

20 11 15,5 60 6×9,5×8,5 (1480) 3000

7,16 12,5

14,4 25,2

0,053 0,146

0,332 0,778

0,0329 0,0896

0,21 0,481

0,11 0,194

0,2 0,3 2,1

23 12,5 18 60 7×11×9 (2020) 3000

11,7 20,3

22,5 39,5

0,103 0,286

0,649 1,52

0,0642 0,175

0,41 0,942

0,201 0,355

0,3 0,4 2,7

28 16 23 80 7×11×9 (2520) 3000

17,2 30

32,5 56,8

0,163 0,494

1,08 2,55

0,102 0,303

0,692 1,57

0,352 0,611

0,5 0,8 4,3

34 18 27,5 80 9×14×12 (2520) 3000

23,8 41,7

44,1 77,2

0,259 0,74

1,68 4,01

0,161 0,454

1,07 2,49

0,576 1,01

0,8 1,2 6,4

45 20,5 35,5 105 11×17,5×14 3000 55,3 101 1,1 5,96 0,679 3,69 1,77 2,2 11,3 48 26 38 120 14×20×17 3000 89,1 157 2,27 11,3 1,39 6,98 2,87 3,6 12,8 70 28 47 150 18×26×22 3000 156 266 2,54 13,2 2,18 11,3 4,14 7 22,8 85 35,5 65,5 180 18×26×22 3000 120 224 2,54 15,1 1,25 7,47 5,74 10,1 34,9

100 39 70,3 210 22×32×25 3000 148 283 3,95 20,9 1,95 10,3 8,55 14,1 46,4 114 45,5 65 230 26×39×30 3000 279 377 5,83 32,9 2,87 16,2 13,7 — — 144 53 77 250 33×48×36 3000 411 537 9,98 55,8 4,92 27,5 24,3 — —

Nota1) O símbolo M indica que o aço inoxidável é usado no bloco, trilho e esferas. Os modelos marcados com este símbolo são, portanto, altamente resistentes à corrosão e ao ambiente. Esses números de modelo, inclusive o SR85T e acima dele, são modelos semipadrão. Se desejar esses modelos, entre em contato com a THK. Os modelos SR85T e SR100T são equipados com niple de lubrifi cação na face lateral do bloco. O comprimento máximo em “Comprimento * ” indica o tamanho máximo padrão de um trilho. (Consulte A1-218 .) Momento de carga estática permitida * : 1 bloco: valor do momento de carga estática permitida com 1 bloco

2 blocos: valor do momento de carga estática permitida com 2 blocos em con-tato próximo um com o outro

Nota2) Para os modelos SR15 e 25, são oferecidos dois tipos de trilhos com furos de montagem de diferentes dimensões (consulte Tabela1 ). Ao substituir este modelo pelo modelo SSR, preste atenção na dimensão do furo de montagem do trilho LM. Entre em contato com a THK para obter detalhes.

Tabela1 Dimensão do furo de montagem do trilho

modelo Trilho padrão Trilho semipadrão

SR 15 Para M3 (nenhum símbolo) Para M4 (símbolo Y) SR 25 Para M6 (símbolo Y) Para M5 (nenhum símbolo)

503BR

Page 134: Pendulo invertido com lógica Fuzzy

133

Apendice A - Programação em C

/************************************************** ******************** * UNIP – Universidade Paulista * Curso de Bacharelado em automação e controle ************************************************** ********************* ************************************************** ********************* * Sistema Pendulo Invertido Utilizando Lógica Fuzz y ************************************************** ********************* ************************************************** ********************* * Orientador: Prof. Msc. Hugo Magalhães * Orientador: Prof MSc Diogo Ferreira Lima Filho * Co-orientador: Prof. Msc. Rafael Bachega ************************************************** ********************* * Integrantes: * Cesar Umberto Modesti * David Luna Santos * João Claudio dos Santos * Thiago Henrique Marques Silva ************************************************** ********************/ //incluido biblioteca Fuzzy #include <FuzzyRule.h> #include <FuzzyComposition.h> #include <Fuzzy.h> #include <FuzzyRuleConsequent.h> #include <FuzzyOutput.h> #include <FuzzyInput.h> #include <FuzzyIO.h> #include <FuzzySet.h> #include <FuzzyRuleAntecedent.h> //Instanciando um objeto da biblioteca Fuzzy* fuzzy = new Fuzzy(); //Declaração das variáveis globais int sensorPin = A0;//declaração da variável de leit ura da entrada análogica int output;//declaracao da variável de retorno do f uzzy int distatual;//declaracao da variável para calculo da velocidade int distanterior;//declaracao da variável para calc ulo da velocidade int velocidade;//declaracao da variável para armaze namento da velocidade int dist;//declaracao da variável da leitura analóg ica de posição //Configurações de portas e da lógica fuzzy void setup() Serial.begin(9600);//configuração da saída serial pinMode(9, OUTPUT);//define a porta digital 9 com o saída pinMode(10, OUTPUT);//define a porta digital 10 c omo saída //Inicio da configuração do fuzzy //Criando o FuzzyInput posição FuzzyInput* posicao = new FuzzyInput(1);// Como p arametro seu ID // Criação das pertinencias de entrada // Criando os FuzzySet que compoem o FuzzyInput p osição FuzzySet* esqG = new FuzzySet(484, 490, 490, 498) ; // Caindo para esquerda grande posicao->addFuzzySet(esqG); // Adicionando o Fuzz ySet esqG em posição FuzzySet* esqM = new FuzzySet(492, 498, 498, 504) ; // Caindo para esquerda medio

Page 135: Pendulo invertido com lógica Fuzzy

134

posicao->addFuzzySet(esqM); // Adicionando o Fuzz ySet esqM em posição FuzzySet* esqP = new FuzzySet(500, 504, 504, 508) ; // Caindo para esquerda pequeno posicao->addFuzzySet(esqP); // Adicionando o Fuzz ySet esqP em posição FuzzySet* esqMP = new FuzzySet(504, 508, 508, 512 ); // Caindo para esquerda muito pequeno posicao->addFuzzySet(esqMP); // Adicionando o Fuz zySet esqMP em posição FuzzySet* ctr = new FuzzySet(510,512,512,514); // Centro posicao->addFuzzySet(ctr); // Adicionando o Fuzzy Set ctr em posição FuzzySet* dirMP = new FuzzySet(512, 516, 516, 520 ); // caindo para direita muito pequeno posicao->addFuzzySet(dirMP); // Adicionando o Fuz zySet dirMP em posição FuzzySet* dirP = new FuzzySet(516, 520, 520, 524) ; // caindo para direita pequeno posicao->addFuzzySet(dirP); // Adicionando o Fuzz ySet dirP em posição FuzzySet* dirM = new FuzzySet(520, 526, 526, 532) ; // caido para direita medio posicao->addFuzzySet(dirM); // Adicionando o Fuzz ySet dirM em posição FuzzySet* dirG = new FuzzySet(526, 534, 534, 540) ; // caindo para direita grande posicao->addFuzzySet(dirG); // Adicionando o Fuzz ySet dirG em posição fuzzy->addFuzzyInput(posicao); // Adicionando o F uzzyInput no objeto Fuzzy //Criando o FuzzyInput vaste(velocidade da aste) FuzzyInput* vaste = new FuzzyInput(2);// Como par ametro seu ID // Criando os FuzzySet que compoem o FuzzyInput p osição FuzzySet* vmtbaixa = new FuzzySet(-1, 0, 0, 1); / / velocidade muito baixa vaste->addFuzzySet(vmtbaixa); // Adicionando o Fu zzySet vmtbaixa em vaste FuzzySet* vbaixa = new FuzzySet(0, 1, 1, 2); // v elocidade baixa vaste->addFuzzySet(vbaixa); // Adicionando o Fuzz ySet baixa em vaste FuzzySet* vmbaixa = new FuzzySet(1, 2, 2, 3); // velocidade media baixa vaste->addFuzzySet(vmbaixa); // Adicionando o Fuz zySet vmbaixa em vaste FuzzySet* vmedia = new FuzzySet(2, 4, 4, 6); // v elocidade media vaste->addFuzzySet(vmedia); // Adicionando o Fuzz ySet vmedia em vaste FuzzySet* vmalta = new FuzzySet(5, 6, 6, 8); // v elocidade media alta vaste->addFuzzySet(vmalta); // Adicionando o Fuzz ySet vmalta em vaste FuzzySet* valta = new FuzzySet(6, 8, 15, 15); // velocidade alta vaste->addFuzzySet(valta); // Adicionando o Fuzzy Set valta em vaste fuzzy->addFuzzyInput(vaste); // Adicionando o Fuz zyInput no objeto Fuzzy // Criação das pertinencias de saída // Criando o FuzzyOutput velocidade (velocidade d o motor FuzzyOutput* velocidade = new FuzzyOutput(1);// C omo parametro seu ID // Criando os FuzzySet que compoem o FuzzyOutput velocidade FuzzySet* mtbaixa = new FuzzySet(0, 20, 20, 50); // Velocidade muito baixa velocidade->addFuzzySet(mtbaixa); // Adicionando o FuzzySet mtbaixa em velocidade FuzzySet* baixa = new FuzzySet(25, 55, 55, 85); / / Velocidade baixa velocidade->addFuzzySet(baixa); // Adicionando o FuzzySet baixa em velocidade FuzzySet* mbaixa = new FuzzySet(60, 90, 90, 110); // Velocidade media baixa

Page 136: Pendulo invertido com lógica Fuzzy

135

velocidade->addFuzzySet(mbaixa); // Adicionando o FuzzySet mbaixa em velocidade FuzzySet* media = new FuzzySet(95, 135, 135, 155) ; // Velocidade media velocidade->addFuzzySet(media); // Adicionando o FuzzySet media em velocidade FuzzySet* malta = new FuzzySet(145, 175, 175, 225 ); // Velocidade media alta velocidade->addFuzzySet(malta); // Adicionando o FuzzySet malta em velocidade FuzzySet* alta = new FuzzySet(185, 230, 285, 285) ; // Velocidade alta velocidade->addFuzzySet(alta); // Adicionando o F uzzySet alta em velocidade fuzzy->addFuzzyOutput(velocidade); // Adicionando o FuzzyOutput no objeto Fuzzy // Criação da base de regras // 1)FuzzyRule "SE posição = esquerda grande e ve locidade da aste = muito baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaoesqgandvastevmtbaixa = new FuzzyRuleAntecedent();// Instanciando um Antecedent e para a expressão posicaoesqgandvastevmtbaixa->joinWithAND(esqG, vm tbaixa);// Adicionando o FuzzySet correspondente aos objetos Antecedentes FuzzyRuleConsequent* thenvelocidadeesqgvmtbaixa = new FuzzyRuleConsequent();// Instancinado um Consequent e para a expressao thenvelocidadeesqgvmtbaixa->addOutput(malta);// A dicionando o FuzzySet correspondente ao objeto Consequente // Instanciando um objeto FuzzyRule FuzzyRule* fuzzyRule1 = new FuzzyRule(1, posicaoe sqgandvastevmtbaixa, thenvelocidadeesqgvmtbaixa);// Passando o Anteceden te e o Consequente da expressao fuzzy->addFuzzyRule(fuzzyRule1);// Adicionando o FuzzyRule ao objeto Fuzzy // 2)FuzzyRule "SE posição = esquerda grande e ve locidade da aste = baixa ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqgandvastevbaixa = new FuzzyRuleAntecedent(); posicaoesqgandvastevbaixa->joinWithAND(esqG, vbai xa); FuzzyRuleConsequent* thenvelocidademediadir = new FuzzyRuleConsequent(); thenvelocidademediadir->addOutput(alta); FuzzyRule* fuzzyRule2 = new FuzzyRule(2, posicaoe sqgandvastevbaixa, thenvelocidademediadir); fuzzy->addFuzzyRule(fuzzyRule2); // 3)FuzzyRule "SE posição = esquerda grande e ve locidade da aste = media baixa ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqgandvastevmbaixa = new FuzzyRuleAntecedent(); posicaoesqgandvastevmbaixa->joinWithAND(esqG, vmb aixa); FuzzyRuleConsequent* thenvelocidadeesqgvmbaixadir = new FuzzyRuleConsequent(); thenvelocidadeesqgvmbaixadir->addOutput(alta); FuzzyRule* fuzzyRule3 = new FuzzyRule(3, posicaoe sqgandvastevmbaixa, thenvelocidadeesqgvmbaixadir); fuzzy->addFuzzyRule(fuzzyRule3); // 4)FuzzyRule "SE posição = esquerda grande e ve locidade da aste = media ENTAO velocidade do motor = alta"

Page 137: Pendulo invertido com lógica Fuzzy

136

FuzzyRuleAntecedent* posicaoesqgandvastevmedia = new FuzzyRuleAntecedent(); posicaoesqgandvastevmedia->joinWithAND(esqG, vmed ia); FuzzyRuleConsequent* thenvelocidademaltadir = new FuzzyRuleConsequent(); thenvelocidademaltadir->addOutput(alta); FuzzyRule* fuzzyRule4 = new FuzzyRule(4, posicaoe sqgandvastevmedia, thenvelocidademaltadir); fuzzy->addFuzzyRule(fuzzyRule4); // 5)FuzzyRule "SE posição = esquerda grande e ve locidade da aste = media alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqgandvastevmalta = new FuzzyRuleAntecedent(); posicaoesqgandvastevmalta->joinWithAND(esqG, vmal ta); FuzzyRuleConsequent* thenvelocidadeesgvmaltadir = new FuzzyRuleConsequent(); thenvelocidadeesgvmaltadir->addOutput(alta); FuzzyRule* fuzzyRule5 = new FuzzyRule(5, posicaoe sqgandvastevmalta, thenvelocidadeesgvmaltadir); fuzzy->addFuzzyRule(fuzzyRule5); // 6)FuzzyRule "SE posição = esquerda grande e ve locidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqgandvastevalta = n ew FuzzyRuleAntecedent(); posicaoesqgandvastevalta->joinWithAND(esqG, valta ); FuzzyRuleConsequent* thenvelocidadealtadir = new FuzzyRuleConsequent(); thenvelocidadealtadir->addOutput(alta); FuzzyRule* fuzzyRule6 = new FuzzyRule(6, posicaoe sqgandvastevalta, thenvelocidadealtadir); fuzzy->addFuzzyRule(fuzzyRule6); // 7)FuzzyRule "SE posição = esquerda medio e vel ocidade da aste = muito baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaoesqmandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaoesqmandvastevmtbaixa->joinWithAND(esqM, vm tbaixa); FuzzyRuleConsequent* thenvelocidadeesqmvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadeesqmvmtbaixa->addOutput(media); FuzzyRule* fuzzyRule7 = new FuzzyRule(7, posicaoe sqmandvastevmtbaixa, thenvelocidadeesqmvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule7); // 8)FuzzyRule "SE posição = esquerda medio e vel ocidade da aste = baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaoesqmandvastevbaixa = new FuzzyRuleAntecedent(); posicaoesqmandvastevbaixa->joinWithAND(esqM, vbai xa); FuzzyRuleConsequent* thenvelocidadembaixadir = ne w FuzzyRuleConsequent(); thenvelocidadembaixadir->addOutput(malta); FuzzyRule* fuzzyRule8 = new FuzzyRule(8, posicaoe sqmandvastevbaixa, thenvelocidadembaixadir); fuzzy->addFuzzyRule(fuzzyRule8); // 9)FuzzyRule "SE posição = esquerda medio e vel ocidade da aste = media baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaoesqmandvastevmbaixa = new FuzzyRuleAntecedent(); posicaoesqmandvastevmbaixa->joinWithAND(esqM, vmb aixa);

Page 138: Pendulo invertido com lógica Fuzzy

137

FuzzyRuleConsequent* thenvelocidadeesqmvmbaixadir = new FuzzyRuleConsequent(); thenvelocidadeesqmvmbaixadir->addOutput(malta); FuzzyRule* fuzzyRule10 = new FuzzyRule(10, posica oesqmandvastevmbaixa, thenvelocidadeesqmvmbaixadir); fuzzy->addFuzzyRule(fuzzyRule10); // 10)FuzzyRule "SE posição = esquerda medio e ve locidade da aste = media ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqmandvastevmedia = new FuzzyRuleAntecedent(); posicaoesqmandvastevmedia->joinWithAND(esqM, vmed ia); FuzzyRuleConsequent* thenvelocidademediadir2 = ne w FuzzyRuleConsequent(); thenvelocidademediadir2->addOutput(alta); FuzzyRule* fuzzyRule11 = new FuzzyRule(11, posica oesqmandvastevmedia, thenvelocidademediadir2); fuzzy->addFuzzyRule(fuzzyRule11); // 11)FuzzyRule "SE posição = esquerda medio e ve locidade da aste = media alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqmandvastevmalta = new FuzzyRuleAntecedent(); posicaoesqmandvastevmalta->joinWithAND(esqM, vmal ta); FuzzyRuleConsequent* thenvelocidadeesqmvmaltadir2 = new FuzzyRuleConsequent(); thenvelocidadeesqmvmaltadir2->addOutput(alta); FuzzyRule* fuzzyRule12 = new FuzzyRule(12, posica oesqmandvastevmalta, thenvelocidadeesqmvmaltadir2); fuzzy->addFuzzyRule(fuzzyRule12); // 12)FuzzyRule "SE posição = esquerda medio e ve locidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqmandvastevalta = n ew FuzzyRuleAntecedent(); posicaoesqmandvastevalta->joinWithAND(esqM, valta ); FuzzyRuleConsequent* thenvelocidademaltadir2 = ne w FuzzyRuleConsequent(); thenvelocidademaltadir2->addOutput(alta); FuzzyRule* fuzzyRule13 = new FuzzyRule(13, posica oesqmandvastevalta, thenvelocidademaltadir2); fuzzy->addFuzzyRule(fuzzyRule13); // 13)FuzzyRule "SE posição = esquerda pequeno e velocidade da aste = muito baixa ENTAO velocidade do motor = media baixa " FuzzyRuleAntecedent* posicaoesqpandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaoesqpandvastevmtbaixa->joinWithAND(esqP, vm tbaixa); FuzzyRuleConsequent* thenvelocidadeesqpvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadeesqpvmtbaixa->addOutput(mbaixa); FuzzyRule* fuzzyRule14 = new FuzzyRule(14, posica oesqpandvastevmtbaixa, thenvelocidadeesqpvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule14); // 14)FuzzyRule "SE posição = esquerda pequeno e velocidade da aste = baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaoesqpandvastevbaixa = new FuzzyRuleAntecedent(); posicaoesqpandvastevbaixa->joinWithAND(esqP, vbai xa); FuzzyRuleConsequent* thenvelocidadebaixa = new Fu zzyRuleConsequent(); thenvelocidadebaixa->addOutput(media);

Page 139: Pendulo invertido com lógica Fuzzy

138

FuzzyRule* fuzzyRule15 = new FuzzyRule(15, posica oesqpandvastevbaixa, thenvelocidadebaixa); fuzzy->addFuzzyRule(fuzzyRule15); // 15)FuzzyRule "SE posição = esquerda pequeno e velocidade da aste = media baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaoesqpandvastevmbaixa = new FuzzyRuleAntecedent(); posicaoesqpandvastevmbaixa->joinWithAND(esqP, vmb aixa); FuzzyRuleConsequent* thenvelocidadeesqpvmbaixadir = new FuzzyRuleConsequent(); thenvelocidadeesqpvmbaixadir->addOutput(media); FuzzyRule* fuzzyRule16 = new FuzzyRule(16, posica oesqpandvastevmbaixa, thenvelocidadeesqpvmbaixadir); fuzzy->addFuzzyRule(fuzzyRule16); // 16)FuzzyRule "SE posição = esquerda pequeno e velocidade da aste = media ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaoesqpandvastevmedia = new FuzzyRuleAntecedent(); posicaoesqpandvastevmedia->joinWithAND(esqP, vmed ia); FuzzyRuleConsequent* thenvelocidadembaixa2 = new FuzzyRuleConsequent(); thenvelocidadembaixa2->addOutput(malta); FuzzyRule* fuzzyRule17 = new FuzzyRule(17, posica oesqpandvastevmedia, thenvelocidadembaixa2); fuzzy->addFuzzyRule(fuzzyRule17); // 17)FuzzyRule "SE posição = esquerda pequeno e velocidade da aste = media alta ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaoesqpandvastevmalta = new FuzzyRuleAntecedent(); posicaoesqpandvastevmalta->joinWithAND(esqP, vmal ta); FuzzyRuleConsequent* thenvelocidadeesqpvmaltadir = new FuzzyRuleConsequent(); thenvelocidadeesqpvmaltadir->addOutput(malta); FuzzyRule* fuzzyRule18 = new FuzzyRule(18, posica oesqpandvastevmalta, thenvelocidadeesqpvmaltadir); fuzzy->addFuzzyRule(fuzzyRule18); // 18)FuzzyRule "SE posição = esquerda pequeno e velocidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqpandvastevalta = n ew FuzzyRuleAntecedent(); posicaoesqpandvastevalta->joinWithAND(esqP, valta ); FuzzyRuleConsequent* thenvelocidademedia3 = new F uzzyRuleConsequent(); thenvelocidademedia3->addOutput(alta); FuzzyRule* fuzzyRule19 = new FuzzyRule(19, posica oesqpandvastevalta, thenvelocidademedia3); fuzzy->addFuzzyRule(fuzzyRule19); // 19)FuzzyRule "SE posição = esquerda muito pequ eno e velocidade da aste = muito baixa ENTAO velocidade do motor = baixa" FuzzyRuleAntecedent* posicaoesqmpandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaoesqmpandvastevmtbaixa->joinWithAND(esqMP, vmtbaixa); FuzzyRuleConsequent* thenvelocidadeesqmpvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadeesqmpvmtbaixa->addOutput(baixa); FuzzyRule* fuzzyRule20 = new FuzzyRule(20, posica oesqmpandvastevmtbaixa, thenvelocidadeesqmpvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule20);

Page 140: Pendulo invertido com lógica Fuzzy

139

// 20)FuzzyRule "SE posição = esquerda muito pequ eno e velocidade da aste = baixa ENTAO velocidade do motor = baixa" FuzzyRuleAntecedent* posicaoesqmpandvastevbaixa = new FuzzyRuleAntecedent(); posicaoesqmpandvastevbaixa->joinWithAND(esqMP, vb aixa); FuzzyRuleConsequent* thenvelocidadeesqmpvbaixa = new FuzzyRuleConsequent(); thenvelocidadeesqmpvbaixa->addOutput(baixa); FuzzyRule* fuzzyRule21 = new FuzzyRule(21, posica oesqmpandvastevbaixa, thenvelocidadeesqmpvbaixa); fuzzy->addFuzzyRule(fuzzyRule21); // 21)FuzzyRule "SE posição = esquerda muito pequ eno e velocidade da aste = media baixa ENTAO velocidade do motor = media bai xa" FuzzyRuleAntecedent* posicaoesqmpandvastevmbaixa = new FuzzyRuleAntecedent(); posicaoesqmpandvastevmbaixa->joinWithAND(esqMP, v mbaixa); FuzzyRuleConsequent* thenvelocidadeesqmpvmbaixadi r = new FuzzyRuleConsequent(); thenvelocidadeesqmpvmbaixadir->addOutput(mbaixa); FuzzyRule* fuzzyRule22 = new FuzzyRule(22, posica oesqmpandvastevmbaixa, thenvelocidadeesqmpvmbaixadir); fuzzy->addFuzzyRule(fuzzyRule22); // 22)FuzzyRule "SE posição = esquerda muito pequ eno e velocidade da aste = media ENTAO velocidade do motor = media baixa" FuzzyRuleAntecedent* posicaoesqmpandvastevmedia = new FuzzyRuleAntecedent(); posicaoesqmpandvastevmedia->joinWithAND(esqMP, vm edia); FuzzyRuleConsequent* thenvelocidadeesqmpvmedia = new FuzzyRuleConsequent(); thenvelocidadeesqmpvmedia->addOutput(mbaixa); FuzzyRule* fuzzyRule23 = new FuzzyRule(23, posica oesqmpandvastevmedia, thenvelocidadeesqmpvmedia); fuzzy->addFuzzyRule(fuzzyRule23); // 23)FuzzyRule "SE posição = esquerda muito pequ eno e velocidade da aste = media alta ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaoesqmpandvastevmalta = new FuzzyRuleAntecedent(); posicaoesqmpandvastevmalta->joinWithAND(esqMP, vm alta); FuzzyRuleConsequent* thenvelocidadeesqmpvmaltadir = new FuzzyRuleConsequent(); thenvelocidadeesqmpvmaltadir->addOutput(media); FuzzyRule* fuzzyRule24 = new FuzzyRule(24, posica oesqmpandvastevmalta, thenvelocidadeesqmpvmaltadir); fuzzy->addFuzzyRule(fuzzyRule24); // 24)FuzzyRule "SE posição = esquerda muito pequ eno e velocidade da aste = alta ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaoesqmpandvastevalta = new FuzzyRuleAntecedent(); posicaoesqmpandvastevalta->joinWithAND(esqMP, val ta); FuzzyRuleConsequent* thenvelocidadeesqmpvalta = n ew FuzzyRuleConsequent(); thenvelocidadeesqmpvalta->addOutput(media); FuzzyRule* fuzzyRule25 = new FuzzyRule(25, posica oesqmpandvastevalta, thenvelocidadeesqmpvalta); fuzzy->addFuzzyRule(fuzzyRule25);

Page 141: Pendulo invertido com lógica Fuzzy

140

// 25)FuzzyRule "SE posição = centro e velocidade da aste = muito baixa ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaoctrandvastevmtbaixa->joinWithAND(ctr, vmtb aixa); FuzzyRuleConsequent* thenvelocidadectrvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadectrvmtbaixa->addOutput(mtbaixa); FuzzyRule* fuzzyRule26 = new FuzzyRule(26, posica octrandvastevmtbaixa, thenvelocidadectrvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule26); // 26)FuzzyRule "SE posição = centro e velocidade da aste = baixa ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevbaixa = n ew FuzzyRuleAntecedent(); posicaoctrandvastevbaixa->joinWithAND(ctr, vbaixa ); FuzzyRuleConsequent* thenvelocidadebaixa2 = new F uzzyRuleConsequent(); thenvelocidadebaixa2->addOutput(mtbaixa); FuzzyRule* fuzzyRule27 = new FuzzyRule(27, posica octrandvastevbaixa, thenvelocidadebaixa2); fuzzy->addFuzzyRule(fuzzyRule27); // 27)FuzzyRule "SE posição = centro e velocidade da aste = media baixa ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevmbaixa = new FuzzyRuleAntecedent(); posicaoctrandvastevmbaixa->joinWithAND(ctr, vmbai xa); FuzzyRuleConsequent* thenvelocidadectrvmbaixa = n ew FuzzyRuleConsequent(); thenvelocidadectrvmbaixa->addOutput(mtbaixa); FuzzyRule* fuzzyRule28 = new FuzzyRule(28, posica octrandvastevmbaixa, thenvelocidadectrvmbaixa); fuzzy->addFuzzyRule(fuzzyRule28); // 28)FuzzyRule "SE posição = centro e velocidade da aste = media ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevmedia = n ew FuzzyRuleAntecedent(); posicaoctrandvastevmedia->joinWithAND(ctr, vmedia ); FuzzyRuleConsequent* thenvelocidadebaixa3 = new F uzzyRuleConsequent(); thenvelocidadebaixa3->addOutput(mtbaixa); FuzzyRule* fuzzyRule29 = new FuzzyRule(29, posica octrandvastevmedia, thenvelocidadebaixa3); fuzzy->addFuzzyRule(fuzzyRule29); // 29)FuzzyRule "SE posição = centro e velocidade da aste = muito baixa ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevmalta = n ew FuzzyRuleAntecedent(); posicaoctrandvastevmalta->joinWithAND(ctr, vmalta ); FuzzyRuleConsequent* thenvelocidadectrvmalta = ne w FuzzyRuleConsequent(); thenvelocidadectrvmalta->addOutput(mtbaixa); FuzzyRule* fuzzyRule30 = new FuzzyRule(30, posica octrandvastevmalta, thenvelocidadectrvmalta); fuzzy->addFuzzyRule(fuzzyRule30); // 30)FuzzyRule "SE posição = centro e velocidade da aste = alta ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevalta = ne w FuzzyRuleAntecedent(); posicaoctrandvastevalta->joinWithAND(ctr, valta);

Page 142: Pendulo invertido com lógica Fuzzy

141

FuzzyRuleConsequent* thenvelocidadembaixa3 = new FuzzyRuleConsequent(); thenvelocidadembaixa3->addOutput(mtbaixa); FuzzyRule* fuzzyRule31 = new FuzzyRule(31, posica octrandvastevalta, thenvelocidadembaixa3); fuzzy->addFuzzyRule(fuzzyRule31); // 31)FuzzyRule "SE posição = direita muito peque no e velocidade da aste = muito baixa ENTAO velocidade do motor = baixa" FuzzyRuleAntecedent* posicaodirmpandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaodirmpandvastevmtbaixa->joinWithAND(dirMP, vmtbaixa); FuzzyRuleConsequent* thenvelocidadedirmpvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadedirmpvmtbaixa->addOutput(baixa); FuzzyRule* fuzzyRule32 = new FuzzyRule(32, posica odirmpandvastevmtbaixa, thenvelocidadedirmpvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule32); // 32)FuzzyRule "SE posição = direita muito peque no e velocidade da aste = baixa ENTAO velocidade do motor = baixa" FuzzyRuleAntecedent* posicaodirmpandvastevbaixa = new FuzzyRuleAntecedent(); posicaodirmpandvastevbaixa->joinWithAND(dirMP, vb aixa); FuzzyRuleConsequent* thenvelocidadedirmpvbaixa = new FuzzyRuleConsequent(); thenvelocidadedirmpvbaixa->addOutput(baixa); FuzzyRule* fuzzyRule33 = new FuzzyRule(33, posica odirmpandvastevbaixa, thenvelocidadedirmpvbaixa); fuzzy->addFuzzyRule(fuzzyRule33); // 33)FuzzyRule "SE posição = direita muito peque no e velocidade da aste = media baixa ENTAO velocidade do motor = media bai xa" FuzzyRuleAntecedent* posicaodirmpandvastevmbaixa = new FuzzyRuleAntecedent(); posicaodirmpandvastevmbaixa->joinWithAND(dirMP, v mbaixa); FuzzyRuleConsequent* thenvelocidadedirmpvmbaixaes q = new FuzzyRuleConsequent(); thenvelocidadedirmpvmbaixaesq->addOutput(mbaixa); FuzzyRule* fuzzyRule34 = new FuzzyRule(34, posica odirmpandvastevmbaixa, thenvelocidadedirmpvmbaixaesq); fuzzy->addFuzzyRule(fuzzyRule34); // 34)FuzzyRule "SE posição = direita muito peque no e velocidade da aste = media ENTAO velocidade do motor = media baixa" FuzzyRuleAntecedent* posicaodirmpandvastevmedia = new FuzzyRuleAntecedent(); posicaodirmpandvastevmedia->joinWithAND(dirMP, vm edia); FuzzyRuleConsequent* thenvelocidadedirmpvmedia = new FuzzyRuleConsequent(); thenvelocidadedirmpvmedia->addOutput(mbaixa); FuzzyRule* fuzzyRule35 = new FuzzyRule(35, posica odirmpandvastevmedia, thenvelocidadedirmpvmedia); fuzzy->addFuzzyRule(fuzzyRule35); // 35)FuzzyRule "SE posição = direita muito peque no e velocidade da aste = media alta ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirmpandvastevmalta = new FuzzyRuleAntecedent(); posicaodirmpandvastevmalta->joinWithAND(dirMP, vm alta); FuzzyRuleConsequent* thenvelocidadedirmpvmaltaesq = new FuzzyRuleConsequent();

Page 143: Pendulo invertido com lógica Fuzzy

142

thenvelocidadedirmpvmaltaesq->addOutput(media); FuzzyRule* fuzzyRule36 = new FuzzyRule(36, posica odirmpandvastevmalta, thenvelocidadedirmpvmaltaesq); fuzzy->addFuzzyRule(fuzzyRule36); // 36)FuzzyRule "SE posição = direita muito peque no e velocidade da aste = alta ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirmpandvastevalta = new FuzzyRuleAntecedent(); posicaodirmpandvastevalta->joinWithAND(dirMP, val ta); FuzzyRuleConsequent* thenvelocidadedirmpvalta = n ew FuzzyRuleConsequent(); thenvelocidadedirmpvalta->addOutput(media); FuzzyRule* fuzzyRule37 = new FuzzyRule(37, posica odirmpandvastevalta, thenvelocidadedirmpvalta); fuzzy->addFuzzyRule(fuzzyRule37); // 37)FuzzyRule "SE posição = direita pequeno e v elocidade da aste = muito baixa ENTAO velocidade do motor = media baixa " FuzzyRuleAntecedent* posicaodirpandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaodirpandvastevmtbaixa->joinWithAND(dirP, vm tbaixa); FuzzyRuleConsequent* thenvelocidadedirpvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadedirpvmtbaixa->addOutput(mbaixa); FuzzyRule* fuzzyRule38 = new FuzzyRule(38, posica odirpandvastevmtbaixa, thenvelocidadedirpvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule38); // 38)FuzzyRule "SE posição = direita pequeno e v elocidade da aste = baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirpandvastevbaixa = new FuzzyRuleAntecedent(); posicaodirpandvastevbaixa->joinWithAND(dirP, vbai xa); FuzzyRuleConsequent* thenvelocidadebaixaesq = new FuzzyRuleConsequent(); thenvelocidadebaixaesq->addOutput(media); FuzzyRule* fuzzyRule39 = new FuzzyRule(39, posica odirpandvastevbaixa, thenvelocidadebaixaesq); fuzzy->addFuzzyRule(fuzzyRule39); // 39)FuzzyRule "SE posição = direita pequeno e v elocidade da aste = media baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirpandvastevmbaixa = new FuzzyRuleAntecedent(); posicaodirpandvastevmbaixa->joinWithAND(dirP, vmb aixa); FuzzyRuleConsequent* thenvelocidadedirpvmbaixaesq = new FuzzyRuleConsequent(); thenvelocidadedirpvmbaixaesq->addOutput(media); FuzzyRule* fuzzyRule40 = new FuzzyRule(40, posica odirpandvastevmbaixa, thenvelocidadedirpvmbaixaesq); fuzzy->addFuzzyRule(fuzzyRule40); // 40)FuzzyRule "SE posição = direita pequeno e v elocidade da aste = media ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaodirpandvastevmedia = new FuzzyRuleAntecedent(); posicaodirpandvastevmedia->joinWithAND(dirP, vmed ia); FuzzyRuleConsequent* thenvelocidadembaixaesq = ne w FuzzyRuleConsequent(); thenvelocidadembaixaesq->addOutput(malta); FuzzyRule* fuzzyRule41 = new FuzzyRule(41, posica odirpandvastevmedia, thenvelocidadembaixaesq);

Page 144: Pendulo invertido com lógica Fuzzy

143

fuzzy->addFuzzyRule(fuzzyRule41); // 41)FuzzyRule "SE posição = direita pequeno e v elocidade da aste = media alta ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaodirpandvastevmalta = new FuzzyRuleAntecedent(); posicaodirpandvastevmalta->joinWithAND(dirP, vmal ta); FuzzyRuleConsequent* thenvelocidadedirpvmaltaesq = new FuzzyRuleConsequent(); thenvelocidadedirpvmaltaesq->addOutput(malta); FuzzyRule* fuzzyRule42 = new FuzzyRule(42, posica odirpandvastevmalta, thenvelocidadedirpvmaltaesq); fuzzy->addFuzzyRule(fuzzyRule42); // 42)FuzzyRule "SE posição = direita pequeno e v elocidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirpandvastevalta = n ew FuzzyRuleAntecedent(); posicaodirpandvastevalta->joinWithAND(dirP, valta ); FuzzyRuleConsequent* thenvelocidademediaesq = new FuzzyRuleConsequent(); thenvelocidademediaesq->addOutput(alta); FuzzyRule* fuzzyRule43 = new FuzzyRule(43, posica odirpandvastevalta, thenvelocidademediaesq); fuzzy->addFuzzyRule(fuzzyRule43); // 43)FuzzyRule "SE posição = direita medio e vel ocidade da aste = muito baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirmandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaodirmandvastevmtbaixa->joinWithAND(dirM, vm tbaixa); FuzzyRuleConsequent* thenvelocidadedirmvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadedirmvmtbaixa->addOutput(media); FuzzyRule* fuzzyRule44 = new FuzzyRule(44, posica odirmandvastevmtbaixa, thenvelocidadedirmvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule44); // 44)FuzzyRule "SE posição = direita medio e vel ocidade da aste = baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaodirmandvastevbaixa = new FuzzyRuleAntecedent(); posicaodirmandvastevbaixa->joinWithAND(dirM, vbai xa); FuzzyRuleConsequent* thenvelocidadembaixaesq2 = n ew FuzzyRuleConsequent(); thenvelocidadembaixaesq2->addOutput(malta); FuzzyRule* fuzzyRule45 = new FuzzyRule(45, posica odirmandvastevbaixa, thenvelocidadembaixaesq2); fuzzy->addFuzzyRule(fuzzyRule45); // 45)FuzzyRule "SE posição = direita medio e vel ocidade da aste = media baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaodirmandvastevmbaixa = new FuzzyRuleAntecedent(); posicaodirmandvastevmbaixa->joinWithAND(dirM, vmb aixa); FuzzyRuleConsequent* thenvelocidadedirmvmbaixaesq = new FuzzyRuleConsequent(); thenvelocidadedirmvmbaixaesq->addOutput(malta); FuzzyRule* fuzzyRule46 = new FuzzyRule(46, posica odirmandvastevmbaixa, thenvelocidadedirmvmbaixaesq); fuzzy->addFuzzyRule(fuzzyRule46);

Page 145: Pendulo invertido com lógica Fuzzy

144

// 46)FuzzyRule "SE posição = direita medio e vel ocidade da aste = media ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirmandvastevmedia = new FuzzyRuleAntecedent(); posicaodirmandvastevmedia->joinWithAND(dirM, vmed ia); FuzzyRuleConsequent* thenvelocidademediaesq2 = ne w FuzzyRuleConsequent(); thenvelocidademediaesq2->addOutput(alta); FuzzyRule* fuzzyRule47 = new FuzzyRule(47, posica odirmandvastevmedia, thenvelocidademediaesq2); fuzzy->addFuzzyRule(fuzzyRule47); // 47)FuzzyRule "SE posição = direita medio e vel ocidade da aste = media alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirmandvastevmalta = new FuzzyRuleAntecedent(); posicaodirmandvastevmalta->joinWithAND(dirM, vmal ta); FuzzyRuleConsequent* thenvelocidadedirmvmaltaesq= new FuzzyRuleConsequent(); thenvelocidadedirmvmaltaesq->addOutput(alta); FuzzyRule* fuzzyRule48 = new FuzzyRule(48, posica odirmandvastevmalta, thenvelocidadedirmvmaltaesq); fuzzy->addFuzzyRule(fuzzyRule48); // 48)FuzzyRule "SE posição = direita medio e vel ocidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirmandvastevalta = n ew FuzzyRuleAntecedent(); posicaodirmandvastevalta->joinWithAND(dirM, valta ); FuzzyRuleConsequent* thenvelocidademaltaesq= new FuzzyRuleConsequent(); thenvelocidademaltaesq->addOutput(alta); FuzzyRule* fuzzyRule49 = new FuzzyRule(49, posica odirmandvastevalta, thenvelocidademaltaesq); fuzzy->addFuzzyRule(fuzzyRule49); // 49)FuzzyRule "SE posição = direita grande e ve locidade da aste = muito baixa ENTAO velocidade do motor = malta" FuzzyRuleAntecedent* posicaodirgandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaodirgandvastevmtbaixa->joinWithAND(dirG, vm tbaixa); FuzzyRuleConsequent* thenvelocidadedirgvmtbaixa= new FuzzyRuleConsequent(); thenvelocidadedirgvmtbaixa->addOutput(malta); FuzzyRule* fuzzyRule50 = new FuzzyRule(50, posica odirgandvastevmtbaixa, thenvelocidadedirgvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule50); // 50)FuzzyRule "SE posição = direita grande e ve locidade da aste = baixa ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevbaixa = new FuzzyRuleAntecedent(); posicaodirgandvastevbaixa->joinWithAND(dirG, vbai xa); FuzzyRuleConsequent* thenvelocidademediaesq3= new FuzzyRuleConsequent(); thenvelocidademediaesq3->addOutput(alta); FuzzyRule* fuzzyRule51 = new FuzzyRule(51, posica odirgandvastevbaixa, thenvelocidademediaesq3); fuzzy->addFuzzyRule(fuzzyRule51); // 51)FuzzyRule "SE posição = direita grande e ve locidade da aste = media baixa ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevmbaixa = new FuzzyRuleAntecedent();

Page 146: Pendulo invertido com lógica Fuzzy

145

posicaodirgandvastevmbaixa->joinWithAND(dirG, vmb aixa); FuzzyRuleConsequent* thenvelocidadedirgvmbaixaesq = new FuzzyRuleConsequent(); thenvelocidadedirgvmbaixaesq->addOutput(alta); FuzzyRule* fuzzyRule52 = new FuzzyRule(52, posica odirgandvastevmbaixa, thenvelocidadedirgvmbaixaesq); fuzzy->addFuzzyRule(fuzzyRule52); // 52)FuzzyRule "SE posição = direita grande e ve locidade da aste = media ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevmedia = new FuzzyRuleAntecedent(); posicaodirgandvastevmedia->joinWithAND(dirG, vmed ia); FuzzyRuleConsequent* thenvelocidademaltaesq2= new FuzzyRuleConsequent(); thenvelocidademaltaesq2->addOutput(alta); FuzzyRule* fuzzyRule53 = new FuzzyRule(53, posica odirgandvastevmedia, thenvelocidademaltaesq2); fuzzy->addFuzzyRule(fuzzyRule53); // 53)FuzzyRule "SE posição = direita grande e ve locidade da aste = media alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevmalta = new FuzzyRuleAntecedent(); posicaodirgandvastevmalta->joinWithAND(dirG, vmal ta); FuzzyRuleConsequent* thenvelocidadedirgvmalta= ne w FuzzyRuleConsequent(); thenvelocidadedirgvmalta->addOutput(alta); FuzzyRule* fuzzyRule54 = new FuzzyRule(54, posica odirgandvastevmalta, thenvelocidadedirgvmalta); fuzzy->addFuzzyRule(fuzzyRule54); // 54)FuzzyRule "SE posição = direita grande e ve locidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevalta = n ew FuzzyRuleAntecedent(); posicaodirgandvastevalta->joinWithAND(dirG, valta ); FuzzyRuleConsequent* thenvelocidadealtaesq= new F uzzyRuleConsequent(); thenvelocidadealtaesq->addOutput(alta); FuzzyRule* fuzzyRule55 = new FuzzyRule(55, posica odirgandvastevalta, thenvelocidadealtaesq); fuzzy->addFuzzyRule(fuzzyRule55); // Início do programa principal void loop() distatual = analogRead(sensorPin);//leitura do po tenciometro para calculo da velocidade dist = analogRead(sensorPin);//leitura do potenci ometro para calculo para a entrada de posição fuzzy->setInput(1, dist);//Executar a fuzzyficaçã o 1 posição fuzzy->setInput(2, velocidade); //Executar a fuzz yficação 2 velocidade fuzzy->fuzzify(); //Executar a desfuzzyficação pa ra cada saída, passando seu ID output = fuzzy->defuzzify(1);//Executar a defuzzi ficação 1 e quardar na variável output //Cobdição para aplicação do PWM if (dist < 511) //Se pendulo cair para esquerda

Page 147: Pendulo invertido com lógica Fuzzy

146

analogWrite(9, output);//Aplica o valor de outp ut na saida PWM 9 movimentando o pendulo para direita analogWrite(10, 0);//Aplica 0 na saída PWM 10 else if (dist > 513)//Senão pendulo cair para direi ta analogWrite(10, output);////Aplica o valor de output na saida PWM 10 movimentando o pendulo para esquerda analogWrite(9, 0);//Aplica 0 na saída PWM 9 else//condição de equilibrido valor de entrada entre 488 a 492 analogWrite(10, 0);////Aplica 0 no PWM 10 man tendo o pendulo parado analogWrite(9, 0);//Aplica 0 na saída PWM 9 m antendo o pendulo parado velocidade = abs(distatual-distanterior);//Calcul o da velocidade distanterior = distatual;//quarda o valor da leit ura do potenciometro em uma nova variavel delay(40);//delay de 40ms //Fim do programa

Page 148: Pendulo invertido com lógica Fuzzy

!

"

#

$%&'()$$%&'()$*+,-(.+

! "

#

$

$

$

$

"! "

Page 149: Pendulo invertido com lógica Fuzzy

!

"

#

$%&'()$$%&'()$*+,-(.+

Page 150: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA3

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 1 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA

620

240

874

780

1150

200

MONTAGEM MECÂNICA DO PROJETO

Page 151: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA3

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 2 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13

David LunaDavid LunaProf. Hugo

POS. QUANT. NOMENCLATURA MATERIAL/FABRIC.01 01 MONTAGEM DA CAIXA DE REDUÇÃO CONF. DESENHO MONTAGEM02 01 HASTE DO PÊNDULO AÇO PRATA RETIFICADO03 05 MASSOR LATÃO USINADO04 01 BASE DO PÊNDULO ALUMÍNIO JATO GRANALHA05 01 SUPORTE DO MOTOR ALUMÍNIO JATO GRANALHA06 02 BASE LATERAL ALUMÍNIO JATO GRANALHA07 02 PLACA LATERAL JATO GRANALHA08 01 ENGRENAGEM DO MOTOR AÇO 1045/ATI BRASIL SEM TRAT.09 01 CREMALHEIRA SEM TRAT.10 01 TRILHO THK SR20W COMERCIAL11 02 PATIN THK SR20W COMERCIAL12 02 CONF. DESENHO13 01 PERFIL 40x80x1000mm ALLPERF14 02 PERFIL 40x80x160mm ALLPERF15 02 PERFIL 40x80x200mm ALLPERF COMERCIAL16 04 PAMPA 40x80 ALLPERF17 02 GRAXETA THK COMERCIAL

CONJUNTO DO AMORTECEDOR MONTAGEMCOMERCIALCOMERCIAL

COMERCIAL

TRATAMENTO

UNIP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

1

2

3

4

5

6

6

7

7

ALUMÍNIO

8

9

AÇO 1045/ATI BRASIL

10

11

11

12

12

13

14

14

15

15

16

16

16

16

17

17

18 04 DIN 91219 04 PARAFUSO M6x25 DIN 91220 26 PARAFUSO M5x16 DIN 91221 04 PARAFUSO M5x25 DIN 912 COMERCIAL22 02 PARAFUSO M4x20 DIN 91223 04 PINO GUIA PARALELO Ø4x20MM ISO 8734 COMERCIAL

PARAFUSO M6x16 COMERCIALCOMERCIALCOMERCIAL

COMERCIAL

18

18

18

18

19

19

19

19

20

20

20

20

21

2223

23

24 02 PARAFUSO SEM CABEÇA M4x6mm DIN 913 COMERCIAL

MONTAGEM MECÂNICA DO PROJETO

Page 152: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 3 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA

109

85

113153 01 01 CAIXA DE REDUÇÃO CONF. DESENHO CONF. DESENHO

MONTAGEM MECÂNICA DO PROJETO

Page 153: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA3

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 4 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13

David LunaDavid LunaProf. Hugo

POS. QUANT. NOMENCLATURA

1.1

1.1

1.2

1.2

1.4

1.5

1.6

1.8

1.7

1.10

1.91.11

1.11

1.11

1.12

1.13

14.1

1.14

1.15

1.161.11

MATERIAL/FABRIC.1.1 02 MANCAL DOS ROLAMENTOS POLICARBONATO POLIDO1.2 02 MANCAL LATERAL POLICARBONATO POLIDO1.3 01 BASE DOS MANCAIS POLICARBONATO POLIDO1.4 01 EIXO DO PÊNDULO AÇO VND RETIFICADO1.5 01 EIXO DO POTENCIÔMETRO AÇO VND RETIFICADO1.6 01 SUPORTE DO POTENCIÔMETRO ALUMINIO JATO GRANALHA1.7 01 ENGRENAGEM 19 DENTES SEM TRAT.1.8 01 ENGRENAGEM 60 DENTES AÇO 1045/ATI BRASIL SEM TRAT.1.9 01 ACOPLAMENTO FLEXIVEL ALUMÍNIO ARM 075-6-61.10 04 ROLAMENTO SKF 6001-2Z COMERCIAL1.11 14 PARAFUSO ALLEN CABEÇA SEXTAVADA DIN 912 OXIDAÇÃO NEGRA1.12 01 DIN 9121.13 04 PARAFUSO ALLEN CABEÇA ABAULADA ISO 73801.14 04 PARAFUSO ALLEN SEM CABEÇA DIN 9131.15 10 ANÉL DE RETENÇÃO DIN 6799 FOSFATIZADO

1.3

1.17

1.16 02 CHAVETA 4x4x7 DIN 68851.17 01 POTENCIÔMETRO 10 VOLTAS BAOTER COMERCIAL

PARAFUSO ALLEN CABEÇA SEXTAVADA OXIDAÇÃO NEGRAOXIDAÇÃO NEGRAOXIDAÇÃO NEGRA

FOSFATIZADO

TRATAMENTO

UNIP CAM

PUS MA

RQUÊS- ENG

ENHARIA DE CON

TROLE E AUTOMA

ÇÃO

AÇO 1045/ATI BRASIL

MONTAGEM MECÂNICA DO PROJETO

Page 154: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 5 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA

A

ACORTE A-A

4M (6x)

45

0

42

81,5

105

0

O 28+0,01-0,00

(2x)

4,5O

(3x)

4,5(3x)

697

O(3x

)

8

0 12 34,5 57 69

1.1 02 MANCAL DOS ROLAMENTOS POLICARBONATO POLIDO

1215

0 8 61 69

22

84

42

105

MONTAGEM MECÂNICA DO PROJETO

Page 155: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 6 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA1.2 02 MANCAL LATERAL POLICARBONATO POLIDO

7,5

O(4x)

4,5O

(4x)

0 4 57

61

105

0

22

84

105

53

8

4,5 (4x)

MONTAGEM MECÂNICA DO PROJETO

Page 156: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 7 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA1.3 01 BASE DOS MANCAIS POLICARBONATO POLIDO9O

(4x)

5,5O(4x)

4M (6x)

0 8 34,5 61 69

0 19 50 69

0

6,5

38,5

45

0

38,5

45

6,5

4

12 15

5 (4x)

8

MONTAGEM MECÂNICA DO PROJETO

Page 157: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 8 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA1.4 01 EIXO DO PÊNDULO AÇO VND RETIFICADO

4,7

8

12,4

20,4

8

6,5`2mm

R 2

7

1,3 (5x)

107

67

O 20

O 8 H7

12-0,01

-0,02

O

12

11O

(5x)

40

0,5 X 45°(3x)

5MRETITIFICAR

MONTAGEM MECÂNICA DO PROJETO

Page 158: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 9 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA1.5 01 EIXO DO POTENCIÔMETRO AÇO VND RETIFICADO

1,3 (5x) 20,4

6,5`2mm

R 2

8 12,4 2

87

RETITIFICAR

5

0,5 X 45°(4x)

64,3

77,3

8

11O

(5x)

12-0,01

-0,02

O

O 20

DETALHE A

60°

36g6

O

MONTAGEM MECÂNICA DO PROJETO

Page 159: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 10 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA1.6 01 SUPORTE DO POTENCIÔMETRO ALUMÍNIO JATO GRANALHA

B

B

CORTE B-B

0

20

65

85

0 4 57

61

9544

4

R 12,5

25,5

44

R 4,5

4

91

R 10 (2x)

25

4

R 2

30

MONTAGEM MECÂNICA DO PROJETO

Page 160: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 11 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA1.7 01 ENGRENAGEM 19 DENTES AÇO 1045 SEM TRAT.

C

C CORTE C-C

4

O 12 H7

14

7

ENGRENAGEM 19 DENTES MODULO 1 ÂNGULO DE PRESSÃO 20° DISTRIBUIIDOR ATI BRASIL CÓD. BE401010019 DE= 21 mm DP= 19 mm MODELO B

MONTAGEM MECÂNICA DO PROJETO

Page 161: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 12 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA1.8 01 ENGRENAGEM 60 DENTES AÇO 1045 SEM TRAT.ENGRENAGEM 60 DENTES

MODULO 1 ÂNGULO DE PRESSÃO 20° DISTRIBUIIDOR ATI BRASIL CÓD. BE401010060 DE= 62 mm DP= 60 mm MODELO B

D

DCORTE D-D

4

2014

O 12 H7

1 X 45°

5

7

MONTAGEM MECÂNICA DO PROJETO

Page 162: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 13 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA02 01 HASTE DO PÊNDULO AÇO PRATA RETIFICADO

560

O8 g6

MONTAGEM MECÂNICA DO PROJETO

Page 163: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 14 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA03 05 MASSOR LATÃO USINADO

E

E

CORTE E-E

10

0,5 X 45°

4M (2

x)

O 8 H7

25O

MONTAGEM MECÂNICA DO PROJETO

Page 164: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 15 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA04 01 BASE DO PÊNDULO ALUMÍNIO JATO GRANALHA

F

F

CORTE F-F

0 15 47 62,5 78 110 125

0

15

4757,75

110

0

15

47

110

9,5

O(7x)

5,5O(7x)

5,5 (7x)

13,5

0,5 X 45°nos contornos

0 14,5 45,5 79,5 110,5 125

COORDENADAS DOS FUROS ROSCADOS M5

COORDENADAS DOS FUROS DE ALOJAMENTO DE PARAFUSO

1215

5M (4x)

MONTAGEM MECÂNICA DO PROJETO

Page 165: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 16 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA05 01 SUPORTE DO MOTOR ALUMÍNIO JATO GRANALHA

H

H

G G

CORTE G-G

CORTE H-H

0 14,5 45,5 79,5 110,5 125

06,75

45,5

67O 18

9,5O(4x)

5,5O(4x)

7,5

O(4x)

O 4,5 (2x)

13,5 15

50

R 10 (4x)

MONTAGEM MECÂNICA DO PROJETO

Page 166: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 17 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA06 02 BASE LATERAL ALUMÍNIO JATO GRANALHA

I

I CORTE I-I

0 15 25 55 65 80

20

7,5 15

O 5 H7`15 (2x)60

6M (4x)

0

35

1215

50

60

MONTAGEM MECÂNICA DO PROJETO

Page 167: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 18 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA07 02 PLACA LATERAL ALUMÍNIO JATO GRANALHA

J J

CORTE J-J

K

K CORTE K-K

0

7,5

20

40

0 15 25 55 65 80

9,5O(2x)

5,5(2x)

5,5O(2x)

O 10,5(2x)

O 5 (2x)

6,5

O(2x)

15

MONTAGEM MECÂNICA DO PROJETO

Page 168: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 19 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA08 01 ENGRENAGEM DO MOTOR AÇO 1045 SEM TRATAM.

LL

CORTE L-L ENGRENAGEM 16 DENTES

MODULO 1 ÂNGULO DE PRESSÃO 20° DISTRIBUIIDOR ATI BRASIL CÓD. BE401010016 DE= 18 mm DP= 16 mm MODELO A

5H7

O

13

25

6

90°

4M (2x)

12

MONTAGEM MECÂNICA DO PROJETO

Page 169: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 20 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA09 01 CREMALHEIRA AÇO 1045 SEM TRATAM.

MODULO 1 ÂNGULO DE PRESSÃO 20° DISTRIBUIIDOR ATI BRASIL CÓD. BE490110200 PASSO= 3,1416

0 100 300 500 700 900 1000

15

15

5,5 (5x)

9O(5x)5,5

O(5x)

MONTAGEM MECÂNICA DO PROJETO

Page 170: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 21 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA

96,5

3446,5

64

88,5

51

16M

x119

12 02 CONJUNTO DO AMORTECEDOR CONF. DESENHO CONF. DESENHO

MONTAGEM MECÂNICA DO PROJETO

Page 171: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA3

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 22 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOCÓDIGO/FABRIC.NOMENCLATURA

12.112.2

12.3

12.412.4

12.3

12.112.212.312.4

02020404

SUPORTE DO AMORTECEDORAMORTECEDOR YSR-12-12-CPORCA DO AMORTECEDOR

PARAFUSO M6x20

ALUMÍNIOFESTOFESTODIN 912

JATO DE GRANALHA

OXID. NEGRA

NIQUEL QUIMICONIQUEL QUIMICO

UNIP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

MONTAGEM MECÂNICA DO PROJETO

Page 172: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 23 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA

A

A

CORTE A-A

45

34

15O 16M x1

8 X 45°

0

10

25

50

35

25

6,5

13

10,5O (2x)

6,5O (2x)

12.1 02 SUPORTE DO AMORTECEDOR ALUMÍNIO JATEADO

0 12,5

MONTAGEM MECÂNICA DO PROJETO

Page 173: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 24 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA

MONTAGEM MECÂNICA DO PROJETO

13 01 PERFIL ALUMÍNIO ANODIZADO

1000

80

40

Page 174: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 25 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA

MONTAGEM MECÂNICA DO PROJETO

14 02 PERFIL ALUMÍNIO ANODIZADO

80

160

40

Page 175: Pendulo invertido com lógica Fuzzy

PROJETISTAREVISADO

APROVADO

NOMEJOAO CLAUDIO

DATA16/10/13

TITULO:

SIZEA4

DESCRIÇÃO: REV

TRABALHO DE CONCLUSÃO DE CURSO 2013

ESCALA: FOLHA 26 DE 26

HISTÓRICO DE REVISÃOREV DESCRIÇÃO DATA APROVAÇÃO

CONTROLE DE PÊNDULO INVERTIDOPOR LÓGICA NEBULOSA FUZZY

16/10/1316/10/13 UN

IP CAM

PUS MA

RQUÊS_

ENG

ENHA

RIA DE CON

TROLE E AUTOMA

ÇÃO

David LunaDavid LunaProf. Hugo

POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA

200

15 02 PERFIL ALUMÍNIO ANODIZADO

MONTAGEM MECÂNICA DO PROJETO

80

40