Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Lab Engenharia de controlo, Esquemas de Engenharia de Processos

Ampops e electronica digital no ambito de engenharia de controlo

Tipologia: Esquemas

2025

Compartilhado em 17/01/2026

liliana-amorim
liliana-amorim 🇵🇹

1 documento

1 / 3

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Laboratório de Engenharia de Controlo (2021/22)
Trabalho 5a (adenda)
Adenda ao “Controlo digital de instalação de ordem (passa-baixo RC de ordem) com um
microcontrolador Arduino”
José Soares Augusto, Maio de 2022 (versão 0.99)
Nesta adenda inclui-se informação adicional que poderá ajudar na realização dos controladores do tipo PID, e
do controlador com feedback de variáveis de estado (SVF - “State Variable Feedback”).
SVF
Na implementação de SVF no Arduino o tempo Tnão interessa ao controlador. É no entanto parte integrante da
definição do período da onda quadrada r(t)usada como referência, e eventualmente controlará o intervalo entre
os comandos
Serial.println()
que servem para observar variáveis no
loop()
. Ou seja, ao calcular SVF num
sistema de ordem n
u=r
n
i=1
kixi(1)
os xisão os valores directamente lidos nos comandos
x1=analogRead(A1)
, etc... sem interferência de T.
Note que (1) é a única equação que implementa o controlador! Terá ainda que ter em conta a passagem de 10
bits para 8 bits nos conversores ADC (entrada) e DAC (saída) e prevenir a saturação do DAC PWM do Arduino
(limita-se uao intervalo 0...255).
Para calcular o vector Kque agrupa os kiuse o Scilab. Obtenha a FdT G(s)e as matrizes AeBdo MVE com os
seus valores de R e de C. Com a instrução
ppol()
calcule aquele vector K.
O vector Kdependerá da posição pretendida para os pólos do sistema com SVF, e como o sistema é controlável,
“em teoria” podemos escolher quaisquer pontos do plano spara os colocar. No entanto, devido às limitaçôes dos
actuadores (no nosso caso são as gamas dinâmicas do ADC e do DAC do Arduino, que funcionam entre 0 V e 5
V) não convém ser muito agressivo (e.g. puxar os pólos muito para a esquerda no plano s) na tentativa de tornar
o sistema muito rápido. É também uma boa ideia implementar algum “overshoot” (que o RC3 em open-loop não
tem, visto ter três pólos reais). Outra opção será escolher um dos polinómios “óptimos” obtidos com o critério
ITAE (ver slides das aulas).
Uma sugestão razoável para escolher os novos pólos, tendo em atenção que:
1. lidamos com um sistema de ordem, com pólos [p1, p2, p3], onde p3 é o que tem a parte real mais negativa
2. é o pólo mais à direita no eixo real, p1, que limita a velocidade do sistema
3. o circuito RC3 em malha aberta (“open loop”) tem 3 pólos reais negativos,
é a seguinte:
1. manter o pólo mais negativo, p3, inalterado
2. juntar a p3 dois pólos complexos conjugados, com valor β|p1|(1±j), onde βterá tipicamente um valor
entre 5 e 10
3. os 3 pólos para o projecto com SVF serão então [β|p1|(1+j),β|p1|(1j),p3]. Use-os no
ppol()
para
calcular K.
O valor de βsugerido não deverá causar a excessiva saturação do DAC do Arduino.
1
pf3

Pré-visualização parcial do texto

Baixe Lab Engenharia de controlo e outras Esquemas em PDF para Engenharia de Processos, somente na Docsity!

Laboratório de Engenharia de Controlo (2021/22)

Trabalho 5a (adenda)

Adenda ao “Controlo digital de instalação de 3ª ordem (passa-baixo RC de 3ª ordem) com um

microcontrolador Arduino”

José Soares Augusto, Maio de 2022 (versão 0.99)

Nesta adenda inclui-se informação adicional que poderá ajudar na realização dos controladores do tipo PID, e do controlador com feedback de variáveis de estado (SVF - “State Variable Feedback”).

SVF

Na implementação de SVF no Arduino o tempo T não interessa ao controlador. É no entanto parte integrante da definição do período da onda quadrada r(t) usada como referência, e eventualmente controlará o intervalo entre os comandos Serial.println() que servem para observar variáveis no loop(). Ou seja, ao calcular SVF num sistema de ordem n

u = r −

n

i= 1

ki xi (1)

os xi são os valores directamente lidos nos comandos x1=analogRead(A1), etc... sem interferência de T. Note que (1) é a única equação que implementa o controlador! Terá ainda que ter em conta a passagem de 10 bits para 8 bits nos conversores ADC (entrada) e DAC (saída) e prevenir a saturação do DAC PWM do Arduino (limita-se u ao intervalo 0...255). Para calcular o vector K que agrupa os ki use o Scilab. Obtenha a FdT G(s) e as matrizes A e B do MVE com os seus valores de R e de C. Com a instrução ppol() calcule aquele vector K. O vector K dependerá da posição pretendida para os pólos do sistema com SVF, e como o sistema é controlável, “em teoria” podemos escolher quaisquer pontos do plano s para os colocar. No entanto, devido às limitaçôes dos actuadores (no nosso caso são as gamas dinâmicas do ADC e do DAC do Arduino, que só funcionam entre 0 V e 5 V) não convém ser muito agressivo (e.g. puxar os pólos muito para a esquerda no plano s) na tentativa de tornar o sistema muito rápido. É também uma boa ideia implementar algum “overshoot” (que o RC3 em open-loop não tem, visto ter três pólos reais). Outra opção será escolher um dos polinómios “óptimos” obtidos com o critério ITAE (ver slides das aulas). Uma sugestão razoável para escolher os novos pólos, tendo em atenção que:

  1. lidamos com um sistema de 3ª ordem, com pólos [p1, p2, p 3 ], onde p3 é o que tem a parte real mais negativa
  2. é o pólo mais à direita no eixo real, p1, que limita a velocidade do sistema
  3. o circuito RC3 em malha aberta (“open loop”) tem 3 pólos reais negativos ,

é a seguinte:

  1. manter o pólo mais negativo, p3, inalterado
  2. juntar a p3 dois pólos complexos conjugados, com valor β |p 1 |(− 1 ± j), onde β terá tipicamente um valor entre 5 e 10
  3. os 3 pólos para o projecto com SVF serão então [ β |p 1 |(− 1 + j), β |p 1 |(− 1 − j), p 3 ]. Use-os no ppol() para calcular K.

O valor de β sugerido não deverá causar a excessiva saturação do DAC do Arduino.

Compensação do ganho DC

O sistema com SVF tem em geral atenuação DC, e para podermos compará-lo em termos de amplitude com o original temos que fazer uma “amplificação” da entrada r(t). Sendo

G(s) = C (s IA )−^1 B

o ganho do sistema open-loop, o valor DC é calculado com s = 0

G( 0 ) = C (− A )−^1 B

No presente caso G( 0 ) = 1 no circuito, se descontarmos a ligeira atenuação introduzida pela impedância de entrada do ADC do Arduino (vista nos terminais A0, A1, ...). Após aplicar SVF a matriz de A passará a ser ABK (mas B e C não mudam) e então, seguindo o mesmo caminho, o ganho DC em closed-loop será

GCL( 0 ) = C (− A + BK )−^1 B

A amplificação a aplicar à referência r será então

α =

C (− A )−^1 B

C (− A + BK )−^1 B

e assim a equação do controlador (1) será modificada para

u = α r −

n

i= 1

ki xi (2)

Controladores da família PID – implementação digital prática

A implementação digital do PID pode ser “manhosa”, principalmente da parte diferencial (D). Ser “manhosa” aqui significa ser sensível aos valores concretos dos parâmetros do controlador, aos inevitáveis erros de precisão numérica, ao ruído, à saturação do DAC do Arduino, etc.. Assim, vamos dar alguns conselhos sobre a digitalização para que os alunos consigam realizar um sistema funcional... O controlador PID ideal pode ser definido de várias formas. As mais comuns são:

C(s) =

U(s) E(s)

= KP +

KI

s

  • KD s = KP

sTI

  • sTD

= KP ( 1 + ω I /s + s/ ω D )

onde ω I = 1/TI ω D = 1/TD TI = KP/KI TD = KD /KP

É notório que podemos descrever o PID como a soma de 3 parcelas independentes: a proporcional, a integral e a diferencial: C(s) = CP(s) + CI (s) + CD (s) A parcela CD (s) (uma fracção não regular) sofre habitualmente alterações na implementação prática.

Limitação do ganho D em altas frequências

Coloca-se um pólo bem acima de ω D no termo diferencial, digamos em N ω D = N/TD, com N a valer tipicamente 10 (ou um valor nessa ordem de grandeza). Aquele termo passa a ser:

CD (s) =

KP TD s 1 + sTD /N

Desta forma, o ganho do diferenciador fica limitado nas altas frequências, prevenindo-se assim potenciais problemas devidos à penetração de ruído ou de perturbações de alta frequência no sistema.