sábado, 31 de janeiro de 2015

dsPIC PID Temp - Um Controlador Digital de Temperatura com Algoritmo PID

Dentre os métodos de estabilização de malhas de controle de processos, o Algoritmo PID se destaca como o mais utilizado hoje nos vários setores industriais. Este artigo demonstra um Controlador Digital de Temperatura que faz uso deste algoritmo.



A Microchip disponibiliza para a sua família de Controladores Digitais de Sinais (DSCs), dsPIC30F, a biblioteca DSP.h que possui funções para processamento digital de sinais como operações com vetores, matrizes, filtros FIR e IIR, FFT e o Algoritmo PID, que é demonstrado neste projeto.

A função do circuito é controlar a temperatura de um resistor modulando a sua potência. Esta é uma aplicação simples para aprendermos a utilizar o algoritmo PID.

A Figura 1 mostra algumas características do circuito.

Figura 1 - Características do circuito

O diagrama de interligação entre o DSC e os periféricos do circuito com os respectivos sinais pode ser visto na Figura 2.


Figura 2 - Diagrama de interligação

O DSC escolhido foi o dsPIC30F4013, mostrado na Figura 3,  que possui todos os periféricos necessários para a interface já integrados, como conversor A/D de 12 bits, saída PWM e módulo UART para comunicação serial. 


Figura 3 - O controlador Digital de Sinais dsPIC30F4013


Funcionamento do Circuito

O dsPIC recebe o sinal de temperatura de 10 mV / °C de um sensor linear de temperatura LM35 através da entrada analógica AN9. Esta é a Variável de Processo (PV), como é conhecida no ramo de automação industrial. O Valor Desejado, ou Set-Point (SP), é ajustado pelo usuário através de três teclas e um display gráfico GLCD 128x64 padrão KS108B, que é utilizado como IHM (Interface Homem Máquina). Os três parâmetros do PID, Proporcional (kp), Integral (ki) e Derivativo (kd), que definem a resposta do controle também podem ser ajustados pelo usuário, conforme mostrado na Figura 4. 

 Figura 4 - Tela do display GLCD para ajustes de SP, Kp, Ki e Kd

O controlador então executa o algoritmo PID que fornece a Saída do controle, e a converte em um sinal PWM (Modulação por Largura do Pulso) que através de um drive com MOSFET controla a potência do resistor, que é a Variável Manipulada (MV). A face do sensor de temperatura é fixada junto ao corpo do resistor e fornece o feedback, ou realimentação, para o controle. A Figura 5 mostra a placa com o resistor de potência, o MOSFET, sensor de temperatura e botões de ajuste.

Figura 5 - Placa de interface conectada ao dsPIC


Na Figura 6 temos o diagrama de blocos do sistema de controle com a função de transferência de cada ação do controlador PID. O termo z-1, no domínio da frequência, aparece devido termos um controle discreto no tempo, isto é, baseado em amostragens.

Figura 6 - Diagrama em Blocos com a Função de Transferência do controlador

O cálculo executado pelo algoritmo PID é expresso como:
Saída [n] = Saída [n-1] +
                 + Erro [n] * Coeficiente_a +
                 + Erro [n-1] * Coeficiente_b +
                 + Erro [n-2] * Coeficiente_c
Sendo:
Coeficiente_a = ( Kp + Ki + Kd )
Coeficiente_b = - ( Kp + 2 * Kd )
Coeficiente_c = Kd

Onde:
Saída [n] é a saída do controle para o aquecimento.
Erro é a diferença entre o set-point e a PV (temperatura atual).
Kp, Ki e Kd são os parâmetros do PID.
[n], [n-1] e [n-2] são o N-ésimo valor da variável armazenada na memória e identifica este como um controle no tempo discreto.

Obs.: Todos os dados estão em valores fracionários, isto é, numa escala de -1 a 1, para a execução das instruções assembler de DSP do dsPIC. Todo o algoritmo PID é executado em 60 ciclos de máquina, possibilitando a execução de Controles em Tempo Real.

O programa do dsPIC

O programa foi desenvolvido em linguagem C no ambiente MPLAB IDE. 

São utilizadas 3 funções da biblioteca para os cálculos do algoritmo PID:
PIDInit ( ): inicializa o algoritmo, limpa o histórico e a saída do controlador PID;
PIDCoeffCalc ( ): gera os coeficientes a, b e c do algoritmo. É executada sempre que o valor de kp, ki ou kd é alterado;
PID ( ): executa os cálculos do algoritmo propriamente dito a cada 0,5 segundos.

No início do programa são configurados os PORTs de I/O e iniciados os periféricos em glcd_inicializa ( ), uart_init ( ),init_adc12 ( ), pwm_init ( ) e PIDInit ( ). O programa passa então a um loop executando a função PID( ), lendo as teclas e atualizando a tela do display GLCD.

O arquivo main.c contém o programa principal. DSP.h e PID.s pertencem à biblioteca da Microchip para executar os cálculos do PID. PID_GLCD.hex é o arquivo gerado pelo compilador para ser gravado no dsPIC.


O programa do PC

Para a análise do desempenho do controle e da verificação da estabilidade do sistema os dados de temperatura, set-point e saída do PWM são enviados para o computador a cada 2 segundos e apresentados em um gráfico em tempo real por um programa desenvolvido em Visual Basic, que recebe estas informações do Controlador pela porta serial RS 232, utilizando o CI MAX232 para conversão dos níveis de sinais. Um gráfico da temperatura também pode ser visualizado no display gráfico GLCD. Esta interface gráfica é vista na Figura 7.

Figura 7 - Programa dsPIC PID TEMP que roda no PC

A Figura 8 exibe o gráfico da temperatura gerado no display GLCD.

Figura 8 - Gráfico da temperatura gerado no display GLCD

Para não se perderem os dados de set-point, kp, ki e kd ajustados pelo usuário, após uma desenergização, os mesmos podem ser salvos na memória EEPROM do dsPIC através da opção “salvar dados” disponível no menu do display gráfico.

Figura 9 - Dados salvos na memória EEPROM


Teste do programa e Sintonia do Controle

A Figura 10 apresenta a resposta do controlador a uma variação da entrada. O gráfico foi gerado pelo programa com os parâmetros kp em 0,4, ki em 0,10 e kd em 0,04.
Figura 10 - Resposta do controle a uma variação de entrada

Na Figura 11 pode ser visto o diagrama elétrico do Controlador Digital de Temperatura

Figura 11 - Diagrama elétrico do circuito

e na Figura 12 ilustramos a montagem do protótipo realizado.
Figura 12 - Protótipo do circuito


Conclusão

Devido a sua simplicidade, baseando-se em apenas três constantes das ações P(Proporcional), I(Integral) e D(Derivativo), o algoritmo PID é o método de controle para estabilidade de processos mais utilizado nas indústrias e pode ser facilmente implementado nos projetos através da biblioteca disponível para os dsPICs conforme foi demonstrado neste artigo.

Assista ao vídeo do circuito em funcionamento:

Video do dsPIC PID TEMP



Referencia Bibliográfica

Nise, N. S. Engenharia de Sistemas de Controle. 5 ed. Rio de Janeiro: LTC, pp. 364 - 373, 277- 279, 356-399, 2009.
Ogata, H. Engenharia de Controle Moderno. 4 ed. São Paulo: ABDRC, pp. 49 -55, 230 -235, 557 - 573, 2007.
MICROCHIP. PID Control Library. Disponível em: www.microchip.com Acesso em 21 maio 2011.
MACORATTI, J. C. Desenvolvimento de Programas em Visual Basic. Disponível em: www.macoratti.net Acesso em 21 maio 2011.
MICROCHIP. Code Examples. CE019 - Proportional Integral Derivative (PID) controllers & closed-loop control. Disponível em: http://ww1.microchip.com/downloads/en/DeviceDoc/CE019_PID.zip

* Projeto Publicado na Revista Saber Eletrônica 454.

Nenhum comentário:

Postar um comentário