Está en la página 1de 14

Control Proporcional- Integral- Derivativo

PID es la sigla para Control Proporcional-Integral- Derivativo. En esta seccin, exploraremos cada uno de los mtodos y cmo trabajan juntos para controlar eficientemente un sistema.

Introduccin al Control PID


Un objetivo del control de proceso es mantener constante un sistema. En el ejercicio anterior, usamos varios medios cclicos para mantener el incubador a la temperatura deseada. Usando banda diferencial, creamos un rango en el que la temperatura puede variar cclicamente alrededor del valor deseado. En el Experimento 4, vimos como usar modulacin por ancho de pulso (PWM) para agregar energa a nuestro sistema con ciclos de trabajo entre 0% (completamente apagado) y 100% (completamente encendido). Mientras que estos tipos de control tienen sus ventajas y desventajas, el control PID nos permite controlar perfectamente un sistema, aunque puede resultar un poco ms complejo de implementar y ajustar para un ptimo rendimiento. Mantener un proceso constante involucra agregar continuamente la misma cantidad de energa que pierde el proceso. Si las prdidas del sistema fueran constantes, el control del proceso sera tan simple como aplicar un nivel continuo de excitacin. Sin embargo, los factores que afectan un proceso siempre cambian. Cambian en cantidades y a velocidades impredecibles. Agregado a esto, deben entenderse las demoras en la reaccin del sistema. Un cambio instantneo en las prdidas, debido a una perturbacin, no se notar inmediatamente y tampoco lo har un cambio en la excitacin. El control del proceso puede ser considerado como un arte, adems de una ciencia. El primer paso para entender el control PID es que cada sistema tiene ganancias y prdidas de energa. Esistema = EinEout Se dice que un sistema est en equilibrio cuando la energa ganada (in) equivale a la perdida (out).
Equilibrio: Ein = Eout

Las condiciones o las perturbaciones de nuestro sistema pueden cambiar muy rpidamente, como cuando una rfaga de viento sopla repentinamente sobre la incubadora, o muy lentamente como cuando el calentador se deteriora por el paso del tiempo. El control PID puede medir y tomar accin observando: 1) Qu tan lejos del punto de equilibro deseado est el sistema, o la magnitud del error. 2) El tiempo transcurrido desde que se present el error. 3) Qu tan rpido ocurre el error en el sistema, o la velocidad de cambio.

La suma de estas tres evaluaciones conforma la excitacin de salida que intentar mantener el sistema en equilibrio. La Figura 6.1 ilustra la evaluacin y control de un sistema con control PID. La frmula clsica de control PID para calcular la salida del controlador es esta:

En esta seccin, la incubadora ser controlada usando control PID, resolviendo la ecuacin correspondiente.

Construccin del Circuito


Usaremos el mismo circuito del Ejercicio 5 (Figura 5.2), pero conectar manualmente el ventilador a la fuente de alimentacin sin regular o a los 5V cuando sea requerido para generar las perturbaciones. A continuacin se transcribe el programa completo para esta seccin. Cambiaremos los valores de Ajuste del Control PID para verificar las distintas reas de control.

DIAGRAMA DE FLUJO DEL PROCESO PRINCIPAL

En este caso como usaremos el compilador bascom omitiremos la seccin del diagrama de flujo que dice CONFIGURA SPL.

**************************DECLARA VARIABLES******************

Dim Datain As Byte, Dim Temp As Word, Dim Signo As Word, Dim Exitacion As Word Dim Err As Word, Dim P As Word, Dim I As Word, Dim D As Word Dim Contadorpwm As Byte, Dim Ultimoerr As Word, Dim Contadorint As Byte Dim Ei As Word, Dim B As Word, Dim Kp As Word Dim Ki As Word, Dim Kd As Word, Dim Sp As Word, Dim Rango As Word Dim Mina As Word, Dim Maxa As Word, Dim Maxt As Word

****************CONFIGURACION DEL CONTROL PID******* Sp = 990 Rango = 20 B = 50 Kp = 0 Ki = 0 Kd = 0 Ti = 24 Mina = 75 Maxa = 120 Maxt = 600 ****************************bucle principal********** Inicio: Gosub Obtenerdato gosub Calc_temp Gosub Cal_excitacion Gosub Excitacion_calentador Goto Inicio

*****************leer adc***********************

Obtenerdato: P1.0 = 0 ShiftinP1.2 , P1.1 , I , 0 P1.0 = 1 I = I / 128 Return Calc_temp: Temp. ' Convierte el valor digital en

Temp =Temprango/255 * Datain / 10 + Offset Return

************calcula Calc_Excitacion: Gosub Errorcalc Gosub Propcalc Gosub Intcalc Gosub Derivcalc

la excitacin****************

' Clculos de Error ' Calcula error proporcional ' Calcula error Integral ' Calcula error Derivativo ' Calcula excitacin total ' Ajuste de signo para max 100

Excitacion =(b + P + I + D) Signo = Excitacion min 0 GOSUB PoneSigno

Excitacion = ABS Excitacion MAX 100 IF Signo = 1 THEN ExcitListo Excitacion = 0 ExcitListo: Return

********* Excitacion del calentador Excitacion_Calentador: For Contadorpwm = 1 To Tiempo Pwm mSec por cada repeticin ' Aplica PWM durante 220

PWM Calentador, excitacion * 255/100,220 NEXT RETURN '********** Calcula %Error - Signo ajustado ErrorCalc: Err =(sp - Temp) Signo = Err GOSUB PoneSigno Err = Abs Err * 100 / Rango Err = Err * Signo RETURN '*********** Excitacin Proporcional - Signo ajustado PropCalc: Signo = Err Gosub Ponesigno P = Abs Err * Kp + 5 / 10 escala P = P * Signo Return ' Err prop= %Err * Kp /10 por ' +5 por redondeo ' Calcula % error ' Calcula error de la temperatura

'********** Excitacin Integral - Signo ajustado

IntCalc: Ei = Ei + Err Contadorint = Contadorint + 1 IF ContadorInt < Ti Then IntListo Signo = Ei Gosub PoneSigno Ei = Abs Ei / Ti Ei = Ei * Ki + 5 / 10 Ei = Ei * Signo I = I + Ei total Signo = I GOSUB PoneSigno I = Abs I Max 100 I = I * Signo Contadorint = 0 Ei = 0 IntListo: Return '*********** Excitacin Derivativa DerivCalc: D=(err-ultimoerr)*Kd 'Calcula excitacin derivativa ' basndose en la diferencia del ltimo error Derivlisto Ultimoerr = E clculo RETURN ' Almacena error actual para el prximo ' Reinicia contador y acumulador ' limita a 100 ' Suma error a Int err ' Encuentra error promedio ' Int err = Int err * Ki ' Acumula %err ' Incrementa contador

'********** Determina el signo de un valor PoneSigno: If Signo.bit15 = 0 Then Signopos ' Si signobit es 1, entonces es negativo Signo = -1 Return SignoPos: Signo = 1 SignoListo: Return La Figura 6.2 es un diagrama de flujo del bucle principal del programa PID. Cada proceso se discutir en forma individual a medida que se toque cada tema. Todos los microcontroladores tienen sus limitaciones, as como otros sistemas tales como los Controladores Lgicos Programables (PLCs). Al programar operaciones complejas como en control PID, es importante comprender estas limitaciones y usar sistemas alternativos. Ya hemos superado la restriccin de tener que trabajar con nmeros enteros, como en el caso de la temperatura, trabajando en dcimas de grado. Otra limitacin que necesitaremos sobrellevar es el uso de nmeros negativos. Si bien el BASIC Stamp puede usar valores negativos, no los puede dividir o usar en instrucciones MIN y MAX para limitar su tamao. En esta seccin ambos problemas sern importantes. Los valores de excitacin PID sern negativos o positivos dependiendo de si es necesario agregar o quitar excitacin del sistema. Tambin necesitaremos limitar los valores mximos de forma que no excedan el 100% bajo ciertas circunstancias, como con excitacin total. Para realizar estas tareas, es usada una subrutina llamada PoneSigno. Varias rutinas la llaman usando GOSUB. El nmero a ser manipulado, que puede ser negativo, se almacena en una variable tipo word rotulada Signo. Cuando PoneSigno es llamada, el bit de signo (bit15) es verificado. Si el bit de signo es 1, es un valor negativo y la variable Signo se pone en -1. Si el bit de signo es 0, es positivo y Signo se pone en 1. De regreso en la rutina que hizo la llamada, se manipula el valor absoluto del nmero original. El resultado luego se multiplica por Signo para que recupere su signo original. Los valores consigno pueden ser de32.768 a +32767.

PropCalc:

Signo = Err GOSUB PoneSigno P = ABS Err * KP + 5/10 ' Prop err = %Err * Kp /10 por escala, P = P * Signo ' +5 por redondeo RETURN ... PoneSigno: IF Signo.bit15 = 0 THEN SignoPos ' Si el bit es 1, entonces es negativo Signo = -1 Return SignoPos: Signo = 1 SignoListo: RETURN

La primer parte del programa a considerar son los clculos de excitacin total. La Figura 6.3 es un diagrama de flujo para estas rutinas. Como se mencion anteriormente, la excitacin total es la suma de tres evaluaciones diferentes basadas en el error. El porcentaje de excitacin total se aplicar entonces al calentador usando PWM durante 5 segundos. Esto permite que el tiempo con el calentador encendido sea mucho mayor que el relativamente corto en el que est apagado, para realizar otras operaciones.

Excitacion_Calentador: FOR ContadorPWM = 1 TO TiempoPWM ' Aplica PWM durante 220 mSec por cada PWM Calentador,drive * 255/100,220 ' repeticin NEXT RETURN Calc_Excitacion: GOSUB ErrorCalc ' Clculos de Error GOSUB PropCalc ' Calcula error proporcional GOSUB IntCalc ' Calcula error Integral GOSUB DerivCalc ' Calcula error Derivativo Excitacion = (B + P + I + D) ' Calcula excitacin total Signo = Excitacion ' Ajuste de signo para max 100 min 0 GOSUB PoneSigno Excitacion = ABS Excitacion MAX 100 IF Signo = 1 THEN DriveListo Excitacion = 0 DriveListo: RETURN

Ejercicio 1: Excitacin de Polarizacin


Como se dijo antes, un sistema en equilibrio es donde la ganancia de energa iguala a las prdidas. Cuando se disea un sistema normalmente los ingenieros

habrn determinado anticipadamente el promedio de prdidas del sistema. La Excitacin de Polarizacin es la que compensa las prdidas de energa promedio. Diseando el sistema de forma que una excitacin de polarizacin del 50% sea suficiente para compensar las prdidas promedio, nos da la capacidad de agregar o quitar hasta un 50% para compensar otras prdidas o grandes perturbaciones del sistema. Este punto es el que nos permite ejercer mayor control. Modifique nuestra ecuacin ligeramente:

B = Excitacin de Polarizacin

%ExcitacinTOTAL = %ExcitacinPOLARIZ + %ExcitacinPROP + %ExcitacinINT


+ %ExcitacinDERIV

Para que los huevos de nuestra incubadora empollen correctamente, una excitacin del 50% en el calentador debera proveer suficiente energa para mantener la temperatura de la incubadora alrededor de 101,5F con prdidas promedio. Desafortunadamente, nuestro sistema no est bien diseado. Al tratarse de un envase de pelcula si aislar, con un pequeo resistor haciendo las veces de calentador, una excitacin del 50% no ser suficiente la mayora de las veces para mantener la temperatura deseada. Algunas limitaciones de nuestra incubadora experimental son: Una polarizacin de la excitacin del 50% es insuficiente para mantener una temperatura de 101,5F. Cada incubadora tendr una temperatura estable diferente para una excitacin de polarizacin del50% debido a diversos factores. Nuestra incubadora es un sistema muy fcil de perturbar. Factores como temperatura ambiente yventiladores soplando sobre el envase, modificarn la temperatura. Al mover o golpear la incubadora se mezclar el aire, afectando la temperatura medida.

Modificaremos nuestro punto de ajuste ptimo para operar el sistema a una temperatura de polarizacin del 50%. Observe que esta temperatura de polarizacin puede variar de acuerdo a las condiciones de la habitacin. Se recomienda que el estudiante lea primero todo el Captulo 6 y luego intente hacer tantas prcticas consecutivas como sea posible. Co pid =B

%ExcitacinTOTAL = %ExcitacinPOLARIZACIN
Para determinar la temperatura de polarizacin: 1) Apague su sistema y espere hasta que se enfre a temperatura ambiente. 2) Verifique que la Configuracin del control de Excitacin se ajuste a lo siguiente:

****************************CONFIGURACION DEL CONTROL PID******* Sp = 990 Rango = 20 B = 50 Kp = 0 Ki = 0 Kd = 0 Ti = 24 Mina = 75 Maxa = 120 Maxt = 600 Observe que Kp, Ki y Kd estn todas en 0 por lo que no proveen ninguna excitacin, dejando solamente la excitacin de polarizacin del 50% sobre el calentador.

Observe cunto tiempo le tom a la temperatura estabilizarse. En nuestra prueba, aproximadamente 450 segundos. En un sistema con una respuesta de primer orden, tal como nuestra incubadora, el sistema necesita 5 constantes de tiempo (5TCs) para estabilizarse (o alcanzar el 99% del valor de equilibrio) como respuesta a un cambio de tipo escaln en las condiciones. En este caso el escaln es un salto en la excitacin del 0% al 50%. De esta forma, 1 constante de tiempo (1TC) para nuestro sistema sera 450/5 o 90 segundos. El tiempo de respuesta del sistema es importante cuando se est ajustando un sistema, como ver ms adelante.