PASO4 – Diseñar e Implementar un circuito de control digital PID TRABAJO ACTIVIDAD INDIVIDUAL.
UNIDAD 3 Implementación de Controladores
LAURA CALDERON NARVAEZ CC 1.075.251.058
CURSO: 203041A_
UNAD. UNIVERSIDAD NACIONAL NACIONAL ABIERTA Y A DISTANCIA UNAD
2018
Actividades a desarrollar. Implementar un controlador PID en un microcontrolador PIC 16f877A para un sistema de calefacción. La simulación se debe desarrollar en Proteus utilizando el Heated Oven (LumpedModel) y se establecerán los siguientes valores. Temperature Ambient (°C) = 30 Thermal Resistence to Ambient (°C/W) = 0.7 Oven Time Constant (sec) = 10 Heater Time Constant (sec) = 1 Temperature coefficient (V/°C) = 1 Heating Power (W) = 120
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 20v. Se debe definir el modelo del sistema y analizar el comportamiento del sistema ante perturbaciones de tipo escalón teniendo en cuenta que la temperatura límite o set point es de 100°C. Para ingresar las perturbaciones al sistema se debe hacer lo siguiente.
instante de tiempo t = 120 seg se conmuta nuevamente a la fuente de alimentación BAT1 de 20V.
Solución. El modelo esquemático OVEN contiene un terminal sensor T que entrega un voltaje proporcional a la temperatura del sistema. De acuerdo a los parámetros establecidos anteriormente, este terminal entregara 1V/°C, es decir, que para una temperatura de 100°C, el terminal T entregara 100V. Para obtener la respuesta del sistema en lazo abierto ante una entrada escalón (curva de reacción), se utiliza el sistema de análisis interactivo de ISIS Proteus Interactive Analysis (Graph Mode Tool), el cual interactúa con el sistema OVEN mediante el uso de un Voltage. Probe1 OV1 (T), según se muestra en la Figura. Observar que para realizar la entrada escalón de 0V a 2V se utiliza un interruptor SW1.
Metodo Ziegler – Nichols
τ = =43 τ = = 4 = 18 γ = γ = 1 8 4 = 1 4
K =
1700 4 200
= 84.8
Nuestra función de transferencia es: () =
−
= 84.8
1 +
Hallamos parámetros para
= 1.2
− 1 + 14
14
= 1.2
84.8 ∗ 1 14 = 1.2 84.8 = 0.198
Tiempo inicial = 2 = 2 ∗ 1 = 2 Tiempo derivado = 0.5 = 0.5 ∗ 1 = 0.5 Hallamos el tiempo de muestreo
<
τ 4
=
1 4
= 0.25
Remplazamos
= ; =
; =
= = 0.198 =
= 0.198
0.1
=
2
= 0.0099
Nos queda:
= 0.198 ; = 0.0099 ; = 0.99 Simulación PIC 16f877A
Programa en CCS C para configurar pic 16F877A #INCLUDE <16F877A.H> #DEVICE ADC=10 #USE DELAY(CLOCK=4000000) #FUSES XT,NOWDT 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; //variables maximos y minimos de control min= 0.0; max=1000.0; it_1= 0.0; et_1= 0.0; a= 0.198; //constantes pid b= 0.0099; c= 0.99; set_point=1000.0; //temperatura Set point
setup_timer_2(t2_div_by_4,249,1); //periodo de la señal para establecer setup_ccp1(ccp_pwm); //modulo ccp como pwm setup_adc_ports(all_analog); //puerto a analogo setup_adc(adc_clock_internal); //reloj convertidor ad interno set_adc_channel(0); 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=set_point; //valor del set point et=rt-yt; //calculo de error it= b*et+it0; //calculo de termino de la integral
if(ut>max){ ut=max; } else{ if(ut