Beruflich Dokumente
Kultur Dokumente
Cead Zipaquirá
Control Digital
Unidad 2 – Actividad 3
Presentado por:
1075873313
Presentado a:
Sopo, Cundinamarca
En lazo abierto, muchos procesos pueden definirse según la siguiente función de transferencia:
K e s 0
G(s) 0
1 0s
Donde los coeficientes K0, 0 y 0 se obtienen de la respuesta del sistema en lazo abierto
a una entrada escalón. Se parte del sistema estabilizado en y(t) =y0 para u(t)=u0. Se aplica una entrada
escalón de u0 a u1 (el salto debe estar entre un 10% y un 20% del valor nominal) y se registra la
respuesta de la salida hasta que se estabilice en el nuevo punto de operación.
0 t1 t0
0 t2 t1
y1 y0
k
0
u1 u0
Figura 1. Respuesta de salida ante una entrada escalón.
Desarrollo
Para el análisis de la curva de reacción, se analizará la respuesta del sistema en lazo abierto ante una entrada
escalón, dicha entrada escalón es de 0v a 10v.
La simulación se debe desarrollar en Proteus utilizando el Heated Oven (LumpedModel) y se establecerán los
siguientes valores:
Simulación en Proteus
Análisis de la gráfica mediante ZIEGLER-NICHOLS
t 0 = 𝑡1 − 𝑡0 = 4 − 3 = 𝟏
γ0 = 𝑡2 − 𝑡1 = 6 − 4 = 𝟐
𝑦1 − 𝑦0
K0 =
𝑈1 − 𝑈0
952 − 30
K0 =
10 − 0
922
K0 = = 92.2
10
𝑘0 𝑒 −𝑠𝑡0 𝑒 −𝑠
𝐺(𝑠) = = 92.2
1 + 𝛾0 𝑠 1 + 2𝑠
Los parámetros Kp, Ti y Td se calculan según la Regla de Sintonización de Ziegler- Nichols basada
en la respuesta al escalón:
𝛾0
𝐾𝑃 = 1.2
𝑘0 𝑡0
2
𝐾𝑃 = 1.2
92.2 ∗ 1
2
𝐾𝑃 = 1.2
92.2
𝐾𝑃 = 0.0260
𝑡𝑖 = 2𝑡0
𝑡𝑖 = 2 ∗ 1
𝑡𝑖 = 2
𝑡𝑑 = 0.5𝑡0
𝑡𝑑 = 0.5 ∗ 1
𝑡𝑑 = 0.5
𝑎 = 𝐾𝑃 = 0.0260
𝐾𝑃 𝑇
𝑏=
𝑇𝑖
0.0260 ∗ 0.1
𝑏=
2
𝑏 = 0.0013
𝐾𝑃 𝑇𝑑
𝑐=
𝑇
0.0260 ∗ 0.5
𝑐=
0.1
𝑐 = 0.13
#include <16f877a.h>
#device adc=10
#fuses xt,nowdt
#use delay(clock=4000000)
void main(){
int16 valor; //lectura de temperatura
int16 control; //valor de pwm
float a,b,c; //constantes del pid
float temp_limit; // temperatura a alcanzar
float rt,et,it,dt,yt,ut,it0,et0,it_1,et_1; //variables de ecuaciones
float max,min; //limites maximos y minimos de control
min= 0.0;
max=1000.0;
it_1= 0.0;
et_1= 0.0;
a= 0.0260; //constantes pid
b= 0.0013;
c= 0.13;
temp_limit= 1000.0; //temperatura Set point
while(true)
{
valor=read_adc();
yt=5000.0*valor/1024.0; //valor de la co y conversion de a mv(0.25v a 250mv)
rt=temp_limit; //valor del set point
et=rt-yt; //calculo de error
it= b*et+it0; //calculo de termino de la integral
dt= c*(et-et0); //calculo de termino de la derivativo
ut= it+a*et+dt; //calculo pid
delay_ms(100);
if(ut>max){
ut=max;
}
else{
if(ut<min){
ut=min;}
}
}}
Para ingresar las perturbaciones al sistema se debe hacer lo siguiente: Para el instante de tiempo t=0s se
utiliza una de alimentación BAT1 de 10V, para el instante
de tiempo t=50s se conmuta otra fuente de alimentación BAT 2 de 30V y para el instante de tiempo t=120s se
conmuta nuevamente a la fuente de alimentación
BAT1 de 10V.
Simulación proteus
8
9