Estoy trabajando en un controlador de humedad que utiliza el algoritmo PID para controlar los valores del proceso. Tengo que implementar 2 rutinas PID ya que hay 2 valores de proceso (Humedad y Temperatura) a controlar. He leído muchos artículos sobre controladores PID y creo que entiendo el significado de cada término.
Pero el problema es que no puedo averiguar cómo se convierten cada uno de los términos a la salida real (variando los ciclos de encendido y apagado del calentador de aire y una caldera). Lo que he hecho hasta ahora es
En la rutina principal
-
lectura de 2 canales ADC cada segundo
-
calcular la salida PID (valor de 0-100) cada segundo
Los términos integrales y derivados se añaden a la potencia calculada cada ciclo Ti y Td (programable en 0-240 segundos). Dado que mi cálculo de salida PID se ejecuta cada segundo, la siguiente ejecución después de añadir un término integral (o derivado) dará lugar a una potencia menor que el valor anterior (es decir, cuando se añade la potencia integral o derivada).
En el ISR (@ periodo 2ms) uso 2 valores ( tiempo de encendido y tiempo de apagado que son calculados usando la salida del PID y el tiempo cíclico( también programable en segs)deseado para la salida) para cambiar la salida.
Como se puede ver la con estos tiempos potencia integral y potencia derivada no va a tener ningún efecto sobre el ciclo de trabajo de salida y Mis preguntas son
- ¿Debo aumentar el período de tiempo de ejecución del PID o
- ¿Debo retener el valor del último término integral calculado ( o derivada) con el término proporcional hasta la siguiente adición de la integral ( o derivada).
Sé que me haré una idea de cómo jugar con cada término cuando se pruebe en el sistema y después de analizar la respuesta del mismo. Pero sólo quiero aclarar mis dudas y terminar la máxima parte del código posible antes de conseguir una máquina para probar.