Académique Documents
Professionnel Documents
Culture Documents
CENTRO DE TECNOLOGIA
TRABALHO FINAL DE CURSO EM ENGENHARIA ELÉTRICA
FORTALEZA
JUNHO 2010
ii
Fortaleza
Junho 2010
iv
DEDICATÓRIA
AGRADECIMENTOS
Aos meus amigos que construí durante essa árdua batalha de aprendizado e crescimento.
Ao Meu orientador, Prof. Dr. Arthur Plínio de Souza Braga, pelo seu incentivo na realização
deste trabalho e pela paciência, compreensão e atenciosidade. A você minha admiração e
agradecimentos.
Aos professores Otacílio da Mota Almeida, José Carlos, Ranoyca Nayana Alencar Leão e
Silva, e Demercil de Souza Oliveira Júnior, e ao mestrando Davi Nunes Oliveira que contribuíram
direta ou indiretamente para que eu conseguisse concluir este trabalho.
vi
Bezerra, M.S. “PROJETO, IMPLEMENTAÇÃO E ENSAIOS DE UM CONTROLADOR PID
UTILIZANDO FPGA”. Universidade Federal do Ceará – UFC, 2010.
RESUMO
ABSTRACT
With the growth of automation industry, and with new emerging technologies, competitive
market brings the need for new solutions that facilitate rapid adaptation to new demands. A digital
controller is an essential tool in almost all industrial plants, being implemented on different
hardware platforms such as microcontrollers and PLCs. An attractive alternative for implementing
digital controller that have been gaining increasing interest are the FPGAs (Field Programmable
Gate Array). These programmable logic devices that compete directly with ASICs (Application
Specific Integrated Circuit), have great versatility in implementation of complex digital systems,
and low power consumption. This paper realizes the implementation of a PID (Proportional-
Integral-Derivative) digital in a Cyclone II FPGA family to control a nonlinear plant test: a damped
pendulum. This plant consists of a motor fixed on a rotating rod, and the controller must maintain
this stable stem at an angle predetermined with respect to the ground - the controller designed and
implemented acts on the drive motor through a PWM (Pulse Width Modulation). As data of an
FPGA are digital, it uses an AD converter to translate analog data measures the angle of the rod to
the digital format. Details about the project, the plant, interfacing with the FPGA and testing are
presented throughout the chapters in this monograph. The theoretical part used in the project, which
involves the areas of Linear Systems, Control and Digital Electronics, is described in the opening
chapters. The results are presented through the development environments and MATLAB ®
Quartus ® II.
viii
SUMÁRIO
LISTA DE TABELAS............................................................................................................ ix
LISTA DE FIGURAS............................................................................................................. x
CAPÍTULO 1.
1.1 ORGANIZAÇÃO DO TRABALHO................................................................................. 2
CAPÍTULO 2.
2. O CONTROLADOR PID ...................................................................................................... 3
2.1 INTRODUÇÃO.................................................................................................................... 3
2.2 SINTONIA DO CONTROLADOR...................................................................................... 5
2.3 PID DISCRETO.................................................................................................................... 8
2.4 IMPLEMENTAÇÕES EM HARDWARE DO CONTROLADOR PID........................... 10
2.5 COMENTÁRIOS FINAIS.................................................................................................. 10
CAPÍTULO 3.
3. DISPOSITIVOS LÓGICOS PROGRAMÁVEIS................................................................. 16
3.1 INTRODUÇÃO.................................................................................................................. 16
3.2 PROGRAMAÇÃO DOS DISPOSITIVOS......................................................................... 22
3.3 PROTOTIPAGEM ............................................................................................................. 22
3.4 FAMÍLIA CICLONE II & FPGA....................................................................................... 24
3.5 CONCLUSÃO ................................................................................................................... 30
CAPÍTULO 4.
4.EXPERIMENTOS E RESULTADOS................................................................................... 31
4.1 DESCRIÇÃO DA PLANTA...............................................................................................31
4.2 ENSAIOS PARA IDENTIFICAÇÃO................................................................................. 35
4.3 ENSAIOS PID.....................................................................................................................36
4.4 ENSAIOS FPGA.................................................................................................................43
4.5 COMENTÁRIOS FINAIS.................................................................................................. 47
CAPÍTULO 5.
5.1 CONCLUSÕES...................................................................................................................48
REFERÊNCIAS BIBLIOGRÁFICAS.................................................................................. 50
APÊNDICE A.......................................................................................................................... 52
ix
LISTA DE TABELAS
LISTA DE FIGURAS
LISTA DE SÍMBOLOS
AD Analógico-digital
ADC A/D orD/A converters (Conversor Analógico/Digital ou
Digital/Analógico)
ASIC Application Specific Integrated Circuit (Circuito integrado de
aplicação específica)
BASE-DA Base aritmética distribuída
CLP Controlador lógico programável
CPLD ComplexProgrammable Logic Devices (Dispositivo lógico
programável complexo)
DLP Dispositivo lógico programável
EDIF Electronic Design Interchange Format (Formato Intermediário
para Intercâmbio de Projeto)
EEPROM Electrically-Erasable Programmable Read-Only Memory
EPLD Electrically Programmable Logic Device (Dispositivo lógico
programável eletricamente)
EPROM Electrically Programmable Read-Only Memory
FPAA FieldProgrammable Analog Array (Arranjo analógico
programável por campo)
FPGA FieldProgrammable Gate Array (Arranjo de Portas
Programável em Campo)
FSM Finite State Machine (máquinas de estados finitos)
FT Função de Transferência
GE General Electric
I/O Input/Output (Entrada/Saída)
JTAG Joint Test Action Group
LABs Logic Array Blocks (Blocos de arranjos lógicos)
LUT Lookup-Table (É um tipo de bloco lógico)
MIMO Multiple inputs and Multiple outputs (Múltiplas entradas e
múltiplas saídas)
MISO Multiple inputs and single output (Múltiplas entradas e saída
única)
PALA Programmable Associative Logic Array (Lógico Programável
Array Associativo)
PID Proporcional, integral e derivativo
PLA Programmable Logic Array (Array lógico programável)
PROM Programmable read-only memory (Memória programável
xii
apenas de leitura)
PWM Pulse Width Modulation (Modulação por largura de pulso)
RAM Random Access Memory (Memória de acesso randômico)
ROM Read only memory (Memória somente de leitura)
SISO Single input and single output (Única entrada e única saída)
SPLD Simple Programmable Logic Device (Dispositivo lógico
programável simples)
SRAM Static Random Access Memory (Memória estática de acesso
aleatório)
UFC Universidade Federal do Ceará
UML Unified Modeling Language (Linguagem de modelagem
unificada)
VGA Video Graphics Array (Arranjo gráfico de vídeo)
xiii
INTRODUÇÃO
A sintonia trata das variáveis que deveram ser encontradas para o funcionamento
correto do controlador. Dependendo do overshooting ou do tempo de acomodação do
processo, poderão ser escolhidos variáveis diferentes para o controlador [ZIEGLER e
NICHOLS, 1942]. Neste trabalho, a sintonia do controlador foi realizada
algebricamente pela alocação de pólos [OGATA, 2003]. Os parâmetros calculados para
o controlador foram validados em simulação no software MATLAB, e em
implementação no FPGA.
A planta do projeto trata-se de um pêndulo amortecido composto por uma hélice
acoplada a um motor na extremidade de uma haste girante acoplada à uma base fixa
através de rolamentos (Seção 4.1). Isso faz com que a haste possa girar livremente com
a menor quantidade de atrito possível. O circuito de conversão AD é feito para coletar a
leitura do potenciômetro, que indica a posição da haste girante, e é enviada para o
FPGA. O motor é acionado através do controle da tensão por PWM. Esses sinais de
acionamento são gerados pelo controlador implementado no FPGA.
O motor DC escolhido funciona com corrente máxima de 1A e tensão máxima
de 12 V. Um contrapeso na ponta da haste oposta ao motor é utilizado para balancear o
peso do mesmo.
Este projeto aborda diversos assuntos estudados durante o curso de Engenharia
Elétrica, possibilitando um aprendizado bastante significativo nas áreas de Controle,
Sistemas Lineares, e Eletrônica Analógica e Digital. A Seção seguinte descreve como
estes assuntos estão distribuidos nos próximos capítulos, assim como os capítulos
relativos aos resultados e conclusões finais
O CONTROLADOR PID
2.1 INTRODUÇÃO
de(t)
u(t) = Kpe(t) + Ki ∫ e(t)dt + KD (2.2)
dt
KDs
Gd (s) = (2.3)
τds + 1
Ki
Gc (s) = Kp + (2.4)
s
sistemas de controle que satisfazem dois requisitos independentes ou, algumas vezes,
conflitantes como a característica de resposta à entrada de distúrbio e aquela de resposta
à entrada de referência.
Y(s) Ke− Ls
= (2.6)
R(s) Ts + 1
Tendo a curva de saída Figura 2.2 e os parâmetros L e T, então de acordo com a tabela
2.1, podem ser sugeridos os valores de Kp, Ti, TD.
Tipo de controlador Kp Ti TD
P T/L ∞ 0
PI 0,9 T/L L/0,3 0
PID 1,2 T/L 2L 0,5 L
2
1
s+
1 L
Gc (s) = Kp 1 + + Td.s = 0, 6T (2.7)
Ti.s s
A principal vantagem deste método (Curva de Reação “S”) deve-se ao fato de,
uma vez determinada a curva de reação do método, os parâmetros podem ser ajustados
imediatamente. Esta vantagem é particularmente útil em processos muito lentos, em que
pode passar muito tempo até que o sistema atinja a estabilidade crítica que é quando o
sistema fica marginalmente estável através de um ganho crítico(2º método de Ziegler e
Nichols).
A sua principal desvantagem decorre de grande parte dos sistemas serem mais
complexos do que um simples sistema de primeira ordem com atraso, o que significa
que é ainda necessário um último ajuste no ganho antes de se poder considerar que a
resposta do sistema é “aceitável”.
Existem tabelas desenvolvidas a partir deste método, apresentados por Cohen e
Coon [COHEN e COON, 1953] e por Chien, Hrones e Reswich [CHIEN e HRONES e
RESWICH, 1952], entre outros, que representam alguma melhoria deste método.
No segundo método de Ziegler e Nichols, define-se Ti=∞ e Td =0. Utilizando
somente a ação do controle proporcional (Figura 2.4), aumenta-se Kp de 0 ao valor
crítico Kcr no qual a saída exibe uma oscilação sustentada pela primeira vez. Caso a
saída não exiba nenhuma oscilação sustentada para qualquer valor que Kp, pode-se
assumir que este método não se aplica. Portanto, o ganho crítico Kcr, e o correspondente
período Pcr são determinados experimentalmente como na Figura 2.3.
2
4
s +
Pcr
Gc (s) = 0, 075Kcr.Pcr (2.8)
s
Tipo de controlador Kp Ti Td
P 0,5 Kcr ∞ 0
PI 0,45 Kcr 1/1,2 Pcr 0
PID 0,6 Kcr 0,5 Pcr 0,125 Pcr
1 sTd
Rc(s) = K bR(s) − Y(s) + ( R(s) − Y(s) ) − Y(s) (2.9)
sTi 1 + sTd / N
Sendo α o fator que multiplica o ek ,β o fator que multiplica ek-1, e γ o fator que
multiplica ek-2. Assim tem-se a saída do controlador que irá controlar a planta e o erro
serve de parâmetro para o controle atuar.
10
NIOS II. A partir da estrutura digital representada pela Equação 2.14a onde q0, q1 e q2
são constantes dependentes de Ts (período de amostragem) Kc, Ti e Td (Equação
2.14b).
u(t) = u(t-1) + q0.e(t)+q1.e(t-1)+q2.e(t-2) (2.14a)
Ts Td
q0 = Kc 1 + +
2.Ti Ts
Ts 2Td
q1 = −Kc 1 − + (2.14b)
2.Ti Ts
Td
q2 = Kc
Ts
Em vez de usar o erro para o termo derivativo, é usada a saída do sistema para
evitar excessiva ação de controle, então substituindo os erros proporcional, derivativo e
integrativo [GOMES, 2009] tem-se a Equação 2.15.
u(t)=u(t-1)+Kc.{-y(t)+y(t-1)+Ts/Ti.e(t-1)+Td/Ts.[-y(t)+2y(t-1)-y(t-2)]} (2.15)
10.e( −0.5.s)
G(s) = (2.16)
s+3
A simulação realizada tem como objetivo calcular os parâmetros q0, q1, q2.
Esses dados serão necessários para calcular uma entrada anterior vista na equação 2.14a.
Desta forma não será necessário discretizar a planta. O método apresentado neste artigo
não precisa de uma equação que corresponde a uma planta, ele ajusta automaticamente
o controlador a partir de uma planta desconhecida.
Os resultados práticos com o módulo embarcado foram aproximadamente iguais
aos teóricos feitos no MATLAB. Este projeto foi testado em uma planta no
MATLAB/SIMULINK e não um sistema real, então se espera que seja testado em um
sistema real e dê certo. Este estudo pode servir para futuras implementações em plantas
reais.
Figura 2.5 - UML Diagrama de casses UML de um sistema de controle base-PID geral.
Foi visto neste capítulo que o controlador PID possui diversas utilidades e seu
controle é bem utilizado nas indústrias para o controle de dispositivos. A sintonia do
controlador PID pode ser feita de diversas maneiras encontradas na literatura, no
entanto, deve-se escolher a que melhor se adéqua a seu projeto. Apresentado também a
discretização do controlador PID para implementação digital. Falou-se dos métodos
Ziegler/Nichols, um dos mais conhecidos na literatura, Base-DA, Base-IP, Relay.
(observados nos artigos [CHAN, 2007] e [GOMES, 2009]). A metodologia que será
adotada no trabalho é a proposta por [JACQUOT, 1994]. A vantagem de se utilizar
FPGA é que ele prevê principalmente a portabilidade e praticidade, com baixo consumo
de energia, alta velocidade de operação e larga capacidade de armazenamento de dados.
No capitulo seguinte será mostrado uma descrição dos FPGAs, mostrando suas
características físicas, e suas vantagens na utilização.
CAPÍTULO 3
3.1 INTRODUÇÃO
dispositivo PLA programável por máscara (DM7575) com 14 entradas e 8 saídas sem
registradores de memória. Foi mais popular que o da Texas, mas o custo de fazer a
máscara de metal limitou seu uso. Este dispositivo foi significativo porque era a base
para o array lógico programável em campo (field programmable logic array) produzido
pela Signetics em 1975, o 82S100. Em 1971, a General Electric (GE) estava
desenvolvendo um dispositivo lógico programável baseado na nova tecnologia PROM .
Este dispositivo experimental era melhor em relação ao ROM da IBM por permitir
lógica multiníveis. A Intel tinha acabado de introduzir a PROM “apagável” por
ultravioleta com gate flutuante e os pesquisadores da GE incorporaram esta tecnologia.
O dispositivo da GE foi o primeiro DLP regravável, precedendo a EPLD da Altera por
mais de uma década. A GE obteve muitas das primeiras patentes em dispositivos
lógicos programáveis. Em 1974 a GE fez um acordo com a Monolithic Memories para
desenvolver um dispositivo lógico programável por máscara incorporando as inovações
da GE. O dispositivo foi chamado 'Programmable Associative Logic Array' ou PALA.
O MMI5760 foi finalizado em 1976 e podia implementar circuitos multiníveis ou
seqüenciais de mais de 100 portas lógicas. O dispositivo era apoiado por ambiente de
projeto da GE onde as equações booleanas eram convertidas em padrões para a máscara
do dispositivo. Este componente nunca chegou a ser comercializado. Estes primeiros
DLPs são hoje classificados como SPLDs (Simple Programmable Logic Devices)
[ZELENOVSKY e MENDONÇA, 2002][MOORE, 1995].
Com a densidade dos chips aumentando a cada dia, os fabricantes passaram
também a produzir componentes com características semelhantes a esses primeiros
DLPs, mas cada vez maiores, não fisicamente e sim logicamente. A estes componentes
foi dado o nome de CPLD. Basicamente, um CPLD é um conjunto de múltiplas DLPs
simples e um barramento configurável de interconexão em um único chip. A densidade
destes componentes permite o desenvolvimento de circuitos muito mais complexos. De
fato, uma única CPLD pode facilmente substituir centenas de componentes da série
74xx (portas lógicas).
De forma didática, os DLPs podem ser divididos segundo suas arquiteturas em:
SPLD (Simple Programmable Logic Device), CPLD (Complex Programmable Logic
Devices), e FPGA (Field Programmable Gate Array), como se pode visualizar na
Figura 3.1 [BARR, M. 1999], onde é mostrado um pequeno esquema das arquiteturas
dos sistemas digitais.
18
invés dos FPGAs pois, por serem menos flexíveis internamente, possuem um atraso
(delay) interno usualmente menor (medido em nanosegundos).
Os FPGAs podem ser utilizados para a implementação de praticamente qualquer
design de hardware. Um dos usos mais comuns é o seu uso para a prototipação de
componentes que virão no futuro a transformar-se em ASIC (componentes prontos, em
pastilhas de silício). No entanto, não existem problemas em distribuirmos FPGAs em
produtos finais. Esta decisão requer basicamente uma análise de custo, uma vez que o
desenvolvimento de um ASIC é um processo bastante caro e inflexível, mas que gera
componentes de custos bastante reduzidos se produzidos em larga escala. Já os FPGAs
possuem flexibilidade e custo baixo de prototipação, mas preços finais pouco
competitivos se comparados à ASIC com alta escala de produção.
O desenvolvimento de um FPGA é fruto de uma evolução do conceito das
SPLD/CPLD, mas a sua arquitetura é um tanto distinta destes. Como se pode ver na
Figura 3.3, a arquitetura de um FPGA é composta de três estruturas básicas: blocos
lógicos, interconexão e blocos de I/O (Input/Output, Entrada/Saída). Os blocos de I/O
formam uma borda ao redor do dispositivo; cada um destes provê entrada, saída ou
acesso bi-direcional aos pinos de I/O de uso geral disponíveis na parte exterior do
componente. Dentro desta borda de blocos de I/O pode-se ver uma região retangular de
blocos lógicos e conectando-os, estas são as Interconexões Programáveis.
3.3 PROTOTIPAGEM
simples acima de 36-bits de largura e até 260 megahertz. Esses blocos são organizados
em colunas em todo o dispositivo entre certos LABs (Logic Array Blocks). Cyclone II
oferecem dispositivos entre 119 a 1.152 Kbits de memória embutida. Na figura 3.6
[ALTERA, 2010a] é mostrado um diagrama dos dispositivos, inclusive os citados
anteriormente.
Os dispositivos Cyclone II oferecem uma rede global de clock até quatro phase-
locked loops (PLL’s). Esses PLL's oferecem multiplicação e divisão de clock,
deslocamento de fase, e ciclo de trabalho programável, pode ser usado para minimizar o
atraso do clock e clock deslocado, e reduzir ou ajustar os tempos de clock-to-out (tco) e
set-up (Tsu). A rede global de clock consiste em até 16 linhas globais de clock essa
unidade de todo o dispositivo. O clock global da rede pode fornecer sinal para todos os
recursos dentro do dispositivo, como entrada /saída de elementos (IOEs), elementos
lógicos (LE’s), incorporado em multiplicadores e incorporado em blocos de memória.
As linhas de clock global também podem ser usadas para outros sinais altos de saída. As
PLL’s do Cyclone II têm prestação de propósito geral com a síntese do relógio e
deslocamento de fase, bem como saídas apoio I/O externas para a alta velocidade
diferencial.
26
Esses dispositivos são dotados de uma tecnologia DirectDriveTM, que faz conexão
estrutural MultiTrack entre LEs, blocos de memória M4K, multiplicadores embarcados,
e pinos de dispositivos I/O. O Quartus II oferece melhoria de desempenho e utilização
em todas as rotas do dispositivo. Até quatro PLL’s, com uma seleção dinâmica da
origem de clock; habilitado e desabilitado, também dinâmicos.
Nos modelos menores existem apenas os pinos DPCLK, e nos modelos maiores
do Cyclone II, como EP2C15, existem os pinos CDPCLK, que passam por um
multiplexador antes de chegarem no bloco de controle, como mostrado na figura 3.9; Já
os DPCLK [] vão direto para o bloco de controle.
A rede global de clock permite enviar sinais para o máximo de recursos que o
FPGA pode gerenciar sem exceder seu limite de dissipação de energia (fan-out), ou
seja, praticamente todos os recursos podem ter esse sinal como uma entrada. Das fontes
mencionadas, apenas dois pinos de relógio, duas saídas de relógio PLL, um pino
DPCLK, e um sinal gerado internamente são escolhidos para dirigir em um bloco de
controle do relógio. Figura 3.10 mostra um diagrama mais detalhado do bloco de
controle do relógio.
28
Figura 3.9 - EP2C15 & Maior PLL, CLK[ ], DPCLK[ ] & Locais dos blocos de controle.
bidirecional de dados único. Figura 3.11 mostra o Cyclone II estrutura da OIE. A OIE
contém um registro de entrada, um registro de saída e uma saída permitem registrar.
Pode-se usar os registros de entrada para os tempos de instalação fácil e registros de
saída de clock rápido para tempos de saída. Além disso, pode-se usar a saída de enable
(OE) para registrar relógio rápido de saída de permitir sincronismo. O software de
Quartus II duplica automaticamente um registro OE único que controla a saída de vários
ou pinos bidirecional. Existe a possibilidade de usar IOE’s como entrada, saída ou pinos
bidirecionais.
ESPERIMENTOS E RESULTADOS
Neste capítulo na Seção 4.1 será mostrado uma descrição da planta de teste
utilizada no projeto: estrutura física, interface, desenhos, diagramas; os ensaios para
identificação da planta na Seção 4.2; na Seção 4.3 apresentar-se-á controlador PID,
mostrando os resultados e comparações; finalmente na Seção 4.4 os testes com o FPGA
e Seção 4.5 Comentários finais.
A planta é constituída de uma base com haste de alumínio oca curvada fixada à
base, uma haste de alumínio oca com motor e hélice parafusados numa das pontas,
potenciômetro para medição do ângulo de rotação, enrolamentos e conexões com
parafusos como se pode observar na figura 4.1.
Utilizou-se uma placa da National Instruments (figura 4.6) para coletar os dados
e exibir na tela através da interface Simulink do MATLAB. No Simulink foi criado uma
lógica de blocos (figura 4.7) para exibição dos dados coletados da placa da National.
A placa possui espaços para dois motores sendo outro para aplicações futuras
para melhorar a linearidade da planta.
K.wn 2
(4.1.a)
s 2 + 2ζwn.s + wn 2
0, 6
ζ = = 0, 2 (4.1.b)
3
6, 9
T= = 2,3s
3 (4.2)
2π
wn = = 2, 74rad / s
T
y(∞) − y(0− ) 69 − 0
K= = = 0, 46 (4.3)
A 150
Agora substituindo os valores de K, ζ, e wn encontrados, temos a seguinte função
da planta identificada em 4.4.
3, 458
Gp(s) = 2
(4.4)
s + 1, 097s + 7, 516
em seu segundo método, já que o primeiro é notório que não se adéqua, para se obter o
Kcr a função de transferência (FT) em malha fechada é controlada apenas pelo termo
proporcional como visto no capítulo 2 e ao fazer isso temos o seguinte processo
mostrado na figura 4.9.
Este sistema da figura 4.9 resultará na seguinte função de transferência dada pela
equação 4.5. Então para obter os pólos, o denominador deverá ser estudado.
Y Kp.3, 458
= 2 (4.5)
Uc s + 1, 097s + 7, 516 + Kp.3, 458
Sendo o denominador uma função de segunda ordem, pode-se apenas obter duas
raízes, mas para dar certo, estas raízes têm que ser puramente complexas, então,
segundo equacionamento 4.6 não é possível ter raízes complexas, mesmo variando Kp,
pois para ser puramente imaginário não poderia existir nenhuma parcela real, logo este
método não é aplicável para esta planta.
tornar o sistema estável. Escolhem-se então as raízes: (-2-3j), (-2+3j), e – 6. Estas raízes
satisfazem a condição de estabilidade [LATHI, 2007]. Agora se faz uma comparação
entre as duas equações de terceiro grau, mostradas na equação 4.9.
3,458.kp.Td.Ti.s 2 +3,458kp.Ti.s+3,458kp
(4.7)
Ti.s3 +(1,097.Ti+3,458.kp.Td.Ti).s 2 +(7,516.Ti+3,458.kp.Ti).s+3,458.kp
kp
3,458.kp.Td.s 2 +3,458kp.s+3,458
Ti (4.8)
3 2 kp
s +(1,097+3,458.kp.Td).s +(7,516+3,458.kp).s+3,458.
Ti
syms Ti td kp s
Ti = 0.378;
Td = 0.302;
kp = 8.5263;
Gp = sym('3.458/(s ^ 2 + 1.097 * s + 7.516)');
Gc = kp * (1 + 1/(Ti * s) + s * Td);
aux = Gp * Gc/(1 + Gp * Gc);
aux2 = factor(aux);
[num, den] = numden(aux2);
num2 = subs(num/Ti);
den2 = subs(den/Ti);
num3 = sym2poly(num2);
den3 = sym2poly(den2);
nova_func = tf(num3, den3)
figure
step(nova_func, 'r')
axis( [0 2.5 0 1.4])
Step Response
1.2
0.8
Amplitude
0.6
0.4
0.2
0
0 0.5 1 1.5 2 2.5
Time (sec)
−ζπ
1−ζ 2
PO = e (4.11)
4
ts =
ζwn (4.12)
40
−4
ts.wn
2
4
1−
ts.wn
PO = e
(4.13)
Pode-se perceber segundo a equação 4.1.a e do gráfico gerado por ela, mostrado
na figura 4.12 a relação de PO (percentual de overshooting) e ts (tempo de
acomodação). Os dois são diretamente proporcionais, ou seja, numa função do tipo 4.1.a
os parâmetros se comportam como mostrado na figura 4.12. Para a planta de grau dois,
PO é diretamente proporcional à ts e inversamente proporcional ao fator de
amortecimento.
0.7
0.6
0.5
0.4
PO
0.3
0.2
0.1
0
0 5 10 15 20 25 30 35 40 45 50
ts(s)
Para ajustar os pólos terá que ser feito uma comparação entre o denominador da
função 4.8 e uma função determinada por wn (mesmo da planta), fator de amortecimento
(escolhido conforme parâmetros para ajuste PO e ts) e o pólo real definido distante cerca
de 10 vezes distante do valor das raízes.
41
Esta comparação foi feita com as equações 4.14 em que são desenvolvidos e
comparados seus índices para achar Kp, Ti, Td onde ‘p’ é o pólo definido, wn é o
mesmo da planta, e ζ é o fator de amortecimento definido.
3 2 kp
s +(1,097+3,458.kp.Td).s +(7,516+3,458.kp).s+3,458.
Ti (4.14)
(s 2 + 2wnζ.s + wn 2 ).(s − p)
A FT em malha fechada controlada pelo PID não é de grau dois, pois possui dois
zeros e três pólos como mostrado na figura 4.12, então a relação entre PO e ts irá mudar.
Resolveu-se então fazer testes para ver como a resposta ao degrau se comporta, caso
42
Com essa observação podemos escolher o tipo de resposta que preferir de acordo
com Csi adotado. Adotar-se-á Csi igual a 0,3 e com código figura 4.13 tem-se Ti =
0,2189 ; Td = 0,6413 ; Kp = 4,7567.
80
saida (decimal)
60
40
20
0
0 5 10 15 20 25 30 35 40 45 50
tempo(s)
150
pid (decimal)
100
saida do
50
0
0 5 10 15 20 25 30 35 40 45 50
tempo(s)
aclr
unsigned compare
clk_placa
INPUT
q[7..0] dataa[7..0]
clk_placa clk_in clk_out clock ageb
VCC
up counter datab[]=255
cont2 inst2
inst9 START_AD
unsigned compare
dataa[7..0]
aleb
datab[]=128
Param eter Value Type
FATOR 5000 Signed Integer inst6
pid001 inst3 OUTPUT pwm_saida
datab[7..0] OUTPUT
agb pwm_saida2
GERADOR dataa[7..0]
100
referência
90 saída
80
70
60
decimal
50
40
30
20
10
0
10 20 30 40 50 60 70 80 90 100 110 120
tempo(s)
100
90
80
70
60
decimal
50
40
30
20
10
0
50 100 150 200 250 300 350 400 450
tempo(s)
200
180
160
140
120
decimal
100
80
60
40
20
0
50 100 150 200 250 300
tempo(s)
CONCLUSÕES
5.1 CONCLUSÕES
Há uma limitação da saída do PID, pois eles têm apenas 8 bits (255), então a
saída também tem um limite de 100 (faixa de linearidade da planta), ou seja, só controla
até a referência 100. Este pode ser um ajuste para melhorias futuras.
Apesar das dificuldades apresentadas, a implementação apresentou erro de
regime baixo (conforme pode-se observar nas Figuras 4.17 e 4.18). Este projeto servirá
de base para a implementação de outros controladores digitais no GPAR, e pode ser
utilizado como prática em disciplinas de graduação como Técnicas Avançadas de
Eletrônica Digital e Controle e Servomecanismos.
50
REFERÊNCIAS BIBLIOGRÁFICAS
LATHI, B.P. Sinais e Sistemas Lineares; tradução Gustavo Guimarães Parma – 2ªed.
Bookman., 2007.
APÊNDICE A
CÓDIGO DA SIMULAÇÃO DO CONTROLADOR
clc
clear
syms Ti Td Kp Ts t
UK=0;
UK2=0;
y=0;
E1=0;
E2=0;
E3=0;
Ti=2;
Td=6;
Kp=2;
Ki=Kp*10/Ti;
Kd=Kp*Td/10;
Ts=0.1;
ALFA=(Kp + (Ki*Ts/2) + (Kd/Ts));
BETA=( (Ki*Ts/2) - Kp - (2*Kd/Ts) );
GAMA=( Kd/Ts );
Uc=ones(1,500)*70;
f=tf(3.458,[ 1 1.097 7.516]);
Gp=c2d(f,Ts);
[numGp, denGp]=tfdata(Gp,'v');
a1=numGp(2);
a0=numGp(3);
b2=denGp(1);
b1=denGp(2);
b0=denGp(3);
ut1=0;
ut2=0;
yt1=0;
yt2=0;
for x=1:500
t(x)= double(x/10);
y=a1/b2*(ut1)+a0/b2*(ut2)-b1/b2*(yt1)-b0/b2*(yt2);
E1=(Uc(x)-y);
err(x)=E1;
UK=(UK2*100 + 10*ALFA*E1 + 10*BETA*E2 + 10*GAMA*E3);
uk(x)=UK;
E3=E2;
E2=E1;
UK2=round(UK/100);
ut2=ut1;
yt2=yt1;
yt1=y;
pid(x)=round(UK/100);
if UK/100 > 255
pid(x)=255;
end
if UK/100 < 1
pid(x)=1;
end
ut1=pid(x);
saida(x)=y;
end
subplot(2,1,1)
stem(t,saida,'r')
subplot(2,1,2)
stem(t,pid)
APÊNDICE B
CÓDIGO VHDL DO CONTROLADOR
ENTITY pid001 IS
GENERIC ( FATOR : INTEGER :=5000000); --TAXA DE AMOSTRAGEM DO PID BASEADO NO
--EOC DO AD.
PORT (
REF : IN INTEGER RANGE 0 TO 255; --referência do gerador (degaus)
POSICAO : IN INTEGER RANGE 0 TO 255; -- posição da haste (saída do bloco
-- NORMALIZA01)
CLOCK_IN : IN BIT; -- clock de entrada 50MHz
CLOCK1_OUT : BUFFER BIT; -- clock de saída
OUTPID : OUT INTEGER RANGE 0 TO 255 :=0 -- saída do PID
);
END pid001;
ARCHITECTURE PID OF pid001 IS
SHARED VARIABLE ACUMULADOR : INTEGER RANGE -500 TO 500:=0;
CONSTANT ALFA : INTEGER:=145; -- contantes do processo definidas.
CONSTANT BETA : INTEGER:=-255;-- multiplicadas por 10
CONSTANT GAMA : INTEGER:=120;
BEGIN
--////////////////////////////////////////////////////////////////////////////////////////////
--Divisor de clock
--////////////////////////////////////////////////////////////////////////////////////////////
DIVISOR : PROCESS( CLOCK_IN ) --
DIVIDE O CLOCK DE ENTRADA POR UM FATOR
VARIABLE AUX : INTEGER RANGE 0 TO FATOR := 0;
BEGIN
IF(AUX = FATOR)THEN
AUX := 0;
CLOCK1_OUT <= '1';
55