Postagem em destaque

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte I

Este post é o primeiro de uma série de seis que escrevi tratando de controle de potência e PID (controle proporcional, integral e derivativo...

domingo, 26 de maio de 2013

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte V


No último post escrevi uma introdução sobre PID (controle Proporcional, Integral e Derivativo), onde descrevi a teoria envolvida e o "P", ou seja, o controle Proporcional.

Os posts que compõem essa série podem ser clicados abaixo:

Controle de Pot. em CA - PID, Arduino e TRIAC - Parte I
Controle de Pot. em CA - PID, Arduino e TRIAC - Parte II
Controle de Pot. em CA - PID, Arduino e TRIAC - Parte III
Controle de Pot. em CA - PID, Arduino e TRIAC - Parte IV

Neste post, vamos falar dos controles Integral e Derivativo.

O controle Derivativo procura fazer com que o nosso sistema atue mais rápido ou mais devagar segundo a taxa de resposta do PV. Ou seja, a resposta do sistema será inversamente proporcional à taxa de variação (derivada, aí o nome) do PV. Quanto mais devagar o PV estiver variando, maior será a correção calculada.

Por fim, o controle Integral procura levar em conta quanto tempo estivemos afastados do set point. Ele é importante para tentar evitar que o sistema fique oscilando em torno do set point, oscilação que é causada pelas componentes Integral e Derivativa.

Resumindo:

Controle Proporcional: calcula o MV levando em conta a distância entre o set point e o valor da variável PV em um determinado instante.

Controle Integral: calcula o MV levando em conta o tempo em que o sistema fica distante do set point (SP). 

Controle Derivativo: calcula o MV levando em conta a taxa de variação (velocidade com que varia, ou derivada) do PV.

Definindo parâmetros

A chave do controle PID é a gente definir qual é a proporção relativa de cada componente em nosso sistema de controle. Essa proporção, ou peso, é dada pelas contantes KpKi e Kd.

Agora, como escolher o valor de cada constante no nosso controle? Bom, cada caso é um caso. Eu acho (e é minha opinião mesmo) que a gente tem que considerar vários fatores, já que o que importa é a curva que a gente quer de controle. Vc então tem que responder perguntas como: 

- É necessário que o controle responda o mais rápido possível a uma perturbação? 

- Ou isso não é tão importante, mas sim o valor presente deve evitar ao máximo ultrapassar o set point? Quando VP ultrapassa SP tempos uma sobrecarga, que pode ser importante ou não.

- O set point muda ou é constante? 

- Se ele se altera às vezes, qual a faixa de valores em que ele varia? Ele varia bruscamente ou suavemente?

Todas essas questões vão influenciar a escolha dos parâmetros, que no fim é o que determina a forma da curva.

Como são três parâmetros que atuam de forma "coordenada", quer dizer, o valor de um parâmetro influencia no comportamento das outras componentes, o ajuste pode ser difícil. Pode-se adotar três caminhos:

- Ajuste manual (no popular, tentativa e erro): vai-se testando diferentes valores e verificando o resultado até que o sistema funcione do jeito que queremos.

Ao usar essa técnica, devemos levar em conta a seguinte tabela. Ela mostra o reflexo que um aumento num determinado parâmetro provoca no sistema: 









Ou seja, vamos "mexendo" nos parâmetros considerando o seu efeito conforme a tabela acima.

- Cálculo dos parâmetros: nesse caso, a gente usa alguma regra para calcular os valores dos parâmetros de maneira a obter o resultado desejado.

Vou descrever um dos métodos para se calcular KpKi e Kd, o método de Ziegler-Nichols. Consta que é o mais utilizado.

Esse método é heurístico, ou seja, uma vez que vc o use, não há garantia matemática que a solução é a melhor possível (nesse caso, o método seria chamado determinístico).  Contudo, é bastante eficaz na maioria dos casos.

O método Z-N consiste em:

- Primeiro, zera-se Ki e Kd. Em seguida, varia, começando de zero, o valor de Kp até obter o valor de Ku,  definido como o menor valor de Kp em que o sistema fica oscilando em torno do SP com uma velocidade constante. No gráfico abaixo vc vê o comportamento do circuito com Kp=KuKi=0, Kd=0.










O período Tu da onda e o valor de Ku serão usados para calcular os outros parâmetros, conforme a tabela abaixo:









Se vc usar o Z-N para calcular seus parâmetros, tenha em mente que:

Os valores de Kp  Ki e Kd calculados com o Z-N tendem a levar o comportamento do sistema para um ganho agressivo (o sistema se aproxima rapidamente do SP) e com isso, a tendência a sobrecarga. Se a sobrecarga for muito problemática, esse não é o método adequado para estimar os parâmetros, mas mesmo assim pode servir como ponto de partida.

Mistura das técnicas acima: primeiro a gente calcula os parâmetros usando Z-N, mede o efeito. Em seguida, vamos tentando um ajuste fino "brincando" com as constantes para chegar ao resultado desejado.

Agora já temos todas as ferramentas para implementar um controle PID como se deve. No próximo e último post da série, vamos ver uma implementação prática do PID com o Arduino, baseada no circuito de controle que discutimos na parte III do nosso circuito.