Utilizamos cookies propias y de terceros para mejorar su experiencia y nuestros servicios, analizando la navegación en nuestro Sitio Web. Si continúa navegando, usted está aceptando su uso. Puede obtener más información en nuestra Política de Cookies. | Aceptar

6.4. Controlador PID digital

Muchos controladores actuales utilizan microcontroladores digitales. En esta página se presentará la programación de un regulador PID implementado con un microcontrolador. Los reguladores digitales sustituyen varios elementos en un sistema de control tradicional por cálculos en un sistema programado. En la figura siguiente puede verse un esquema de un regulador controlado por un microcontrolador:

Controlador PID digital

Las funciones del microcontrolador están encerradas en el cuadrado con lineas de puntos.

Los bloques que sirven de conexión entre el microcontrolador y el sistema son un DAC (conversor digital a analógico) y un ADC (conversor de analógico a digital). Estos dos bloques permiten traducir las señales analógicas del sistema controlado a números digitales utilizados por el microcontrolador y viceversa.

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

Período de muestreo

Mientras que los sistemas analógicos son continuos, los sistemas digitales son discontinuos. Esto significa que sus valores se evalúan o cambian cada cierto período de tiempo llamado tiempo de muestreo. El período de muestreo define cuantas veces por segundo se van a realizar las conversiones analógico-digitales y se van a calcular los parámetros del PID. En adelante el período 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 período 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 método para estimar el período de muestreo consiste en calcular el período de oscilación del sistema en lazo cerrado con una ganancia que provoque oscilaciones. Se tomará el período de muestreo como la décima parte del tiempo o período de oscilación.

En el ejemplo que aparece a continuación se ha aumentado la ganancia proporcional hasta que se mantengan las oscilaciones en la respuesta al escalón. El período de oscilación es entonces de 5.6 segundos y, por lo tanto, el período de muestreo debe ser menor de 0.56 segundos.

Controlador PID digital. Periodo de muestreo de sistema oscilatorio.

Tiempo de oscilación y período de muestreo:

Tc = 26.8 - 21.2 = 5.6 segundos (Tiempo de oscilación)

T < Tc / 10 = 0.56 segundos (Período de muestreo)

Si el sistema es sobreamortiguado y no presenta oscilaciones, el criterio para escoger el tiempo de muestreo partirá de la respuesta al escalón. Como regla general se acepta que T debe ser 10 veces menor que el tiempo de subida del sistema ante un escalón 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 térmico que muestre la respuesta al escalón que aparece a continuación:

Controlador PID digital. Periodo de muestreo con una respuesta al escalón.

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 máximo una décima 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 método el tiempo de muestreo es tres veces mayor que con el primero. Por lo tanto el tiempo de muestreo depende también de la respuesta que se vaya a conseguir y del tipo de sistema. Siempre que se pueda utilizar el primer método, será preferible puesto que calcula tiempos menores y por lo tanto más seguros.

Período de muestreo y término 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 también problemas. El problema de reducir mucho el tiempo de muestreo, además de multiplicar los cálculos necesarios en el microcontrolador, es que con tiempos muy pequeños es más difícil calcular el término derivativo porque el ruido de alta frecuencia afecta más al sistema y porque la variación de la entrada entre dos muestreos es tan pequeña que le afecta el error de cuantificación del conversor analógico-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 cálculos y que no afecte al término derivativo.

Ejemplo: cómo afecta el error de cuantificación con tiempos de muestreo muy pequeños

Un sistema térmico cuyo sensor cambia con una velocidad de 0.1 voltio/segundo es muestreado por un conversor analógico-digital de 10bits (1024 niveles) con una referencia de tensión de 5 voltios. La sensibilidad del conversor analógico-digital será:

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

Si el período de muestreo es de un segundo, la variación de la medida será suficientemente grande como para evaluar el término derivativo. La lectura del sensor será en muestreos consecutivos: 100, 120, 140, 160, etc.

Pero si se toma un período de muestreo de 10 milésimas de segundo, sólo una de cada 5 muestras va a presentar una variación de un punto en la señal 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 más pequeño.

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

Implementación del PID digital

Cada uno de los bloques que aparecen dentro del PID digital se traducen a una ecuación. 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 período 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 conversión adecuada de unidades. La función read_ADC() debe devolver un valor con las mismas unidades que utilice la referencia. Es conveniente que la función 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 tensión entre 0 y 5 voltios. Los valores de control no están acotados y por lo tanto pueden llegar a valer más que el valor máximo de salida de 5 voltios o menos que el valor mínimo de salida de 0 voltios. En este caso la función write_DAC() debe recortar los valores máximos a 5v y los valores mínimos 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 función. 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-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 imágenes siguientes se puede observar una simulación de un control PID de temperatura de un horno con control anti-windup. El error máximo para que actúe el control integral se ha establecido en 100, 30 y 10 grados:

Control PID digital de un horno. Anti-Windup con error de 100 grados. Control PID digital de un horno. Anti-Windup con error de 30 grados. Control PID digital de un horno. Anti-Windup con error de 10 grados.

Como se puede observar, en el primer caso se ha establecido el máximo error anti-windup en 100 grados y el sobrepulso llega a ser de 45ºC 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 máximo 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 máximo de 10 grados, que es claramente insuficiente. En este caso no hay sobrepulso porque la acción 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 límite anti-windup y no llegue a corregirse en ningún momento o que la reducción del error se realice demasiado despacio.

Ruido en la realimentación

Hay varias fuentes de ruido que perturban la señal de realimentación h(t). A continuación se presentan las más importantes.

Ruido en el sensor y muestreo

La primera fuente de ruido es el propio sensor que puede dar una salida con ruido añadido de diversas frecuencias. Este ruido es difícil de filtrar, de forma que siempre que sea posible conviene reducirle al mínimo.

El ruido del sensor entra en el sistema digital a través del conversor analógico-digital. Según el teorema de Nyquist, la máxima frecuencia que puede medir un sistema de muestreo digital es igual a la mitad de la frecuencia de muestreo. Esto impone un límite máximo a las frecuencias que se van a poder muestrear con fidelidad.

Entonces ¿qué pasa con las frecuencias mayores a este límite? Esas frecuencias se traducen en frecuencias más bajas. Esto significa que el ruido de alta frecuencia se verá dentro del microcontrolador como una señal de menor frecuencia. Este efecto puede apreciarse bien en la siguiente imagen:

Muestreo a frecuencia inferior de la necesaria. Teorema de Nyquist.

La señal original aparece en rojo, con una frecuencia de 3 ciclos por intervalo. La minima frecuencia de muestreo debería ser de 6 muestras por intervalo.

Los puntos negros son las muestras que se han tomado de la señal original, con una frecuencia de 5 muestras por intervalo, menor de la frecuencia mínima necesaria.

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

Para evitar este efecto es conveniente limitar el ruido de alta frecuencia en la señal analógica por medio de un diseño cuidadoso, eligiendo un sensor adecuado y utilizando un filtro analógico cuando sea necesario.

Los filtros digitales sólo podrán actuar de forma efectiva sobre las frecuencias que estén por debajo de la mitad de la frecuencia de muestreo.

Ruido de cuantificación

Este ruido está producido por el conversor analógico-digital y procede de redondear el valor analógico real al valor digital más próximo dado que el valor digital tiene un numero finito de valores. Este error se puede calcular a partir del número de bits del conversor analógico-digital y su rango de medida.

Ruido de cuantificación = rango_tensión / 2^(bits_adc)

En la siguiente imagen puede verse la representación del ruido de cuantificación:

Ruido de cuantificación de un conversor ADC (analógico a digital)

En el caso de un microcontrolador típico con 10 bits de resolución y un rango de medida de 0 a 5 voltios, el ruido o error de cuantificación es de 5V / 1024 = 4.88 milivoltios.

Este valor puede también 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 cuantificación = rango_tensión / (2^(bits_adc) * sensibilidad)

Ruido de cuantificación = 5V / (1024 * 0.010V/ºC) = 0.488 ºC

El ruido de cuantificación afecta negativamente a la respuesta del regulador, produciendo saltos en la señal de control que empeoran el comportamiento de la planta.

Este ruido también afecta a la máxima precisión que puede conseguir el controlador. En el ejemplo anterior, el controlador no podrá conseguir controlar la temperatura con una precisión mejor de 0.488 grados centígrados.

Referencias

[1] Ogata, Katsuhiko. Sistemas de control en tiempo discreto. Segunda edición. Editorial Prentice Hall.