4 EXECUÇÃO DO PROJETO
4.2 CIRCUITO
4.2.5 Adequações ao Projeto do Código do Microcontrolador
O código utilizado para o controle PID do microcontrolador segue uma lógica com duas funções principais, a de aquisição do sinal de temperatura e assim a interpretação dos dados para que o controlador obtenha esse valor e a função do controlador PID de ajustar o Duty-Cycle do PWM com o intuito de acertar a temperatura do forno ao valor requerido. Algumas particularidades do funcionamento do código serão discriminadas a seguir.
4.2.5.1 Aquisição do Sinal e Determinação do Valor de Temperatura
O controlador utilizado no circuito para o controle da temperatura do forno possui um conversor analógico digital, utilizado para aquisição do sinal de temperatura do termopar. A resolução do ADC é de 12 bits, com valor máximo de 4095, que equivale à aplicação de 3,3 Vdc à entrada respectiva do ADC. Foram utilizados limites de 0,6 VDC para o valor mínimo de temperatura (0 ºC) e 3 VDC para o valor máximo de temperatura (1200 ºC).
Desta maneira, foi definido o cálculo para a conversão do valor lido pelo ADC que varia entre 745 (0,6 Vdc ou 0 ºC) e 3723 (3 Vdc ou 1200 ºC), para o seu
Figura 21 - Circuito de Aquisição de Dados. Fonte: Autoria própria.
44
valor correspondente em graus celsius, para auxiliar na coleta de dados, obtenção das curvas PID e auxílio interface do usuário. O cálculo ficou da seguinte maneira, equação 9:
(9)
Sendo T a temperatura no interior do forno em graus celsius e ADC o valor lido pelo conversor analógico digital (valor inteiro entre 0 e 4095). Pode-se ver como esse cálculo foi efetuado, e a aplicação dos limites do sinal no código utilizado no microcontrolador, expresso na figura 22.
float getTemp(){ // 150 Ohms -> 0.6 V ~ 3V (745 ~ 3723) ADC0_Get(); if (ADCvalue < 740){ temperature = -10; } else { temperature = ADCvalue * 0.403 - 300.052; } return temperature; }
Figura 22 - Aplicação dos limites do sinal. Fonte: Autoria própria
4.2.5.2 Efeito Anti Wind-Up do termo Integrador do PID
Segundo Junior (2000), um dos erros que pode ocorrer num controlador PID, é quando o valor da variável de controle atinge o valor máximo do atuador, e então ocorre a saturação do sinal de controle. Isto causa a "quebra" da malha de realimentação do controlador, pois fará com que o atuador permaneça no seu limite máximo (ou mínimo dependendo da aplicação) independente da saída do processo ou do sinal de entrada. Para Haffner (2008), essa limitação dos sinais para o funcionamento do controlador pode ser definida como visto na figura 23. Como está sendo utilizado um controlador PID, que possui um termo integral, novamente como diz Junior (2000), esse erro entre o sinal e o controle continuará a ser integrado e o termo I do controlador continuará crescendo e se tornará muito grande ou demasiadamente "carregado", da onde vem o termo "Wind-up" do inglês. Para que o
45
controlador volte a trabalhar na região linear, é necessário que esse termo integrador se "descarregue", e assim o sinal saia da saturação.
Figura 23 - Limites do Sinal de Controle. Fonte: HAFFNER, (2008).
De acordo com Haffner (2008), o método para a correção desse efeito denomina-se ação Anti Wind-Up, com várias formas de ser executada. Uma das formas seria evitar que o módulo integral mantenha o atuador saturado mesmo com a diminuição do erro.
Junior (2000), cita também duas maneiras de se operar o Anti Wind-Up, a primeira, demonstrada na figura 24, é o Back-Calculation and Tracking.
Figura 24 - Back-Calculation and Tracking. Fonte: JUNIOR, (2000).
46
A Back-Calculation and Tracking faz com que, quando há saturação na saída do controlador, o termo integral será recalculado de forma que o seu valor permanece no limite que pode ser gerado pelo atuador. Pode-se ver na figura 24 que o sistema possui uma realimentação adicional, onde a entrada e a saída do atuador geram um erro, que é realimentado ao bloco integrador. Quando não há saturação do sinal de entrada, esse erro é zero, e o controlador opera normalmente. As variáveis vistas na figura 24 são discriminadas como:
- Constante Dinâmica de Tempo à ser utilizada no Anti Wind-up (chamada de Tt); - Constante de tempo do bloco Derivativo (chamada de Td);
- Constante de tempo do bloco Integrador (chamada de Ti); K - Constantes de controle;
e - Sinal de entrada do controlador PID;
- Sinal de erro entre a entrada e saída do atuador.
Quando então ocorre a saturação, o sinal de entrada do bloco integrador muda, como mostra a equação 10, para:
(10)
Ou em regime permanente, equação 11:
(11)
Forçando então com que a entrada do bloco integrador seja zero, e evitando com que ele se "sobrecarregue". Um exemplo dessa aplicação pode ser visto na figura 25, onde a curva tracejada representa um sistema PI sem ação Anti Wind-Up, e a curva de linha contínua apresenta um sistema PI com ação Anti Wind-Up.
47
Figura 25 - Curvas Comparativas do Sistema Anti WInd-Up. Fonte: JUNIOR, (2000).
O outro método para a aplicação do Anti Wind-Up é o de integração condicional (JUNIOR, 2000), que consiste em desligar a ação integral quando o controle está longe do regime permanente. A ação integral é assim ativada apenas quando certas condições pré-estabelecidas são satisfeitas, caso contrário o termo integral é mantido constante, ou seja, a entrada do integrador é mantida em zero.
As condições para a integração ser inibida podem ser definidas de várias maneiras. Uma forma é desligar o integrador enquanto o sinal de erro for grande. Outra maneira é desligar o integrador somente durante a saturação. A desvantagem destas duas estratégias é que o valor do termo integral poderá ficar bloqueado em um valor muito alto enquanto o integrador permanecer desligado.
Para que seja evitado este tipo de problema uma terceira estratégia pode ser implementada. A ideia consiste em desligar o integrador somente quando o controlador está saturado e o erro é tal que provocaria um aumento da carga do integrador fazendo com que o sinal de controle ficasse mais saturado. Assim, por exemplo, se o controlador está saturado no limite máximo a ação seria desligada somente enquanto o erro fosse positivo. Entretanto, quando o sinal de erro se tornasse negativo a ação integral voltaria a ser ligada com o intuito de descarregar o
48
integrador.
No código do controlador utilizado na execução do projeto foi implementado o forçamento da variável de integração para o valor zero, a fim de evitar o efeito Wind-Up, como visto na figura 26.
//Integral term
if (Ik1 >= 99){ //anti wind-up I = 99; } else if (Ik1 <= 0){ I = 0; } else {
I = (Ki*T*(ek + ek1)/2) + Ik1; }
Figura 26 - Aplicação do Anti Wind-up no código. Fonte: Autoria própria.
Assim, aplicando o sistema Anti Wind-Up no controlador PID.