Você está na página 1de 17

Controlador PID digital, uma

modelagem prtica para


microcontroladores - Parte 2
por Felipe Neves em segunda-feira, 16 de junho de 2014.

Dando continuidade do ponto em que paramos na primeira parte dessa srie, iremos
agora modelar um PID digital com uma abordagem um pouco diferente da utilizada
para concebermos o compensador descrito no artigo anterior, a idia aqui prover um
compensador PID que possa ser implementvel de forma simples em um processador de
uso geral (como foi exposto na parte I dessa srie, entenda - se processador de uso geral
qualquer microcontrolador que possua pelo menos a instruo de multiplicao por
hardware ).

Vamos recapitular?

N parte I dessa srie, foi explicado o que um sistema de controle por malha fechada,
o porque de seu uso, bem como o compensador do tipo PID (Proporcional - Integral Derivativo) como sendo um tipo de controlador verstil e aplicado em grande escala em
sistemas de controle dos mais variados tipos.

Ainda relembramos que sua expresso toma a forma de uma equao, como a
exemplificada a abaixo:

Onde:

Kp : Coeficiente da ao proporcional;

Ki : Coeficiente da ao integral;

Kd : Coeficiente da ao derivativa

t : Instante do estado a ser processado;

u(t) : Sinal de sada do sistema no instante t;

e(t) : Sinal de erro na entrada do controlador no instante t.

A partir dessa equao seguida do uso da conhecida transformada de Laplace, obteve se uma equao muito mais simples que a exemplificada acima de forma que poderia
ser concebido um circuito eletrnico para reproduzir o comportamento de um
compensador tipo PID.

Em contraponto, para implementar um componente desses via software (em um


microcontrolador) , tanto uma equao, quanto a outra, mostram - se muito trabalhosas
de serem implementadas, ento, utilizando - se de uma abordagem baseada em mtodos
numricos, conseguimos conceber uma equao de diferenas facilmente programvel
em um processador:

Onde, os parmetros (constantes) podem ser calculados como segue abaixo:

Alm disso temos :


ti =tempo de integrao
td = Tempo de diferenciao.

Tambm foi adotado um nome denominado aproximao retangular do termo integral,


com isso poderia traduzir essa simples equao para um programa que possa ser
embarcado no processador a ser utilizado.

Problemas com a aproximao retangular

Apesar do algoritmo por aproximao retangular do termo integral ser verstil e atender
uma boa gama de aplicaes, alguns problemas comeam a surgir a medida que a
complexidade do sistema a ser controlado aumenta.

O primeiro e grande problema trata - se da convergncia da integral da funo de erro


para o valor correto quando o valor prvio dessa funo erro igual a zero, ou quando a
diferena entre o erro corrente e o anterior passa a ser muito grande, esse problema
poderia ser corrigido aumentando - se o nmero de iteraes para clculo do termo
integral (e no baseado entre dois pontos), porm as custas de eficincia de execuo.

Uma outra soluo seria aproximar a integral apenas acumulando seu valor, a cada vez
que o PID computado, isso mantm a eficincia da execuo de cdigo, e causa o
mesmo efeito do aumento de iteraes, entretanto a acumulao s ocorreria uma nica
vez a cada valor do PID computado, retornando o problema de convergncia lenta nos
resultados da integral nos primeiros valores calculados pelo PID, a medida que o
processo avana esse efeito vai sendo minimizado.

O outro grande problema desse algoritmo pode ser elucidado com um exemplo prtico,
considerando um sistema onde o ganho proporcional algo elevado, e o erro acumulado
comea a crescer ou decrescer por longos perodos de tempo, isso pode levar fatalmente
o sistema em controle a ter sobressinal (overshoot) com valores elevados, e nos casos
mais graves, levar o sistema a uma oscilao permanente. Esse fenmeno conhecido
pelo nome de wind-up , e pode ser minimizado utilizando valores baixos para o ganho
integral, somadas a tcnicas de saturao do integrador (acumulador no caso da
aproximao integral), mas assim, voltamos ao problema de demora de convergncia,
uma vez que a saturao pode ser entendida como zerar o integrador( ou acumulador).

Temos ento alguns inconvenientes com esse algoritmo, ento o que pode - ser feito
para minimizar os efeitos de convergncia e wind-up ? Existem diversas formas de
modelar algoritmos de compensadores digitais a partir de circuitos analgicos, ou
mesmo a partir de expresses numricas, o algoritmo que irmos descrever aqui oferece
um compensador tipo PID digital com melhor aproximao.

Compensador PID digital 2 plos / 2 zeros

Sabendo dos problemas com o primeiro algoritmo podemos proceder com a modelagem
de um controlador PID digital mais preciso. Para tal iremos precisar de uma ferramenta
matemtica bem conhecida por quem j estudou controle digital (ou processamento
digital de sinais), a transformada Z.

Eis que essa ferramenta permite traduzir equaes de diferena (no domnio do tempo),
ou seja aquelas em que dois eventos so separados por um intervalo cujo seu valor
finito e representvel numricamente, e obter uma expresso que toma uma forma muito
similar a equaes obtidas pela transformada de Laplace para sistemas em tempo
contnuo.

Sua definio, exemplificada na equao abaixo:

A Equao 1.2, pode intimidar em um primeiro momento, mas observando com ateno
podemos notar, que a transformada Z por definio nada mais faz do que tomar uma
sequencia de impulsos cujo os instantes de captura so espaados por um intervalo de
tempo, a varivel independente n denota o instante da amostragem, de forma que um
sinal discreto no tempo pode ser descrito como a sequencia abaixo:

Assim, uma vez passado para o domnio Z cada instante do sinal esta acompanhado pelo
operador complexo ("z") , que denota o deslocamento desse sinal no tempo, de forma
simplista a representao do operador z serve para dizer se a amostra um valor
corrente, um valor futuro (preditores e estimadores) ou um valor anterior, esse ultimo de
nosso interesse, vejamos:

X(z) z-n: Amostra atrasada no tempo;


X(z) z0 .'. X(z) : Amostra corrente;
X(z) zn: Amostra futura

Apesar da teoria por trs da transformada Z envolver muito mais conceitos, se olharmos
ela de uma maneira simplista, podemos utilizar essa simples propriedade (referida como
deslocamento no tempo) para realizar um novo controlador PID digital com melhor
desempenho que o do artigo anterior.

Agora que j sabemos o que significam os operadores z, vamos mudar um pouco de


assunto e retornar ao nosso problema, uma forma de aproximar melhor o termo integral.
Alm da acumulao, existem diversos mtodos numricos que nos permitem resolver
integrais com considervel preciso e intervalos de convergncia bem menores, para
esse fim, vamos selecionar a regra dos trapzios, com ela podemos resolver uma
integral conforme a seguinte equao:

Uma expresso bem mais simples de resolver, alm disso a regra dos trapzios por
aproximar a diferena entre dois valores da funo f(t) por um aspecto trapezoidal , se a
taxa de amostragem do sistema for bem escolhida, a convergncia para o resultado
desejado muito mais rpida e no sofre com o problema apresentando no primeiro
algoritmo desenvolvido.

Ja temos uma nova soluo para o nosso termo integral, visto que o derivativo no
necessita de modificaes, por que usar a transformada Z, porque no partir logo para as
contas? Com o uso da transformada Z , poderemos alm de reduzir mais a equao
final, pr - computar seus coeficientes, e alm disso podemos utilizar sua funo de
transferncia em Z para analise em um simulador como o MATLAB por exemplo.

Sabemos que mtodos numricos por natureza, trabalham em um domnio de intervalos


discretos, o que perfeito para nossa aplicao, significa que podemos tomar a
transformada Z da equao 1.3? Sim podemos, mas antes vamos mudar as notaes para
ficarmos mais familiarizados:

A equao acima encontra - se em uma notao bem mais conveniente para sistema de
tempo discreto. Mas agora vem a pergunta, como essa conhecida regra pode ser
utilizada para o propsito desse artigo? Vamos considerar o seguinte caso, temos a
integral de uma funo, essa o valor x[n], adicionando condies iniciais ou seja a
constante de integrao chegamos a seguinte relao:

Tomando a transformada de Laplace e em seguida a transformada Z em ambos os lados


da equao temos (Obs. Veja que dentro dos parenteses estamos computando duas
derivadas no domnio do tempo contnuo):

Temos as duas variveis de interesse, relacionemos s em funo de Z:

Assim conseguimos relacionar a varivel complexa s com a varivel de tempo discreto


z. Mas antes de aplicar isso ao nosso controle PID, vamos ver como fazer para o termo
derivativo. Seguindo a linha de raciocnio numrico para computar uma derivada,
temos:

Como fizemos para a integral, vamos mudar a notao para o dominio de tempo
discreto:

Para facilitar a computao vamos atrasar ambas as amostras em uma unidade e


representando por x[n], assim obtemos:

Tomemos agora, a transformada de Laplace em seguida a transformada Z do mesmo


modo que fizemos para a integral:

Algebra, algebra, algebra, eis que leva a:

Eis que temos agora uma aproximao para o termo integral, e outra para o termo
derivativo. Mas observe que se encontram no domnio da frequncia, e o nosso PID est
no domnio do tempo, recobremos a equao 1:

Isso no um grande problema, primeiro, vamos modificar a equao acima para a


forma de uma funo de transferncia, ou seja o quociente da sada pela entrada do
controlador, eis que isso leva a:

E finalmente tomamos a transformada de Laplace, da equao acima:

O Nosso PID, est com uma equao bem mais amigvel, mas ainda encontra se no
domnio de tempo contnuo, precisamos agora traduzir essa equao para o domnio de
tempo discreto, porm como foi feito em 1.5 e 1.6 agora temos termos em Z que
representam S, assim podemos tomar a transformada Z da equao 1.5 substituindo os
termos integrais e derivativos:

E est feito, um compesandor PID digital, mas ao leitor digo, no se assuste, apesar da
equao parecer no fazer muito sentido, ainda mais se tratando da implementao em
um processador, ela comear a fazer sentido a medida que ordenarmos melhor os
termos, antes de qualquer coisa, vamos desaparecer com os dois denominadores que no
contm nenhum z, isso ir ajudar a facilitar as contas. adicionarei dois operadores, h1 e
h2 onde:

h1 = t/2;
h2 = 1/t.

Eis que a nova funo de transferncia torna - se:

A partir desse ponto irei fazer as passagens matemticas necessrias at obtermos a


funo de transferncia final do nosso compensador, peo ao leitor que acompanhe as
passagens com calma:

Eis que temos a nossa funo de transferncia, est bem mais amigvel, e permite ja
trabalhar nela para formar uma equao de diferenas. Mas antes de prosseguirmos,
vamos deixar ainda mais intuitivo para o leitor, observemos:

Vamos substituir esses coeficientes, na funo de transferncia, e vamos notar que nosso
PID digital agora nada mais do que um caso especial de filtro de IIR, possuindo dois
plos e dois zeros, de onde vem a origem do nome desse algoritmo:

Vejam como a matemtica interessante, partimos de uma equao diferencial,


colocamos uma integral trapezoidal, uma derivada numrica, usamos duas
transformadas, para descobrir que o nosso PID melhor aproximado um filtro digital de
resposta impulsiva infinita. Ou seja existem muitas formas de implementar isso em um
microcontrolador, essa mesma equao ja pode ser colocar em um simulador como o
MATLAB para avaliar a resposta do sistema a ser controlado.

Colocando dentro de um microcontrolador

Temos a funo de transferncia em Z perfeitamente usvel para simular seu


comportamente em um MATLAB ou qualquer outro simulador de sistemas, porm essa
funo da forma que est no muito til, para implementar em qualquer processador
que seja, precisamos antes computar uma equao de diferenas a partir da
transformada inversa Z , para isso vamos retomar a equao 1.7:

Temos os temos de entrada e saida do sistema, coloquemos agora sada em funo da


entrada:

Ja melhorou, certo? Vamos mexer mais um pouquinho, fatorando U(z) e E(z) para
dentro dos polinmios vamos obter:

Mas : a2 = 0, isso simplifica a expresso em:

Em funo de U(z) vamos obter:

Interessante, nesse ponto podemos tomar a transformada inversa Z, e surpreendam - se a


equao de diferenas se transforma nessa simples expresso:

Como? Sim meu amigo, toda aquela trabalheira de transforma pra c, transforma pra l,
e usa mtodo numrico, vai gerar essa expresso trivial, prova que para conseguir fazer
as cosas simples necessrio pensar. A equao 1.8 perfeitamente implementvel, os
coeficientes so facilmente calculveis, assim podemos traduzir essa equao como,
para computar uma nova sada do compensador, precisamos da amostra de sada
anterior, e dos trs ultimos valores de erro calculados.

Para o leitor mais atento, este, deve ter percebido que o problema de windup do termo
integral sequer existe, uma preocupao a menos, apenas escolha se quer trabalhar com
ponto fixo ou flutuante e ponha isso dentro do seu processador.
Vamos testar nosso exemplo, vamos embarcar um pequeno firmware para controlar a
luminosidade de um LED RGB por malha fechada.

Exemplo em teste

E finalmente chegamos a sesso mais divertida do artigo, a implementao prtica,


iremos embarcar nosso firmware de teste no seguinte kit de desenvolvimento:

Figura 1 :Led Booster Pack + Piccolo LaunchPad.

Novamente no iremos entrar em detalhes sobre o Kit ou microcontrolador, mais


informaes podem ser encontradas no site da Texas, o link est disponibilizado no fim
do artigo.

Vamos utilizar o nosso PID digital para controlar uma string de Leds, atravs da atuao
do micrcontrolador em um conversor DC-DC, alis uma das partes mais interessantes
desse kit em especial. Por ser um exemplo simples, optei pelo uso apenas do controle da
cadeia de leds vermelhos, usando o controle apenas pela tenso de sada do conversor
DC-DC (sim um boost), consultando a folha de dados desses leds, chegou - se ao
valor otimo para estabilizao da malha para 19.2[V], valor para obteno de uma
corrente de 25[mA], atravs de ajuste experimental chegou - se aos coeficientes: K p =
50, Ki = 15, Kd = 100, a taxa de amostragem ficou situada em 58 mil amostras por
segundo e uma frequncia de portadora de 150[KHz] permitem o mdulo PWM do
microcontrolador operar com resoluo de 9bits.

Vejamos a imagem abaixo, temos a tenso de barramento perfeitamente controlada pelo


microcontrolador, vejamos o comportamento estvel dela:

Figura 2 : Tenso dos barramento da string de leds.

Eis que abaixo temos uma foto da bancada, onde temos os leds sendo controlados pelo
microcontrolador, uma das coisas que esse que vos escreve acha mais interessante a
possibilidade do prprio microcontrolador se tornar uma unidade de controle digital,
flexvel de acordo com a aplicao.

Figura 3 : Microcontrolador atuando sobre o DC-DC

Apesar da simplicidade do exemplo, o projeto inteiro, encontra - se em um repositrio


no GitHub, a voc leitor deixo a liberdade de usar no prprio C2000 ou portar os
arquivos PID.h e PID.c para o microcontrolador de seu interesse, sugiro apenas a
alterao dos tipos de acordo com o microcontrolador utilizado, no caso de uso de
platformas mais compactas como AVR, e microcontroladores baseados no ncleo
Cortex-M0. E para voc leitor mais curioso, porqu no explora a equao 1.7 e
implementa em seu processador por conta prpria? Escrever cdigo em assembly
tambm pode ser uma tarefa extremamente prazerosa.

Concluso

Assim chegamos ao final dessa pequena srie de artigos, e esperamos ter desmistificado
alguns conceitos sobre a implementao de compensadores digitais em
microcontroladores de quase qualquer natureza. Esperamos ainda que os exemplos
fornecidos sejam teis para aqueles que desejam se aventurar no mundo de controle
digital. Conseguimos ainda modelar um simples compensador PID usando a
transformada Z de uma forma simples sem se preocupar , demais e apenas, com a
matemtica envolvida.

Materiais de apoio

Projeto Exemplo : https://github.com/uLipe/PID_Embarcados_C2000


Microcontroladores C2000 : http://www.ti.com/product/tms320f28027
Led Booster Pack, Kit usado no exemplo: http://www.ti.com/tool/boostxl-c2kled

Referncias

CRENSHAW, Jack W. : Math toolkit for real time programming, 2001


MEYRATH, Todd : Multipurpose analog PID controller, 2005
POLEY, Richard : Introduction to digital control using digital signal processors, 2003
STARR, Gregory P. : Introduction to applied digital control , 2006

Controlador PID digital, uma modelagem prtica para microcontroladores Parte 2 por Felipe Neves. Esta obra est sob a licena Creative Commons
Atribuio-CompartilhaIgual 4.0 Internacional.