Autor Tema: Simulación de un Horno controlado por PID  (Leído 7735 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Simulación de un Horno controlado por PID
« en: 28 de Febrero de 2013, 12:50:43 »
A partir de estos hilos de PID para horno:
   http://www.todopic.com.ar/foros/index.php?topic=40225.0
   http://www.todopic.com.ar/foros/index.php?topic=26780.0

me han surgido la duda de cómo sintonizar de la mejor manera un controlador PID para un horno, que es un sistema no lineal.
Para solucionarlo he construido una hoja de cálculo que simula el funcionamiento de un horno muy simple y del control PID que lo regula.

El modelo de horno tiene dos zonas. Una zona interior donde se encuentra la resistencia eléctrica y otra exterior que emite calor al ambiente. Cada zona tiene una temperatura, una capacidad calorífica y una resistencia térmica con la zona exterior.
En cada iteración se calcula el calor que entra y que sale de cada zona para poder calcular después la temperatura de cada una de ellas.

El controlador PID tiene 2 añadidos:
Un control anti-windup que sólo permite actuar al control integral cuando el error sea más pequeño que una cantidad dada.
Un control feed-forward que introduce al horno una señal proporcional a la temperatura deseada para que el horno alcance esa temperatura en lazo abierto (aunque no exista control PID)

Haciendo experimentos con la hoja he llegado a la conclusión de que Ziegler nichols da valores muy altos para la ganancia integral que provocan que la temperatura oscile.
Corrigiendo los valores a mano la subida de temperatura es rápida y con un pequeño sobrepulso.

Adjunto la hoja Excel.

Saludos.
« Última modificación: 28 de Febrero de 2013, 15:17:37 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Simulación de un Horno controlado por PID
« Respuesta #1 en: 28 de Febrero de 2013, 12:56:48 »
Las casillas amarillas son los parámetros del controlador y de la temperatura ambiente e inicial del horno.
Las casillas verdes corresponden a los parámetros de simulación del horno.

Cambiando la temperatura de referencia (C14) se puede ver cómo responde el horno a diferentes consignas.
Los parámetros Kp, Ki y Kd también se pueden modificar con facilidad para comprobar cómo se modifica la respuesta del sistema.

Saludos.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Simulación de un Horno controlado por PID
« Respuesta #2 en: 28 de Febrero de 2013, 13:01:47 »
Adjunto imagen de la temperatura del horno subiendo desde 25º hasta 150º (curva azul)
La curva verde corresponde a la señal de error escalada (multiplicada por 10 y más 100º)
La curva roja representa la potencia de entrada al horno (funcionamiento de la resistencia) La resistencia funciona con control PWM.



Saludos.
« Última modificación: 28 de Febrero de 2013, 13:13:03 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Simulación de un Horno controlado por PID
« Respuesta #3 en: 28 de Febrero de 2013, 13:08:02 »
Adjunto el esquema de control del horno.



Saludos.



Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Simulación de un Horno controlado por PID
« Respuesta #4 en: 28 de Febrero de 2013, 15:44:41 »
Las ecuaciones de control son las siguientes:

Código: [Seleccionar]
  // *************************************
   //      Constantes del sistema
   //

   T = 0.2         // Periodo de muestreo y ejecución de la rutina PID en segundos

   Kp = 0.60       // Constantes de control PID y anti windup
   Ki  = 0.30
   Kd = 0.55
   Limit_integral = 8

   Kff = 0.02      // Constantes de control Feed-Forward
   Tff = 25


   // *************************************
   //      Cálculo del error
   //

   error = Temperatura_de_referencia - Temperatura_Horno


   // *************************************
   //      Cálculo de Control PID
   //

   Proporcional = error · Kp

   Integral = Integral + error · Ti · T

   Derivativo = (error - error_0) · Td / T
  
   if (abs(error) > Limit_integral)         // Anti Windup
      Integral = 0;

   PID = Proporcional + Integral + Derivativo

   error_0 = error


   // *************************************
   //      Cálculo de Control FeedForward
   //

   FeedForward = (Temperatura_de_referencia -  Tff) · Kff
  

   // *************************************
   //      Calculo de Control final
   //

   Control = PID + FeedForward

Saludos.
« Última modificación: 28 de Febrero de 2013, 18:40:02 por Picuino »

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
Re: Simulación de un Horno controlado por PID
« Respuesta #5 en: 28 de Febrero de 2013, 15:54:06 »
Muy interesante. Yo ando dandole vueltas a ese tema, pues quiero convertir un mini horno de cocina en una camara de fermentacion y mantenimiento. He estado viendo un control PID que viene en los ejemplos del libro "Compilador CCS y Simulador Proteus para microcontroladores PIC". Pero aunque no lo he montado en la practica, al simularlo en Proteus, me da la impresion de que el control de potencia es bastante deficiente y creo que en la realidad no funcionara.
Por otro lado en mi "Camara de Fermentacion", utilizare una celula Peltier, para conseguir la temperatura deseada, sea cual sea la de ambiente. Un ejemplo de uso seria la fabricacion casera de yogur, que requiere una temperatura constante de unos 45 ºC durante unas 8 horas y despues si no son extraidos de la camara, esta automaticamente los enfriaria hasta unos 10 ºC para conservarlos hasta que sean trasladados al frigo.
Veo que tu proyecto tiene una curva bastante uniforme, que se alcanza ademas en poco tiempo.
Por otro lado mi problema es que llevo tantas cosas a la vez, que al final no acabo ninguna. Tendre que replantearme mi forma de administrar el tiempo.

Saludos.

P.D.: Justo escribimos al mismo tiempo y acabo de ver el desarrollo y las ecuaciones. Voy a compararlas con las del ejemplo que dije antes y ver que conclusiones saco.

« Última modificación: 28 de Febrero de 2013, 15:58:18 por AcoranTf »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17755
    • MicroPIC
Re: Simulación de un Horno controlado por PID
« Respuesta #6 en: 28 de Febrero de 2013, 16:09:00 »
Magnífico hilo, al nivel que nos tienes acostumbrados, Picuino. Muchas gracias
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Simulación de un Horno controlado por PID
« Respuesta #7 en: 28 de Febrero de 2013, 16:43:01 »
Gracias Nocturno.

AcoranTf, en un horno como el que me comentas no se necesita mucha velocidad de subida. Puedes hacer un control con valores pequeños de Kp y Ki. El resultado será lento, pero seguro.

En este problema yo quería conseguir la máxima velocidad. La conclusión a la que he llegado es que con Ziegler-Nichols el sistema se hace muy inestable y es necesario ajustar "a mano" el PID.
La ventaja de la hoja de cálculo es que se pueden cambiar los parámetros del PID y ver de forma inmediata el resultado. Así es más sencillo hacer la sintonización manual.

Si te lanzas a hacer el proyecto, te puedo ayudar a afinar el control PID para que funcione OK.

Saludos.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Simulación de un Horno controlado por PID
« Respuesta #8 en: 28 de Febrero de 2013, 16:53:17 »
Esto es lo que pasa cuando se utilizan los parámetros calculados por Ziegler-Nichols con la respuesta escalón:
Kp=      0,31
Ki=      1,6
Kd=      0,4


Adjunto imagen.

La salida oscila porque el control integral es demasiado grande y el derivativo demasiado pequeño.



Edito:

Ziegler Nichols da como resultado el tiempo integral Ti y el tiempo derivativo Td que no son iguales a las constantes integral Ki y derivativa Kd. La relación entre ellas es:

   Ki = Kp / Ti

   Kd = Kp · Td

Teniendo en cuenta esto, las constantes se pueden calcular a partir de Ziegler-Nichols:

    Kp =   0,31
    Ti =   1,6
    Td =   0,4

    Kp =   0,31
    Ki =   0.31/1,6  = 0.19
    Td =   0.31· 0,4  = 0.12

Y el resultado oscila mucho menos:





Saludos.
« Última modificación: 03 de Marzo de 2013, 08:58:30 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Simulación de un Horno controlado por PID
« Respuesta #9 en: 28 de Febrero de 2013, 16:59:20 »
La ventaja de utilizar el método de Ziegler-Nichols es que nos da valores iniciales para poder afinar después "a mano" nuestro sistema.

Con sistemas lineales hay muchas herramientas para conseguir respuestas óptimas, pero el desarrollo matemático suele ser complicado.
En sistemas no lineales (como el horno) las matemáticas se complican muchísimo más.
En la práctica, saber sintonizar a mano un controlador PID es muy útil. A menudo es suficiente y no es necesario hacer más cálculos.

Las reglas principales para afinar un PID de forma manual son:

1º.- Aumentar el control Proporcional poco a poco. El error disminuye y la velocidad de respuesta aumenta.
     Si el resultado es aceptable aquí se termina.

2º.- Si el sistema comienza a ser inestable, añadir control Derivativo para estabilizarlo y que no oscile. Así se puede seguir aumentando el control proporcional o integral.
     Si el resultado es aceptable aquí se termina.

3º.- Si la velocidad es correcta, pero todavía hay error permanente (la temperatura finalmente obtenida no es la deseada), se puede aumentar el control Integral para que el error sea cero.
     Si el sistema se hace algo inestable, se pasa al punto 2º y aumentando el control derivativo se vuelve a hacer estable.


Saludos.
« Última modificación: 28 de Febrero de 2013, 18:41:56 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Simulación de un Horno controlado por PID
« Respuesta #10 en: 28 de Febrero de 2013, 17:25:16 »
Para calcular las constantes del control FeedForward hay que hacer lo siguiente:

1º Se calcula la temperatura de referencia del horno para la que no hace falta accionar el control (control = 0)
    En este caso esa temperatura será la misma que la temperatura ambiente,
    porque para alcanzar la temperatura ambiente no hace falta accionar la resistencia de calentamiento.
    Esta temperatura será el parámetro Tff

    Tff = 25 ºC

2º Se aplica una entrada de control al horno (por ejemplo 4 voltios si el rango es de 0 a 5 voltios) y se mide la temperatura final que alcanza.
    En el ejemplo de la hoja de cálculo:
    Control = 4    
    Temperatura final = 225 ºC

    Ahora se calcula la constante feed-forward con la ecuación:

    Kff = Control / (Temperatura final - Tff)

    Kff  = 4 / (225 - 25) = 0.020


Saludos.

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
Re: Simulación de un Horno controlado por PID
« Respuesta #11 en: 02 de Marzo de 2013, 14:15:30 »
Gracias Nocturno.

AcoranTf, en un horno como el que me comentas no se necesita mucha velocidad de subida. Puedes hacer un control con valores pequeños de Kp y Ki. El resultado será lento, pero seguro.

Ya lo voy entendiendo, en realidad el horno no requiere una velocidad grande, pero si estabilidad.

Citar

En este problema yo quería conseguir la máxima velocidad. La conclusión a la que he llegado es que con Ziegler-Nichols el sistema se hace muy inestable y es necesario ajustar "a mano" el PID.
La ventaja de la hoja de cálculo es que se pueden cambiar los parámetros del PID y ver de forma inmediata el resultado. Así es más sencillo hacer la sintonización manual.

Si te lanzas a hacer el proyecto, te puedo ayudar a afinar el control PID para que funcione OK.

Saludos.

Muchas gracias por el ofrecimiento, lo tendre en cuenta cuando me ponga a ello. Por otro lado acabo de ver el hilo en que comentas lo que estas poniendo en tu pagina al respecto y ya la guarde en marcadores, para seguir tus explicaciones.

Saludos.