3) Projeto pelo lugar das raízes

Realize o projeto através do lugar das raízes:
  • Projete um controlador PI;
  • Faça simulações para garantir a execução dentro dos limites da entrada u \in[-10,10] para uma referência para velocidade de 5 V
  • Documente o projeto e valide com o prof antes de realizar o experimento. Forneça os ganhos Kp, Ki
  • Compare o experimento com a simulação. Comente sobre. Houve diferença do experimento/simulação? Por que?

Passo 1

O que o enunciado pede (resumido e claro):\n
  • Projetar um controlador PI usando o lugar das raízes.\n
  • Simular o sistema e garantir que a ação de controle u(t) fica dentro do intervalo u\in[-10,10] quando a referência de velocidade é 5 V.\n
  • Documentar o projeto e validar com o professor antes de fazer experimento.\n
  • Fornecer os ganhos K_p e K_i.\n
  • Comparar experimento e simulação e comentar diferenças.\n\n
    Informações que o enunciado fornece diretamente:\n
  • Tipo de controlador a projetar: PI.\n
  • Limite do atuador (entrada): u\in[-10,10].\n
  • Referência de velocidade: r=5 V.\n\n
    Informações que o enunciado NÃO fornece (essenciais para obter valores numéricos de K_p,K_i):\n
  • A planta (função de transferência G(s) do motor/sistema): ganho, ordem, constantes de tempo, polos/zeros.\n- Medições iniciais (como ganho em regime permanente) ou parâmetros identificados.\n\nObservação final deste passo: eu não vou resolver nada ainda; estou apenas listando o pedido e todas as informações que temos e as que faltam.

Passo 2

Por que a ausência de G(s) impede dar K_p,K_i numéricos imediatos\n
  • O projeto pelo lugar das raízes exige a função de malha aberta L(s)=C(s)G(s) para traçar as trajetórias dos polos fechados e determinar o ganho que coloca os polos onde queremos.\n
  • Sem G(s) não dá para calcular o valor do ganho de malha que satisfaz a condição de módulo no ponto desejado do plano s, nem aplicar a condição de ângulo para posicionamento de pólos.\n\n
    Conclusão: para obter K_p e K_i numéricos precisamos do modelo G(s) (ou ao menos medidas experimentais que permitam estimar G(j\omega) ou parâmetros do modelo). Entretanto eu posso ensinar todo o procedimento passo a passo para você aplicar quando tiver G(s), e também mostrar verificações práticas (como a restrição do atuador) que já permitem escolher limites iniciais (por ex. limite superior para K_p).

Passo 3

Relembrando o que é um controlador PI e como o representamos matematicamente (aula rápida, sem pular etapas)\n
  • Um controlador PI tem a forma em domínio de Laplace:\n C(s)=K_p + \frac{K_i}{s}\n
onde:\n
  • K_p é o ganho proporcional (escala a ação imediata ao erro),\n
  • K_i é o ganho integral (corrige erro em regime permanente fazendo ação que aumenta ao longo do tempo enquanto houver erro).\n\n
  • Podemos reescrever C(s) como:\n C(s)=K_p\left(1+\frac{K_i}{K_p}\frac{1}{s}\right)=K_p\frac{s+z}{s}\n
onde definimos o zero do controlador \;z=\dfrac{K_i}{K_p}\; (então o PI introduz um pólo na origem s=0 e um zero em s=-z).\n\n
  • Interpretação geométrica importante: o zero em -z “puxa” o lugar das raízes para a esquerda (melhora amortecimento/velocidade) se colocado adequadamente; o polo na origem faz o lugar passar pelos eixos conforme o tipo do sistema.

Passo 4

Princípios do projeto pelo lugar das raízes (passo a passo conceitual)\n
  • Objetivo: escolher C(s) (aqui PI) para que os polos do sistema em malha fechada fiquem em posições desejadas no plano s que atendem especificações de desempenho (ex.: sobrepasso, tempo de acomodação, margem de estabilidade).\n
  • O lugar das raízes é traçado para a função de malha aberta L(s)=C(s)G(s). Ao variar o ganho escalar (aqui relacionado a K_p) as raízes da equação característica 1+L(s)=0 se movem segundo as curvas do lugar das raízes.\n
  • Estratégia típica com PI:\n
    1. escolher um local desejado para polos dominantes s_d com base em especificações (conversão de sobrepasso e tempo em \zeta e \omega_n);\n
    2. escolher a posição do zero do PI ( -z) para que, combinado com G(s), o lugar das raízes passe perto de s_d;\n
    3. usar a condição de ângulo para ajustar z (se necessário);\n
    4. usar a condição de módulo para calcular o ganho necessário (daí K_p);\n
    5. deduzir K_i=K_p z.\n\n
  • Fórmulas úteis que vamos usar depois:\n - condição de ângulo (para s_d estar no lugar das raízes):\n \angle C(s_d)G(s_d)= (2k+1)\pi\n - condição de módulo (para o ganho resultar em pólo em s_d):\n |C(s_d)G(s_d)|=1\n - em termos de K_p e z, escrevendo C(s)=K_p\frac{s+z}{s}, da condição de módulo obtemos:\n K_p = \frac{1}{\left|\dfrac{s_d+z}{s_d}\;G(s_d)\right|}\n e então\n K_i = K_p\, z.

Passo 5

Como transformar especificações temporais (ex.: sobrepasso e tempo de acomodação) em alvo para localização de polos\n
  • Se você tiver especificações típicas:\n - sobrepasso percentual M_p dá amortecimento \zeta por:\n M_p = e^{-\dfrac{\pi \zeta}{\sqrt{1-\zeta^2}}}\n solução para \zeta: isolar numericamente ou usar tabela/ aproximação.\n\n
  • Tempo de acomodação aproximado para 2% (sistemas dominados por pólos complexos) é:\n T_s \approx \frac{4}{\zeta \omega_n}\n\n
  • Pólos desejados (dominantes) no plano s:\n s_d = -\zeta\omega_n \pm j\omega_n\sqrt{1-\zeta^2}\n\n
  • Então você usa s_d nas condições de ângulo e módulo do lugar das raízes para projetar.

Passo 6

Como escolher o zero do PI ( z) na prática — regras simples e intuitivas\n
  • Uma regra prática para plantas com comportamento de primeira ou segunda ordem: coloque o zero em frequência próxima ou abaixo da frequência dominante do sistema que você quer moldar. Em termos de pólos reais, escolha z entre 0,1\omega_n e 1\omega_n (interpretando z como frequência real em rad/s) — isso só vale com interpretação do modelo.\n
  • Em termos de algebra: você pode escolher z e usar a condição de ângulo para verificar se com esse z é possível satisfazer a condição de ângulo em s_d. Se não, varia z até satisfazer.\n
  • Importante: não escolha z muito pequeno (muito perto da origem) porque aí o zero cancela pouco o efeito do pólo na origem do controlador; não escolha z muito grande (muito à esquerda) porque perde-se o efeito de melhora de amortecimento.\n\n
    Observação: a escolha exata depende de G(s); sem G(s) só podemos dar essa orientação.

Passo 7

Cálculo prático do ganho K_p e de K_i uma vez que você tenha G(s), z e s_d (passo-a-passo que você vai executar no MATLAB/Octave/Scilab ou manualmente)\n
  1. Escolha s_d a partir das especificações (veja Passo 5).\n2. Fixe um z candidato (ou use a condição de ângulo para resolver z).\n3. Calcule o valor complexo G(s_d) (avaliar G(s) em s=s_d).\n4. Avalie \dfrac{s_d+z}{s_d}\,G(s_d) (isso é um número complexo).\n5. O ganho proporcional que coloca o polo em s_d é\n K_p = \frac{1}{\left|\dfrac{s_d+z}{s_d}\,G(s_d)\right|}\n6. O ganho integral é\n K_i = K_p\, z.\n7. Verifique estabilidade e rejeição de distúrbios simulando a resposta à referência em malha fechada e ajustando z se necessário.\n\n
Dica prática: no MATLAB/Simulink, use rltool (Root Locus Designer) ou função rlocus e depois rlocfind para clicar em s_d e obter K; em seguida calcule K_i pela relação acima.

Passo 8

Como garantir a restrição u\in[-10,10] para referência r=5: condições simples e imediatas (sem G(s) completo)\n
  • Observação importante e útil que você já pode usar mesmo sem G(s): na aplicação de um degrau de referência r=5 V, a ação proporcional produz, no instante inicial (assumindo integrador com estado zero), uma ação de controle inicial igual a\n u(0^+)=K_p\cdot r.\n Explicação: no instante imediatamente após a aplicação do degrau a integrador ainda não acumulou erro, então a ação proporcional domina. Portanto para não saturar o atuador no início devemos garantir\n K_p\cdot 5 \le 10 \quad\Rightarrow\quad K_p \le 2.\n- Essa é uma restrição simples e prática: escolha inicialmente K_p\le 2 para evitar saturação instantânea. Isso vale mesmo sem conhecer G(s).\n\n
  • Sobre a saturação em regime: o valor em regime de u depende do ganho de planta em malha direta. Com PI tipicamente a saída chega ao setpoint e o integrador estabelece um u_{ss} tal que G(0) u_{ss} = r se G(0) é ganho DC da planta. Então você pode estimar:\n u_{ss} = \frac{r}{G(0)}\n Se G(0) for conhecida, verifique |u_{ss}|\le 10. Caso contrário, meça G(0) ou estime experimentalmente antes do projeto completo.\n\n
  • Anti-windup: se houver risco de saturação, implemente anti-windup (back-calculation ou conditional integration) para evitar que o integrador sature e gere overshoot grande quando a saturção ceder.

Passo 9

Como simular corretamente e que sinais/plots você deve levar ao professor para validação\n
  • Modelagem: implemente G(s) (modelo identificado) e C(s)=K_p + K_i/s em ambiente de simulação (Simulink, Python+control, Scilab).\n- Simulações a executar:\n 1. Lugar das raízes de L(s)=C(s)G(s) mostrando o ponto s_d e o ganho escolhido.\n 2. Resposta ao degrau da referência r=5 V: mostrar y(t) e u(t).\n 3. Resposta a perturbação de carga (se aplicável).\n 4. Plot do u(t) com linhas limite \pm 10 V para verificar saturação.\n 5. Simulação com ruído/atraso para avaliar robustez.\n- Documentos para o professor: relatório curto com\n - modelo G(s) usado (ou identificações experimentais),\n - especificações de projeto,\n - escolha do zero z e justificativa,\n - cálculo de K_p e K_i (mostrar contas),\n - plots de lugar das raízes, resposta ao degrau, u(t) com limites, e resultados de varredura de parâmetros (sensibilidade).\n- Peça ao professor concordância antes de ir ao experimento; mostre possíveis riscos (saturação, degradação por não linearidades).

Passo 10

Comparação entre experimento e simulação — o que esperar e como justificar diferenças (lista didática)\n
Principais fontes de diferenças:\n- Modelagem imprecisa: G(s) pode não capturar atrito, não linearidades, histerese, saturação, e variação de parâmetros (temperatura, tensão de alimentação).\n- Atrasos de transporte e de amostragem no hardware que não foram modelados (latência de comunicacão, conversão A/D, PWM).\n- Ruído de medição e quantização do sensor.\n- Dinâmica do atuador/driver (limitações de corrente que limitam resposta real mesmo com u dentro de [-10,10]).\n- Ganhos efetivos diferentes em hardware devido a tolerâncias de componentes.\n- Integrador em projeto pode “dar vento” (windup) se houver saturação real; se não houver anti-windup no controlador experimental, h averá overshoot maior que na simulação.\n\nComo documentar e comentar as diferenças:\n- Mostre plots comparativos (simulação vs experimento) de y(t) e u(t) no mesmo gráfico.\n- Quantifique: tempo de acomodação, sobrepasso, erro em regime permanente, valor máximo de u.\n- Explique cada diferença apontando qual item da lista acima é provável responsável e, se possível, rode uma simulação incluindo esse efeito (p. ex. adicione atraso, ruído, saturação, vento do integrador) para ver se a simulação aproximada bate com experimento.\n- Se houver grande discrepância por saturação, implemente anti-windup e repita experimento.

Passo 11

Exemplo ilustrativo (apenas para mostrar números e o uso das fórmulas) — atenção: este é um exemplo hipotético; NÃO é solução do seu caso a menos que sua planta seja exatamente essa\n
  • Suponha para exemplificar que a planta seja um motor de primeira ordem com ganho DC K_m=1 e constante de tempo \tau=0,2 s:\n G(s)=\frac{1}{0{,}2 s +1}.\n- Queremos pólos dominantes com \zeta=0{,}7 e T_s\approx 2 s. Estimamos \omega_n por T_s\approx 4/(\zeta\omega_n)\Rightarrow \omega_n\approx 4/( \zeta T_s)=4/(0{,}7\cdot 2)\approx 2{,}86 rad/s.\n- Pólo desejado (parte real): s_d\approx -\zeta\omega_n + j \omega_n\sqrt{1-\zeta^2}\approx -2{,}0 \pm j 2{,}06.\n- Escolha um zero do PI z=1{,}5 (hipótese). Avalie G(s_d) e calcule K_p por\n K_p=\frac{1}{\left|\dfrac{s_d+z}{s_d}G(s_d)\right|}\n(eis o procedimento; os números exatos saem da avaliação complexa). Em seguida calcule K_i=K_p z.\n\nObservação: este passo serve só para mostrar como aplicar as fórmulas; no seu caso substitua G(s) pela sua planta e siga o mesmo cálculo.

Passo 12

Checklist final prático que você deve seguir antes de ir ao laboratório (resumido)\n
  1. Identifique/medida a planta G(s) (pelo menos G(0) e resposta ao degrau) ou pegue os parâmetros conhecidos do motor.\n2. Escolha especificações (sobrepasso, T_s) e calcule s_d.\n3. Escolha z (zero do PI) e calcule K_p pela condição de módulo (ou use rltool). Calcule K_i=K_p z.\n4. Verifique restrição imediata K_p\le 2 para evitar saturação inicial (esta é uma restrição prática quando r=5 V).\n5. Simule: lugar das raízes, resposta ao degrau r=5, e, muito importante, verifique u(t) com linhas em \pm 10 V.\n6. Se houver risco de saturação, implemente anti-windup no controlador.\n7. Prepare relatório curto com todos os plots e leve ao professor para validação.\n8. Após validação, realize experimento monitorando u(t) e gravando dados para comparar com simulação; faça ajustes finos se necessário e documente diferenças.\n\nPalavras de incentivo: começa por medir G(0) e uma resposta ao degrau — com isso já dá pra calcular se u_{ss} ficará dentro de [-10,10] e para escolher K_p inicial (lembre do limite K_p\le 2). Você consegue!

Resposta

Não é possível fornecer valores numéricos de K_p e K_i porque o enunciado não fornece a função de transferência da planta G(s) nem parâmetros identificáveis; siga o procedimento detalhado acima assim que obtiver G(s) (ou me envie G(s) / dados de identificação que eu calculo K_p e K_i passo a passo).

Exercícios relacionados