Sei sulla pagina 1di 6

Laboratorio Automatización Industrial Mecatrónica

2013

Control PID de un Sistema de Temperatura


Luigui Mauricio Albán Fernández
Juan Esteban Ordoñez Bonilla
Escuela Politécnica del Ejército
Carrera de Ingeniería Mecatrónica
Correo-e: lmalban@espe.edu.ec
jeordonez@espe.edu.ec

Abstract In this paper, a fractional order PID controller is investigated for a position
servomechanism control system considering actuator saturation and the shaft torsional flexi-
bility. For actually implementation, we introduced a modified approximation method to realize
the designed fractional order PID controller. Numerous simulation comparisons presented in
this paper indicate that, the fractional order PID controller, if properly designed and
implemented, will outperform the conventional integer order PID controller.

1. Introducción Dónde:
El PID, es sus distintas versiones constituye la solución más
u(t)-variable de control, generalmente posición de una válvula.
aceptada en los problemas de control en la industria. Se
u(0) es la posición inicial.
calcula que el 95% de controladores industriales analógicos o
digitales, constituyen el algoritmo del PID. Kp, Ti y Td-Ganancia, tiempo integral y tiempo derivativo.

Se puede decir que el PID es el regulador natural por Tc-periodo de control.


excelencia. Comportándose como un ser racional ante una
toma de decisión: tomando en cuenta el estado actual La forma de velocidad del PID discreto se obtiene fácilmente a
(proporcional), la historia pasada (integral) y un pronóstico del partir de (1), calculando u(t) menos u(t-1), con lo que se llega
futuro (derivada) del error o desviación del comportamiento a:
deseado.
 Tc Td 
u (t )  Kp (e(t )  e(t  1))  e(t )  (e(t )  2e(t  1)  e(t  2))
El PID discreto tiene dos formas principales conocidas como  Ti Tc 
posicional y de velocidad. Ecuación 1.2

La ecuación 1. ofrece la forma posicional del algoritmo PID Donde


discreto:
u(t )  u(t )  u(t  1) 1.3

e(t )  e(t  1)  u(0)
t
Tc Td
u (t )  Kp e(t )   e(i)  O
 Ti i 1 Tc 
u(t )  u(t  1)  u(t ) 1.4

Ecuación 1.1
2. Controlador PID manera que el modo integral es el que garantiza el nivel de la
señal de control, pudiendo considerarse los modos P y D como
desviaciones de este nivel. Por otra parte, el cálculo separado
del modo integral, permite chequear en cada periodo que su
valor este dentro del rango de control, evitándose los
problemas asociados a la saturación del modo integral
(integral wind up).

Nótese que en la expresión (1.5) del algoritmo se utiliza el


incremento de la salida y (t ) en lugar del incremento del
Figura 1. Esquema controlador PID error. Este es un recurso conocido para evitar el llamado golpe
de la derivada cuando se realiza un cambio brusco del valor de
Un algoritmo PID verdaderamente profesional es el que puede referencia yrf que puede provocar oscilaciones innecesarias.
trabajar de forma confiable ante las condiciones reales, incluye Considérese, por ejemplo:
una serie de detalles que son obviados en ocasiones y que
pueden marcar la diferencia entre un buen y un mal e(t )  y rf (t )  y(t ) 1.9
comportamiento. Se presenta a continuación una versión que
ha sido probada exhaustivamente en la práctica con buenos
e(t  1)  y rf (t  1)  y(t  1) 1.10
resultados:

Si la referencia permanece constante, es decir yrf(t) = yrf(t-1),


Ru  Tdy (t ) 
u (t )  en (t )    Int (t ) 1.5 entonces:
Bp  Tc R y 
e(t )  y(t ) 1.11
Donde:
Sea en este caso el uso del negativo del incremento de la salida
Ru = umax – umin – Rango del actuador. A menudo 1-100%. es perfectamente equivalente al del incremento del error para
conformar el modo derivativo del PID. No obstante, si se
Ry = ymax – y min – Rango del transmisor con que se mide la produce un cambio de la referencia, tendremos que:
variable en unidades fisicas. Por ejemplo: 0 – 100 grad. C, 4.2
– 20 Kgs./cm2, etc. e(t )  y(t )  y rf (t ) 1.12

A diferencia del cambio en la salida, que por naturaleza es


lento dada la dinámica del proceso, el cambio de la referencia
y rf (t )  y f (t )
en (t )  1.6 es inmediato y bresco, lo cual significa que el incremento del
Ry error y por ende la componente derivativa del regulador
también cambia bruscamente. Este es precisamente el efecto
Es el error normalizado desestabilizador que se pretende evitar cuando se sustituye al
incremento del error por el incremento de la salida en el modo
yrf(t) – Valor de referencia, eventualmente filtrado mediante derivativo.
un filtro exponencial de primer orden.
La variable u(t) generalmente se encuentra en un rango
yf(t) – Valor de la salida filtrada. normalizado en la computadora (10-100) ó (0-1). Después, en
el convertidor D/A se transforma en una señal normalizada,
Bp – Banda proporcional. Se relaciona con la ganancia
p.ej. de 4 a 20 ma.
mediante Kp = Ru/Bp. En muchas ocasiones Kp=100/Bp.

TcRu 3. Inicialización y modo de regulador


Int (t )  Int (t  1)  en (t ) 1.7
TiBp digital PID.
Deben tomarse unas previsiones en la inicialización y cambio
Int (0)  u(0) 1.8
del modo de un regulador digital PID si se requiere un
Int(t) representa al modo integral en el algoritmo PID. Su comportamiento suave y libre de saltos bruscos, a
cálculo separado mediante la expresión (1.7) permite, por una continuación detallamos las más importantes:
parte, inicializar este término con la posición del actuador, de
 Cuando se pasa del modo respaldo al modo manual, int16 dc_set=0;
debe hacerse el valor Int(0) = u(0). Esto puede int contador=0;
hacerse automáticamente si se mide la variable de int16 valor,var1=0,var2=0,var3=0,var4=0;
control u(t) o manualmente, leyendo el valor de u(t) char b;
que tiene el equipo de respaldo e insertándolo en la
computadora.
#INT_rda
void rda_isr()
 El paso de modo manual a automático puede lograrse {
en una forma suave, si se hace yrf (0) = y(0) en el disable_interrupts(GLOBAL);
momento de tránsito. De esta forma el regulador “ve”
inicialmente un error igual a cero y no se producen contador=contador+1;
saltos. Posteriormente la referencia puede ser llevada
b=getch();
suavemente al valor deseado.
if(b>=48 && b<=57)
{
 Si estando en el modo automático se pasa a manual y if(contador==1)
se hacen algunas operaciones de apertura o cierre de {
válvula, estos cambios deben reflejarse en el término var1=(int16)b-48;
Int(t) del regulador PID, de manera que cuando se }
regrese al modo automático, el valor de la integral
if(contador==2)
coincida con la posición de la válvula en ese
momento. {
var1=var1*10;
var2=(int16)b-48;
}
4. Modelado de la planta. if(contador==3)
La planta que se diseñó para el uso en el laboratorio es una {
caja de madera, (el motivo porque la madera conserva mejor el var1=var1*10;
calor) de dimensiones 20x15x15 cm aproximadamente ya que var2=var2*10;
nosotros reciclamos una caja que teníamos, con unos agujeros var3=(int16)b-48;
tanto en su parte lateral como en la parte superior para el }
ingreso y enfriamiento de la misma dependiendo de cómo se if(contador==4)
vaya realizando el control. {
var1=var1*10;
El actuador a utilizar es una resistencia eléctrica de
var2=var2*10;
aproximadamente 9 Ohm la cual con la ayuda de una señal de
var3=var3*10;
control que activa a un transistor logra activarlo y funcionar
var4=(int16)b-48;
según la misma.
}
El sensor usado es un sensor de temperatura LM35 que es muy }
común en las acciones de censado y con una sensibilidad de else
10 mv/°C. {

El modelamiento se lo realizo a través del siguiente algoritmo valor=read_adc();


de envió-recepción de datos a través de la comunicación delay_ms(10);
RS232, se consideró tomar 2 vectores que representaran printf("%lu\n",valor);
entrada vs. Salida. Por medio de la herramienta ‘ident’ de
MATLAB. dc_set=var1+var2+var3+var4;

#include <16f877a.h> var1=0;


#device ADC=10 var2=0;
#fuses NOWDT, HS, PUT, NOPROTECT var3=0;
#use delay(crystal=4000000) var4=0;
#use rs232(baud=9600, parity=N, xmit=PIN_C6, contador=0;
rcv=PIN_C7, bits=8)
#include <lcd.c> //printf("%lu\n",dc_set);
}
enable_interrupts(GLOBAL);
}

void main ()
{
setup_timer_1( T1_INTERNAL | T1_DIV_BY_1 );
set_timer1(15536);//45536

setup_adc_ports(RA0_RA1_RA3_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL );

setup_timer_2(T2_DIV_BY_4,249,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(0); 5. Planta en TF.
set_adc_channel(0);
delay_ms(10);
lcd_init(); ( )
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
6. Consideraciones de Potencia y modelado
while (true) Si, bien el sistema se dedujo de la ayuda de MATLAB, es
{ prudente analizar físicamente en que se ve afectado y
set_pwm1_duty(dc_set); como en teoría se desarrollara la planta, mediante
} transferencia de calor y correlaciones de Potencia
} eléctrica con el calor suministrado por el mismo.

Fig 1. Algoritmo de programación envio-recepcion


modelamiento de planta

Volumen aproximado planta.

Densidad del aire a 75 ⁰C

Fig2. Toolbox IDENT, para obtener modelamiento


matemático en forma de función de transferencia, la planta a
controlar.
Calor especifico aire a 75 ⁰C

Como potencia máxima eléctrica de entrega hacia el


sistema se obtiene.
Fig4. Respuesta a escalón del sistema sin controlador.

Fig3. Simulacion de parte de potencia, implementado


para realizar los diaparos del PWM de salida del uC. Como podemos observar si bien el sistema se mantiene
estable, es necesario aumentar la velocidad de respuesta de la
Potencia eléctrica misma, tiene un proceso bastante lento, por lo que por
métodos de sintonización se realizaron los cálculos de las
constantes: kp=2.94 ki=0.01 kd=2.83.

Se procedió a realizar el algoritmo ed control por medio de


MATLAB

%Controlador PID MATLAB


%Automatizacion industril Mecatronica
clear all
clc
1. %Configuracion de puerto
cIO=arduino('COM3');
cIO.pinMode(9,'output');
2. ( PWM=10;%Arranque del PWM en 10
)⁰ cIO.analogWrite(9,PWM);
%Constantes controlador
kp=2.94;
Relación, temperatura final versus tiempo kd=0.01;
necesario. ki=2.83;

%Tiempo de muestreo
temp_muest=0.5;

Considerando ⁰ y ⁰ %Inicialización de variables


errorin=0;
tempin=0;
contador=0;
7. Implementación del controlador. i=0;
Una vez modelado el sistema, y haber obtenido respuesta time=[];
a una entrada escalón. tempgraf=[];

%Setpoint (25°C-100°C)
setpoint=input('Setpoint °C: ');

while(
true) ADC=cIO.analogRead(1);
%Valor de temperatura, lectura ADC y Temperatura=(ADC*500/1024)
transformación
%temperatura=((6*10^(-6))*temp1)- 8. Resultados
(0.0033*(temp1^2))+(0.7745*temp1)+20.66;
Los resultados obtenidos fueron muy satisfactorios,
considerando la poca complejidad de la planta y alta eficiencia
%ecuación del error
Error=setpoint-Temperatura que presenta los tiempos de disparo del PWM que arroja el
uC, en nuestro caso particular ArduinoONE’
%Ecuaciones del control
El tiempo de establecimiento es considerablemente alto,
temperatura=0.5*(Error+errorin)*temp_muest tomando en cuenta que las plantas de temperatura cuentan con
+tempin; un principio de conducción, y el mismo se realiza en nuestro
caso a través del aire, por lo que el calor transferido tendrá un
A=kp+0.5*ki*temp_muest+(kd/temp_muest); tiempo prudente de transferencia y esto hace que el tiempo de
B=0.5*ki*temp_muest-
establecimiento de por si será algo prolongado.
(kd/temp_muest);
C=ki;
9. Conclusiones
control=A*Error+B*errorin+C*tempin; Se determinó un control bastante aceptable, considerando el
PWM=ceil(control*2.53); sistema a controlar y la simplicidad del mismo.

if PWM>255 Los resultados reales fueron un ess=3% y un tiempo de


PWM=255 estableciente de ts=350s.
else if PWM<0
PWM=0
else Bibliografía
PWM
end
end
[1]http://academiajournals.com/downloads/Lorandi
%Escritura del valor de PWM 2011IE.pdf
cIO.analogWrite(9,PWM);
errorin=Error; [2]http://repositorio.espe.edu.ec/bitstream/21000/4945/1
tempin=Temperatura; /T-ESPE-033010.pdf
i=i+1;

pause(1)
end

Potrebbero piacerti anche