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:
−" 3
4
5 =	− 3"
4
5 . (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
' = 	28	9
"
6
= 	28	:
"
3
"
0 5
' = 	28	9
4
(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)	– 	" D B<(1)	– 	" ² B<²(1)	1D 	+	
+" ²< =(1) B<(1)1@²;	
	1D 	+	 	1@ 	=	−" ²	1D 	+ 	" < =(1)	− 	" D B<(1);	
	( 	 + 	" ²)1D 	+	 	1@	– 	" < =(1)	=	−" D B<	(1). (1.9)
Adotando que o pendulo seja feito de haste uniforme, possuindo momento de
inércia de
ST
U
e também que 1 é muito pequeno, temos:
4
3
" 1D(&) +	 1@(&) − 	" 1(&) =	−" D (&);	
	1D +
UXY
Z ST
1 −@ U
ZS
1 = −
U
ZS
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]^_ =	
UXY
Z S²
,			^_² =	
U
ZS
,					 	 =
U
ZS
,																																	(1.11)		
1D(&) + 2]^_1@(&) −	^_²1(&) =	− 	
D (&)																										(1.12)	
`( )
a( )
=	
b c	 ²
²d efg bfg²
																																															(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 =
h
k
'(																																																												(1.17)	
Substituindo as equações de forma a combiná-las temos:
	)* =
k
l k
$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
l k
$j@ + $t jD + j@ + !$ D + $ @ um,	
	)* =
k
l k
$j@ + $t $jD + $j@ + !$ D + $ @ um,	
	)* =
k
l $jD + 3 k
+ 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
l D + 3 k
+ 5 $j@ + !$ D + $ @ m,	
	)* =
k
l( + !$ ) D + 3 k
+ + $ 5 @ m.	
Adotando =	 + !$ temos
=
h
3 k
+ + $ 5,	
h
w
=
k
,	
	)* =
1
Q D + @ 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).
& =	
Š,ŠŠŠhŠŠh
‹,‹Œ‹•Ž•• ³	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 Model 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 Digital
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 by 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 Side-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 Cambridge
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
Specifications are subject to change without notice.
Customers should verify actual device performance in their specific 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 ohms
Total 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 maximum
Dielectric Withstanding Voltage (MIL-STD-202, Method 301)
Sea Level...............................................................................................................................................................................................1,500 VAC minimum
Power Rating (Voltage Limited By Power Dissipation or 450 VAC, Whichever is Less)
+40 °C.........................................................................................................................................................................................................................2 watts
+125 °C.........................................................................................................................................................................................................................0 watt
Insulation Resistance (500 VDC) .....................................................................................................................................................1,000 megohms minimum
Resolution..............................................................................................................................................................................See recommended part numbers
Environmental Characteristics1
Operating Temperature Range......................................................................................................................................................................-40 °C to +125 °C
Storage Temperature Range .........................................................................................................................................................................-55 °C to +125 °C
Temperature Coefficient Over Storage Temperature Range2 .........................................................................................................±50 ppm/°C maximum/unit
Vibration .............................................................................................................................................................................................................................15 G
Wiper Bounce ................................................................................................................................................................................0.1 millisecond maximum
Shock..................................................................................................................................................................................................................................50 G
Wiper Bounce ................................................................................................................................................................................0.1 millisecond maximum
Load Life....................................................................................................................................................................................................1,000 hours, 2 watts
Total Resistance Shift ....................................................................................................................................................................................±2 % maximum
Rotational Life (No Load)................................................................................................................................................................ 1,000,000 shaft revolutions
Total Resistance Shift ....................................................................................................................................................................................±5 % maximum
Moisture Resistance (MIL-STD-202, Method 103, Condition B)
Total Resistance Shift ....................................................................................................................................................................................±2 % maximum
IP 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.) minimum
Mechanical 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 ° maximum
Weight ........................................................................................................................................................................................................Approximately 19 G
Terminals ................................................................................................................................................................................................Solder lugs or PC pins
Soldering 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 flux; 260 °C (500 °F) max. for 5 seconds
Wash processes .......................................................................................................................................................................................Not recommended
Marking.....................................Manufacturer’s name and part number, resistance value and tolerance, linearity tolerance, wiring diagram, and date code.
Ganging (Multiple Section Potentiometers)......................................................................................................................................................1 cup maximum
Hardware............................................................................................................ One lockwasher and one mounting nut is shipped with each potentiometer.
NOTE: For Anti-rotation pin add 91 after configuration 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 specification 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 .029
3590P-2-202L 3590S-2-202L 3590S-1-202L 2,000 .023
3590P-2-502L 3590S-2-502L 3590S-1-502L 5,000 .025
3590P-2-103L 3590S-2-103L 3590S-1-103L 10,000 .020
3590P-2-203L 3590S-2-203L 3590S-1-203L 20,000 .019
3590P-2-503L 3590S-2-503L 3590S-1-503L 50,000 .013
3590P-2-104L 3590S-2-104L 3590S-1-104L 100,000 .009
*RoHS
COM
PLIANT
Johnson Motor web: www.johnsonelectric.com email: sales@johnsonelectric.com40
Ø40.0–44.9mm
Johnson Motor web: www.johnsonelectric.com email: sales@johnsonelectric.com41
Ø40.0–44.9mm
IRF3205
HEXFET® 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 = 110A…
S
D
G
TO-220AB
Advanced HEXFET® Power MOSFETs from International
Rectifierutilizeadvancedprocessingtechniquestoachieve
extremely low on-resistance per silicon area. This
benefit, combined with the fast switching speed and
ruggedized device design that HEXFET power MOSFETs
arewellknownfor,providesthedesignerwithanextremely
efficient and reliable device for use in a wide variety of
applications.
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 ––– ––– -100
nA
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 FREQUENCY
GREATER THAN 500kHz
.TIMING FROM MICROSECONDS TO HOURS
.OPERATES IN BOTH ASTABLE AND
MONOSTABLE MODES
.HIGH OUTPUT CURRENT CAN SOURCE OR
SINK 200mA
.ADJUSTABLE DUTY CYCLE
.TTL COMPATIBLE
.TEMPERATURE STABILITY OF 0.005%
PERo
C
ORDER CODES
Part
Number
Temperature
Range
Package
N D
NE555 0o
C, 70o
C • •
SA555 –40o
C, 105o
C • •
SE555 –55o
C, 125o
C • •
DESCRIPTION
TheNE555monolithictiming circuitisahighlystable
controller capableofproducing accuratetime delays
or oscillation. In the time delay mode of operation,
the time is precisely controlled by one external re-
sistor and capacitor. For astable operation asanos-
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. The
NE555 is available in plastic and ceramic minidip
package and in a 8-lead micropackage and in metal
can package version.
NE555
SA555 - 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.7k
R2
830
Q5 Q6 Q7 Q8 Q9
R3
4.7k
R4
1k
R8
5k
Q1
Q2 Q3
Q4
Q10
Q11 Q12
Q13
THRESHOLD
TRIGGER
RESET
DISCHARGE
G N D
2
4
7
1
Q14
Q15
R5
10k
R6
100k
R7
100k
R10
5k
Q17
Q16 Q18
R9
5k D2
R16
100
R15
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 NE555
for SA555
for SE555
0 to 70
–40 to 105
–55 to 125
o
C
Tj Junction Temperature 150 o
C
Tstg Storage Temperature Range –65 to 150
o
C
NE555/SA555/SE555
2/10
ELECTRICAL CHARACTERISTICS
Tamb = +25o
C, VCC = +5V to +15V (unless otherwise specified)
Symbol Parameter
SE555 NE555 - SA555
Unit
Min. Typ. Max. Min. Typ. Max.
ICC Supply Current (RL ∞) (- note 1)
Low State VCC = +5V
VCC = +15V
High State VCC = 5V
3
10
2
5
12
3
10
2
6
15
mA
Timing Error (monostable)
(RA = 2k to 100kΩ, C = 0.1µF)
Initial Accuracy - (note 2)
Drift with Temperature
Drift with Supply Voltage
0.5
30
0.05
2
100
0.2
1
50
0.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 Temperature
Drift with Supply Voltage
1.5
90
0.15
2.25
150
0.3
%
ppm/°C
%/V
VCL Control Voltage level
VCC = +15V
VCC = +5V
9.6
2.9
10
3.33
10.4
3.8
9
2.6
10
3.33
11
4
V
Vth Threshold Voltage
VCC = +15V
VCC = +5V
9.4
2.7
10
3.33
10.6
4
8.8
2.4
10
3.33
11.2
4.2
V
Ith Threshold Current - (note 3) 0.1 0.25 0.1 0.25 µA
Vtrig Trigger Voltage
VCC = +15V
VCC = +5V
4.8
1.45
5
1.67
5.2
1.9
4.5
1.1
5
1.67
5.6
2.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 Current
Vreset = +0.4V
Vreset = 0V
0.1
0.4
0.4
1
0.1
0.4
0.4
1.5
mA
VOL Low Level Output Voltage
VCC = +15V, IO(sink) = 10mA
IO(sink) = 50mA
IO(sink) = 100mA
IO(sink) = 200mA
VCC = +5V, IO(sink) = 8mA
IO(sink) = 5mA
0.1
0.4
2
2.5
0.1
0.05
0.15
0.5
2.2
0.25
0.2
0.1
0.4
2
2.5
0.3
0.25
0.25
0.75
2.5
0.4
0.35
V
VOH High Level Output Voltage
VCC = +15V, IO(source) = 200mA
IO(source) = 100mA
VCC = +5V, IO(source) = 100mA
13
3
12.5
13.3
3.3
12.75
2.75
12.5
13.3
3.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, procure
o 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
lubrifica-
ção
M W L B C S×ℓ L1 T K N E H3
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 para
nº de trilhos usados
no mesmo plano (*4)Símbolo para
trilho unido
Aplicado apenas
ao 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 de
Bloco
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
GuiaLinear
SR
Opcionais⇒A1-473
Modelo SR-WModelo SR-V
L1
L
C
φ d2
φ d1
F
N
h
M1
(E)
4-S×ℓ
L1
L
φ d2
φ d1
F
N
h
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 C0
MA MB MC
Bloco Trilho
W1
0,05
W2 M1 F d1×d2×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 lubrificaçã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 Fuzzy
***********************************************************************
***********************************************************************
* 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 leitura da entrada análogica
int output;//declaracao da variável de retorno do fuzzy
int distatual;//declaracao da variável para calculo da velocidade
int distanterior;//declaracao da variável para calculo da velocidade
int velocidade;//declaracao da variável para armazenamento da velocidade
int dist;//declaracao da variável da leitura analógica 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 como saída
pinMode(10, OUTPUT);//define a porta digital 10 como saída
//Inicio da configuração do fuzzy
//Criando o FuzzyInput posição
FuzzyInput* posicao = new FuzzyInput(1);// Como parametro seu ID
// Criação das pertinencias de entrada
// Criando os FuzzySet que compoem o FuzzyInput posição
FuzzySet* esqG = new FuzzySet(484, 490, 490, 498); // Caindo para
esquerda grande
posicao->addFuzzySet(esqG); // Adicionando o FuzzySet esqG em posição
FuzzySet* esqM = new FuzzySet(492, 498, 498, 504); // Caindo para
esquerda medio
134
posicao->addFuzzySet(esqM); // Adicionando o FuzzySet esqM em posição
FuzzySet* esqP = new FuzzySet(500, 504, 504, 508); // Caindo para
esquerda pequeno
posicao->addFuzzySet(esqP); // Adicionando o FuzzySet esqP em posição
FuzzySet* esqMP = new FuzzySet(504, 508, 508, 512); // Caindo para
esquerda muito pequeno
posicao->addFuzzySet(esqMP); // Adicionando o FuzzySet esqMP em posição
FuzzySet* ctr = new FuzzySet(510,512,512,514); //Centro
posicao->addFuzzySet(ctr); // Adicionando o FuzzySet ctr em posição
FuzzySet* dirMP = new FuzzySet(512, 516, 516, 520); // caindo para
direita muito pequeno
posicao->addFuzzySet(dirMP); // Adicionando o FuzzySet dirMP em posição
FuzzySet* dirP = new FuzzySet(516, 520, 520, 524); // caindo para direita
pequeno
posicao->addFuzzySet(dirP); // Adicionando o FuzzySet dirP em posição
FuzzySet* dirM = new FuzzySet(520, 526, 526, 532); // caido para direita
medio
posicao->addFuzzySet(dirM); // Adicionando o FuzzySet dirM em posição
FuzzySet* dirG = new FuzzySet(526, 534, 534, 540); // caindo para direita
grande
posicao->addFuzzySet(dirG); // Adicionando o FuzzySet dirG em posição
fuzzy->addFuzzyInput(posicao); // Adicionando o FuzzyInput no objeto
Fuzzy
//Criando o FuzzyInput vaste(velocidade da aste)
FuzzyInput* vaste = new FuzzyInput(2);// Como parametro seu ID
// Criando os FuzzySet que compoem o FuzzyInput posição
FuzzySet* vmtbaixa = new FuzzySet(-1, 0, 0, 1); // velocidade muito baixa
vaste->addFuzzySet(vmtbaixa); // Adicionando o FuzzySet vmtbaixa em vaste
FuzzySet* vbaixa = new FuzzySet(0, 1, 1, 2); // velocidade baixa
vaste->addFuzzySet(vbaixa); // Adicionando o FuzzySet baixa em vaste
FuzzySet* vmbaixa = new FuzzySet(1, 2, 2, 3); // velocidade media baixa
vaste->addFuzzySet(vmbaixa); // Adicionando o FuzzySet vmbaixa em vaste
FuzzySet* vmedia = new FuzzySet(2, 4, 4, 6); // velocidade media
vaste->addFuzzySet(vmedia); // Adicionando o FuzzySet vmedia em vaste
FuzzySet* vmalta = new FuzzySet(5, 6, 6, 8); // velocidade media alta
vaste->addFuzzySet(vmalta); // Adicionando o FuzzySet vmalta em vaste
FuzzySet* valta = new FuzzySet(6, 8, 15, 15); // velocidade alta
vaste->addFuzzySet(valta); // Adicionando o FuzzySet valta em vaste
fuzzy->addFuzzyInput(vaste); // Adicionando o FuzzyInput no objeto Fuzzy
// Criação das pertinencias de saída
// Criando o FuzzyOutput velocidade (velocidade do motor
FuzzyOutput* velocidade = new FuzzyOutput(1);// Como 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 FuzzySet 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 velocidade da aste = muito
baixa ENTAO velocidade do motor = media alta"
FuzzyRuleAntecedent* posicaoesqgandvastevmtbaixa = new
FuzzyRuleAntecedent();// Instanciando um Antecedente para a expressão
posicaoesqgandvastevmtbaixa->joinWithAND(esqG, vmtbaixa);// Adicionando o
FuzzySet correspondente aos objetos Antecedentes
FuzzyRuleConsequent* thenvelocidadeesqgvmtbaixa = new
FuzzyRuleConsequent();// Instancinado um Consequente para a expressao
thenvelocidadeesqgvmtbaixa->addOutput(malta);// Adicionando o FuzzySet
correspondente ao objeto Consequente
// Instanciando um objeto FuzzyRule
FuzzyRule* fuzzyRule1 = new FuzzyRule(1, posicaoesqgandvastevmtbaixa,
thenvelocidadeesqgvmtbaixa);// Passando o Antecedente e o Consequente da
expressao
fuzzy->addFuzzyRule(fuzzyRule1);// Adicionando o FuzzyRule ao objeto
Fuzzy
// 2)FuzzyRule "SE posição = esquerda grande e velocidade da aste = baixa
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaoesqgandvastevbaixa = new
FuzzyRuleAntecedent();
posicaoesqgandvastevbaixa->joinWithAND(esqG, vbaixa);
FuzzyRuleConsequent* thenvelocidademediadir = new FuzzyRuleConsequent();
thenvelocidademediadir->addOutput(alta);
FuzzyRule* fuzzyRule2 = new FuzzyRule(2, posicaoesqgandvastevbaixa,
thenvelocidademediadir);
fuzzy->addFuzzyRule(fuzzyRule2);
// 3)FuzzyRule "SE posição = esquerda grande e velocidade da aste = media
baixa ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaoesqgandvastevmbaixa = new
FuzzyRuleAntecedent();
posicaoesqgandvastevmbaixa->joinWithAND(esqG, vmbaixa);
FuzzyRuleConsequent* thenvelocidadeesqgvmbaixadir = new
FuzzyRuleConsequent();
thenvelocidadeesqgvmbaixadir->addOutput(alta);
FuzzyRule* fuzzyRule3 = new FuzzyRule(3, posicaoesqgandvastevmbaixa,
thenvelocidadeesqgvmbaixadir);
fuzzy->addFuzzyRule(fuzzyRule3);
// 4)FuzzyRule "SE posição = esquerda grande e velocidade da aste = media
ENTAO velocidade do motor = alta"
136
FuzzyRuleAntecedent* posicaoesqgandvastevmedia = new
FuzzyRuleAntecedent();
posicaoesqgandvastevmedia->joinWithAND(esqG, vmedia);
FuzzyRuleConsequent* thenvelocidademaltadir = new FuzzyRuleConsequent();
thenvelocidademaltadir->addOutput(alta);
FuzzyRule* fuzzyRule4 = new FuzzyRule(4, posicaoesqgandvastevmedia,
thenvelocidademaltadir);
fuzzy->addFuzzyRule(fuzzyRule4);
// 5)FuzzyRule "SE posição = esquerda grande e velocidade da aste = media
alta ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaoesqgandvastevmalta = new
FuzzyRuleAntecedent();
posicaoesqgandvastevmalta->joinWithAND(esqG, vmalta);
FuzzyRuleConsequent* thenvelocidadeesgvmaltadir = new
FuzzyRuleConsequent();
thenvelocidadeesgvmaltadir->addOutput(alta);
FuzzyRule* fuzzyRule5 = new FuzzyRule(5, posicaoesqgandvastevmalta,
thenvelocidadeesgvmaltadir);
fuzzy->addFuzzyRule(fuzzyRule5);
// 6)FuzzyRule "SE posição = esquerda grande e velocidade da aste = alta
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaoesqgandvastevalta = new
FuzzyRuleAntecedent();
posicaoesqgandvastevalta->joinWithAND(esqG, valta);
FuzzyRuleConsequent* thenvelocidadealtadir = new FuzzyRuleConsequent();
thenvelocidadealtadir->addOutput(alta);
FuzzyRule* fuzzyRule6 = new FuzzyRule(6, posicaoesqgandvastevalta,
thenvelocidadealtadir);
fuzzy->addFuzzyRule(fuzzyRule6);
// 7)FuzzyRule "SE posição = esquerda medio e velocidade da aste = muito
baixa ENTAO velocidade do motor = media"
FuzzyRuleAntecedent* posicaoesqmandvastevmtbaixa = new
FuzzyRuleAntecedent();
posicaoesqmandvastevmtbaixa->joinWithAND(esqM, vmtbaixa);
FuzzyRuleConsequent* thenvelocidadeesqmvmtbaixa = new
FuzzyRuleConsequent();
thenvelocidadeesqmvmtbaixa->addOutput(media);
FuzzyRule* fuzzyRule7 = new FuzzyRule(7, posicaoesqmandvastevmtbaixa,
thenvelocidadeesqmvmtbaixa);
fuzzy->addFuzzyRule(fuzzyRule7);
// 8)FuzzyRule "SE posição = esquerda medio e velocidade da aste = baixa
ENTAO velocidade do motor = media alta"
FuzzyRuleAntecedent* posicaoesqmandvastevbaixa = new
FuzzyRuleAntecedent();
posicaoesqmandvastevbaixa->joinWithAND(esqM, vbaixa);
FuzzyRuleConsequent* thenvelocidadembaixadir = new FuzzyRuleConsequent();
thenvelocidadembaixadir->addOutput(malta);
FuzzyRule* fuzzyRule8 = new FuzzyRule(8, posicaoesqmandvastevbaixa,
thenvelocidadembaixadir);
fuzzy->addFuzzyRule(fuzzyRule8);
// 9)FuzzyRule "SE posição = esquerda medio e velocidade da aste = media
baixa ENTAO velocidade do motor = media alta"
FuzzyRuleAntecedent* posicaoesqmandvastevmbaixa = new
FuzzyRuleAntecedent();
posicaoesqmandvastevmbaixa->joinWithAND(esqM, vmbaixa);
137
FuzzyRuleConsequent* thenvelocidadeesqmvmbaixadir = new
FuzzyRuleConsequent();
thenvelocidadeesqmvmbaixadir->addOutput(malta);
FuzzyRule* fuzzyRule10 = new FuzzyRule(10, posicaoesqmandvastevmbaixa,
thenvelocidadeesqmvmbaixadir);
fuzzy->addFuzzyRule(fuzzyRule10);
// 10)FuzzyRule "SE posição = esquerda medio e velocidade da aste = media
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaoesqmandvastevmedia = new
FuzzyRuleAntecedent();
posicaoesqmandvastevmedia->joinWithAND(esqM, vmedia);
FuzzyRuleConsequent* thenvelocidademediadir2 = new FuzzyRuleConsequent();
thenvelocidademediadir2->addOutput(alta);
FuzzyRule* fuzzyRule11 = new FuzzyRule(11, posicaoesqmandvastevmedia,
thenvelocidademediadir2);
fuzzy->addFuzzyRule(fuzzyRule11);
// 11)FuzzyRule "SE posição = esquerda medio e velocidade da aste = media
alta ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaoesqmandvastevmalta = new
FuzzyRuleAntecedent();
posicaoesqmandvastevmalta->joinWithAND(esqM, vmalta);
FuzzyRuleConsequent* thenvelocidadeesqmvmaltadir2 = new
FuzzyRuleConsequent();
thenvelocidadeesqmvmaltadir2->addOutput(alta);
FuzzyRule* fuzzyRule12 = new FuzzyRule(12, posicaoesqmandvastevmalta,
thenvelocidadeesqmvmaltadir2);
fuzzy->addFuzzyRule(fuzzyRule12);
// 12)FuzzyRule "SE posição = esquerda medio e velocidade da aste = alta
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaoesqmandvastevalta = new
FuzzyRuleAntecedent();
posicaoesqmandvastevalta->joinWithAND(esqM, valta);
FuzzyRuleConsequent* thenvelocidademaltadir2 = new FuzzyRuleConsequent();
thenvelocidademaltadir2->addOutput(alta);
FuzzyRule* fuzzyRule13 = new FuzzyRule(13, posicaoesqmandvastevalta,
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, vmtbaixa);
FuzzyRuleConsequent* thenvelocidadeesqpvmtbaixa = new
FuzzyRuleConsequent();
thenvelocidadeesqpvmtbaixa->addOutput(mbaixa);
FuzzyRule* fuzzyRule14 = new FuzzyRule(14, posicaoesqpandvastevmtbaixa,
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, vbaixa);
FuzzyRuleConsequent* thenvelocidadebaixa = new FuzzyRuleConsequent();
thenvelocidadebaixa->addOutput(media);
138
FuzzyRule* fuzzyRule15 = new FuzzyRule(15, posicaoesqpandvastevbaixa,
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, vmbaixa);
FuzzyRuleConsequent* thenvelocidadeesqpvmbaixadir = new
FuzzyRuleConsequent();
thenvelocidadeesqpvmbaixadir->addOutput(media);
FuzzyRule* fuzzyRule16 = new FuzzyRule(16, posicaoesqpandvastevmbaixa,
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, vmedia);
FuzzyRuleConsequent* thenvelocidadembaixa2 = new FuzzyRuleConsequent();
thenvelocidadembaixa2->addOutput(malta);
FuzzyRule* fuzzyRule17 = new FuzzyRule(17, posicaoesqpandvastevmedia,
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, vmalta);
FuzzyRuleConsequent* thenvelocidadeesqpvmaltadir = new
FuzzyRuleConsequent();
thenvelocidadeesqpvmaltadir->addOutput(malta);
FuzzyRule* fuzzyRule18 = new FuzzyRule(18, posicaoesqpandvastevmalta,
thenvelocidadeesqpvmaltadir);
fuzzy->addFuzzyRule(fuzzyRule18);
// 18)FuzzyRule "SE posição = esquerda pequeno e velocidade da aste =
alta ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaoesqpandvastevalta = new
FuzzyRuleAntecedent();
posicaoesqpandvastevalta->joinWithAND(esqP, valta);
FuzzyRuleConsequent* thenvelocidademedia3 = new FuzzyRuleConsequent();
thenvelocidademedia3->addOutput(alta);
FuzzyRule* fuzzyRule19 = new FuzzyRule(19, posicaoesqpandvastevalta,
thenvelocidademedia3);
fuzzy->addFuzzyRule(fuzzyRule19);
// 19)FuzzyRule "SE posição = esquerda muito pequeno 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, posicaoesqmpandvastevmtbaixa,
thenvelocidadeesqmpvmtbaixa);
fuzzy->addFuzzyRule(fuzzyRule20);
139
// 20)FuzzyRule "SE posição = esquerda muito pequeno e velocidade da aste
= baixa ENTAO velocidade do motor = baixa"
FuzzyRuleAntecedent* posicaoesqmpandvastevbaixa = new
FuzzyRuleAntecedent();
posicaoesqmpandvastevbaixa->joinWithAND(esqMP, vbaixa);
FuzzyRuleConsequent* thenvelocidadeesqmpvbaixa = new
FuzzyRuleConsequent();
thenvelocidadeesqmpvbaixa->addOutput(baixa);
FuzzyRule* fuzzyRule21 = new FuzzyRule(21, posicaoesqmpandvastevbaixa,
thenvelocidadeesqmpvbaixa);
fuzzy->addFuzzyRule(fuzzyRule21);
// 21)FuzzyRule "SE posição = esquerda muito pequeno e velocidade da aste
= media baixa ENTAO velocidade do motor = media baixa"
FuzzyRuleAntecedent* posicaoesqmpandvastevmbaixa = new
FuzzyRuleAntecedent();
posicaoesqmpandvastevmbaixa->joinWithAND(esqMP, vmbaixa);
FuzzyRuleConsequent* thenvelocidadeesqmpvmbaixadir = new
FuzzyRuleConsequent();
thenvelocidadeesqmpvmbaixadir->addOutput(mbaixa);
FuzzyRule* fuzzyRule22 = new FuzzyRule(22, posicaoesqmpandvastevmbaixa,
thenvelocidadeesqmpvmbaixadir);
fuzzy->addFuzzyRule(fuzzyRule22);
// 22)FuzzyRule "SE posição = esquerda muito pequeno e velocidade da aste
= media ENTAO velocidade do motor = media baixa"
FuzzyRuleAntecedent* posicaoesqmpandvastevmedia = new
FuzzyRuleAntecedent();
posicaoesqmpandvastevmedia->joinWithAND(esqMP, vmedia);
FuzzyRuleConsequent* thenvelocidadeesqmpvmedia = new
FuzzyRuleConsequent();
thenvelocidadeesqmpvmedia->addOutput(mbaixa);
FuzzyRule* fuzzyRule23 = new FuzzyRule(23, posicaoesqmpandvastevmedia,
thenvelocidadeesqmpvmedia);
fuzzy->addFuzzyRule(fuzzyRule23);
// 23)FuzzyRule "SE posição = esquerda muito pequeno e velocidade da aste
= media alta ENTAO velocidade do motor = media"
FuzzyRuleAntecedent* posicaoesqmpandvastevmalta = new
FuzzyRuleAntecedent();
posicaoesqmpandvastevmalta->joinWithAND(esqMP, vmalta);
FuzzyRuleConsequent* thenvelocidadeesqmpvmaltadir = new
FuzzyRuleConsequent();
thenvelocidadeesqmpvmaltadir->addOutput(media);
FuzzyRule* fuzzyRule24 = new FuzzyRule(24, posicaoesqmpandvastevmalta,
thenvelocidadeesqmpvmaltadir);
fuzzy->addFuzzyRule(fuzzyRule24);
// 24)FuzzyRule "SE posição = esquerda muito pequeno e velocidade da aste
= alta ENTAO velocidade do motor = media"
FuzzyRuleAntecedent* posicaoesqmpandvastevalta = new
FuzzyRuleAntecedent();
posicaoesqmpandvastevalta->joinWithAND(esqMP, valta);
FuzzyRuleConsequent* thenvelocidadeesqmpvalta = new
FuzzyRuleConsequent();
thenvelocidadeesqmpvalta->addOutput(media);
FuzzyRule* fuzzyRule25 = new FuzzyRule(25, posicaoesqmpandvastevalta,
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, vmtbaixa);
FuzzyRuleConsequent* thenvelocidadectrvmtbaixa = new
FuzzyRuleConsequent();
thenvelocidadectrvmtbaixa->addOutput(mtbaixa);
FuzzyRule* fuzzyRule26 = new FuzzyRule(26, posicaoctrandvastevmtbaixa,
thenvelocidadectrvmtbaixa);
fuzzy->addFuzzyRule(fuzzyRule26);
// 26)FuzzyRule "SE posição = centro e velocidade da aste = baixa ENTAO
velocidade do motor = muito baixa"
FuzzyRuleAntecedent* posicaoctrandvastevbaixa = new
FuzzyRuleAntecedent();
posicaoctrandvastevbaixa->joinWithAND(ctr, vbaixa);
FuzzyRuleConsequent* thenvelocidadebaixa2 = new FuzzyRuleConsequent();
thenvelocidadebaixa2->addOutput(mtbaixa);
FuzzyRule* fuzzyRule27 = new FuzzyRule(27, posicaoctrandvastevbaixa,
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, vmbaixa);
FuzzyRuleConsequent* thenvelocidadectrvmbaixa = new
FuzzyRuleConsequent();
thenvelocidadectrvmbaixa->addOutput(mtbaixa);
FuzzyRule* fuzzyRule28 = new FuzzyRule(28, posicaoctrandvastevmbaixa,
thenvelocidadectrvmbaixa);
fuzzy->addFuzzyRule(fuzzyRule28);
// 28)FuzzyRule "SE posição = centro e velocidade da aste = media ENTAO
velocidade do motor = muito baixa"
FuzzyRuleAntecedent* posicaoctrandvastevmedia = new
FuzzyRuleAntecedent();
posicaoctrandvastevmedia->joinWithAND(ctr, vmedia);
FuzzyRuleConsequent* thenvelocidadebaixa3 = new FuzzyRuleConsequent();
thenvelocidadebaixa3->addOutput(mtbaixa);
FuzzyRule* fuzzyRule29 = new FuzzyRule(29, posicaoctrandvastevmedia,
thenvelocidadebaixa3);
fuzzy->addFuzzyRule(fuzzyRule29);
// 29)FuzzyRule "SE posição = centro e velocidade da aste = muito baixa
ENTAO velocidade do motor = muito baixa"
FuzzyRuleAntecedent* posicaoctrandvastevmalta = new
FuzzyRuleAntecedent();
posicaoctrandvastevmalta->joinWithAND(ctr, vmalta);
FuzzyRuleConsequent* thenvelocidadectrvmalta = new FuzzyRuleConsequent();
thenvelocidadectrvmalta->addOutput(mtbaixa);
FuzzyRule* fuzzyRule30 = new FuzzyRule(30, posicaoctrandvastevmalta,
thenvelocidadectrvmalta);
fuzzy->addFuzzyRule(fuzzyRule30);
// 30)FuzzyRule "SE posição = centro e velocidade da aste = alta ENTAO
velocidade do motor = muito baixa"
FuzzyRuleAntecedent* posicaoctrandvastevalta = new FuzzyRuleAntecedent();
posicaoctrandvastevalta->joinWithAND(ctr, valta);
141
FuzzyRuleConsequent* thenvelocidadembaixa3 = new FuzzyRuleConsequent();
thenvelocidadembaixa3->addOutput(mtbaixa);
FuzzyRule* fuzzyRule31 = new FuzzyRule(31, posicaoctrandvastevalta,
thenvelocidadembaixa3);
fuzzy->addFuzzyRule(fuzzyRule31);
// 31)FuzzyRule "SE posição = direita muito pequeno 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, posicaodirmpandvastevmtbaixa,
thenvelocidadedirmpvmtbaixa);
fuzzy->addFuzzyRule(fuzzyRule32);
// 32)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste
= baixa ENTAO velocidade do motor = baixa"
FuzzyRuleAntecedent* posicaodirmpandvastevbaixa = new
FuzzyRuleAntecedent();
posicaodirmpandvastevbaixa->joinWithAND(dirMP, vbaixa);
FuzzyRuleConsequent* thenvelocidadedirmpvbaixa = new
FuzzyRuleConsequent();
thenvelocidadedirmpvbaixa->addOutput(baixa);
FuzzyRule* fuzzyRule33 = new FuzzyRule(33, posicaodirmpandvastevbaixa,
thenvelocidadedirmpvbaixa);
fuzzy->addFuzzyRule(fuzzyRule33);
// 33)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste
= media baixa ENTAO velocidade do motor = media baixa"
FuzzyRuleAntecedent* posicaodirmpandvastevmbaixa = new
FuzzyRuleAntecedent();
posicaodirmpandvastevmbaixa->joinWithAND(dirMP, vmbaixa);
FuzzyRuleConsequent* thenvelocidadedirmpvmbaixaesq = new
FuzzyRuleConsequent();
thenvelocidadedirmpvmbaixaesq->addOutput(mbaixa);
FuzzyRule* fuzzyRule34 = new FuzzyRule(34, posicaodirmpandvastevmbaixa,
thenvelocidadedirmpvmbaixaesq);
fuzzy->addFuzzyRule(fuzzyRule34);
// 34)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste
= media ENTAO velocidade do motor = media baixa"
FuzzyRuleAntecedent* posicaodirmpandvastevmedia = new
FuzzyRuleAntecedent();
posicaodirmpandvastevmedia->joinWithAND(dirMP, vmedia);
FuzzyRuleConsequent* thenvelocidadedirmpvmedia = new
FuzzyRuleConsequent();
thenvelocidadedirmpvmedia->addOutput(mbaixa);
FuzzyRule* fuzzyRule35 = new FuzzyRule(35, posicaodirmpandvastevmedia,
thenvelocidadedirmpvmedia);
fuzzy->addFuzzyRule(fuzzyRule35);
// 35)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste
= media alta ENTAO velocidade do motor = media"
FuzzyRuleAntecedent* posicaodirmpandvastevmalta = new
FuzzyRuleAntecedent();
posicaodirmpandvastevmalta->joinWithAND(dirMP, vmalta);
FuzzyRuleConsequent* thenvelocidadedirmpvmaltaesq = new
FuzzyRuleConsequent();
142
thenvelocidadedirmpvmaltaesq->addOutput(media);
FuzzyRule* fuzzyRule36 = new FuzzyRule(36, posicaodirmpandvastevmalta,
thenvelocidadedirmpvmaltaesq);
fuzzy->addFuzzyRule(fuzzyRule36);
// 36)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste
= alta ENTAO velocidade do motor = media"
FuzzyRuleAntecedent* posicaodirmpandvastevalta = new
FuzzyRuleAntecedent();
posicaodirmpandvastevalta->joinWithAND(dirMP, valta);
FuzzyRuleConsequent* thenvelocidadedirmpvalta = new
FuzzyRuleConsequent();
thenvelocidadedirmpvalta->addOutput(media);
FuzzyRule* fuzzyRule37 = new FuzzyRule(37, posicaodirmpandvastevalta,
thenvelocidadedirmpvalta);
fuzzy->addFuzzyRule(fuzzyRule37);
// 37)FuzzyRule "SE posição = direita pequeno e velocidade da aste =
muito baixa ENTAO velocidade do motor = media baixa"
FuzzyRuleAntecedent* posicaodirpandvastevmtbaixa = new
FuzzyRuleAntecedent();
posicaodirpandvastevmtbaixa->joinWithAND(dirP, vmtbaixa);
FuzzyRuleConsequent* thenvelocidadedirpvmtbaixa = new
FuzzyRuleConsequent();
thenvelocidadedirpvmtbaixa->addOutput(mbaixa);
FuzzyRule* fuzzyRule38 = new FuzzyRule(38, posicaodirpandvastevmtbaixa,
thenvelocidadedirpvmtbaixa);
fuzzy->addFuzzyRule(fuzzyRule38);
// 38)FuzzyRule "SE posição = direita pequeno e velocidade da aste =
baixa ENTAO velocidade do motor = media"
FuzzyRuleAntecedent* posicaodirpandvastevbaixa = new
FuzzyRuleAntecedent();
posicaodirpandvastevbaixa->joinWithAND(dirP, vbaixa);
FuzzyRuleConsequent* thenvelocidadebaixaesq = new FuzzyRuleConsequent();
thenvelocidadebaixaesq->addOutput(media);
FuzzyRule* fuzzyRule39 = new FuzzyRule(39, posicaodirpandvastevbaixa,
thenvelocidadebaixaesq);
fuzzy->addFuzzyRule(fuzzyRule39);
// 39)FuzzyRule "SE posição = direita pequeno e velocidade da aste =
media baixa ENTAO velocidade do motor = media"
FuzzyRuleAntecedent* posicaodirpandvastevmbaixa = new
FuzzyRuleAntecedent();
posicaodirpandvastevmbaixa->joinWithAND(dirP, vmbaixa);
FuzzyRuleConsequent* thenvelocidadedirpvmbaixaesq = new
FuzzyRuleConsequent();
thenvelocidadedirpvmbaixaesq->addOutput(media);
FuzzyRule* fuzzyRule40 = new FuzzyRule(40, posicaodirpandvastevmbaixa,
thenvelocidadedirpvmbaixaesq);
fuzzy->addFuzzyRule(fuzzyRule40);
// 40)FuzzyRule "SE posição = direita pequeno e velocidade da aste =
media ENTAO velocidade do motor = media alta"
FuzzyRuleAntecedent* posicaodirpandvastevmedia = new
FuzzyRuleAntecedent();
posicaodirpandvastevmedia->joinWithAND(dirP, vmedia);
FuzzyRuleConsequent* thenvelocidadembaixaesq = new FuzzyRuleConsequent();
thenvelocidadembaixaesq->addOutput(malta);
FuzzyRule* fuzzyRule41 = new FuzzyRule(41, posicaodirpandvastevmedia,
thenvelocidadembaixaesq);
143
fuzzy->addFuzzyRule(fuzzyRule41);
// 41)FuzzyRule "SE posição = direita pequeno e velocidade da aste =
media alta ENTAO velocidade do motor = media alta"
FuzzyRuleAntecedent* posicaodirpandvastevmalta = new
FuzzyRuleAntecedent();
posicaodirpandvastevmalta->joinWithAND(dirP, vmalta);
FuzzyRuleConsequent* thenvelocidadedirpvmaltaesq = new
FuzzyRuleConsequent();
thenvelocidadedirpvmaltaesq->addOutput(malta);
FuzzyRule* fuzzyRule42 = new FuzzyRule(42, posicaodirpandvastevmalta,
thenvelocidadedirpvmaltaesq);
fuzzy->addFuzzyRule(fuzzyRule42);
// 42)FuzzyRule "SE posição = direita pequeno e velocidade da aste = alta
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaodirpandvastevalta = new
FuzzyRuleAntecedent();
posicaodirpandvastevalta->joinWithAND(dirP, valta);
FuzzyRuleConsequent* thenvelocidademediaesq = new FuzzyRuleConsequent();
thenvelocidademediaesq->addOutput(alta);
FuzzyRule* fuzzyRule43 = new FuzzyRule(43, posicaodirpandvastevalta,
thenvelocidademediaesq);
fuzzy->addFuzzyRule(fuzzyRule43);
// 43)FuzzyRule "SE posição = direita medio e velocidade da aste = muito
baixa ENTAO velocidade do motor = media"
FuzzyRuleAntecedent* posicaodirmandvastevmtbaixa = new
FuzzyRuleAntecedent();
posicaodirmandvastevmtbaixa->joinWithAND(dirM, vmtbaixa);
FuzzyRuleConsequent* thenvelocidadedirmvmtbaixa = new
FuzzyRuleConsequent();
thenvelocidadedirmvmtbaixa->addOutput(media);
FuzzyRule* fuzzyRule44 = new FuzzyRule(44, posicaodirmandvastevmtbaixa,
thenvelocidadedirmvmtbaixa);
fuzzy->addFuzzyRule(fuzzyRule44);
// 44)FuzzyRule "SE posição = direita medio e velocidade da aste = baixa
ENTAO velocidade do motor = media alta"
FuzzyRuleAntecedent* posicaodirmandvastevbaixa = new
FuzzyRuleAntecedent();
posicaodirmandvastevbaixa->joinWithAND(dirM, vbaixa);
FuzzyRuleConsequent* thenvelocidadembaixaesq2 = new
FuzzyRuleConsequent();
thenvelocidadembaixaesq2->addOutput(malta);
FuzzyRule* fuzzyRule45 = new FuzzyRule(45, posicaodirmandvastevbaixa,
thenvelocidadembaixaesq2);
fuzzy->addFuzzyRule(fuzzyRule45);
// 45)FuzzyRule "SE posição = direita medio e velocidade da aste = media
baixa ENTAO velocidade do motor = media alta"
FuzzyRuleAntecedent* posicaodirmandvastevmbaixa = new
FuzzyRuleAntecedent();
posicaodirmandvastevmbaixa->joinWithAND(dirM, vmbaixa);
FuzzyRuleConsequent* thenvelocidadedirmvmbaixaesq = new
FuzzyRuleConsequent();
thenvelocidadedirmvmbaixaesq->addOutput(malta);
FuzzyRule* fuzzyRule46 = new FuzzyRule(46, posicaodirmandvastevmbaixa,
thenvelocidadedirmvmbaixaesq);
fuzzy->addFuzzyRule(fuzzyRule46);
144
// 46)FuzzyRule "SE posição = direita medio e velocidade da aste = media
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaodirmandvastevmedia = new
FuzzyRuleAntecedent();
posicaodirmandvastevmedia->joinWithAND(dirM, vmedia);
FuzzyRuleConsequent* thenvelocidademediaesq2 = new FuzzyRuleConsequent();
thenvelocidademediaesq2->addOutput(alta);
FuzzyRule* fuzzyRule47 = new FuzzyRule(47, posicaodirmandvastevmedia,
thenvelocidademediaesq2);
fuzzy->addFuzzyRule(fuzzyRule47);
// 47)FuzzyRule "SE posição = direita medio e velocidade da aste = media
alta ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaodirmandvastevmalta = new
FuzzyRuleAntecedent();
posicaodirmandvastevmalta->joinWithAND(dirM, vmalta);
FuzzyRuleConsequent* thenvelocidadedirmvmaltaesq= new
FuzzyRuleConsequent();
thenvelocidadedirmvmaltaesq->addOutput(alta);
FuzzyRule* fuzzyRule48 = new FuzzyRule(48, posicaodirmandvastevmalta,
thenvelocidadedirmvmaltaesq);
fuzzy->addFuzzyRule(fuzzyRule48);
// 48)FuzzyRule "SE posição = direita medio e velocidade da aste = alta
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaodirmandvastevalta = new
FuzzyRuleAntecedent();
posicaodirmandvastevalta->joinWithAND(dirM, valta);
FuzzyRuleConsequent* thenvelocidademaltaesq= new FuzzyRuleConsequent();
thenvelocidademaltaesq->addOutput(alta);
FuzzyRule* fuzzyRule49 = new FuzzyRule(49, posicaodirmandvastevalta,
thenvelocidademaltaesq);
fuzzy->addFuzzyRule(fuzzyRule49);
// 49)FuzzyRule "SE posição = direita grande e velocidade da aste = muito
baixa ENTAO velocidade do motor = malta"
FuzzyRuleAntecedent* posicaodirgandvastevmtbaixa = new
FuzzyRuleAntecedent();
posicaodirgandvastevmtbaixa->joinWithAND(dirG, vmtbaixa);
FuzzyRuleConsequent* thenvelocidadedirgvmtbaixa= new
FuzzyRuleConsequent();
thenvelocidadedirgvmtbaixa->addOutput(malta);
FuzzyRule* fuzzyRule50 = new FuzzyRule(50, posicaodirgandvastevmtbaixa,
thenvelocidadedirgvmtbaixa);
fuzzy->addFuzzyRule(fuzzyRule50);
// 50)FuzzyRule "SE posição = direita grande e velocidade da aste = baixa
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaodirgandvastevbaixa = new
FuzzyRuleAntecedent();
posicaodirgandvastevbaixa->joinWithAND(dirG, vbaixa);
FuzzyRuleConsequent* thenvelocidademediaesq3= new FuzzyRuleConsequent();
thenvelocidademediaesq3->addOutput(alta);
FuzzyRule* fuzzyRule51 = new FuzzyRule(51, posicaodirgandvastevbaixa,
thenvelocidademediaesq3);
fuzzy->addFuzzyRule(fuzzyRule51);
// 51)FuzzyRule "SE posição = direita grande e velocidade da aste = media
baixa ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaodirgandvastevmbaixa = new
FuzzyRuleAntecedent();
145
posicaodirgandvastevmbaixa->joinWithAND(dirG, vmbaixa);
FuzzyRuleConsequent* thenvelocidadedirgvmbaixaesq= new
FuzzyRuleConsequent();
thenvelocidadedirgvmbaixaesq->addOutput(alta);
FuzzyRule* fuzzyRule52 = new FuzzyRule(52, posicaodirgandvastevmbaixa,
thenvelocidadedirgvmbaixaesq);
fuzzy->addFuzzyRule(fuzzyRule52);
// 52)FuzzyRule "SE posição = direita grande e velocidade da aste = media
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaodirgandvastevmedia = new
FuzzyRuleAntecedent();
posicaodirgandvastevmedia->joinWithAND(dirG, vmedia);
FuzzyRuleConsequent* thenvelocidademaltaesq2= new FuzzyRuleConsequent();
thenvelocidademaltaesq2->addOutput(alta);
FuzzyRule* fuzzyRule53 = new FuzzyRule(53, posicaodirgandvastevmedia,
thenvelocidademaltaesq2);
fuzzy->addFuzzyRule(fuzzyRule53);
// 53)FuzzyRule "SE posição = direita grande e velocidade da aste = media
alta ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaodirgandvastevmalta = new
FuzzyRuleAntecedent();
posicaodirgandvastevmalta->joinWithAND(dirG, vmalta);
FuzzyRuleConsequent* thenvelocidadedirgvmalta= new FuzzyRuleConsequent();
thenvelocidadedirgvmalta->addOutput(alta);
FuzzyRule* fuzzyRule54 = new FuzzyRule(54, posicaodirgandvastevmalta,
thenvelocidadedirgvmalta);
fuzzy->addFuzzyRule(fuzzyRule54);
// 54)FuzzyRule "SE posição = direita grande e velocidade da aste = alta
ENTAO velocidade do motor = alta"
FuzzyRuleAntecedent* posicaodirgandvastevalta = new
FuzzyRuleAntecedent();
posicaodirgandvastevalta->joinWithAND(dirG, valta);
FuzzyRuleConsequent* thenvelocidadealtaesq= new FuzzyRuleConsequent();
thenvelocidadealtaesq->addOutput(alta);
FuzzyRule* fuzzyRule55 = new FuzzyRule(55, posicaodirgandvastevalta,
thenvelocidadealtaesq);
fuzzy->addFuzzyRule(fuzzyRule55);
}
// Início do programa principal
void loop(){
distatual = analogRead(sensorPin);//leitura do potenciometro para calculo
da velocidade
dist = analogRead(sensorPin);//leitura do potenciometro 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 fuzzyficação 2 velocidade
fuzzy->fuzzify(); //Executar a desfuzzyficação para cada saída, passando
seu ID
output = fuzzy->defuzzify(1);//Executar a defuzzificaçã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 output 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 direita
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 mantendo o pendulo parado
analogWrite(9, 0);//Aplica 0 na saída PWM 9 mantendo o pendulo parado
}
}
velocidade = abs(distatual-distanterior);//Calculo da velocidade
distanterior = distatual;//quarda o valor da leitura do potenciometro em
uma nova variavel
delay(40);//delay de 40ms
}//Fim do programa
!
"#
$%&' ()$$%&' ()$
*+,- (.+
! "
#
$
$
$ $
"! "
!
"#
$%&' ()$$%&' ()$
*+,- (.+
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A3
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 1 DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
620
240
874
780
1150
200
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A3
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 2 DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
David LunaDavid Luna
Prof. Hugo
POS. QUANT. NOMENCLATURA MATERIAL/FABRIC.
01 01 MONTAGEM DA CAIXA DE REDUÇÃO CONF. DESENHO MONTAGEM
02 01 HASTE DO PÊNDULO AÇO PRATA RETIFICADO
03 05 MASSOR LATÃO USINADO
04 01 BASE DO PÊNDULO ALUMÍNIO JATO GRANALHA
05 01 SUPORTE DO MOTOR ALUMÍNIO JATO GRANALHA
06 02 BASE LATERAL ALUMÍNIO JATO GRANALHA
07 02 PLACA LATERAL JATO GRANALHA
08 01 ENGRENAGEM DO MOTOR AÇO 1045/ATI BRASIL SEM TRAT.
09 01 CREMALHEIRA SEM TRAT.
10 01 TRILHO THK SR20W COMERCIAL
11 02 PATIN THK SR20W COMERCIAL
12 02 CONF. DESENHO
13 01 PERFIL 40x80x1000mm ALLPERF
14 02 PERFIL 40x80x160mm ALLPERF
15 02 PERFIL 40x80x200mm ALLPERF COMERCIAL
16 04 PAMPA 40x80 ALLPERF
17 02 GRAXETA THK COMERCIAL
CONJUNTO DO AMORTECEDOR MONTAGEM
COMERCIAL
COMERCIAL
COMERCIAL
TRATAMENTO
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃ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 912
19 04 PARAFUSO M6x25 DIN 912
20 26 PARAFUSO M5x16 DIN 912
21 04 PARAFUSO M5x25 DIN 912 COMERCIAL
22 02 PARAFUSO M4x20 DIN 912
23 04 PINO GUIA PARALELO Ø4x20MM ISO 8734 COMERCIAL
PARAFUSO M6x16 COMERCIAL
COMERCIAL
COMERCIAL
COMERCIAL
18
18
18
18
19
19
19
19
20
20
20
20
21
22
23
23
24 02 PARAFUSO SEM CABEÇA M4x6mm DIN 913 COMERCIAL
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 3 DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
109
85
113153
01 01 CAIXA DE REDUÇÃO CONF. DESENHO CONF. DESENHO
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A3
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 4 DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
David LunaDavid Luna
Prof. 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.9
1.11
1.11
1.11
1.12
1.13
14.1
1.14
1.15
1.16
1.11
MATERIAL/FABRIC.
1.1 02 MANCAL DOS ROLAMENTOS POLICARBONATO POLIDO
1.2 02 MANCAL LATERAL POLICARBONATO POLIDO
1.3 01 BASE DOS MANCAIS POLICARBONATO POLIDO
1.4 01 EIXO DO PÊNDULO AÇO VND RETIFICADO
1.5 01 EIXO DO POTENCIÔMETRO AÇO VND RETIFICADO
1.6 01 SUPORTE DO POTENCIÔMETRO ALUMINIO JATO GRANALHA
1.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-6
1.10 04 ROLAMENTO SKF 6001-2Z COMERCIAL
1.11 14 PARAFUSO ALLEN CABEÇA SEXTAVADA DIN 912 OXIDAÇÃO NEGRA
1.12 01 DIN 912
1.13 04 PARAFUSO ALLEN CABEÇA ABAULADA ISO 7380
1.14 04 PARAFUSO ALLEN SEM CABEÇA DIN 913
1.15 10 ANÉL DE RETENÇÃO DIN 6799 FOSFATIZADO
1.3
1.17
1.16 02 CHAVETA 4x4x7 DIN 6885
1.17 01 POTENCIÔMETRO 10 VOLTAS BAOTER COMERCIAL
PARAFUSO ALLEN CABEÇA SEXTAVADA OXIDAÇÃO NEGRA
OXIDAÇÃO NEGRA
OXIDAÇÃO NEGRA
FOSFATIZADO
TRATAMENTO
UNIPCAMPUSMARQUÊS-ENGENHARIADECONTROLEEAUTOMAÇÃO
AÇO 1045/ATI BRASIL
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 5 DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
A
A
CORTE A-A
4M (6x)
45
0
42
81,5
105
0
O28 +0,01
-0,00
(2x)
4,5O
(3x)
4,5
(3x)
69
7O
(3x)
8
0 12 34,5 57 69
1.1 02 MANCAL DOS ROLAMENTOS POLICARBONATO POLIDO
12
15
0 8 61 69
22
84
42
105
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 6 DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
1.2 02 MANCAL LATERAL POLICARBONATO POLIDO
7,5O(4x)
4,5O(4x)
0 4 57
61
105
0
22
84
105
53
8
4,5(4x)
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 7 DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
1.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
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 8 DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
1.4 01 EIXO DO PÊNDULO AÇO VND RETIFICADO
4,7
8
12,4
20,4
8
6,5`2mm
R2
7
1,3(5x)
107
67
O20
O8H7
12-0,01
-0,02O
12
11O(5x)
40
0,5 X 45°
(3x)
5M RETITIFICAR
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 9 DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
1.5 01 EIXO DO POTENCIÔMETRO AÇO VND RETIFICADO
1,3(5x) 20,4
6,5`2mm
R2
8 12,4 2
87
RETITIFICAR
5
0,5 X 45°
(4x)
64,3
77,3
8
11O(5x)12-0,01
-0,02O
O20
DETALHE A
60°
3
6g6O
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 10DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
1.6 01 SUPORTE DO POTENCIÔMETRO ALUMÍNIO JATO GRANALHA
B
B
CORTE B-B
0
20
65
85
0 4 57
61
95 44
4
R12,5
25,5
44
R4,5
4
91
R10(2x)
25
4
R2
30
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 11DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
1.7 01 ENGRENAGEM 19 DENTES AÇO 1045 SEM TRAT.
C
C CORTE C-C
4
O12H7
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
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 12DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
1.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
D
CORTE D-D
4
20
14
O12H7
1 X 45°
5
7
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 13DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
02 01 HASTE DO PÊNDULO AÇO PRATA RETIFICADO
560
O8g6
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 14DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
03 05 MASSOR LATÃO USINADO
E
E
CORTE E-E
10
0,5 X 45°
4M
(2x)
O8H7
25O
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 15DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
04 01 BASE DO PÊNDULO ALUMÍNIO JATO GRANALHA
F
F
CORTE F-F
0 15 47 62,5 78 110 125
0
15
47
57,75
110
0
15
47
110
9,5O
(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
12
15
5M (4x)
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 16DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
05 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
0
6,75
45,5
67O18
9,5O
(4x)
5,5O
(4x)
7,5O(4x)
O4,5(2x)
13,5
15
50
R10(4x)
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 17DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
06 02 BASE LATERAL ALUMÍNIO JATO GRANALHA
I
I CORTE I-I
0 15 25 55 65 80
20
7,5
15
O5H7`15 (2x)
60
6M (4x)
0
35
12
15
50
60
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 18DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
07 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)
O10,5
(2x)
O5(2x)
6,5O(2x)
15
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 19DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
08 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
5H7O
13
25
6
90°
4M (2x)
12
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 20DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
09 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,5O
(5x)
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 21DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
96,5
34
46,5
64
88,5
51
16Mx1
19
12 02 CONJUNTO DO AMORTECEDOR CONF. DESENHO CONF. DESENHO
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A3
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 22DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOCÓDIGO/FABRIC.NOMENCLATURA
12.112.2
12.3
12.4
12.4
12.3
12.1
12.2
12.3
12.4
02
02
04
04
SUPORTE DO AMORTECEDOR
AMORTECEDOR YSR-12-12-C
PORCA DO AMORTECEDOR
PARAFUSO M6x20
ALUMÍNIO
FESTO
FESTO
DIN 912
JATO DE GRANALHA
OXID. NEGRA
NIQUEL QUIMICO
NIQUEL QUIMICO
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
MONTAGEM MECÂNICA
DO PROJETO
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 23DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
A
A
CORTE A-A
45
34
15
O16M x1
8X45°
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
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 24DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
MONTAGEM MECÂNICA
DO PROJETO
13 01 PERFIL ALUMÍNIO ANODIZADO
1000
80
40
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 25DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
MONTAGEM MECÂNICA
DO PROJETO
14 02 PERFIL ALUMÍNIO ANODIZADO
80
160
40
PROJETISTA
REVISADO
APROVADO
NOME
JOAO CLAUDIO
DATA
16/10/13
TITULO:
SIZE
A4
DESCRIÇÃO: REV
TRABALHO DE CONCLUSÃO DE CURSO 2013
ESCALA: FOLHA 26DE 26
HISTÓRICO DE REVISÃO
REV DESCRIÇÃO DATA APROVAÇÃO
CONTROLE DE PÊNDULO INVERTIDO
POR LÓGICA NEBULOSA FUZZY
16/10/13
16/10/13
UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO
David LunaDavid Luna
Prof. Hugo
POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA
200
15 02 PERFIL ALUMÍNIO ANODIZADO
MONTAGEM MECÂNICA
DO PROJETO
80
40

Pendulo invertido com lógica Fuzzy

  • 1.
    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
  • 2.
    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
  • 3.
    Sistema com penduloinvertido 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.
  • 4.
    CESAR UMBERTO MODESTI DAVIDLUNA 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
  • 5.
    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.
  • 6.
    AGRADECIMENTOS Agradecemos primeiramente aDeus 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.
  • 7.
    “A natureza dohomem comum é ir em frente e fazer o melhor que puder.” (John Prine).
  • 8.
    RESUMO O presente trabalhotrata 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.
  • 9.
    ABSTRACT The present workdeals 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.
  • 10.
    LISTA DE FIGURAS Figura1 - 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
  • 11.
    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
  • 12.
    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
  • 13.
    LISTA DE TABELAS Tabela1 - 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
  • 14.
    LISTA DE ABREVIATURASE 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
  • 15.
    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
  • 16.
    Vmedia - Velocidademedia Vmtbaixa - Velocidade muito baixa W - Potencia em Wats
  • 17.
    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
  • 18.
    = ganho constantedo 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
  • 19.
    SUMÁRIO 1 INTRODUÇÃO .......................................................................................................20 2MOTIVAÇÃ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
  • 20.
    6.2 TESTES COMA 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
  • 21.
    20 1 INTRODUÇÃO Neste trabalhoanalisamos 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.
  • 22.
    21 2 MOTIVAÇÃO ECONTEXTO 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
  • 23.
    22 matemática, outra vantagemdesta 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.
  • 24.
    23 3 REVISÃO BIBLIOGRÁFICA Nestecapí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
  • 25.
    24 pendulo foi utilizadopara 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
  • 26.
    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: −" 3 4 5 = − 3" 4 5 . (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).
  • 27.
    26 ' = 28 9 " 6 = 28 : " 3 " 0 5 ' = 28 9 4 (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
  • 28.
    27 Friction Pendulum, estese 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
  • 29.
    28 especificações divulgadas, cadaum 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.
  • 30.
    29 Com isto foinecessá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.
  • 31.
    30 Isto possibilita queo 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
  • 32.
    31 não se deupor 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.
  • 33.
    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.
  • 34.
    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.
  • 35.
    34 3.3 Sistemas deControle 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
  • 36.
    35 de acordo comsua 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
  • 37.
    36 sistema que sepretende 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,
  • 38.
    37 abrangendo mais variáveisde 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)
  • 39.
    38 Combinando as equaçõesde 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) – " D B<(1) – " ² B<²(1) 1D + +" ²< =(1) B<(1)1@²; 1D + 1@ = −" ² 1D + " < =(1) − " D B<(1); ( + " ²)1D + 1@ – " < =(1) = −" D B< (1). (1.9) Adotando que o pendulo seja feito de haste uniforme, possuindo momento de inércia de ST U e também que 1 é muito pequeno, temos: 4 3 " 1D(&) + 1@(&) − " 1(&) = −" D (&); 1D + UXY Z ST 1 −@ U ZS 1 = − U ZS 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]^_ = UXY Z S² , ^_² = U ZS , = U ZS , (1.11) 1D(&) + 2]^_1@(&) − ^_²1(&) = − D (&) (1.12) `( ) a( ) = b c ² ²d efg bfg² (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
  • 40.
    39 equações descrevem arelaçã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 = h k '( (1.17) Substituindo as equações de forma a combiná-las temos: )* = k l k $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
  • 41.
    40 )* = k l k $j@+ $t jD + j@ + !$ D + $ @ um, )* = k l k $j@ + $t $jD + $j@ + !$ D + $ @ um, )* = k l $jD + 3 k + 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 l D + 3 k + 5 $j@ + !$ D + $ @ m, )* = k l( + !$ ) D + 3 k + + $ 5 @ m. Adotando = + !$ temos = h 3 k + + $ 5, h w = k , )* = 1 Q D + @ 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.
  • 42.
    41 Utilizando o controlePID, 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
  • 43.
    de técnicas noespaç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
  • 44.
    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.
  • 45.
    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
  • 46.
    45 sistemas inteligentes recorrema 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.
  • 47.
    46 O desempenho docontrolador 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.
  • 48.
    47 3.4 Lógica Fuzzy Aló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;
  • 49.
    48 • Através daló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
  • 50.
    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.
  • 51.
    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.
  • 52.
    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
  • 53.
    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.
  • 54.
    53 SE posição forMé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
  • 55.
    54 coordenadas de umafunçã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.
  • 56.
    55 4 PROPOSTA ECONTRIBUIÇÃ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;
  • 57.
    56 • Desenvolver omodelo 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.
  • 58.
    4.2 Diagrama deBlocos 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
  • 59.
    Figura Porém, após aanalise 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.
  • 60.
    O diagrama deblocos 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
  • 61.
    60 5 RESULTADOS PRELIMINARES Nestetó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
  • 62.
    61 Como base foiutilizada 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
  • 63.
    62 O trilho daimpressora 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
  • 64.
    63 Como base paraas 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
  • 65.
    Vale ressaltar queos 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-
  • 66.
    65 A princípio oobjetivo 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
  • 67.
    No diagrama dehardware (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
  • 68.
    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
  • 69.
    68 O carro montadosobre 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
  • 70.
    69 A partir dodesenvolvimento 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.
  • 71.
    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.
  • 72.
    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
  • 73.
    72 desenvolvemos uma reduçãodo 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.
  • 74.
    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;
  • 75.
    74 Os detalhes ecaracterí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
  • 76.
    75 Sendo assim selecionamoso 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.
  • 77.
    76 Para alcançar umbom 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
  • 78.
    77 Para uma ponte-hcom 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).
  • 79.
    A tensão nogate 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
  • 80.
    Esse circuito utilizaum 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
  • 81.
    80 eletrônica e programaçãode 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,
  • 82.
    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
  • 83.
    82 são salvas coma 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
  • 84.
    83 5.4.3 Linguagem deprogramaçã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
  • 85.
    84 que possibilita umamaior 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.
  • 86.
    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
  • 87.
    86 Inserindo os valoreslimites 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
  • 88.
    87 Inserindo os valoresde 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
  • 89.
    88 Na tabela deinferê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
  • 90.
    89 Rule Viewer. Pode-sevariar 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
  • 91.
    90 6 TESTES ERESULTADOS 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
  • 92.
    91 bits tento entãopara 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.
  • 93.
    92 Para conseguirmos estetipo 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
  • 94.
    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
  • 95.
    94 anti-horário) a saídaserá 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.
  • 96.
    95 A próxima etapafoi 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
  • 97.
    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,
  • 98.
    97 o que aconteciaem 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.
  • 99.
    98 Figura 62 -Pertinências para entrada posição 21 regras Figura 63 - Pertinências para entrada velocidade haste 21 regras
  • 100.
    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
  • 101.
    100 velocidade, foram adicionadasentã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
  • 102.
    101 Figura 66 -Pertinências para entrada velocidade haste 54 regras Figura 67 - Pertinências para saída velocidade motor 54 regras
  • 103.
    102 Com as novaspertinê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
  • 104.
    103 Figura 68 -Pertinências para entrada posição 15 regras Figura 69 - Pertinências para entrada velocidade haste 15 regras
  • 105.
    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
  • 106.
    105 6.3 Aquisição dedados 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
  • 107.
    106 O movimento pendularfoi 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.
  • 108.
    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
  • 109.
    108 Após ter realizadoaquisiçõ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
  • 110.
    109 Após a configuraçãodo 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.
  • 111.
    110 Para que fossepossí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). & = Š,ŠŠŠhŠŠh ‹,‹Œ‹•Ž•• ³ 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.
  • 112.
    111 A estrutura montadano 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
  • 113.
    112 A figura 79mostra 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
  • 114.
    113 Simulando o comportamentodo 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
  • 115.
    114 A figura 82mostra 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
  • 116.
    115 A figura 84mostra 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.
  • 117.
    116 6.6 Custo doProjeto: 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
  • 118.
    117 7 CONCLUSÃO Este trabalhoapresenta 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.
  • 119.
    118 7.1 Sugestões paraTrabalhos 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.
  • 120.
  • 121.
    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 Model 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 Digital 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.
  • 122.
    121 GRASSER, F. etal. 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 by 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 Side-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.
  • 123.
    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 Cambridge 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.
  • 124.
    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 Specifications are subject to change without notice. Customers should verify actual device performance in their specific 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 ohms Total 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 maximum Dielectric Withstanding Voltage (MIL-STD-202, Method 301) Sea Level...............................................................................................................................................................................................1,500 VAC minimum Power Rating (Voltage Limited By Power Dissipation or 450 VAC, Whichever is Less) +40 °C.........................................................................................................................................................................................................................2 watts +125 °C.........................................................................................................................................................................................................................0 watt Insulation Resistance (500 VDC) .....................................................................................................................................................1,000 megohms minimum Resolution..............................................................................................................................................................................See recommended part numbers Environmental Characteristics1 Operating Temperature Range......................................................................................................................................................................-40 °C to +125 °C Storage Temperature Range .........................................................................................................................................................................-55 °C to +125 °C Temperature Coefficient Over Storage Temperature Range2 .........................................................................................................±50 ppm/°C maximum/unit Vibration .............................................................................................................................................................................................................................15 G Wiper Bounce ................................................................................................................................................................................0.1 millisecond maximum Shock..................................................................................................................................................................................................................................50 G Wiper Bounce ................................................................................................................................................................................0.1 millisecond maximum Load Life....................................................................................................................................................................................................1,000 hours, 2 watts Total Resistance Shift ....................................................................................................................................................................................±2 % maximum Rotational Life (No Load)................................................................................................................................................................ 1,000,000 shaft revolutions Total Resistance Shift ....................................................................................................................................................................................±5 % maximum Moisture Resistance (MIL-STD-202, Method 103, Condition B) Total Resistance Shift ....................................................................................................................................................................................±2 % maximum IP 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.) minimum Mechanical 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 ° maximum Weight ........................................................................................................................................................................................................Approximately 19 G Terminals ................................................................................................................................................................................................Solder lugs or PC pins Soldering 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 flux; 260 °C (500 °F) max. for 5 seconds Wash processes .......................................................................................................................................................................................Not recommended Marking.....................................Manufacturer’s name and part number, resistance value and tolerance, linearity tolerance, wiring diagram, and date code. Ganging (Multiple Section Potentiometers)......................................................................................................................................................1 cup maximum Hardware............................................................................................................ One lockwasher and one mounting nut is shipped with each potentiometer. NOTE: For Anti-rotation pin add 91 after configuration 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 specification 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 .029 3590P-2-202L 3590S-2-202L 3590S-1-202L 2,000 .023 3590P-2-502L 3590S-2-502L 3590S-1-502L 5,000 .025 3590P-2-103L 3590S-2-103L 3590S-1-103L 10,000 .020 3590P-2-203L 3590S-2-203L 3590S-1-203L 20,000 .019 3590P-2-503L 3590S-2-503L 3590S-1-503L 50,000 .013 3590P-2-104L 3590S-2-104L 3590S-1-104L 100,000 .009 *RoHS COM PLIANT
  • 125.
    Johnson Motor web:www.johnsonelectric.com email: sales@johnsonelectric.com40 Ø40.0–44.9mm
  • 126.
    Johnson Motor web:www.johnsonelectric.com email: sales@johnsonelectric.com41 Ø40.0–44.9mm
  • 127.
    IRF3205 HEXFET® Power MOSFET 01/25/01 AbsoluteMaximum 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 = 110A… S D G TO-220AB Advanced HEXFET® Power MOSFETs from International Rectifierutilizeadvancedprocessingtechniquestoachieve extremely low on-resistance per silicon area. This benefit, combined with the fast switching speed and ruggedized device design that HEXFET power MOSFETs arewellknownfor,providesthedesignerwithanextremely efficient and reliable device for use in a wide variety of applications. 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
  • 128.
    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 ––– ––– -100 nA 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.
  • 129.
    July 1998 ® N DIP8 (Plastic Package) D SO8 (PlasticMicropackage) 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 FREQUENCY GREATER THAN 500kHz .TIMING FROM MICROSECONDS TO HOURS .OPERATES IN BOTH ASTABLE AND MONOSTABLE MODES .HIGH OUTPUT CURRENT CAN SOURCE OR SINK 200mA .ADJUSTABLE DUTY CYCLE .TTL COMPATIBLE .TEMPERATURE STABILITY OF 0.005% PERo C ORDER CODES Part Number Temperature Range Package N D NE555 0o C, 70o C • • SA555 –40o C, 105o C • • SE555 –55o C, 125o C • • DESCRIPTION TheNE555monolithictiming circuitisahighlystable controller capableofproducing accuratetime delays or oscillation. In the time delay mode of operation, the time is precisely controlled by one external re- sistor and capacitor. For astable operation asanos- 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. The NE555 is available in plastic and ceramic minidip package and in a 8-lead micropackage and in metal can package version. NE555 SA555 - SE555 GENERAL PURPOSE SINGLE BIPOLAR TIMERS 1/10
  • 130.
    THRESHOLD COMP 5kΩ 5kΩ 5kΩ TRIGGER R FLIP-FLOP S Q DISCHARGE OUT INHIBIT/ RESET RESET COMP S - 8086 S + CONTROLVOLTAGE VCC BLOCK DIAGRAM OUTPUT CONTROL VOLTAGE THRESHOLD COMPARATOR VCC R1 4.7k R2 830 Q5 Q6 Q7 Q8 Q9 R3 4.7k R4 1k R8 5k Q1 Q2 Q3 Q4 Q10 Q11 Q12 Q13 THRESHOLD TRIGGER RESET DISCHARGE G N D 2 4 7 1 Q14 Q15 R5 10k R6 100k R7 100k R10 5k Q17 Q16 Q18 R9 5k D2 R16 100 R15 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 NE555 for SA555 for SE555 0 to 70 –40 to 105 –55 to 125 o C Tj Junction Temperature 150 o C Tstg Storage Temperature Range –65 to 150 o C NE555/SA555/SE555 2/10
  • 131.
    ELECTRICAL CHARACTERISTICS Tamb =+25o C, VCC = +5V to +15V (unless otherwise specified) Symbol Parameter SE555 NE555 - SA555 Unit Min. Typ. Max. Min. Typ. Max. ICC Supply Current (RL ∞) (- note 1) Low State VCC = +5V VCC = +15V High State VCC = 5V 3 10 2 5 12 3 10 2 6 15 mA Timing Error (monostable) (RA = 2k to 100kΩ, C = 0.1µF) Initial Accuracy - (note 2) Drift with Temperature Drift with Supply Voltage 0.5 30 0.05 2 100 0.2 1 50 0.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 Temperature Drift with Supply Voltage 1.5 90 0.15 2.25 150 0.3 % ppm/°C %/V VCL Control Voltage level VCC = +15V VCC = +5V 9.6 2.9 10 3.33 10.4 3.8 9 2.6 10 3.33 11 4 V Vth Threshold Voltage VCC = +15V VCC = +5V 9.4 2.7 10 3.33 10.6 4 8.8 2.4 10 3.33 11.2 4.2 V Ith Threshold Current - (note 3) 0.1 0.25 0.1 0.25 µA Vtrig Trigger Voltage VCC = +15V VCC = +5V 4.8 1.45 5 1.67 5.2 1.9 4.5 1.1 5 1.67 5.6 2.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 Current Vreset = +0.4V Vreset = 0V 0.1 0.4 0.4 1 0.1 0.4 0.4 1.5 mA VOL Low Level Output Voltage VCC = +15V, IO(sink) = 10mA IO(sink) = 50mA IO(sink) = 100mA IO(sink) = 200mA VCC = +5V, IO(sink) = 8mA IO(sink) = 5mA 0.1 0.4 2 2.5 0.1 0.05 0.15 0.5 2.2 0.25 0.2 0.1 0.4 2 2.5 0.3 0.25 0.25 0.75 2.5 0.4 0.35 V VOH High Level Output Voltage VCC = +15V, IO(source) = 200mA IO(source) = 100mA VCC = +5V, IO(source) = 100mA 13 3 12.5 13.3 3.3 12.75 2.75 12.5 13.3 3.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
  • 132.
    Codificação do númerodo modelo A1-214 Para baixar os dados desejados, procure o 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 lubrifica- ção M W L B C S×ℓ L1 T K N E H3 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 para nº de trilhos usados no mesmo plano (*4)Símbolo para trilho unido Aplicado apenas ao 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 de Bloco 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
  • 133.
    A1-215 GuiaLinear SR Opcionais⇒A1-473 Modelo SR-WModelo SR-V L1 L C φd2 φ d1 F N h M1 (E) 4-S×ℓ L1 L φ d2 φ d1 F N h 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 C0 MA MB MC Bloco Trilho W1 0,05 W2 M1 F d1×d2×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 lubrificaçã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
  • 134.
    133 Apendice A -Programação em C /********************************************************************** * UNIP – Universidade Paulista * Curso de Bacharelado em automação e controle *********************************************************************** *********************************************************************** * Sistema Pendulo Invertido Utilizando Lógica Fuzzy *********************************************************************** *********************************************************************** * 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 leitura da entrada análogica int output;//declaracao da variável de retorno do fuzzy int distatual;//declaracao da variável para calculo da velocidade int distanterior;//declaracao da variável para calculo da velocidade int velocidade;//declaracao da variável para armazenamento da velocidade int dist;//declaracao da variável da leitura analógica 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 como saída pinMode(10, OUTPUT);//define a porta digital 10 como saída //Inicio da configuração do fuzzy //Criando o FuzzyInput posição FuzzyInput* posicao = new FuzzyInput(1);// Como parametro seu ID // Criação das pertinencias de entrada // Criando os FuzzySet que compoem o FuzzyInput posição FuzzySet* esqG = new FuzzySet(484, 490, 490, 498); // Caindo para esquerda grande posicao->addFuzzySet(esqG); // Adicionando o FuzzySet esqG em posição FuzzySet* esqM = new FuzzySet(492, 498, 498, 504); // Caindo para esquerda medio
  • 135.
    134 posicao->addFuzzySet(esqM); // Adicionandoo FuzzySet esqM em posição FuzzySet* esqP = new FuzzySet(500, 504, 504, 508); // Caindo para esquerda pequeno posicao->addFuzzySet(esqP); // Adicionando o FuzzySet esqP em posição FuzzySet* esqMP = new FuzzySet(504, 508, 508, 512); // Caindo para esquerda muito pequeno posicao->addFuzzySet(esqMP); // Adicionando o FuzzySet esqMP em posição FuzzySet* ctr = new FuzzySet(510,512,512,514); //Centro posicao->addFuzzySet(ctr); // Adicionando o FuzzySet ctr em posição FuzzySet* dirMP = new FuzzySet(512, 516, 516, 520); // caindo para direita muito pequeno posicao->addFuzzySet(dirMP); // Adicionando o FuzzySet dirMP em posição FuzzySet* dirP = new FuzzySet(516, 520, 520, 524); // caindo para direita pequeno posicao->addFuzzySet(dirP); // Adicionando o FuzzySet dirP em posição FuzzySet* dirM = new FuzzySet(520, 526, 526, 532); // caido para direita medio posicao->addFuzzySet(dirM); // Adicionando o FuzzySet dirM em posição FuzzySet* dirG = new FuzzySet(526, 534, 534, 540); // caindo para direita grande posicao->addFuzzySet(dirG); // Adicionando o FuzzySet dirG em posição fuzzy->addFuzzyInput(posicao); // Adicionando o FuzzyInput no objeto Fuzzy //Criando o FuzzyInput vaste(velocidade da aste) FuzzyInput* vaste = new FuzzyInput(2);// Como parametro seu ID // Criando os FuzzySet que compoem o FuzzyInput posição FuzzySet* vmtbaixa = new FuzzySet(-1, 0, 0, 1); // velocidade muito baixa vaste->addFuzzySet(vmtbaixa); // Adicionando o FuzzySet vmtbaixa em vaste FuzzySet* vbaixa = new FuzzySet(0, 1, 1, 2); // velocidade baixa vaste->addFuzzySet(vbaixa); // Adicionando o FuzzySet baixa em vaste FuzzySet* vmbaixa = new FuzzySet(1, 2, 2, 3); // velocidade media baixa vaste->addFuzzySet(vmbaixa); // Adicionando o FuzzySet vmbaixa em vaste FuzzySet* vmedia = new FuzzySet(2, 4, 4, 6); // velocidade media vaste->addFuzzySet(vmedia); // Adicionando o FuzzySet vmedia em vaste FuzzySet* vmalta = new FuzzySet(5, 6, 6, 8); // velocidade media alta vaste->addFuzzySet(vmalta); // Adicionando o FuzzySet vmalta em vaste FuzzySet* valta = new FuzzySet(6, 8, 15, 15); // velocidade alta vaste->addFuzzySet(valta); // Adicionando o FuzzySet valta em vaste fuzzy->addFuzzyInput(vaste); // Adicionando o FuzzyInput no objeto Fuzzy // Criação das pertinencias de saída // Criando o FuzzyOutput velocidade (velocidade do motor FuzzyOutput* velocidade = new FuzzyOutput(1);// Como 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
  • 136.
    135 velocidade->addFuzzySet(mbaixa); // Adicionandoo 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 FuzzySet 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 velocidade da aste = muito baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaoesqgandvastevmtbaixa = new FuzzyRuleAntecedent();// Instanciando um Antecedente para a expressão posicaoesqgandvastevmtbaixa->joinWithAND(esqG, vmtbaixa);// Adicionando o FuzzySet correspondente aos objetos Antecedentes FuzzyRuleConsequent* thenvelocidadeesqgvmtbaixa = new FuzzyRuleConsequent();// Instancinado um Consequente para a expressao thenvelocidadeesqgvmtbaixa->addOutput(malta);// Adicionando o FuzzySet correspondente ao objeto Consequente // Instanciando um objeto FuzzyRule FuzzyRule* fuzzyRule1 = new FuzzyRule(1, posicaoesqgandvastevmtbaixa, thenvelocidadeesqgvmtbaixa);// Passando o Antecedente e o Consequente da expressao fuzzy->addFuzzyRule(fuzzyRule1);// Adicionando o FuzzyRule ao objeto Fuzzy // 2)FuzzyRule "SE posição = esquerda grande e velocidade da aste = baixa ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqgandvastevbaixa = new FuzzyRuleAntecedent(); posicaoesqgandvastevbaixa->joinWithAND(esqG, vbaixa); FuzzyRuleConsequent* thenvelocidademediadir = new FuzzyRuleConsequent(); thenvelocidademediadir->addOutput(alta); FuzzyRule* fuzzyRule2 = new FuzzyRule(2, posicaoesqgandvastevbaixa, thenvelocidademediadir); fuzzy->addFuzzyRule(fuzzyRule2); // 3)FuzzyRule "SE posição = esquerda grande e velocidade da aste = media baixa ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqgandvastevmbaixa = new FuzzyRuleAntecedent(); posicaoesqgandvastevmbaixa->joinWithAND(esqG, vmbaixa); FuzzyRuleConsequent* thenvelocidadeesqgvmbaixadir = new FuzzyRuleConsequent(); thenvelocidadeesqgvmbaixadir->addOutput(alta); FuzzyRule* fuzzyRule3 = new FuzzyRule(3, posicaoesqgandvastevmbaixa, thenvelocidadeesqgvmbaixadir); fuzzy->addFuzzyRule(fuzzyRule3); // 4)FuzzyRule "SE posição = esquerda grande e velocidade da aste = media ENTAO velocidade do motor = alta"
  • 137.
    136 FuzzyRuleAntecedent* posicaoesqgandvastevmedia =new FuzzyRuleAntecedent(); posicaoesqgandvastevmedia->joinWithAND(esqG, vmedia); FuzzyRuleConsequent* thenvelocidademaltadir = new FuzzyRuleConsequent(); thenvelocidademaltadir->addOutput(alta); FuzzyRule* fuzzyRule4 = new FuzzyRule(4, posicaoesqgandvastevmedia, thenvelocidademaltadir); fuzzy->addFuzzyRule(fuzzyRule4); // 5)FuzzyRule "SE posição = esquerda grande e velocidade da aste = media alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqgandvastevmalta = new FuzzyRuleAntecedent(); posicaoesqgandvastevmalta->joinWithAND(esqG, vmalta); FuzzyRuleConsequent* thenvelocidadeesgvmaltadir = new FuzzyRuleConsequent(); thenvelocidadeesgvmaltadir->addOutput(alta); FuzzyRule* fuzzyRule5 = new FuzzyRule(5, posicaoesqgandvastevmalta, thenvelocidadeesgvmaltadir); fuzzy->addFuzzyRule(fuzzyRule5); // 6)FuzzyRule "SE posição = esquerda grande e velocidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqgandvastevalta = new FuzzyRuleAntecedent(); posicaoesqgandvastevalta->joinWithAND(esqG, valta); FuzzyRuleConsequent* thenvelocidadealtadir = new FuzzyRuleConsequent(); thenvelocidadealtadir->addOutput(alta); FuzzyRule* fuzzyRule6 = new FuzzyRule(6, posicaoesqgandvastevalta, thenvelocidadealtadir); fuzzy->addFuzzyRule(fuzzyRule6); // 7)FuzzyRule "SE posição = esquerda medio e velocidade da aste = muito baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaoesqmandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaoesqmandvastevmtbaixa->joinWithAND(esqM, vmtbaixa); FuzzyRuleConsequent* thenvelocidadeesqmvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadeesqmvmtbaixa->addOutput(media); FuzzyRule* fuzzyRule7 = new FuzzyRule(7, posicaoesqmandvastevmtbaixa, thenvelocidadeesqmvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule7); // 8)FuzzyRule "SE posição = esquerda medio e velocidade da aste = baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaoesqmandvastevbaixa = new FuzzyRuleAntecedent(); posicaoesqmandvastevbaixa->joinWithAND(esqM, vbaixa); FuzzyRuleConsequent* thenvelocidadembaixadir = new FuzzyRuleConsequent(); thenvelocidadembaixadir->addOutput(malta); FuzzyRule* fuzzyRule8 = new FuzzyRule(8, posicaoesqmandvastevbaixa, thenvelocidadembaixadir); fuzzy->addFuzzyRule(fuzzyRule8); // 9)FuzzyRule "SE posição = esquerda medio e velocidade da aste = media baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaoesqmandvastevmbaixa = new FuzzyRuleAntecedent(); posicaoesqmandvastevmbaixa->joinWithAND(esqM, vmbaixa);
  • 138.
    137 FuzzyRuleConsequent* thenvelocidadeesqmvmbaixadir =new FuzzyRuleConsequent(); thenvelocidadeesqmvmbaixadir->addOutput(malta); FuzzyRule* fuzzyRule10 = new FuzzyRule(10, posicaoesqmandvastevmbaixa, thenvelocidadeesqmvmbaixadir); fuzzy->addFuzzyRule(fuzzyRule10); // 10)FuzzyRule "SE posição = esquerda medio e velocidade da aste = media ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqmandvastevmedia = new FuzzyRuleAntecedent(); posicaoesqmandvastevmedia->joinWithAND(esqM, vmedia); FuzzyRuleConsequent* thenvelocidademediadir2 = new FuzzyRuleConsequent(); thenvelocidademediadir2->addOutput(alta); FuzzyRule* fuzzyRule11 = new FuzzyRule(11, posicaoesqmandvastevmedia, thenvelocidademediadir2); fuzzy->addFuzzyRule(fuzzyRule11); // 11)FuzzyRule "SE posição = esquerda medio e velocidade da aste = media alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqmandvastevmalta = new FuzzyRuleAntecedent(); posicaoesqmandvastevmalta->joinWithAND(esqM, vmalta); FuzzyRuleConsequent* thenvelocidadeesqmvmaltadir2 = new FuzzyRuleConsequent(); thenvelocidadeesqmvmaltadir2->addOutput(alta); FuzzyRule* fuzzyRule12 = new FuzzyRule(12, posicaoesqmandvastevmalta, thenvelocidadeesqmvmaltadir2); fuzzy->addFuzzyRule(fuzzyRule12); // 12)FuzzyRule "SE posição = esquerda medio e velocidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqmandvastevalta = new FuzzyRuleAntecedent(); posicaoesqmandvastevalta->joinWithAND(esqM, valta); FuzzyRuleConsequent* thenvelocidademaltadir2 = new FuzzyRuleConsequent(); thenvelocidademaltadir2->addOutput(alta); FuzzyRule* fuzzyRule13 = new FuzzyRule(13, posicaoesqmandvastevalta, 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, vmtbaixa); FuzzyRuleConsequent* thenvelocidadeesqpvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadeesqpvmtbaixa->addOutput(mbaixa); FuzzyRule* fuzzyRule14 = new FuzzyRule(14, posicaoesqpandvastevmtbaixa, 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, vbaixa); FuzzyRuleConsequent* thenvelocidadebaixa = new FuzzyRuleConsequent(); thenvelocidadebaixa->addOutput(media);
  • 139.
    138 FuzzyRule* fuzzyRule15 =new FuzzyRule(15, posicaoesqpandvastevbaixa, 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, vmbaixa); FuzzyRuleConsequent* thenvelocidadeesqpvmbaixadir = new FuzzyRuleConsequent(); thenvelocidadeesqpvmbaixadir->addOutput(media); FuzzyRule* fuzzyRule16 = new FuzzyRule(16, posicaoesqpandvastevmbaixa, 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, vmedia); FuzzyRuleConsequent* thenvelocidadembaixa2 = new FuzzyRuleConsequent(); thenvelocidadembaixa2->addOutput(malta); FuzzyRule* fuzzyRule17 = new FuzzyRule(17, posicaoesqpandvastevmedia, 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, vmalta); FuzzyRuleConsequent* thenvelocidadeesqpvmaltadir = new FuzzyRuleConsequent(); thenvelocidadeesqpvmaltadir->addOutput(malta); FuzzyRule* fuzzyRule18 = new FuzzyRule(18, posicaoesqpandvastevmalta, thenvelocidadeesqpvmaltadir); fuzzy->addFuzzyRule(fuzzyRule18); // 18)FuzzyRule "SE posição = esquerda pequeno e velocidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaoesqpandvastevalta = new FuzzyRuleAntecedent(); posicaoesqpandvastevalta->joinWithAND(esqP, valta); FuzzyRuleConsequent* thenvelocidademedia3 = new FuzzyRuleConsequent(); thenvelocidademedia3->addOutput(alta); FuzzyRule* fuzzyRule19 = new FuzzyRule(19, posicaoesqpandvastevalta, thenvelocidademedia3); fuzzy->addFuzzyRule(fuzzyRule19); // 19)FuzzyRule "SE posição = esquerda muito pequeno 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, posicaoesqmpandvastevmtbaixa, thenvelocidadeesqmpvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule20);
  • 140.
    139 // 20)FuzzyRule "SEposição = esquerda muito pequeno e velocidade da aste = baixa ENTAO velocidade do motor = baixa" FuzzyRuleAntecedent* posicaoesqmpandvastevbaixa = new FuzzyRuleAntecedent(); posicaoesqmpandvastevbaixa->joinWithAND(esqMP, vbaixa); FuzzyRuleConsequent* thenvelocidadeesqmpvbaixa = new FuzzyRuleConsequent(); thenvelocidadeesqmpvbaixa->addOutput(baixa); FuzzyRule* fuzzyRule21 = new FuzzyRule(21, posicaoesqmpandvastevbaixa, thenvelocidadeesqmpvbaixa); fuzzy->addFuzzyRule(fuzzyRule21); // 21)FuzzyRule "SE posição = esquerda muito pequeno e velocidade da aste = media baixa ENTAO velocidade do motor = media baixa" FuzzyRuleAntecedent* posicaoesqmpandvastevmbaixa = new FuzzyRuleAntecedent(); posicaoesqmpandvastevmbaixa->joinWithAND(esqMP, vmbaixa); FuzzyRuleConsequent* thenvelocidadeesqmpvmbaixadir = new FuzzyRuleConsequent(); thenvelocidadeesqmpvmbaixadir->addOutput(mbaixa); FuzzyRule* fuzzyRule22 = new FuzzyRule(22, posicaoesqmpandvastevmbaixa, thenvelocidadeesqmpvmbaixadir); fuzzy->addFuzzyRule(fuzzyRule22); // 22)FuzzyRule "SE posição = esquerda muito pequeno e velocidade da aste = media ENTAO velocidade do motor = media baixa" FuzzyRuleAntecedent* posicaoesqmpandvastevmedia = new FuzzyRuleAntecedent(); posicaoesqmpandvastevmedia->joinWithAND(esqMP, vmedia); FuzzyRuleConsequent* thenvelocidadeesqmpvmedia = new FuzzyRuleConsequent(); thenvelocidadeesqmpvmedia->addOutput(mbaixa); FuzzyRule* fuzzyRule23 = new FuzzyRule(23, posicaoesqmpandvastevmedia, thenvelocidadeesqmpvmedia); fuzzy->addFuzzyRule(fuzzyRule23); // 23)FuzzyRule "SE posição = esquerda muito pequeno e velocidade da aste = media alta ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaoesqmpandvastevmalta = new FuzzyRuleAntecedent(); posicaoesqmpandvastevmalta->joinWithAND(esqMP, vmalta); FuzzyRuleConsequent* thenvelocidadeesqmpvmaltadir = new FuzzyRuleConsequent(); thenvelocidadeesqmpvmaltadir->addOutput(media); FuzzyRule* fuzzyRule24 = new FuzzyRule(24, posicaoesqmpandvastevmalta, thenvelocidadeesqmpvmaltadir); fuzzy->addFuzzyRule(fuzzyRule24); // 24)FuzzyRule "SE posição = esquerda muito pequeno e velocidade da aste = alta ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaoesqmpandvastevalta = new FuzzyRuleAntecedent(); posicaoesqmpandvastevalta->joinWithAND(esqMP, valta); FuzzyRuleConsequent* thenvelocidadeesqmpvalta = new FuzzyRuleConsequent(); thenvelocidadeesqmpvalta->addOutput(media); FuzzyRule* fuzzyRule25 = new FuzzyRule(25, posicaoesqmpandvastevalta, thenvelocidadeesqmpvalta); fuzzy->addFuzzyRule(fuzzyRule25);
  • 141.
    140 // 25)FuzzyRule "SEposição = centro e velocidade da aste = muito baixa ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaoctrandvastevmtbaixa->joinWithAND(ctr, vmtbaixa); FuzzyRuleConsequent* thenvelocidadectrvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadectrvmtbaixa->addOutput(mtbaixa); FuzzyRule* fuzzyRule26 = new FuzzyRule(26, posicaoctrandvastevmtbaixa, thenvelocidadectrvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule26); // 26)FuzzyRule "SE posição = centro e velocidade da aste = baixa ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevbaixa = new FuzzyRuleAntecedent(); posicaoctrandvastevbaixa->joinWithAND(ctr, vbaixa); FuzzyRuleConsequent* thenvelocidadebaixa2 = new FuzzyRuleConsequent(); thenvelocidadebaixa2->addOutput(mtbaixa); FuzzyRule* fuzzyRule27 = new FuzzyRule(27, posicaoctrandvastevbaixa, 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, vmbaixa); FuzzyRuleConsequent* thenvelocidadectrvmbaixa = new FuzzyRuleConsequent(); thenvelocidadectrvmbaixa->addOutput(mtbaixa); FuzzyRule* fuzzyRule28 = new FuzzyRule(28, posicaoctrandvastevmbaixa, thenvelocidadectrvmbaixa); fuzzy->addFuzzyRule(fuzzyRule28); // 28)FuzzyRule "SE posição = centro e velocidade da aste = media ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevmedia = new FuzzyRuleAntecedent(); posicaoctrandvastevmedia->joinWithAND(ctr, vmedia); FuzzyRuleConsequent* thenvelocidadebaixa3 = new FuzzyRuleConsequent(); thenvelocidadebaixa3->addOutput(mtbaixa); FuzzyRule* fuzzyRule29 = new FuzzyRule(29, posicaoctrandvastevmedia, thenvelocidadebaixa3); fuzzy->addFuzzyRule(fuzzyRule29); // 29)FuzzyRule "SE posição = centro e velocidade da aste = muito baixa ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevmalta = new FuzzyRuleAntecedent(); posicaoctrandvastevmalta->joinWithAND(ctr, vmalta); FuzzyRuleConsequent* thenvelocidadectrvmalta = new FuzzyRuleConsequent(); thenvelocidadectrvmalta->addOutput(mtbaixa); FuzzyRule* fuzzyRule30 = new FuzzyRule(30, posicaoctrandvastevmalta, thenvelocidadectrvmalta); fuzzy->addFuzzyRule(fuzzyRule30); // 30)FuzzyRule "SE posição = centro e velocidade da aste = alta ENTAO velocidade do motor = muito baixa" FuzzyRuleAntecedent* posicaoctrandvastevalta = new FuzzyRuleAntecedent(); posicaoctrandvastevalta->joinWithAND(ctr, valta);
  • 142.
    141 FuzzyRuleConsequent* thenvelocidadembaixa3 =new FuzzyRuleConsequent(); thenvelocidadembaixa3->addOutput(mtbaixa); FuzzyRule* fuzzyRule31 = new FuzzyRule(31, posicaoctrandvastevalta, thenvelocidadembaixa3); fuzzy->addFuzzyRule(fuzzyRule31); // 31)FuzzyRule "SE posição = direita muito pequeno 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, posicaodirmpandvastevmtbaixa, thenvelocidadedirmpvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule32); // 32)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste = baixa ENTAO velocidade do motor = baixa" FuzzyRuleAntecedent* posicaodirmpandvastevbaixa = new FuzzyRuleAntecedent(); posicaodirmpandvastevbaixa->joinWithAND(dirMP, vbaixa); FuzzyRuleConsequent* thenvelocidadedirmpvbaixa = new FuzzyRuleConsequent(); thenvelocidadedirmpvbaixa->addOutput(baixa); FuzzyRule* fuzzyRule33 = new FuzzyRule(33, posicaodirmpandvastevbaixa, thenvelocidadedirmpvbaixa); fuzzy->addFuzzyRule(fuzzyRule33); // 33)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste = media baixa ENTAO velocidade do motor = media baixa" FuzzyRuleAntecedent* posicaodirmpandvastevmbaixa = new FuzzyRuleAntecedent(); posicaodirmpandvastevmbaixa->joinWithAND(dirMP, vmbaixa); FuzzyRuleConsequent* thenvelocidadedirmpvmbaixaesq = new FuzzyRuleConsequent(); thenvelocidadedirmpvmbaixaesq->addOutput(mbaixa); FuzzyRule* fuzzyRule34 = new FuzzyRule(34, posicaodirmpandvastevmbaixa, thenvelocidadedirmpvmbaixaesq); fuzzy->addFuzzyRule(fuzzyRule34); // 34)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste = media ENTAO velocidade do motor = media baixa" FuzzyRuleAntecedent* posicaodirmpandvastevmedia = new FuzzyRuleAntecedent(); posicaodirmpandvastevmedia->joinWithAND(dirMP, vmedia); FuzzyRuleConsequent* thenvelocidadedirmpvmedia = new FuzzyRuleConsequent(); thenvelocidadedirmpvmedia->addOutput(mbaixa); FuzzyRule* fuzzyRule35 = new FuzzyRule(35, posicaodirmpandvastevmedia, thenvelocidadedirmpvmedia); fuzzy->addFuzzyRule(fuzzyRule35); // 35)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste = media alta ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirmpandvastevmalta = new FuzzyRuleAntecedent(); posicaodirmpandvastevmalta->joinWithAND(dirMP, vmalta); FuzzyRuleConsequent* thenvelocidadedirmpvmaltaesq = new FuzzyRuleConsequent();
  • 143.
    142 thenvelocidadedirmpvmaltaesq->addOutput(media); FuzzyRule* fuzzyRule36 =new FuzzyRule(36, posicaodirmpandvastevmalta, thenvelocidadedirmpvmaltaesq); fuzzy->addFuzzyRule(fuzzyRule36); // 36)FuzzyRule "SE posição = direita muito pequeno e velocidade da aste = alta ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirmpandvastevalta = new FuzzyRuleAntecedent(); posicaodirmpandvastevalta->joinWithAND(dirMP, valta); FuzzyRuleConsequent* thenvelocidadedirmpvalta = new FuzzyRuleConsequent(); thenvelocidadedirmpvalta->addOutput(media); FuzzyRule* fuzzyRule37 = new FuzzyRule(37, posicaodirmpandvastevalta, thenvelocidadedirmpvalta); fuzzy->addFuzzyRule(fuzzyRule37); // 37)FuzzyRule "SE posição = direita pequeno e velocidade da aste = muito baixa ENTAO velocidade do motor = media baixa" FuzzyRuleAntecedent* posicaodirpandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaodirpandvastevmtbaixa->joinWithAND(dirP, vmtbaixa); FuzzyRuleConsequent* thenvelocidadedirpvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadedirpvmtbaixa->addOutput(mbaixa); FuzzyRule* fuzzyRule38 = new FuzzyRule(38, posicaodirpandvastevmtbaixa, thenvelocidadedirpvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule38); // 38)FuzzyRule "SE posição = direita pequeno e velocidade da aste = baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirpandvastevbaixa = new FuzzyRuleAntecedent(); posicaodirpandvastevbaixa->joinWithAND(dirP, vbaixa); FuzzyRuleConsequent* thenvelocidadebaixaesq = new FuzzyRuleConsequent(); thenvelocidadebaixaesq->addOutput(media); FuzzyRule* fuzzyRule39 = new FuzzyRule(39, posicaodirpandvastevbaixa, thenvelocidadebaixaesq); fuzzy->addFuzzyRule(fuzzyRule39); // 39)FuzzyRule "SE posição = direita pequeno e velocidade da aste = media baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirpandvastevmbaixa = new FuzzyRuleAntecedent(); posicaodirpandvastevmbaixa->joinWithAND(dirP, vmbaixa); FuzzyRuleConsequent* thenvelocidadedirpvmbaixaesq = new FuzzyRuleConsequent(); thenvelocidadedirpvmbaixaesq->addOutput(media); FuzzyRule* fuzzyRule40 = new FuzzyRule(40, posicaodirpandvastevmbaixa, thenvelocidadedirpvmbaixaesq); fuzzy->addFuzzyRule(fuzzyRule40); // 40)FuzzyRule "SE posição = direita pequeno e velocidade da aste = media ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaodirpandvastevmedia = new FuzzyRuleAntecedent(); posicaodirpandvastevmedia->joinWithAND(dirP, vmedia); FuzzyRuleConsequent* thenvelocidadembaixaesq = new FuzzyRuleConsequent(); thenvelocidadembaixaesq->addOutput(malta); FuzzyRule* fuzzyRule41 = new FuzzyRule(41, posicaodirpandvastevmedia, thenvelocidadembaixaesq);
  • 144.
    143 fuzzy->addFuzzyRule(fuzzyRule41); // 41)FuzzyRule "SEposição = direita pequeno e velocidade da aste = media alta ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaodirpandvastevmalta = new FuzzyRuleAntecedent(); posicaodirpandvastevmalta->joinWithAND(dirP, vmalta); FuzzyRuleConsequent* thenvelocidadedirpvmaltaesq = new FuzzyRuleConsequent(); thenvelocidadedirpvmaltaesq->addOutput(malta); FuzzyRule* fuzzyRule42 = new FuzzyRule(42, posicaodirpandvastevmalta, thenvelocidadedirpvmaltaesq); fuzzy->addFuzzyRule(fuzzyRule42); // 42)FuzzyRule "SE posição = direita pequeno e velocidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirpandvastevalta = new FuzzyRuleAntecedent(); posicaodirpandvastevalta->joinWithAND(dirP, valta); FuzzyRuleConsequent* thenvelocidademediaesq = new FuzzyRuleConsequent(); thenvelocidademediaesq->addOutput(alta); FuzzyRule* fuzzyRule43 = new FuzzyRule(43, posicaodirpandvastevalta, thenvelocidademediaesq); fuzzy->addFuzzyRule(fuzzyRule43); // 43)FuzzyRule "SE posição = direita medio e velocidade da aste = muito baixa ENTAO velocidade do motor = media" FuzzyRuleAntecedent* posicaodirmandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaodirmandvastevmtbaixa->joinWithAND(dirM, vmtbaixa); FuzzyRuleConsequent* thenvelocidadedirmvmtbaixa = new FuzzyRuleConsequent(); thenvelocidadedirmvmtbaixa->addOutput(media); FuzzyRule* fuzzyRule44 = new FuzzyRule(44, posicaodirmandvastevmtbaixa, thenvelocidadedirmvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule44); // 44)FuzzyRule "SE posição = direita medio e velocidade da aste = baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaodirmandvastevbaixa = new FuzzyRuleAntecedent(); posicaodirmandvastevbaixa->joinWithAND(dirM, vbaixa); FuzzyRuleConsequent* thenvelocidadembaixaesq2 = new FuzzyRuleConsequent(); thenvelocidadembaixaesq2->addOutput(malta); FuzzyRule* fuzzyRule45 = new FuzzyRule(45, posicaodirmandvastevbaixa, thenvelocidadembaixaesq2); fuzzy->addFuzzyRule(fuzzyRule45); // 45)FuzzyRule "SE posição = direita medio e velocidade da aste = media baixa ENTAO velocidade do motor = media alta" FuzzyRuleAntecedent* posicaodirmandvastevmbaixa = new FuzzyRuleAntecedent(); posicaodirmandvastevmbaixa->joinWithAND(dirM, vmbaixa); FuzzyRuleConsequent* thenvelocidadedirmvmbaixaesq = new FuzzyRuleConsequent(); thenvelocidadedirmvmbaixaesq->addOutput(malta); FuzzyRule* fuzzyRule46 = new FuzzyRule(46, posicaodirmandvastevmbaixa, thenvelocidadedirmvmbaixaesq); fuzzy->addFuzzyRule(fuzzyRule46);
  • 145.
    144 // 46)FuzzyRule "SEposição = direita medio e velocidade da aste = media ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirmandvastevmedia = new FuzzyRuleAntecedent(); posicaodirmandvastevmedia->joinWithAND(dirM, vmedia); FuzzyRuleConsequent* thenvelocidademediaesq2 = new FuzzyRuleConsequent(); thenvelocidademediaesq2->addOutput(alta); FuzzyRule* fuzzyRule47 = new FuzzyRule(47, posicaodirmandvastevmedia, thenvelocidademediaesq2); fuzzy->addFuzzyRule(fuzzyRule47); // 47)FuzzyRule "SE posição = direita medio e velocidade da aste = media alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirmandvastevmalta = new FuzzyRuleAntecedent(); posicaodirmandvastevmalta->joinWithAND(dirM, vmalta); FuzzyRuleConsequent* thenvelocidadedirmvmaltaesq= new FuzzyRuleConsequent(); thenvelocidadedirmvmaltaesq->addOutput(alta); FuzzyRule* fuzzyRule48 = new FuzzyRule(48, posicaodirmandvastevmalta, thenvelocidadedirmvmaltaesq); fuzzy->addFuzzyRule(fuzzyRule48); // 48)FuzzyRule "SE posição = direita medio e velocidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirmandvastevalta = new FuzzyRuleAntecedent(); posicaodirmandvastevalta->joinWithAND(dirM, valta); FuzzyRuleConsequent* thenvelocidademaltaesq= new FuzzyRuleConsequent(); thenvelocidademaltaesq->addOutput(alta); FuzzyRule* fuzzyRule49 = new FuzzyRule(49, posicaodirmandvastevalta, thenvelocidademaltaesq); fuzzy->addFuzzyRule(fuzzyRule49); // 49)FuzzyRule "SE posição = direita grande e velocidade da aste = muito baixa ENTAO velocidade do motor = malta" FuzzyRuleAntecedent* posicaodirgandvastevmtbaixa = new FuzzyRuleAntecedent(); posicaodirgandvastevmtbaixa->joinWithAND(dirG, vmtbaixa); FuzzyRuleConsequent* thenvelocidadedirgvmtbaixa= new FuzzyRuleConsequent(); thenvelocidadedirgvmtbaixa->addOutput(malta); FuzzyRule* fuzzyRule50 = new FuzzyRule(50, posicaodirgandvastevmtbaixa, thenvelocidadedirgvmtbaixa); fuzzy->addFuzzyRule(fuzzyRule50); // 50)FuzzyRule "SE posição = direita grande e velocidade da aste = baixa ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevbaixa = new FuzzyRuleAntecedent(); posicaodirgandvastevbaixa->joinWithAND(dirG, vbaixa); FuzzyRuleConsequent* thenvelocidademediaesq3= new FuzzyRuleConsequent(); thenvelocidademediaesq3->addOutput(alta); FuzzyRule* fuzzyRule51 = new FuzzyRule(51, posicaodirgandvastevbaixa, thenvelocidademediaesq3); fuzzy->addFuzzyRule(fuzzyRule51); // 51)FuzzyRule "SE posição = direita grande e velocidade da aste = media baixa ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevmbaixa = new FuzzyRuleAntecedent();
  • 146.
    145 posicaodirgandvastevmbaixa->joinWithAND(dirG, vmbaixa); FuzzyRuleConsequent* thenvelocidadedirgvmbaixaesq=new FuzzyRuleConsequent(); thenvelocidadedirgvmbaixaesq->addOutput(alta); FuzzyRule* fuzzyRule52 = new FuzzyRule(52, posicaodirgandvastevmbaixa, thenvelocidadedirgvmbaixaesq); fuzzy->addFuzzyRule(fuzzyRule52); // 52)FuzzyRule "SE posição = direita grande e velocidade da aste = media ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevmedia = new FuzzyRuleAntecedent(); posicaodirgandvastevmedia->joinWithAND(dirG, vmedia); FuzzyRuleConsequent* thenvelocidademaltaesq2= new FuzzyRuleConsequent(); thenvelocidademaltaesq2->addOutput(alta); FuzzyRule* fuzzyRule53 = new FuzzyRule(53, posicaodirgandvastevmedia, thenvelocidademaltaesq2); fuzzy->addFuzzyRule(fuzzyRule53); // 53)FuzzyRule "SE posição = direita grande e velocidade da aste = media alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevmalta = new FuzzyRuleAntecedent(); posicaodirgandvastevmalta->joinWithAND(dirG, vmalta); FuzzyRuleConsequent* thenvelocidadedirgvmalta= new FuzzyRuleConsequent(); thenvelocidadedirgvmalta->addOutput(alta); FuzzyRule* fuzzyRule54 = new FuzzyRule(54, posicaodirgandvastevmalta, thenvelocidadedirgvmalta); fuzzy->addFuzzyRule(fuzzyRule54); // 54)FuzzyRule "SE posição = direita grande e velocidade da aste = alta ENTAO velocidade do motor = alta" FuzzyRuleAntecedent* posicaodirgandvastevalta = new FuzzyRuleAntecedent(); posicaodirgandvastevalta->joinWithAND(dirG, valta); FuzzyRuleConsequent* thenvelocidadealtaesq= new FuzzyRuleConsequent(); thenvelocidadealtaesq->addOutput(alta); FuzzyRule* fuzzyRule55 = new FuzzyRule(55, posicaodirgandvastevalta, thenvelocidadealtaesq); fuzzy->addFuzzyRule(fuzzyRule55); } // Início do programa principal void loop(){ distatual = analogRead(sensorPin);//leitura do potenciometro para calculo da velocidade dist = analogRead(sensorPin);//leitura do potenciometro 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 fuzzyficação 2 velocidade fuzzy->fuzzify(); //Executar a desfuzzyficação para cada saída, passando seu ID output = fuzzy->defuzzify(1);//Executar a defuzzificação 1 e quardar na variável output //Cobdição para aplicação do PWM if (dist < 511) { //Se pendulo cair para esquerda
  • 147.
    146 analogWrite(9, output);//Aplica ovalor de output 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 direita 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 mantendo o pendulo parado analogWrite(9, 0);//Aplica 0 na saída PWM 9 mantendo o pendulo parado } } velocidade = abs(distatual-distanterior);//Calculo da velocidade distanterior = distatual;//quarda o valor da leitura do potenciometro em uma nova variavel delay(40);//delay de 40ms }//Fim do programa
  • 148.
    ! "# $%&' ()$$%&' ()$ *+,-(.+ ! " # $ $ $ $ "! "
  • 149.
  • 150.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A3 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 1 DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 620 240 874 780 1150 200 MONTAGEM MECÂNICA DO PROJETO
  • 151.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A3 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 2 DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 David LunaDavid Luna Prof. Hugo POS. QUANT. NOMENCLATURA MATERIAL/FABRIC. 01 01 MONTAGEM DA CAIXA DE REDUÇÃO CONF. DESENHO MONTAGEM 02 01 HASTE DO PÊNDULO AÇO PRATA RETIFICADO 03 05 MASSOR LATÃO USINADO 04 01 BASE DO PÊNDULO ALUMÍNIO JATO GRANALHA 05 01 SUPORTE DO MOTOR ALUMÍNIO JATO GRANALHA 06 02 BASE LATERAL ALUMÍNIO JATO GRANALHA 07 02 PLACA LATERAL JATO GRANALHA 08 01 ENGRENAGEM DO MOTOR AÇO 1045/ATI BRASIL SEM TRAT. 09 01 CREMALHEIRA SEM TRAT. 10 01 TRILHO THK SR20W COMERCIAL 11 02 PATIN THK SR20W COMERCIAL 12 02 CONF. DESENHO 13 01 PERFIL 40x80x1000mm ALLPERF 14 02 PERFIL 40x80x160mm ALLPERF 15 02 PERFIL 40x80x200mm ALLPERF COMERCIAL 16 04 PAMPA 40x80 ALLPERF 17 02 GRAXETA THK COMERCIAL CONJUNTO DO AMORTECEDOR MONTAGEM COMERCIAL COMERCIAL COMERCIAL TRATAMENTO UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃ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 912 19 04 PARAFUSO M6x25 DIN 912 20 26 PARAFUSO M5x16 DIN 912 21 04 PARAFUSO M5x25 DIN 912 COMERCIAL 22 02 PARAFUSO M4x20 DIN 912 23 04 PINO GUIA PARALELO Ø4x20MM ISO 8734 COMERCIAL PARAFUSO M6x16 COMERCIAL COMERCIAL COMERCIAL COMERCIAL 18 18 18 18 19 19 19 19 20 20 20 20 21 22 23 23 24 02 PARAFUSO SEM CABEÇA M4x6mm DIN 913 COMERCIAL MONTAGEM MECÂNICA DO PROJETO
  • 152.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 3 DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 109 85 113153 01 01 CAIXA DE REDUÇÃO CONF. DESENHO CONF. DESENHO MONTAGEM MECÂNICA DO PROJETO
  • 153.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A3 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 4 DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 David LunaDavid Luna Prof. 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.9 1.11 1.11 1.11 1.12 1.13 14.1 1.14 1.15 1.16 1.11 MATERIAL/FABRIC. 1.1 02 MANCAL DOS ROLAMENTOS POLICARBONATO POLIDO 1.2 02 MANCAL LATERAL POLICARBONATO POLIDO 1.3 01 BASE DOS MANCAIS POLICARBONATO POLIDO 1.4 01 EIXO DO PÊNDULO AÇO VND RETIFICADO 1.5 01 EIXO DO POTENCIÔMETRO AÇO VND RETIFICADO 1.6 01 SUPORTE DO POTENCIÔMETRO ALUMINIO JATO GRANALHA 1.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-6 1.10 04 ROLAMENTO SKF 6001-2Z COMERCIAL 1.11 14 PARAFUSO ALLEN CABEÇA SEXTAVADA DIN 912 OXIDAÇÃO NEGRA 1.12 01 DIN 912 1.13 04 PARAFUSO ALLEN CABEÇA ABAULADA ISO 7380 1.14 04 PARAFUSO ALLEN SEM CABEÇA DIN 913 1.15 10 ANÉL DE RETENÇÃO DIN 6799 FOSFATIZADO 1.3 1.17 1.16 02 CHAVETA 4x4x7 DIN 6885 1.17 01 POTENCIÔMETRO 10 VOLTAS BAOTER COMERCIAL PARAFUSO ALLEN CABEÇA SEXTAVADA OXIDAÇÃO NEGRA OXIDAÇÃO NEGRA OXIDAÇÃO NEGRA FOSFATIZADO TRATAMENTO UNIPCAMPUSMARQUÊS-ENGENHARIADECONTROLEEAUTOMAÇÃO AÇO 1045/ATI BRASIL MONTAGEM MECÂNICA DO PROJETO
  • 154.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 5 DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA A A CORTE A-A 4M (6x) 45 0 42 81,5 105 0 O28 +0,01 -0,00 (2x) 4,5O (3x) 4,5 (3x) 69 7O (3x) 8 0 12 34,5 57 69 1.1 02 MANCAL DOS ROLAMENTOS POLICARBONATO POLIDO 12 15 0 8 61 69 22 84 42 105 MONTAGEM MECÂNICA DO PROJETO
  • 155.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 6 DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 1.2 02 MANCAL LATERAL POLICARBONATO POLIDO 7,5O(4x) 4,5O(4x) 0 4 57 61 105 0 22 84 105 53 8 4,5(4x) MONTAGEM MECÂNICA DO PROJETO
  • 156.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 7 DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 1.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
  • 157.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 8 DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 1.4 01 EIXO DO PÊNDULO AÇO VND RETIFICADO 4,7 8 12,4 20,4 8 6,5`2mm R2 7 1,3(5x) 107 67 O20 O8H7 12-0,01 -0,02O 12 11O(5x) 40 0,5 X 45° (3x) 5M RETITIFICAR MONTAGEM MECÂNICA DO PROJETO
  • 158.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 9 DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 1.5 01 EIXO DO POTENCIÔMETRO AÇO VND RETIFICADO 1,3(5x) 20,4 6,5`2mm R2 8 12,4 2 87 RETITIFICAR 5 0,5 X 45° (4x) 64,3 77,3 8 11O(5x)12-0,01 -0,02O O20 DETALHE A 60° 3 6g6O MONTAGEM MECÂNICA DO PROJETO
  • 159.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 10DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 1.6 01 SUPORTE DO POTENCIÔMETRO ALUMÍNIO JATO GRANALHA B B CORTE B-B 0 20 65 85 0 4 57 61 95 44 4 R12,5 25,5 44 R4,5 4 91 R10(2x) 25 4 R2 30 MONTAGEM MECÂNICA DO PROJETO
  • 160.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 11DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 1.7 01 ENGRENAGEM 19 DENTES AÇO 1045 SEM TRAT. C C CORTE C-C 4 O12H7 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
  • 161.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 12DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 1.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 D CORTE D-D 4 20 14 O12H7 1 X 45° 5 7 MONTAGEM MECÂNICA DO PROJETO
  • 162.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 13DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 02 01 HASTE DO PÊNDULO AÇO PRATA RETIFICADO 560 O8g6 MONTAGEM MECÂNICA DO PROJETO
  • 163.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 14DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 03 05 MASSOR LATÃO USINADO E E CORTE E-E 10 0,5 X 45° 4M (2x) O8H7 25O MONTAGEM MECÂNICA DO PROJETO
  • 164.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 15DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 04 01 BASE DO PÊNDULO ALUMÍNIO JATO GRANALHA F F CORTE F-F 0 15 47 62,5 78 110 125 0 15 47 57,75 110 0 15 47 110 9,5O (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 12 15 5M (4x) MONTAGEM MECÂNICA DO PROJETO
  • 165.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 16DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 05 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 0 6,75 45,5 67O18 9,5O (4x) 5,5O (4x) 7,5O(4x) O4,5(2x) 13,5 15 50 R10(4x) MONTAGEM MECÂNICA DO PROJETO
  • 166.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 17DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 06 02 BASE LATERAL ALUMÍNIO JATO GRANALHA I I CORTE I-I 0 15 25 55 65 80 20 7,5 15 O5H7`15 (2x) 60 6M (4x) 0 35 12 15 50 60 MONTAGEM MECÂNICA DO PROJETO
  • 167.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 18DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 07 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) O10,5 (2x) O5(2x) 6,5O(2x) 15 MONTAGEM MECÂNICA DO PROJETO
  • 168.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 19DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 08 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 5H7O 13 25 6 90° 4M (2x) 12 MONTAGEM MECÂNICA DO PROJETO
  • 169.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 20DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 09 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,5O (5x) MONTAGEM MECÂNICA DO PROJETO
  • 170.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 21DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 96,5 34 46,5 64 88,5 51 16Mx1 19 12 02 CONJUNTO DO AMORTECEDOR CONF. DESENHO CONF. DESENHO MONTAGEM MECÂNICA DO PROJETO
  • 171.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A3 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 22DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOCÓDIGO/FABRIC.NOMENCLATURA 12.112.2 12.3 12.4 12.4 12.3 12.1 12.2 12.3 12.4 02 02 04 04 SUPORTE DO AMORTECEDOR AMORTECEDOR YSR-12-12-C PORCA DO AMORTECEDOR PARAFUSO M6x20 ALUMÍNIO FESTO FESTO DIN 912 JATO DE GRANALHA OXID. NEGRA NIQUEL QUIMICO NIQUEL QUIMICO UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO MONTAGEM MECÂNICA DO PROJETO
  • 172.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 23DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA A A CORTE A-A 45 34 15 O16M x1 8X45° 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
  • 173.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 24DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA MONTAGEM MECÂNICA DO PROJETO 13 01 PERFIL ALUMÍNIO ANODIZADO 1000 80 40
  • 174.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 25DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA MONTAGEM MECÂNICA DO PROJETO 14 02 PERFIL ALUMÍNIO ANODIZADO 80 160 40
  • 175.
    PROJETISTA REVISADO APROVADO NOME JOAO CLAUDIO DATA 16/10/13 TITULO: SIZE A4 DESCRIÇÃO: REV TRABALHODE CONCLUSÃO DE CURSO 2013 ESCALA: FOLHA 26DE 26 HISTÓRICO DE REVISÃO REV DESCRIÇÃO DATA APROVAÇÃO CONTROLE DE PÊNDULO INVERTIDO POR LÓGICA NEBULOSA FUZZY 16/10/13 16/10/13 UNIPCAMPUSMARQUÊS_ENGENHARIADECONTROLEEAUTOMAÇÃO David LunaDavid Luna Prof. Hugo POS. QUANT. TRATAMENTOMATERIALNOMENCLATURA 200 15 02 PERFIL ALUMÍNIO ANODIZADO MONTAGEM MECÂNICA DO PROJETO 80 40