Académique Documents
Professionnel Documents
Culture Documents
●
Un lazo de control es un sistema realimentado,
en el cual se compara una señal de referencia
con el valor medido de una variable que se
quiere controlar.
●
Un controlador ajusta el sistema tratando de
eliminar la diferencia entre la referencia o valor
deseado y el valor medido.
Lazo de control
Error Salida
+ Proceso
Controlador Actuador
Sistema
SetPoint -
Sensor
Control todo o nada (on/off)
●
Los controladores si/no, también llamados de
encendido/apagado o todo/nada, son los
sistemas de control más básicos.
●
Envían una señal de activación (si, encendido ó 1)
cuando la señal de entrada es menor que un
nivel de referencia o set point (definido
previamente), y desactivan la señal de salida (no,
apagado ó 0) cuando la señal de entrada es
mayor que la señal de referencia.
Control todo o nada
Control en una banda (band
gap)
●
Control todo/nada con histéresis. Se utiliza para
evitar un número excesivo de conmutaciones.
●
Es de tipo todo o nada, que se activa cuando la
variable regulada ha descendido hasta un valor
por debajo del límite inferior y solo se desactiva
cuando dicha variable supera el límite superior.
●
Es una regulación simple y económica, se utiliza
en aplicaciones que puedan admitir una
oscilación continua entre dos límites.
Control en una banda
OVEN - Proteus
OVEN - Proteus
●
Ambient Temperature (ºC): 25
●
Thermal Resistance to Ambient (°C/W): 0.7
●
Oven Time Constant (sec.): 5
●
Heater Time Constant (sec.): 0.5
●
Temperature Coefficient (V/°C): 1
●
Heating power (W): 150
OVEN – control todo o nada
OVEN – control de una banda
Con microcontrolador
●
El control todo o nada (con o sin histéresis)
puede realizarse con un microcontrolador,
usando sentiencia if- else.
Control PID
●
En lugar de solamente activar o desactivar el
actuador, un controlador PID cambia el valor del
actuador tomando en cuenta tres factores:
Proporcional, Integral y Derivativo.
●
Trabaja calculando la cantidad de error entre el
valor deseado (set point) y el valor de salida del
sistema, y ajusta (suavemente) el sistema para
reducir y eliminar el error.
Control PID
●
El control y el ajuste se realizan de acuerdo a una
relación matemática y no puramente lógica de
sentencias if … else.
Sensor
Control PID
●
La salida de los tres términos, el proporcional, el
integral, y el derivativo son sumados para
calcular la salida del controlador PID. Definiendo
y(t) como la salida del controlador, la forma final
del algoritmo del PID es:
T
de(t)
y (t ) = K p e(t ) + K i ∫ e(t )dt + K d
0 dt
Control PID
Proporcional
●
El término proporcional calcula el valor de la
salida al actuador de manera proporcional al
error, o diferencia entre el valor deseado y el
valor de la entrada.
error=setpoint−entrada
P out =K p∗error
●
El término integral reacciona a la magnitud del
error y a su duración.
errorSum=(errorSum+errorActual)∗cambioTiempo
I out =K i∗errorSum
●
errorSum: valor acumulado del error
● Iout: salida integral al actuador
● Ki: constante integral
Integral
●
Este término puede producir un error conocido
como windup.
●
Es necesario limitar el valor de salida de este
elemento.
Derivativo
●
Este término responde a la velocidad de cambio
del error.
error−errorAnterior entrada−entradaAnterior
Derror= =
cambioTiempo cambioTiempo
D out =K d∗Derror
●
Derror: Diferencia entre error actual y anterior
● Dout: salida derivativa al actuador
● Kd: constante derivativa
Salida PID
●
La salida de control del PID es la suma de los tres
factores calculados.
●
Es necesario calcular el tiempo o intervalo en el
que se van a realizar las acciones de control.
●
El tiempo es necesario para determinar los
términos integral y derivativo.
●
En Arduino se puede usar millis() para
determinar los tiempos del sistema.
// loop
ahora = millis();
cambioTiempo = (ahora – ultimoTiempo);
// calculos de control
ultimoTiempo = millis();
Programa PID
void loop ()
{
now = millis() ; // tiempo actual
timechange = (now - lasttime); // dt
if (timechange >= settime) // Calcular PID ?
{
Input = (analogRead(voltPin)/4.0); //0 a 255
error = Setpoint - Input; // calcular error
timechange_seg = timechange / 1000.0);
errorsum = (errorsum + error) * timechange_seg;
Derror = (Input - lastinput) / timechange_seg;
...
Programa PID
...
Pout = Kp * error; // calcular ganancias de PID
Iout = Ki * errorsum ;
Dout = Kd * Derror ;
if (Iout > 255) // limitar (windup)
Iout = 255;
if (Iout < 0)
Iout = 0;
Output = Pout + Iout + Dout ; // Salida
if (Output > 255) // Limitar salida
Output = 255;
if (Output < 0)
Output = 0;
lastinput = Input; // guardar tiempo de control
lasttime = now;
analogWrite(pwmPin, Output); // Escribir pin PWM
}
Práctica 8
●
1) Control todo o nada con Arduino, usando
OVEN de Proteus. Set point en 3.0 V.
●
2) Control de una banda con Arduino, usando
OVEN de Proteus. Set point en 3.0 V, banda de
0.2 V.
●
3) Control PID con Arduino, usando OVEN de
Proteus. Set point en 3.0 V.
Referencias
●
Antonio Creus. Instrumentación Industrial.
Octava edición – 2011.
●
Rick Anderson, Dan Cervo. Pro Arduino. 2013.