Controladores PID com a FRDM KL25Z

FRDM KL25Z

Introdução

 

Neste artigo serão apresentados alguns aspectos teóricos a respeito de sistemas dinâmicos. Será, também, implementado um controlador PID digital utilizando a placa de desenvolvimento FRDM KL25Z e o FreeRTOS.

 

Controladores

 

Os controladores são estruturas que visam garantir que uma variável conhecida de um sistema dinâmico tenha seu valor final constante e igual a um valor previamente desejado.

 

São exemplos de sistemas dinâmicos circuitos elétricos contendo resistores, capacitores e indutores, sistemas mecânicos massa-mola, etc. Nas aplicações reais, são encontrados sistemas cujas variáveis deseja-se controlar, tais como a temperatura de processos, a velocidade de automóveis, ou posicionamento de satélites.

 

Uma das abordagens clássicas dos sistemas dinâmicos propõe, para identificação de suas características, buscar uma representação que relacione suas variáveis. Estas são, normalmente, entrada e saída. É utilizada, então, conforme discutido no artigo anterior, a função de transferência.

 

Modelagem de um Circuito RLC

 

No domínio da frequência complexa (Laplace), as impedâncias de resistores (de resistência R), indutores (de indutância L) e capacitores (de capacitância C) são apresentadas a seguir:

 

Z_R(s)=R

Z_L(s)=sL

Z_C(s)=\frac{1}{sC}

 

Um circuito RLC, que possui como sinal de saída a tensão sobre o capacitor, podem ser modelados utilizando estes conceitos. A Figura 1 a seguir representa este circuito.

 

Circuito RLC
Figura 1 - Circuito RLC

 

A função de transferência consiste em relacionar os sinais de entrada e saída, X e Y. Substituindo os componentes por suas respectivas impedâncias e aplicando a lei do divisor de tensão, a seguinte equação é obtida:

 

Y(s)=\frac{X(s)\cdot\frac{1}{sC}}{R+sL+\frac{1}{sC}}

\frac{Y(s)}{X(s)}=\frac{1}{sC(R+sL+\frac{1}{sC})}

G(s)=\frac{1}{sRC+s^2LC+1}

G(s)=\frac{\frac{1}{LC}}{s^2+s\frac{R}{L}+\frac{1}{LC}}

 

Este é, então um sistema dinâmico de segunda ordem, já que o polinômio do denominador da função de transferência tem ordem quadrática.

 

Especificações de Desempenho para Sistemas de Segunda Ordem

 

As raízes do polinômio característico da função de transferência (denominador), são chamadas polo. A posição dos polos influencia diretamente no comportamento do sistema. Um polo positivo é responsável por levar o sistema à instabilidade, por exemplo. A presença de polos mistos (com parte real e parte imaginária) adicionam oscilações amortecidas à sua resposta.

 

Um sistema de segunda ordem possui dois polos e é representado genericamente da maneira a seguir:

 

G(s)=\frac{\omega _n^2}{s^2+2\zeta\omega _n+\omega _n^2}

 

A constante \omega _n é denominada frequência natural. Ela representa a frequência de oscilação do sistema sem amortecimento. A constante\zetaé definida como fator de amortecimento, a qual define os tipos de resposta e oscilação da resposta ao degrau (NISE, 2011).

 

Os valores assumidos pelo fator de amortecimento influem diretamente na resposta do sistema. A Figura 2 a seguir relaciona seu valor à resposta ao degrau unitário.

 

Sistemas de Segunda Ordem
Figura 2 - Respostas de um Sistema de Segunda Ordem
Fonte: NISE, 2011

 

Para sistemas de segunda ordem subamortecidos são passíveis de serem mensuradas novas especificações de desempenho, como overshoot e tempo de pico.

 

Overshoot é o valor da ultrapassagem percentual que a forma de onda ultrapassa seu valor em regime permanente. É resultado da seguinte expressão:

 

\%mp=e^{\frac{\zeta \pi}{\sqrt{1-\zeta^2}}}\cdot 100

Como o overshoot é função apenas do fator de amortecimento, é possível obter o segundo a partir do primeiro.

 

\zeta =-\frac{ln(\%mp/100)}{\sqrt{\pi^2+ln^2(\%mp/100)}}

O tempo de acomodação é o tempo que leva para que as oscilações amortecidas não ultrapassem 2% do valor de regime permanente.

 

T_a=\frac{3.91}{\zeta \omega _n}

Os polos, ou raízes do denominador, da função de transferência genérica apresentada, são:

 

s_{1,2}=-\zeta\omega _n\pm\omega _n\sqrt{1-\zeta ^2}\cdot i

 

Controladores PID

 

O objetivo dos sistemas de controle é fazer com que o comportamento de certa variável seja rastreado e controlado. A principal estrutura responsável por isso é a realimentação, que consiste em fazer com que o sinal de saída influencie na formação do sinal de controle, retornando para ser comparado com o valor desejado, por exemplo. Este valor desejado é comumente denominado setpoint.

 

O controle PID é uma técnica de controle em malha fechada que lida com as componentes proporcional, integral e derivativa do sinal de erro. Sua entrada é provinda de uma realimentação negativa, a qual faz a comparação entre o sinal obtido e o sinal desejado. A Figura 3 a seguir exemplifica essa estrutura:

 

Figura 3 - Diagrama de Blocos do Controle PID

 

A componente proporcional entrega à saída do controlador, diretamente, um valor proporcional ao erro atual. A parte integral é responsável por eliminar o erro em regime permanente e a derivativa responde às variações no sinal de entrada do controlador, tendo maior influência na resposta transitória, sendo, então, utilizada para reduzir oscilações (OGATA, 2014).

 

A função de transferência do controlador PID é a seguinte:

 

C_{pid}(s)=\frac{K_d\cdot s^2+K_p\cdot s+K_i}{s}

 

Onde Kd é o granho derivativo, Kp o ganho proporcional e Ki o ganho integrativo.

 

Conversão de um PID Digital

 

Como discutido anteriormente, os sistemas dinâmicos a serem implementados no microcontrolador são digitais, sendo assim, é necessário realizar a conversão do controlador.

 

Será utilizado para obter a equação discreta do controlador PID, o método discutido no artigo anterior chamado backward difference. Neste método é feita uma aproximação para a operação de derivação, de modo que a seguinte substituição deve ser feita:

 

s=\frac{1-z^{-1}}{T}

 

Onte T é o período de amostragem.

Aplicando esta transformação na função de transferência do controlador PID apresentado na seção anterior, a seguinte equação é obtida:

 

C_{pid}(z)=\frac{z^{-2}\cdot ({\frac{K_d}{T}})+z^{-1}\cdot (-2\cdot{\frac{K_d}{T}}-K_p)+({\frac{K_d}{T}+K_p+K_i\cdot T})}{1-z^{-1}}

 

Utilizando a propriedade do atraso, também apresentada no artigo anterior, a seguinte equação, a qual será implementada no microcontrolador, é obtida:

 

\small y[k]=({{\frac{K_d}{T}}+K_p+K_i\cdot T})\cdot x[k]+(-2\cdot\frac{K_d}{T}-K_p)\cdot x[k-1]+(\frac{K_d}{T})\cdot x[k-2]+y[k-1]

 

Implementação

 

Os códigos para implementação do processamento da equação de diferenças do será idêntico ao apresentado no artigo anterior, apenas com algumas observações.

 

 

O arquivo principal não sofrerá alterações. Na função principal é feita a criação da tarefa e início do agendador do sistemas operacional. Na task sistema são inicializados os conversores AD e DA, os parâmetros da equação e, no loop principal, aguardado o período de amostragem, realizada a leitura da entrada analógica e escrita da saída.

 

O arquivo que representa o sistema dinâmico sofrerá algumas alterações.

 

 

Foi necessário adicionar as declarações dos parâmetros do controlador, float kd, kp e ki. Além disso, estes parâmetros foram utilizados para atualizar os coeficientes da equação utilizando a expressão apresentada no fim da seção anterior.

 

Uma variável foi criada para armazenar o setpoint, que é o valor final desejado para o sistema. A entrada do sistema dinâmico que aqui é o controlador PID será, então, o resultado da realimentação. Isto é feito em entrada[atual] = setpoint - x, onde x é a saída, tensão no capacitor, no exemplo da Figura 1. Desta maneira, a entrada do sistema dinâmico é o próprio sinal de erro.

 

O valor para o setpoint leva em conta a resolução e os limites do conversor digital-analógico. Ele possui 12 bits de resolução, assim, os valores de 0 a 4095 representam tensões de 0 a 3.3 V.

 

\small setpoint(V)=\frac{V\cdot4095}{3.3}

\small setpoint(1)=1241

 

Testes

 

Para realizar os testes do controlador PID será utilizado um circuito RLC conforme apresentado anteriormente, o qual possui a seguinte resposta ao degrau unitário:

 

Figura 4 - Resposta do Circuito ao Degrau Unitário

 

Este sistema apresenta um overshoot igual a 19.41% e tempo de acomodação igual a 138.4 ms. Conforme apresentado anteriormente é possível, através destes parâmetros, encontrar as constantes \small \omega _ne \small \zetae, por consequência, a função de transferência.

 

\small G(s)=\frac{3669.4816}{s^2+56.5\cdot s+3728.769}

 

A simulação das respostas foi feita no software Simulink, conforme a Figura 5 a seguir. Os parâmetros do controlador e da planta são correspondentes aos demonstrados anteriormente.

 

Figura 5 - Simulação da Planta no Simulink

 

No código apresentado, os parâmetros do controlador são os seguintes:

 

\small K_d=0.006404

\small K_p=1.274

\small K_i=52.8\small T=8\:ms

 

A simulação de um degrau unitário feita pelo Simulink é apresentada pela Figura 6 a seguir:

 

Figura 6 - Primeira Simulação

 

Em azul, está representado o sinal de saída, ou tensão no capacitor, de acordo com a Figura 1 e em amarelo o sinal de controle, ou sinal de entrada, tensão X, na Figura 1. A resposta real desse controlador é apresentada na Figura 7 a seguir:

 

Figura 7 - Resposta do Primeiro Controlador

 

O sistema resultante apresentou um overshoot igual a 25,2%, tempo de acomodação igual a 158 ms e tempo de pico igual a 43 ms. O comportamento foi suficientemente próximo ao simulado, podendo levar a conclusão de que o sistema foi implementado corretamente.

 

Para ilustrar a contribuição de cada componente do controlador PID, este exemplo será tomado como base de comparação.

 

Aumento de Kd

 

Ao aumentar o ganho derivativo, é de se esperar uma redução nas oscilações da resposta final. O controlador foi sintonizado então com o seguintes parâmetros:

 

\small K_d=0.01

\small K_p=1.274

\small K_i=52.8\small T=8\:ms

 

A figura a seguir mostra, em amarelo, o sinal de controle, ou entrada do sistema e saída do controlador e, em azul, a saída do sistema.

 

Figura 8 - Resposta Final com Aumento do Ganho Derivativo

 

O sistema apresenta, agora, 21,89% de overshoot e 100 ms de tempo de acomodação. Logo, é possível concluir que o aumento do ganho derivativo resultou na diminuição das oscilações.

 

Aumento de Kp

 

Ao aumentar o ganho proporcional esperas-se redução do tempo de pico, e, em contrapartida, aumento das oscilações. O controlador foi sintonizado então com o seguintes parâmetros:

 

\small K_d=0.006404

\small K_p=1.8

\small K_i=52.8\small T=8\:ms

 

Figura 9 - Resposta Final com Aumento do Ganho Proporcional

 

O sistema apresenta, agora, 34,97% de overshoot, tempo de pico igual a 36 ms e 152 ms de tempo de acomodação. Logo, é possível concluir que houve aumento das oscilações e redução do tempo de pico.

 

Aumento de Ki

 

Ao aumentar o ganho integrativo esperas-se redução do tempo de pico, e, em contrapartida, aumento das oscilações. O controlador foi sintonizado então com o seguintes parâmetros:

 

\small K_d=0.006404

\small K_p=1.274

\small K_i=60\small T=8\:ms

 

Figura 10 - Resposta Final com Aumento do Ganho Integrativo

 

O sistema apresenta, agora, 30,55% de overshoot, tempo de pico igual a 40 ms e 163 ms de tempo de acomodação. Houve, então, aumento das oscilações e uma ligeira diminuição do tempo de pico.

 

Todos os códigos podem ser acessados em meu GitHub.

 

Conclusões

 

Neste artigo foi implementado um controlador PID digital utilizando a placa de desenvolvimento FRDM KL25Z e o sistema operacional de tempo real FreeRTOS. Os testes e as simulações comprovaram o funcionamento do sistema. A partir da variação dos parâmetros do controlador, foi possível observar o efeito de cada componente

 

Nos próximos artigos da série serão discutidas maneiras de otimizar o código alterando a forma de representação dos coeficientes utilizando ponto fixo, assim como a implementação de filtros digitais, os quais necessitam maior velocidade de execução.

 

Saiba Mais

 

USB HID - Human Interface Device Class: Exemplo com a placa FRDM-KL25Z

Webinar Gravado: Implementação de Controle PID com PIC16F1619

Comunicação entre tarefas no FreeRTOS: Filas

RTOS: Um ambiente multi-tarefas para Sistemas Embarcados

 

Referências

 

DORF, Richard C.; BISHOP, Robert H. Modern Control Systems. 12. ed. Estados Unidos da América: Prentice Hall, 2011.

NISE, Norman S. Control Systems Engineering. 6. ed. 2011.

OGATA, Katsuhiko. Engenharia de Controle Moderno. 5. ed. São Paulo: Pearson, 2014.

 

Outros artigos da série

<< Sistemas Dinâmicos e Equações de Diferenças com a FRDM KL25ZOtimização do processamento utilizando Ponto Fixo >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Thiago Pereira do Prado
Graduando em Engenharia de Controle e Automação pela Universidade Federal de Itajubá. Aficionado por Tecnologia, Programação e Sistemas Embarcados. Desde cedo era curioso por saber como as coisas funcionavam. Desmontava vários drivers de DVD e carrinhos de controle remoto atrás dos motores DC. Atualmente pesquiso na área de sistemas dinâmicos, controladores e filtros digitais.

2
Deixe um comentário

avatar
 
2 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Rodrigo Duarte Pechoneridakys zammis Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Rodrigo Duarte Pechoneri
Membro

Muito bom o artigo, bem elucidador as comparações de resultados. Parabéns.

dakys zammis
Visitante
dakys zammis

estou tentando entender um pouco sobre controle( pid )o que voce comentou acima me foi de grande valia,pois comecei a entender o conceito de controle pid,,,,obrigado