You are on page 1of 8

6.4.

Controlador PID digital


picuino.com /es/arduprog/control-pid-digital.html

Muchos controladores actuales utilizan microcontroladores digitales. En esta pgina se presentar la


programacin de un regulador PID implementado con un microcontrolador. Los reguladores digitales sustituyen
varios elementos en un sistema de control tradicional por clculos en un sistema programado. En la figura
siguiente puede verse un esquema de un regulador controlado por un microcontrolador:

Las funciones del microcontrolador estn encerradas en el cuadrado con lineas de puntos.

Los bloques que sirven de conexin entre el microcontrolador y el sistema son un DAC (conversor digital a
analgico) y un ADC (conversor de analgico a digital) . Estos dos bloques permiten traducir las seales
analgicas del sistema controlado a nmeros digitales utilizados por el microcontrolador y viceversa.

En ocasiones los conversores ADC y DAC se pueden implementar con un regulador PWM.

Perodo de muestreo
Mientras que los sistemas analgicos son continuos, los sistemas digitales son discontinuos. Esto significa que
sus valores se evalan o cambian cada cierto perodo de tiempo llamado tiempo de muestreo. El perodo de
muestreo define cuantas veces por segundo se van a realizar las conversiones analgico-digitales y se van a
calcular los parmetros del PID. En adelante el perodo de muestreo se representara por la letra T.

La respuesta en lazo cerrado de un sistema controlado por un PID digital va a depender de este perodo de
muestreo. Si este tiempo es demasiado alto, la estabilidad del sistema ser menor y el sistema puede llegar a
hacerse inestable y no ser controlable. Un mtodo para estimar el perodo de muestreo consiste en calcular el
perodo de oscilacin del sistema en lazo cerrado con una ganancia que provoque oscilaciones. Se tomar el
perodo de muestreo como la dcima parte del tiempo o perodo de oscilacin.

En el ejemplo que aparece a continuacin se ha aumentado la ganancia proporcional hasta que se mantengan
las oscilaciones en la respuesta al escaln. El perodo de oscilacin es entonces de 5.6 segundos y, por lo
tanto, el perodo de muestreo debe ser menor de 0.56 segundos.

1/8
Tiempo de oscilacin y perodo de muestreo:

Tc = 26.8 - 21.2 = 5.6 segundos (Tiempo de oscilacin)

T < Tc / 10 = 0.56 segundos (Perodo de muestreo)

Si el sistema es sobreamortiguado y no presenta oscilaciones, el criterio para escoger el tiempo de muestreo


partir de la respuesta al escaln. Como regla general se acepta que T debe ser 10 veces menor que el tiempo
de subida del sistema ante un escaln en lazo abierto.

Este tiempo de subida se puede calcular como el tiempo que tarda el sistema en subir desde un 10% hasta un
90% del valor final.

Por ejemplo en un sistema trmico que muestre la respuesta al escaln que aparece a continuacin:

2/8
Este sistema tarda en subir desde el 10% hasta el 90% del valor final 21.5 - 3.5 = 18 segundos. Por lo tanto,
para este sistema de ejemplo el tiempo de muestreo del controlador PID debe ser como mximo una dcima
parte de los 18 segundos:

T < Tiempo_de_respuesta / 10

T < 18/10 -> T < 1.8 segundos

En los dos casos se ha utilizado la misma planta para calcular el tiempo de muestreo. Como puede verse los
resultados son muy diferentes. Con el segundo mtodo el tiempo de muestreo es tres veces mayor que con el
primero. Por lo tanto el tiempo de muestreo depende tambin de la respuesta que se vaya a conseguir y del tipo
de sistema. Siempre que se pueda utilizar el primer mtodo, ser preferible puesto que calcula tiempos
menores y por lo tanto ms seguros.

Perodo de muestreo y trmino derivativo


Si bien antes se ha explicado que reducir el tiempo de muestreo es deseable porque aumenta la estabilidad del
sistema, reducir excesivamente el tiempo de muestreo presenta tambin problemas. El problema de reducir
mucho el tiempo de muestreo, adems de multiplicar los clculos necesarios en el microcontrolador, es que con
tiempos muy pequeos es ms difcil calcular el trmino derivativo porque el ruido de alta frecuencia afecta ms
al sistema y porque la variacin de la entrada entre dos muestreos es tan pequea que le afecta el error de
cuantificacin del conversor analgico-digital. Por lo tanto lo ideal es establecer un tiempo de muestreo que
consiga una respuesta aceptable en el sistema sin que sobrecargue mucho los clculos y que no afecte al
trmino derivativo.

Ejemplo: cmo afecta el error de cuantificacin con tiempos de muestreo muy pequeos

Un sistema trmico cuyo sensor cambia con una velocidad de 0.1 voltio/segundo es muestreado por un
conversor analgico-digital de 10bits (1024 niveles) con una referencia de tensin de 5 voltios. La sensibilidad
del conversor analgico-digital ser:

3/8
1024 puntos * (0.1 v/s / 5v) = 20 puntos/segundo.

Si el perodo de muestreo es de un segundo, la variacin de la medida ser suficientemente grande como para
evaluar el trmino derivativo. La lectura del sensor ser en muestreos consecutivos: 100, 120, 140, 160, etc.

Pero si se toma un perodo de muestreo de 10 milsimas de segundo, slo una de cada 5 muestras va a
presentar una variacin de un punto en la seal de entrada del sensor. Ahora la lectura del sensor ser en
muestreos consecutivos: 100, 100, 100, 100, 100, 101, 101, etc.

Por otra parte la ganancia derivativa ser 100 veces mayor, al estar dividida por un tiempo de muestreo 100
veces ms pequeo.

El resultado es que la accin derivativa actuar a impulsos muy bruscos cada 5 ciclos. Este comportamiento no
es deseable y se puede corregir simplemente aumentando el tiempo de muestreo.

Implementacin del PID digital


Cada uno de los bloques que aparecen dentro del PID digital se traducen a una ecuacin. Las ecuaciones para
calcular el comparador y el controlador PID son las siguientes:

Referencia = 150
Sensor = read_ADC()
Error = Sensor - Referencia
Proporcional = Error * Kp
Integral = Integral + Error * Ki * T
Derivativo = (Error - Error_0) * Kd / T
Error_0 = Error
Control = Proporcional + Integral + Derivativo
write_DAC(Control)

Todas estas instrucciones y ecuaciones se deben repetir con un perodo de T segundos (el tiempo de
muestreo).

El valor de la referencia se ha escogido en 150, pero puede cambiarse a voluntad. Es el valor que se quiere
conseguir en el sistema.

Unidades utilizadas por las funciones de entrada y salida


Las funciones de entrada y salida deben tener una conversin adecuada de unidades. La funcin read_ADC()
debe devolver un valor con las mismas unidades que utilice la referencia. Es conveniente que la funcin
write_DAC() acepte valores de control entre 0 y 5 voltios para que se correspondan con el valor real de salida
del conversor DAC que tendr una tensin entre 0 y 5 voltios. Los valores de control no estn acotados y por lo
tanto pueden llegar a valer ms que el valor mximo de salida de 5 voltios o menos que el valor mnimo de
salida de 0 voltios. En este caso la funcin write_DAC() debe recortar los valores mximos a 5v y los valores
mnimos a 0v.

Control anti-windup integral


El control integral es un sumatorio que puede llegar a acumular valores muy altos. Esto ocurre generalmente
cuando el error es muy elevado y se mantiene durante mucho tiempo. En este caso el sistema est saturado y
el control integral no puede hacer su funcin. En estos casos es recomendable deshabilitar el control integral
para que no se produzca un sobrepulso excesivo. Existen varias formas de implementar este control anti-
4/8
windup. Aqu se implementar deshabilitando el control integral mientras el error sea superior a una cota
determinada. Con este control implementado las ecuaciones se modifican de la siguiente manera:

Integral = Integral + Error * Ki * T


if (abs(Error) > MaxIntegralError):
Integral = 0

En las imgenes siguientes se puede observar una simulacin de un control PID de temperatura de un horno
con control anti-windup. El error mximo para que acte el control integral se ha establecido en 100, 30 y 10
grados:

5/8
Como se puede observar, en el primer caso se ha establecido el mximo error anti-windup en 100 grados y el
sobrepulso llega a ser de 45C con un tiempo de establecimiento total de 26 segundos. Estos son valores muy
altos.

En el segundo caso, el control anti-windup se ha establecido con un error mximo de 30 y el sobrepulso apenas
llega a ser de 5 grados, con un tiempo de establecimiento de 14 segundos. Este valor de anti-windup consigue
los mejores resultados del sistema.

En el tercer caso el control anti-windup se ha establecido con un error mximo de 10 grados, que es claramente
insuficiente. En este caso no hay sobrepulso porque la accin integral entra demasiado tarde a corregir el error
permanente. El problema que puede presentar este valor tan bajo es que el error se mantenga por encima del
6/8
lmite anti-windup y no llegue a corregirse en ningn momento o que la reduccin del error se realice demasiado
despacio.

Ruido en la realimentacin
Hay varias fuentes de ruido que perturban la seal de realimentacin h(t). A continuacin se presentan las ms
importantes.

Ruido en el sensor y muestreo


La primera fuente de ruido es el propio sensor que puede dar una salida con ruido aadido de diversas
frecuencias. Este ruido es difcil de filtrar, de forma que siempre que sea posible conviene reducirle al mnimo.

El ruido del sensor entra en el sistema digital a travs del conversor analgico-digital. Segn el teorema de
Nyquist, la mxima frecuencia que puede medir un sistema de muestreo digital es igual a la mitad de la
frecuencia de muestreo. Esto impone un lmite mximo a las frecuencias que se van a poder muestrear con
fidelidad.

Entonces qu pasa con las frecuencias mayores a este lmite? Esas frecuencias se traducen en frecuencias
ms bajas. Esto significa que el ruido de alta frecuencia se ver dentro del microcontrolador como una seal de
menor frecuencia. Este efecto puede apreciarse bien en la siguiente imagen:

La seal original aparece en rojo, con una frecuencia de 3 ciclos por intervalo. La minima frecuencia de
muestreo debera ser de 6 muestras por intervalo.

Los puntos negros son las muestras que se han tomado de la seal original, con una frecuencia de 5 muestras
por intervalo, menor de la frecuencia mnima necesaria.

Cuando se unen entre s los puntos negros, aparece la seal que el controlador cree haber muestreado. Como
resultado el sistema digital ver una frecuencia menor que la que tiene la seal real.

Para evitar este efecto es conveniente limitar el ruido de alta frecuencia en la seal analgica por medio de un
diseo cuidadoso, eligiendo un sensor adecuado y utilizando un filtro analgico cuando sea necesario.

Los filtros digitales slo podrn actuar de forma efectiva sobre las frecuencias que estn por debajo de la mitad
de la frecuencia de muestreo.

Ruido de cuantificacin
Este ruido est producido por el conversor analgico-digital y procede de redondear el valor analgico real al
valor digital ms prximo dado que el valor digital tiene un numero finito de valores. Este error se puede calcular
a partir del nmero de bits del conversor analgico-digital y su rango de medida.

Ruido de cuantificacin = rango_tensin / 2^(bits_adc)

7/8
En la siguiente imagen puede verse la representacin del ruido de cuantificacin:

En el caso de un microcontrolador tpico con 10 bits de resolucin y un rango de medida de 0 a 5 voltios, el


ruido o error de cuantificacin es de 5V / 1024 = 4.88 milivoltios.

Este valor puede tambin convertirse a unidades de medida de salida de la planta a partir de la sensibilidad del
sensor. Por ejemplo para un sensor de temperatura que entregue una salida con sensibilidad de 10 mV/C

Ruido de cuantificacin = rango_tensin / (2^(bits_adc) * sensibilidad)

Ruido de cuantificacin = 5V / (1024 * 0.010V/C) = 0.488 C

El ruido de cuantificacin afecta negativamente a la respuesta del regulador, produciendo saltos en la seal de
control que empeoran el comportamiento de la planta.

Este ruido tambin afecta a la mxima precisin que puede conseguir el controlador. En el ejemplo anterior, el
controlador no podr conseguir controlar la temperatura con una precisin mejor de 0.488 grados centgrados.

Referencias
[1] Ogata, Katsuhiko. Sistemas de control en tiempo discreto. Segunda edicin. Editorial Prentice Hall.

8/8

You might also like