Vous êtes sur la page 1sur 26

Tema 9: Controladores

Lazo de control (control loop)


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.

SetPoint + Error Salida


PID Actuador Proceso
-

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

● Kp: Constante proporcional


● Pout: Salida proporcional
Integral


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.

salida PID=P out + I out + D out


Tiempo


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.

Vous aimerez peut-être aussi