Pendulo invertido com lógica Fuzzy
-
Upload
david-luna-santos -
Category
Engineering
-
view
657 -
download
2
Transcript of 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
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
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.
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
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.
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.
“A natureza do homem comum é ir em frente e fazer o melhor que puder.”
(John Prine).
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.
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.
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
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
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
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
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
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
Vmedia - Velocidade media
Vmtbaixa - Velocidade muito baixa
W - Potencia em Wats
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
= 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
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
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
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.
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
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.
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
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
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).
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
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
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.
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.
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
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.
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.
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.
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
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
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,
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)
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
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
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.
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
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
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.
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
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.
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.
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;
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
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.
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.
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
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.
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
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.
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;
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.
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
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.
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
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
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
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
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
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-
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
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
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
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
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.
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.
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
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.
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;
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
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.
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
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).
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
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
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,
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
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
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
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.
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
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
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
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
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
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
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.
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
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
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.
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
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,
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.
98
Figura 62 - Pertinências para entrada posição 21 regras
Figura 63 - Pertinências para entrada velocidade haste 21 regras
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
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
101
Figura 66 - Pertinências para entrada velocidade haste 54 regras
Figura 67 - Pertinências para saída velocidade motor 54 regras
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
103
Figura 68 - Pertinências para entrada posição 15 regras
Figura 69 - Pertinências para entrada velocidade haste 15 regras
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
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
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.
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
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
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.
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.
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
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
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
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
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.
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
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.
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.
119
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.
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.
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.
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
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
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.
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
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
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
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
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
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
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
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"
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);
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);
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);
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);
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);
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();
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);
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);
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();
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
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
!
"
#
$%&'()$$%&'()$*+,-(.+
! "
#
$
$
$
$
"! "
!
"
#
$%&'()$$%&'()$*+,-(.+
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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