Teoría de
Sistemas Control Automático
Carlos Diego Ferrin Bolaños
Ing., M.Sc., Ph.D. (c)
Facultad de Ingeniería:
Departamento de Ingeniería de
Sistemas, Tecnología en Informática
Capítulo 6
Controlador PID
Facultad de Ingeniería:
Departamento de Ingeniería de
Sistemas, Tecnología en Informática
Contenido
1. Introducción
2. Funcionamiento
3. PID
4. Ajuste de los parámetros
PID
5. Controlador PID en
Arduino
3
1. Introducción
Un controlador PID (controlador proporcional, integral y derivativo) es un
mecanismo de control simultáneo por realimentación ampliamente usado en
sistemas de control industrial. Este calcula la desviación o error entre un valor
medido y un valor deseado.
4
1. Introducción
El algoritmo del control PID consta de tres
parámetros distintos: el proporcional, el
integral, y el derivativo. El valor
proporcional depende del error actual, el
integral depende de los errores pasados y
el derivativo es una predicción de los
errores futuros. La suma de estas tres
acciones es usada para ajustar el proceso
por medio de un elemento de control,
como la posición de una válvula de control
o la potencia suministrada a un
𝐾𝑝, 𝐾𝐼, 𝐾𝐷
calentador.
5
1. Introducción
Históricamente, se ha considerado que, cuando no se tiene conocimiento del proceso,
el controlador PID es el controlador más adecuado. Ajustando estas tres variables en el
algoritmo de control del PID, el controlador puede proveer una acción de control
adaptada a los requerimientos del proceso en específico. La respuesta del controlador
puede describirse en términos de respuesta del control ante un error, el grado el cual
el controlador sobrepasa el punto de ajuste, y el grado de oscilación del sistema.
El uso del PID para control no garantiza un control óptimo del sistema o la estabilidad
del mismo.
6
2. Funcionamiento
Para el correcto funcionamiento de un controlador PID que
regule un proceso o sistema se necesita, al menos:
1. Un sensor, que determine el estado del sistema (termómetro,
caudalímetro, manómetro, etc).
2. Un controlador, que genere la señal que gobierna al actuador.
3. Un actuador, que modifique al sistema de manera controlada
(resistencia eléctrica, motor, válvula, bomba, etc).
7
3. PID
Proporcional: La parte
proporcional consiste en el
producto entre la señal de
error y la constante
proporcional para lograr que
el error en estado
estacionario se aproxime a
cero, pero en la mayoría de
los casos, estos valores solo
serán óptimos en una
determinada porción del
rango total de control, siendo
distintos los valores óptimos 𝑃 ( 𝑡 ) = 𝐾 𝑃 ×𝑒 (𝑡 )
para cada porción del rango.
8
3. PID
Integral: El modo de control
Integral tiene como propósito
disminuir y eliminar el error en
estado estacionario, provocado
por perturbaciones exteriores y
los cuales no pueden ser
corregidos por el control
proporcional. El control integral
actúa cuando hay una desviación
entre la variable y el punto de
consigna, integrando esta
𝑡
desviación en el tiempo y
sumándola a la acción 𝐼 ( 𝑡 )= 𝐾 𝐼 ×∫ 𝑒 ( 𝑡 ) 𝑑𝑡
proporcional. 0
9
3. PID
Derivativo: La acción derivativa
se manifiesta cuando hay un
cambio en el valor absoluto del
error; (si el error es constante,
solamente actúan los modos
proporcional e integral). La
función de la acción derivativa es
mantener el error al mínimo
corrigiéndolo proporcionalmente
con la misma velocidad que se
produce; de esta manera evita
que el error se incremente. 𝑑𝑒(𝑡 )
𝐷 (𝑡 ) =𝐾 𝐷 ×
𝑑𝑡
10
3. PID
Interpretación de las constantes:
Kp constante de proporcionalidad: se puede ajustar como el
valor de la ganancia del controlador o el porcentaje de banda
proporcional.
Ki constante de integración: indica la velocidad con la que se
repite la acción proporcional.
Kd constante de derivación: hace presente la respuesta de la
acción proporcional duplicándola, sin esperar a que el error se
duplique.
11
4. Ajuste de los parámetros PID
El objetivo de los ajustes de los parámetros PID es lograr que el bucle de control corrija
eficazmente y en el mínimo tiempo los efectos de las perturbaciones; se tiene que
lograr la mínima integral de error. Si los parámetros del controlador PID (la ganancia del
proporcional, integral y derivativo) se eligen incorrectamente, el proceso a controlar
puede ser inestable.
Ajustar un lazo de control significa ajustar los parámetros del sistema de control a los
valores óptimos para la respuesta del sistema de control deseada.
Método de
Ajuste Manual Ziegler-Nichols
12
4. Ajuste de los parámetros PID
Ajuste manual:
• Si el sistema debe mantenerse online, un método de ajuste consiste en establecer
primero los valores de I y D a cero. A continuación, incremente P hasta que la salida
del lazo oscile.
• Luego establezca P a aproximadamente la mitad del valor configurado previamente.
Después incremente I hasta que el proceso se ajuste en el tiempo requerido
(aunque subir mucho I puede causar inestabilidad).
• Finalmente, incremente D, si se necesita, hasta que el lazo sea lo suficientemente
rápido para alcanzar su referencia tras una variación brusca de la carga.
Un lazo de PID muy rápido alcanza su setpoint de manera veloz, un lazo de PID no tan
rápido alcanza su setpoint de manera no tan veloz. Algunos sistemas no son capaces
de aceptar este disparo brusco.
13
5. Controlador PID en Arduino
14
5. Controlador PID en Arduino
Para implementar un controlador PID en un código o un programa de Arduino, se
deben conocer cinco parámetros: constantes proporcionales, integrales y derivadas,
valor de entrada y valor de llegada. El cálculo del PID debe estar dentro de una función
de bucle.
La primera parte de la función debería ser determinar el tiempo transcurrido. En
Arduino, el tiempo actual puede ser determinado por milis():
currentTime = millis();
elapsedTime = currentTime - previousTime;
15
5. Controlador PID en Arduino
A continuación, se debe determinar el error:
error = setPoint - input;
Recuerda que la integral del error es el error acumulativo en el tiempo:
cumError += error * elapsedTime;
16
5. Controlador PID en Arduino
La derivada del error es la tasa de cambio del error:
rateError = (error - lastError)/elapsedTime;
Por último, la salida calculada es:
output = Kp * error + Ki * cumError + Kd * rateError;
Aquí, el Kp, Ki y Kd son las constantes predeterminadas. Finalmente, las variables
deben ser anotadas para la siguiente iteración:
lastError = error;
previousTime = currentTime;
17
5. Controlador PID en Arduino
//PID constants double computePID (double inp){
double kp = 2; currentTime = millis();
double ki = 5; //get current time
double kd = 1; elapsedTime = (double)(currentTime - previousTime);
unsigned long currentTime, previousTime; //compute time elapsed from previous computation
double elapsedTime; error = setPoint - input;
double error; // determine error
double lastError; cumError += error * elapsedTime;
double input, output, setPoint; // compute integral
double cumError, rateError; rateError = (error - lastError)/elapsedTime;
// compute derivative
void setup(){ double out = kp*error + ki*cumError + kd*rateError;
previousTime = millis(); //PID output
lastError = 0; lastError = error;
} //remember current error
void loop(){ previousTime = currentTime;
input = analogRead(A0);
//read from rotary encoder connected to A0
//remember current time
return out;
1
output = computePID(input); delay(100); //have function return the PID output
analogWrite(3, output); }
//control the motor based on PID value
}
18
5. Controlador PID en Arduino
#include <PID_v1.h>
#define PIN_INPUT 0
#define PIN_OUTPUT 3
//Define Variables we'll be connecting to
double setPoint, input, output;
//Specify the links and initial tuning parameters
double Kp=2, Ki=5, Kd=1;
PID myPID(&input, &output, &setPoint, Kp, Ki, Kd, DIRECT);
void setup() {
//initialize the variables we're linked to
Input = analogRead(PIN_INPUT);
setPoint = 100;
2
//turn the PID on
myPID.SetMode(AUTOMATIC);
}
void loop() {
Input = analogRead(PIN_INPUT);
myPID.Compute();
analogWrite(PIN_OUTPUT, Output);
}
19
20
Gracias
Contacto: Carlos Ferrin
e-mail: cdferrinb@unicatolica.edu.co
RG: https://www.researchgate.net/profile/Carlos_Ferrin
Facultad de Ingeniería:
Departamento de Ingeniería de
Sistemas, Tecnología en Informática