Autor Tema: SISTEMA PID DE TEMPERATURA  (Leído 9317 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado pipipi

  • PIC12
  • **
  • Mensajes: 91
SISTEMA PID DE TEMPERATURA
« en: 16 de Abril de 2009, 20:01:24 »
Hola a todos:

Soy nuevo en este foro y estoy realizando un proyecto para una materia de la escuela, mm según yo estoy algo adelantado, ya he encontrado mi uk que es la ecuación que según yo  debo programar en mi pic. La pregunta es que no encuentro como interpretar uk no se si es tiempo en el que debe estar encendido mi sistema o que?.

Mi sistema consta de un foco ubicado en una caja, la temperatura es censada por un sensor de temperatura. En este momento el sistema es un control on-off, es decir, el foco empieza a calentar cuando hace falta temperatura y se desactiva cuando la temperatura es mayor. MM como verán el sistema es fluctuante, pero eso no me sirve así que necesito implementar un sistema pid para que sea totalmente estable.
A continuación les muestro lo que llevo:

1.- Como primer paso necesito determinar la función de transferencia de mi sistema para eso he tomado las siguientes mediciones:

Tiempo en segundos: 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210
Temperatura:  15,16,18,20,22,24,26,28,29,31,33,34,36,37,38,40,41,42,43,44,44,45

Con ayuda del siguiente código encontramos f(t) de mi sistema:
clc;
tiempo=[0  10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210];
temperatura=[15 16 18 20 22 24 26 28 29 31 33 34 36 37 38 40 41 42 43 44 44 45];
plot(tiempo,temperatura)

Para hallar la ecuacion, nos vamos a matlab (donde esta el workspace), alli veremos un boton que dice START (con el logo de matlab), pulsamos ese boton, luego click en toolboxes, luego en curve fitting y por ultimo en curve fitting tool.

Se nos abrira una ventana nueva y alli daremos click en el boton Data... en la ventana que se abrio en X data ponemos la variable tiempo y en Y data la variable temperatura  si no les aparece nada es por que tienen que haber corrido su codigo de graficacion de sus datos reales para que las variables del tiempo y temperatura aparezcan en el workspace.
Luego daremos click en Create date set. y click en close, despues click en el boton fitting, luego en new fit, vamos a modificar unicamente donde dice Tye of fitt. ahi podran ver todo el tipo de ecuaciones con las cuales se puede representar nuestra curva caracteristica de la planta,  seleccionamos exponential y escogemos el tipo de ecuacion ( a*exp(bx) + c*exp(dx) ) y hacemos click en apply... luego de eso nos aparecera nuestra ecuacion (la que nos describe nuestros datos) ... si tienen dudas de que valores para las constantes escoger, escojan los promedios, osea los valores que estan fuera de los paréntesis.
Bueno la ecuación que encontré fue:

f(x)=a*exp(b*x)+c*exp(d*x)
a=112.2
b=-0.0007449
c=-98.25
d=-0.003188
 
despues:
 
y(t)=a*exp(-b*t)-c*exp(-d*t)
 
con los valores:
 
a=112.2
b=0.0007449
c=98.25
d=0.003188
 
Aplicando Laplace:
 
*de tablas:
 
e^-at ---------------------> 1/s+a
 
Sustituyendo:
 
y(s)=a(1/s+b)-c(1/s+d)
 y(s)=a/s+b-c/s+d
y(s)=as+ad-cs+cb/s^2+ds+bs+bd
 
Por lo tanto:
 
y(s)=13.95s+.430880025/s^2+3.9329x10^-3s+2.3747412x10^-6
 
Utilizando matlab con el siguiente codigo obtenemos:
 
Gs=tf([13.95  0.430880025],[1  0.0039329  0.0000023747412])
Gz=C2D[Gs,0.1,'zoh']
           
                  13.95s + 0.4309
G(s)=   -------------------------------------
                s^2  + 0.003933s + 2.375x10^-6
 
 
                     1.397z-1.393     
G(z)=   -------------------------------------
                 z^2 - 2z + 0.9996

Hasta este punto he obtenido mi funcion de transferencia.
2.- Como segundo paso me decidi por usar el método de ragazzini para encontrar uk:
          K                                                                             1           F(z)
F(z) = ---------      ;     P(z) =  (z - z1) (z - z2)        ;   D(z) = --------    -------
           P(z)                                                                         G(z)      1 - F(z)

Condicion de estabilidad -> F(1) = 1 ; z1 y z2 son polos deseados  ; essp=0

Condiciones iniciales
Zita = 0.7   ;   tiempo de establecimiento al 5% (Test5%) = 2seg   ;   essp = 0   ;   T = 0.1

1) hallamos polos deseados (z1 y z2)

Wn = 3 / (Zita * Test5%)
|z| = euler^(-Zita * Wn * T)
<z = (T * Wn) * Raiz cuadrada(1 - (Zita^2))  --> resultado en radianes, se debe pasar a grados
Resultado en radianes * 180 / PI  ---> nos entrega el resultado en grados

con una calculadora escribimos REC( |z| , <z ) ----> <z debe ser en grados
lo anterior nos entrega los polos deseados z1 y z2

z1,2 = Alfa +/- j Beta
z1,2 = 0.85084 +/- j 0.13105 

2) hallamos K

P(z) = (z - z1) (z - z2) ----> simplificando -----> P(z) = z^2 - (2 * Alfa * z)  + Alfa^2 + Beta^2
P(z) = z^2 - 1.70168 z + 0.74110 

F(z) = K / P(z)
F(1) = 1   ----------> Se reemplaza P(z) y luego todas las z se cambian por un 1

                        K
F(z) = -----------------------------------
          z^2 - 1.70168 z + 0.74110

K = (1)^2 - 1.70168 (1) + .74110   -----------> K = .03942 

           B(z)                              A(z)          K
G(z) = ---------     ;     D(z) = --------   ---------------     
           A(z)                              B(z)     [ P(z) - K ]
 
mi G(z):
 
 
                 1.397(z-.997)
     g(z)= -------------------
                 (z-.99979998)^2


                                   .02821z^2 -.05643z + .02820
Reemplazando: D(z) = -------------------------------------------
                                  z^3 - 2.4153z^2 + 1.9161z - 0.50076

En este caso el z de mayor potencia es z^3
por lo tanto hay que multiplicar arriba y abajo por z^ -3
y reemplazar D(z) por u(z) / e(z)

u(z)      .02821z^-1 - .05643^- 2 + .02820z^-3
------ =  -----------------------------------------------------
e(z)      1 - 2.4153z^-1 + 1.9161z^-2 - 0.50076z^-3

Resumiendo, haber..... hay que despejar u(z)
cuando pase eso van a quedar partes como u(z) 0.79 z^ -3 
por alla alguna vez nos enseñaron una propiedad que nos salva la patria
entonces seria algo como 0.79(z - 3) y asi con todo ya sea u(z) o e(z)

cambiamos las z por k (minusculas)

uk = ( .02821 ek-1 ) - ( .05643 ek-2 ) + ( .02820 ek-3 ) + ( 2.4153 uk-1 ) - ( 1.9161 uk-2 ) + ( .50076 uk-3)

uk = es la salida en el tiempo presente
uk-1 = es la salida en el tiempo anterior
ek-1 = error en el tiempo anterior
ek-2 = error en el tiempo anterior del anterior

Pues como se abran dado cuenta según yo tengo todo, el problema ahora es como manejar este uk para la programación en el micro

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #1 en: 16 de Abril de 2009, 21:15:39 »
uk es tu salida, como el pic no puede sacar por sus pines un voltaje analógico lo que debes hacer es considerar esa uk como el ciclo de trabajo de un  pwm o el tiempo en que disparas un triac para encender la lámpara, todo depende con que manejes la lámpara. Supongamos que es una lámpara que está siendo encendida con un transistor. por lo tanto si manejas ese transistor con una salida pwm del pic, puedes considerar tu uk como el ciclo de trabajo de ese pwm, entonces lo que tienes que hacer es calcular y almacenar los valores anteriores de uk, es decir uk-1, uk-2 y uk-3 y de ek=salida deseada - salida real, es decir ek-1 y ek-2 y ek-3. Si consideras condiciones iniciales nulas ek-1=ek-2=ek-3=0 y uk-1=uk-2=uk-3=0 con estos valores obtienes el valor actual de uk. Estos valores los guardas en variables para realizar las cuentas de los instantes siguientes.  Lo que resta ahora es escalar el valor de uk a tu ciclo de trabajo deseado.
Debes tener en cuenta que tu tiempo de muestreo es de T=0.1 seg. La actualización del pwm la debes hacer cada 0.1seg. Por lo tanto las cuenta que realices no deben tardar más que ese tiempo



Desconectado mariano_pic

  • PIC18
  • ****
  • Mensajes: 498
    • Software Electronica Microncontroladores
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #2 en: 17 de Abril de 2009, 00:58:54 »

     interesante este tema sobre el control PID, espero llegen a buen termino.
« Última modificación: 18 de Abril de 2009, 00:59:12 por mariano_pic »
Necesitas ayuda para tu proyecto electronico?
buscame, tal ves pueda colaborarte.
Blog: http://electronicosembebidos.blogspot.com.co/
mail: electronicosembebidos@gmail.com
Mi grupo de facebook: https://www.facebook.com/groups/ProgramandoPics/

Desconectado pipipi

  • PIC12
  • **
  • Mensajes: 91
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #3 en: 17 de Abril de 2009, 09:53:48 »
Hola Pablo Manieri:

De ante mano quiero agradecer el tiempo y la disposicion que se presta en este foro. :lol:

MMM sip Pablo ya lo abia pensado manejar mi uk como pwm.   :-/

El foco es activado por medio del pic 18f452, como te mencione anteriormente ahorita mi sistema es un control on_off, es decir, se activa cuando hace falta temp. y se desactiva cuando pasa de la temp. deceada. El pic solo manda un uno para activar y un cero para desactivar, este uno y cero es mandado a un acoplador, el cual se puede decir que aisla mi cd(5v) de ca(127V) este acoplador manda una señal la cual activa un triac logrando asi que se encienda o apague el foco  segun sea el caso.

Bueno ahora mi pregunta es como manejaria mi uk con respecto al pwm, como determino el ciclo de trabajo de mi pwm segun el valor de uk.

Gracias. 8)

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #4 en: 17 de Abril de 2009, 09:59:24 »
Hola pipipi  :D
Y Bienvenido a nuestros Foros, te recomiendo que lea las Normas de nuestros Foro ya que tu mensaje no va aqui en este apartado. espero que algun Moderador lo cambien
Saludo

Desconectado pipipi

  • PIC12
  • **
  • Mensajes: 91
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #5 en: 17 de Abril de 2009, 10:13:30 »
Ups perdon.

Gracias por avisarme  :mrgreen: y perdon por ponerlo aqui pero comprenderan soy nuevo en este foro y creo que estoy pagando la novatada mmm alguien podria moverlo al lugar en el que debe ir porfa, se los agradeceria mucho. Y perdon. :(

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #6 en: 17 de Abril de 2009, 20:03:05 »
Primero que nada bienvenido al foro!
Hoy mire este tema y me intereso mucho, así que lo mire detalladamente. Primero que nada la idea seria seleccionar un temperatura y que el micro se encargue de hacerlo lo mas estable posible, no es así? Entonces con el foco apagado tendríamos temperatura ambiente y con el foco prendido a máxima intensidad (máxima tensión) tendríamos la máxima temperatura posible del sistema.
En este caso nuestro sistema seria algo parecido a:
Podemos separar al sistema H(s) (Sistema caja + foco),
Si no entendí mal, de esta manera has tomado medidas y determinado tu función de transferencia. Ósea, aplicaste una tensión fija al foco y observaste la evolución de la temperatura del sistema, pero este no es lineal, así que podemos hacer lo siguiente
y suponer que el nuevo sistema H(s) es lineal, así podrás determinar su función de transferencia.
 
Ahora:
1º La variable temperatura tiene una dinámica lenta, por lo que no es necesario un periodo de muestreo de milisegundos, es más creo yo que de un par de segundos funcionaria bien.
2º Con lo que expuse gráficamente creo que te das cuenta como manejar u(k), en este caso u(k) sería la tensión media a aplicar al foco, por lo que a partir de ella puedes determinar el ciclo de trabajo de la señal PWM.
Bueno, espero que te ayude. Saludos!!!


No contesto mensajes privados, las consultas en el foro

Desconectado pipipi

  • PIC12
  • **
  • Mensajes: 91
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #7 en: 18 de Abril de 2009, 10:39:51 »
Hola Suky:

Gracias por prestarme algo de tu tiempo y contestar.

En este momento ya estoy empezando a  programar el pic con pwm para que este aga las veces del control para activar el foco, ya habia pensado realizarle algunas modificaciones a mi sistema, ya que tambien fui con un profe ayer y me dijo que la temperatura tenia una dinamica lenta y que no era necesario manejar un tiempo muy corto.

Pues bueno en este momento tengo que dejar un rato el proyecto, ya que me encontre con el fin de semana y tengo que trabajar, pero el lunes vuelvo a retomarlo.

Deante mano agradesco los comentarios y opiniones que tenga sobre mi proyecto durante este tiempo gracias.


Desconectado x-logan

  • PIC10
  • *
  • Mensajes: 14
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #8 en: 18 de Abril de 2009, 13:34:20 »
hola que tal

Esta muy interesante esto, y si te comento que uk puede manejarse con pwm y si funciona, yo ya hice un PID en pic16f84 en ensamblador con salida PWM para control de motores, pero creo que se puede aplicar sin ningún problema a la planta con el triac que mencionas. Tambien no se en que lenguaje lo vayas a programar, si en c o en ensamblador, yo te recomendaría c en ensamblador esta un poco mas complicado pero igual se puede. Cualquier duda comenta.

salu2

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #9 en: 18 de Abril de 2009, 18:33:37 »
x-logan el link está roto no se puede bajar el archivo del controlador PID

Desconectado pipipi

  • PIC12
  • **
  • Mensajes: 91
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #10 en: 18 de Abril de 2009, 19:36:14 »
Si yo tambian tuve el mismo problema al intentar bajar el archivo :(

Desconectado x-logan

  • PIC10
  • *
  • Mensajes: 14
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #11 en: 18 de Abril de 2009, 20:37:33 »
Hola, lo siento no se que paso, pero si no estaban los archivos en el servidor ya los coloque para que los puedan descargar, una disculpa

Salu2
« Última modificación: 18 de Abril de 2009, 20:41:13 por x-logan »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #12 en: 29 de Enero de 2010, 03:46:04 »
Una duda respecto a este tema.

Del cálculo matemático se llega a un valor analógico que, lógicamente, se gestiona a través del duty de una señal PWM.

Pero, ¿y si la resistencia calentadora está gestionada por un relé?. En este caso no podemos aplicar un PWM debido a la alta frecuencia de conmutación. ¿Cómo se hace en este caso?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #13 en: 29 de Enero de 2010, 08:36:37 »
Hay que cambiar el sistema del rele, porque no se puede controlar de forma correcta con ese dispositivo como tu bien dices.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: SISTEMA PID DE TEMPERATURA
« Respuesta #14 en: 29 de Enero de 2010, 12:08:22 »
el relé solo podria gestionar control de tipo on-off,  en este caso al elemento final de control(resistencia) se le puede aplicar control de fase,no?
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA