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:\nC(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
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
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
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
usar a condição de ângulo para ajustar z (se necessário);\n
usar a condição de módulo para calcular o ganho necessário (daí K_p);\n
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
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 é\nK_p = \frac{1}{\left|\dfrac{s_d+z}{s_d}\,G(s_d)\right|}\n6. O ganho integral é\nK_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\nu(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\nK_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:\nu_{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:\nG(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\nK_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
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).