Fase 3 Consolidado-CONTROL DIGITAL

IMPLEMENTAR EL CONTROLADOR EN UN MICROCONTROLADOR HECTOR DAVID RONCANCIO RONCANCIO C.C. 1015451946 JENNY MARCELA SOPHO

Views 172 Downloads 3 File size 734KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • Diana
Citation preview

IMPLEMENTAR EL CONTROLADOR EN UN MICROCONTROLADOR

HECTOR DAVID RONCANCIO RONCANCIO C.C. 1015451946 JENNY MARCELA SOPHO C.C. 53040047 MANUEL IGNACIO GARCIA SUAREZ C.C 11442329

Grupo: 203041_1

Presentado a Joan Sebastian Bustos

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA CONTROL DIGITAL FACATATIVA 2019

INTRODUCCION En esta fase se diseñan diferentes tipos de controladores de manera analítica y se compararan sus resultados mediante software especializado. Examinaremos una particular estructura de control que es casi universalmente utilizada en la industria. Se trata de la familia de controladores de estructura fija llamada familia de controladores PID. Estos controladores han mostrado ser robustos y extremadamente beneficiosos en el control de muchas aplicaciones de importancia en la industria. Históricamente, ya las primeras estructuras de control usaban las ideas del control PID. Sin embargo, no fue hasta el trabajo de Minorsky de 1922, sobre conducción de barcos, que el control PID cobró verdadera importancia teórica. Hoy en día, a pesar de la abundancia de sofisticadas herramientas y métodos avanzados de control, el controlador PID es aún el más ampliamente utilizado en la industria moderna, controlando más del 95 % de los procesos industriales en lazo cerrado.

A partir del diseño del controlador PID de la fase 2 y el cálculo de las constantes Kp, Ti y Td, realizar la implementación del controlador en un microcontrolador y analizar su comportamiento ante diferentes perturbaciones. Un sistema de calefacción ante diferentes perturbaciones. La simulación se debe desarrollar en Proteus utilizando el modelo Heated Oven (LumpedModel) con la siguiente configuración en parámetros: • 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 su comportamiento ante perturbaciones de tipo escalón, teniendo en cuenta que la temperatura límite o set point es de 100°C. DESARROLLO En el software de Proteus se realiza el montaje con un micro controlador PIC16F877A configurando el pin dos del micro controlador con un divisor de voltaje donde las resistencias tienen un valor R1 99k y R2 1k y por supuesto conectando con la salida de temperatura del modelo Heated Oven , por otro lado se configura el pin 17 como una salida para mandar pulsos lógicos al transistor mosfet IRL1004 conectando a una entrada del sistema Oven y por último se utilizó Un Swich Alternador en donde hay dos fuentes una de 20 voltios y la otra de 30voltios con el fin de realizar las perturbaciones.

Una vez se haya realizado el montaje utilizamos el software pic c compiler utilizando el siguiente código para la configuración del pic donde en las variables a, b y c ingresamos los valores hallados para el controlador PID .

Tipo de controlador

Kp

Ti

Td

PID

0.9T/L

L/0.3

0.5L

PID

0.014916

0.0000744

0.07458

a= 0.014916 b= 0.0000744 c= 0.07458

CODIGO DEL PIC16F877A #include "C:\Users\ADMIN\Desktop\UNAD\periodo 2019 I 16-04\CONTROL DIGITAL\Fase 3 - Implementar el controlador en un microcontrolador\pic123.h" VOID MAIN(){ INT16 valor, control; //Variables para lectura de ADC y señal de Control a modulo CCP FLOAT a,b,c; //Constantes para parámetros de controlador PID FLOAT TEMPERATURA_LIMITE; //Referencia de Temperatura FLOAT rt,eT,iT,dT,yT,uT,iT0,eT0; //Variables de controlador PID FLOAT max,min; //Variables para anti-windup min=0.0; max=1000.0; iT0=0.0; eT0=0.0; a=0.014916; b=0.0000744; c=0.07458; TEMPERATURA_LIMITE=1200.0; //Set Point r(kT)= 120°C

setup_timer_2(t2_div_by_4,249,1); //Configuracion de Timer 2 para establecer frec. PWM a 1kHz setup_ccp1(ccp_pwm); //Configurar modulo CCP1 en modo PWM setup_adc_ports(all_analog); //Configurar ADC setup_adc(adc_clock_internal); set_adc_channel(0); //Seleccionar Canal 0 para sensor de Temperatura while(true){ valor=read_adc(); //Leer ADC yT=5000.0*valor/1024.0; //Escalizar señal de salida y(kT) rT=TEMPERATURA_LIMITE; eT=rT-yT; //Calcular senal de error e(kT) iT=b*eT+iT0; //Calcular termino integrativo i(kT) dT=c*(eT-eT0); //Calcular termino derivativo d(kT) uT=iT+a*eT+dT; //Calcular senal de control u(kT) if (uT>max){ //Anti-windup uT=max; } else { if (uT