Documente Academic
Documente Profesional
Documente Cultură
2013
Control PID de un Sistema de Temperatura
Luigui Mauricio Albn Fernndez
Juan Esteban Ordoez Bonilla
Escuela Politcnica del Ejrcito
Carrera de Ingeniera Mecatrnica
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 flexibility. 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. Introduccin
El PID, es sus distintas versiones constituye la solucin ms
aceptada en los problemas de control en la industria. Se
calcula que el 95% de controladores industriales analgicos o
digitales, constituyen el algoritmo del PID.
Se puede decir que el PID es el regulador natural por
excelencia. Comportndose como un ser racional ante una
toma de decisin: tomando en cuenta el estado actual
(proporcional), la historia pasada (integral) y un pronstico del
futuro (derivada) del error o desviacin del comportamiento
deseado.
El PID discreto tiene dos formas principales conocidas como
posicional y de velocidad.
La ecuacin 1. ofrece la forma posicional del algoritmo PID
discreto:
Tc
Td
Dnde:
u(t)-variable de control, generalmente posicin de una vlvula.
u(0) es la posicin inicial.
Kp, Ti y Td-Ganancia, tiempo integral y tiempo derivativo.
Tc-periodo de control.
La forma de velocidad del PID discreto se obtiene fcilmente a
partir de (1), calculando u(t) menos u(t-1), con lo que se llega
a:
Tc
Td
Ecuacin 1.2
Donde
1.3
1.4
Ecuacin 1.1
2. Controlador PID
Ru
Tdy (t )
u (t )
en (t )
Int (t )
Bp
Tc R y
1.5
e(t ) y rf (t ) y(t )
1.9
e(t 1) y rf (t 1) y(t 1)
1.10
e(t ) y(t )
1.11
Donde:
Ru = umax umin Rango del actuador. A menudo 1-100%.
Ry = ymax y min Rango del transmisor con que se mide la
variable en unidades fisicas. Por ejemplo: 0 100 grad. C, 4.2
20 Kgs./cm2, etc.
en (t )
y rf (t ) y f (t )
1.6
Ry
Es el error normalizado
yrf(t) Valor de referencia, eventualmente filtrado mediante
un filtro exponencial de primer orden.
yf(t) Valor de la salida filtrada.
Bp Banda proporcional. Se relaciona con la ganancia
mediante Kp = Ru/Bp. En muchas ocasiones Kp=100/Bp.
Int (t ) Int (t 1)
Int (0) u(0)
TcRu
en (t )
TiBp
1.7
1.8
e(t ) y(t ) y rf (t )
1.12
4. Modelado de la planta.
La planta que se dise para el uso en el laboratorio es una
caja de madera, (el motivo porque la madera conserva mejor el
calor) de dimensiones 20x15x15 cm aproximadamente ya que
nosotros reciclamos una caja que tenamos, con unos agujeros
tanto en su parte lateral como en la parte superior para el
ingreso y enfriamiento de la misma dependiendo de cmo se
vaya realizando el control.
El actuador a utilizar es una resistencia elctrica de
aproximadamente 9 Ohm la cual con la ayuda de una seal de
control que activa a un transistor logra activarlo y funcionar
segn la misma.
El sensor usado es un sensor de temperatura LM35 que es muy
comn en las acciones de censado y con una sensibilidad de
10 mv/C.
int16 dc_set=0;
int contador=0;
int16 valor,var1=0,var2=0,var3=0,var4=0;
char b;
#INT_rda
void rda_isr()
{
disable_interrupts(GLOBAL);
contador=contador+1;
b=getch();
if(b>=48 && b<=57)
{
if(contador==1)
{
var1=(int16)b-48;
}
if(contador==2)
{
var1=var1*10;
var2=(int16)b-48;
}
if(contador==3)
{
var1=var1*10;
var2=var2*10;
var3=(int16)b-48;
}
if(contador==4)
{
var1=var1*10;
var2=var2*10;
var3=var3*10;
var4=(int16)b-48;
}
}
else
{
valor=read_adc();
delay_ms(10);
printf("%lu\n",valor);
dc_set=var1+var2+var3+var4;
var1=0;
var2=0;
var3=0;
var4=0;
contador=0;
xmit=PIN_C6,
//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);
set_adc_channel(0);
delay_ms(10);
lcd_init();
enable_interrupts(INT_TIMER1);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
5. Planta en TF.
( )
1.
(
2.
)
Considerando
%Inicializacin de variables
errorin=0;
tempin=0;
contador=0;
i=0;
time=[];
tempgraf=[];
%Setpoint (25C-100C)
setpoint=input('Setpoint C: ');
while(
true)
ADC=cIO.analogRead(1);
Temperatura=(ADC*500/1024)
%temperatura=((6*10^(-6))*temp1)(0.0033*(temp1^2))+(0.7745*temp1)+20.66;
%ecuacin del error
Error=setpoint-Temperatura
%Ecuaciones del control
temperatura=0.5*(Error+errorin)*temp_muest
+tempin;
A=kp+0.5*ki*temp_muest+(kd/temp_muest);
B=0.5*ki*temp_muest(kd/temp_muest);
C=ki;
control=A*Error+B*errorin+C*tempin;
PWM=ceil(control*2.53);
if PWM>255
PWM=255
else if PWM<0
PWM=0
else
PWM
end
end
%Escritura del valor de PWM
cIO.analogWrite(9,PWM);
errorin=Error;
tempin=Temperatura;
i=i+1;
pause(1)
end
8. Resultados
Los resultados obtenidos fueron muy satisfactorios,
considerando la poca complejidad de la planta y alta eficiencia
que presenta los tiempos de disparo del PWM que arroja el
uC, en nuestro caso particular ArduinoONE
El tiempo de establecimiento es considerablemente alto,
tomando en cuenta que las plantas de temperatura cuentan con
un principio de conduccin, y el mismo se realiza en nuestro
caso a travs del aire, por lo que el calor transferido tendr un
tiempo prudente de transferencia y esto hace que el tiempo de
establecimiento de por si ser algo prolongado.
9. Conclusiones
Se determin un control bastante aceptable, considerando el
sistema a controlar y la simplicidad del mismo.
Los resultados reales fueron un ess=3% y un tiempo de
estableciente de ts=350s.
Bibliografa
[1]http://academiajournals.com/downloads/Lorandi
2011IE.pdf
[2]http://repositorio.espe.edu.ec/bitstream/21000/4945/1
/T-ESPE-033010.pdf