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...

segunda-feira, 20 de maio de 2013

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

Em três posts anteriores nesse blog, eu discuti os circuitos necessários para se controlar uma carga resistiva monofásica em CA. Vc pode acessá-los aqui:

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

Agora sim, vamos entrar no assunto principal dessa série de posts: o Controle Proporcional , Integral Derivativo, PID. A ideia é explicar a teoria da coisa e dar pelo menos um exemplo de como usar o PID na prática. O texto abaixo é quase uma tradução de parte do texto sobre PID da Wikipedia em inglês, então sugiro que aqueles que conseguem ler bem na língua de Sir Paul McCartney que leiam o texto por lá.

O controle PID é um mecanismo genérico de controle do tipo "loop feedback", ou seja, é um sistema que leva em conta a resposta do processo durante o ajuste para modificar o seu comportamento. É muito usado em sistemas de controle industriais. O PID calcula um erro, que é a diferença entre o valor corrente da variável a ser controlada no tempo t e o set point. Ele tenta então minimizar o erro ajustando o input do processo de controle.

O algoritmo envolve o cálculo de três parâmetros, o que faz com que o PID também seja chamado de controle de três termos: os termos proporcional, integral e derivativo, o que dá a sigla PID.  Heuristicamente, esses valores podem ser interpretados em termos de tempo: P depende do erro presente, I da acumulação de erros passados e D é uma tentativa de predição dos erros futuros, baseado na taxa atual de mudança.
O peso de cada termo deve ser ajustado para cada processo.

Quando não se conhece as especificidades de um processo, o PID é considerado o melhor algoritmo de controle. Ajustando-se os três parâmetros do PID fazemos com que ele consiga atender às demandas específicas de cada processo a ser controlado. A reposta do controle pode ser descrita em termos da responsividade do controle a um erro, do tanto que o controle ultrapassa o set point e do grau de oscilação do sistema. É importante observar que o PID por si só não garante o controle ótimo do sistema nem a sua estabilidade. Cada caso é um caso.

Algumas aplicações podem necessitar do uso de apenas uma ou duas ações para propiciar o sistema de controle apropriado. Isso é obtido zerando-se os parâmetros que devem ser desativados. Um controle PID pode então ser chamado de de controle PI, PD, P ou I. Controles PI são muito comuns, desde que a ação derivativa é muito sensível a ruídos na medida. Já a ausência do termo derivativo pode impedir o sistema de atingir o set point devido à ação do controle.

Introdução - Controle por laço (loop control)

Quando tomamos banho, principalmente num dia frio, tomamos o cuidado de ajustar a temperatura da água, nem tão fria que nos seja desconfortável, nem tão quente que nos queime a pele. Esse ajuste é feito com a gente atuando na quantidade de água que passa pela resistência do chuveiro. Quanto menos água passa pelo chuveiro mais quente ela fica. Se o chuveiro não for elétrico (o que, assim como a jabuticaba, é uma coisa exclusiva do Brasil), ou seja, se houver um aquecedor central, a gente atua nas torneiras de água fria e quente, de maneira a obtermos a temperatura de nosso agrado. Esse é um exemplo de um loop control, que tem esse nome porque a malha forma um laço fechado entre o sensor de temperatura (nossa mão), o processamento (nosso cérebro) e os atuadores, nossa(s) mão(s) que aciona(m) a(s) torneira(s).

A temperatura é a variável de processo (VP) o valor desejado é o set point (SP). As voltas que damos na torneira representam a variável manipulada (MV). A diferença de temperatura medida e o SP é o erro (e) e quantifica se a água está muito quente ou fria e o quanto está longe do SP.

Depois de medir a temperatura num determinado instante (PV) e calcular o erro, o controlador decide atuar na torneira (MV) e quanto atuar. Se a temperatura está mais quente e perto do que desejamos, abrimos pouco a torneira, se está muito quente abrimos mais. Esse é um exemplo simples de controle proporcional.  No caso da temperatura demorar a baixar, podemos abrir mais e mais a torneira. Esse é um exemplo de controle derivativo, ou seja, a ação de controle depende da taxa (velocidade) de variação do PV.

Abrir muito a torneira quando o erro é pequeno é equivalente ter um alto ganho no controlador, e irá levar a VP a ultrapassar o SP, o que em inglês é chamado de overshoot. Se o controle faz atuações muito grandes repetidamente, o VP irá oscilar em torno do SP em uma forma sinusóide constante, crescente ou decadente. Se a oscilação cresce com o tempo então o sistema é dito instável, se ela decai o sistema é dito estável. Se a curva se mantém numa amplitude constante em torno da média o sistema está marginalmente estável.

Com o objetivo de convergir para o set point, o controle pode tentar antecipar futuras oscilações. Para compensar esse efeito, o controlador pode decidir modificar os seus ajustes. Esse é o controle derivativo.

Se um controle parte de um estado estável com zero erro (PV = SP), poderá ocorrer mudanças no controle em resposta a mudanças em outras variáveis, medidas ou não, que impactem o processo, perturbando o PV. Variáveis que impactam o processo e não são o PV são chamadas de distúrbios. Geralmente os circuitos de controle tem como objetivo rejeitar os distúrbios. No nosso exemplo, uma mudança na temperatura da água que está entrando no chveiro consiste em um distúrbio.

Em tese, um circuito controlador pode ser usado para controlar qualquer processo em que haja um PV que possa ser medido, um SP e uma variável manipulável (MV) que possa alterar o PV. Esse tipo de controle é usado na indústria para regular temperatura, pressão, vazão, composição química, velocidade, ou seja, praticamente qualquer variável passível de medição.

A teoria do PID

O esquema do controle PID é constituído da soma de manipuladores da variável manipulada (MV). Os termos proporcional, integral e derivativo são somados para calcular a saída do controle PID. Se chamarmos u(t) de saída do controle, a forma final da equação é:


Pode-se observar que é uma equação de três termos adicionados para calcular u, que é a correção a ser aplicada (MV) num determinado instante t.

Os termos são, pela ordem, da esquerda para a direita na equação:

O termo proporcional, Kpe(t), produz um valor de saída que é proporcional ao erro em um dado momento. Ou seja, quanto mais distante PV estiver de SP, maior será esse termo. A resposta proporcional pode ser ajustada pela constante Kp, chamada de constante de ganho proporcional.

Um alto ganho proporcional resulta numa grande mudança na saída para uma dada mudança no erro. Se o ganho proporcional é muito grande, o sistema pode ficar instável. Se o ganho proporcional é muito pequeno, a ação do controle pode ser tão pequena que o SP não chegará a ser atingido. Num dos testes que andei fazendo, só com o controle proporcional (Kp = 7, Ki = 0 e Kd = 0), para um set point igual a 60 °C, obtive o seguinte resultado:


No gráfico acima, e em outros que vão aparecer aqui, a curva em azul é o PV (temperatura), a curva em marrom é o output que controla a quantidade de energia que o TRIAC libera para a resistência. O eixo x é número da medida, que tem a ver com o tempo. Para indicar o tempo em segundos precisamente a gente tem que usar um RTC (relógio de tempo real), colocar no circuito e ir lendo o tempo que ele fornece. Vou ver se adoto essa prática no futuro, até porque eu acho que tenho um RTC por aqui.

O eixo y da esquerda é o output, o da direita é a temperatura em °C, medida junto à resistência.

No gráfico dá prá ver como o controle proporcional atua, começando com um output máximo (240) pelo fato do VP estar longe do SP. É medida que o erro e vai caindo, o controle vai diminuindo a potência buscando fazer com que a temperatura se estabilize no SP, Acontece que eu usei um Kp tão pequeno que a temperatura se estabilizou em 49 °C, e não no SP, que era 60 °C.

Alterando o Kp para 50 e mantendo os outros dois coeficientes iguais a zero, o comportamento muda bastante:


Agora o sistema atinge o SP e fica oscilando em torno deste. O primeiro pico acima do SP é mais forte, depois ele se estabiliza em um valor menor, sugerindo uma condição de sistema marginalmente estável.

No próximo post, vamos falar dos controles integral e derivativo e mostrar códigos em Arduino usando esses conceitos.