Autor Tema: Control PID para controlar la temperatura  (Leído 12871 veces)

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

Desconectado J.C

  • PIC10
  • *
  • Mensajes: 23
Control PID para controlar la temperatura
« en: 29 de Junio de 2007, 09:15:05 »
Hola a todos quisiera saber si alguien a trabajado con sensores de temperatura... a ver para que tengan una idea, necesito controlar la temperatura en 37.5*C, solo se puede ir por arriba 1*C y por abajo 1*C... el problema es que la temp es muy inercial y por lo que estuve viendo sobre controles lo mejor es implementar un PID o un P... ahi viene el lio como implemento el control PID con el software del PIC16F73, ya que poner una pastilla externa que haga eso aumentaria el costo... si alguien me pudiera ayudar con el tema se lo agradeceria mucho o por lo menos que me diga donde hay informacion o ejemplos sobre eso... saludos a todos J.C
Todo esta ahi... no hay mas que mirar.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Control PID para controlar la temperatura
« Respuesta #2 en: 30 de Junio de 2007, 11:55:30 »
Hola J.C, una preguntita!! es para una incubadora de bebes?, porque tuve un caso muy similar a lo que vos estás solicitando (eran incubadoras) y lo solucione sin el uso de PID, consiguiendo que la temperatura se mantuviera dentro de los parámetros que solicitas.

Aparte an pedido un monton de requisitos más, doble sensor de temperatura, alarmas de todos los tipos, bakup con baterías, control por PWM (largo) en cruce por cero, e incluso una protección por hardware de exceso de temperatura.

Un saludo.

Atte. CARLOS.

« Última modificación: 30 de Junio de 2007, 11:59:00 por Chaly29 »
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado J.C

  • PIC10
  • *
  • Mensajes: 23
Re: Control PID para controlar la temperatura
« Respuesta #3 en: 03 de Julio de 2007, 09:46:20 »
Efectivamente Chaly29 se trata de una incubadora pero no es para bebes, sino para pollitos... y me imagino que apesar de la diferenciael trabajoconlatemperatura sea muy parecido es por eso que quisierasi esta entus manos que meorientes sobre como dar solucion al preblema...
Todo esta ahi... no hay mas que mirar.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Control PID para controlar la temperatura
« Respuesta #4 en: 03 de Julio de 2007, 10:18:10 »
Hola J.C, ya me parecía que no era para bebes, la temperatura que comentas era un poco elevada  :mrgreen:

No hay problema con gusto te orientaré.

Tal como te comenté los programas que yo e realizado trabajan por medio de una rampa, son bastante sencillos de entender y relativamente fáciles de programar (mucho más que un PID), bueno pasemos a lo que nos interesa:

La rampa o curva de potencia aplicada a la resistencia eléctrica está dividida en 4 secciones bien definidas:



Entre 0°C y el punto A: En la primera sección la potencia se mantiene al máximo (100%) ya que la temperatura es muy baja (la incubadora recién se enciende), hasta que alcanza el punto A, el cual se determina mediante la práctica (más fácil que por cálculos) según la inercia que posea el sistema al incremento de temperatura del mismo. El punto sabe estar 2 o 3 grados antes de la temperatura deseada.

Entre A y temperatura deseada: Alcanzado el punto A la potencia aplicada a la resistencia se decrementa de manera lineal hasta conseguida la temperatura deseada, la potencia que el sistema entrega a la resistencia en el punto de la temperatura deseada (37.5°C) es levemente superior a la que necesitaría la resistencia para mantener una temperatura constante dentro de la incubadora.

Entre temperatura deseada y B: Superada la temperatura deseada a la resistencia se la mantiene con una potencia tal que solo le permite poseer una temperatura propia no mayor a 5°C a la temperatura deseada, de esta manera se consigue que la inercia ofrecida por la resistencia se vea considerablemente reducida, una ves que llegamos al punto B se le quita toda potencia a la resistencia (exceso de temperatura que rara ves se consigue), el punto B solo está 1°C por encima de la temperatura deseada

Sobre el punto B: Sobre este punto se corta toda entrega de potencia hacia la resistencia.

El formato de las curvas se consigue muy facilmente en la practica lográndose realizar sistemas muy estables (e logrado sistemas con errores de solo +/-0.6°C) no importando cual sea la temperatura ambiente.

Cualquier duda o consulta no tendré problemas en responderlas.

Espero te sea de ayuda.

Atte. CARLOS.

« Última modificación: 03 de Julio de 2007, 10:41:24 por Chaly29 »
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado J.C

  • PIC10
  • *
  • Mensajes: 23
Re: Control PID para controlar la temperatura
« Respuesta #5 en: 03 de Julio de 2007, 10:31:02 »
Bien pero hay un problema la temperatura es muy inercial como logro que se mantenga en su sitio o lo mas proximo posible a el... 
Todo esta ahi... no hay mas que mirar.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Control PID para controlar la temperatura
« Respuesta #6 en: 03 de Julio de 2007, 10:49:12 »
Hola J.C, con este sistema la temperatura varía indefectiblemente, pero se mantiene dentro de los parámetros deseados, ese también era mi gran miedo (en una incubadora de bebes solo se permite +/-0.5°C) y de esta manera siempre lo mantengo dentro de los limites aunque muy rara ves se escapa asta 0.6°C de la temperatura deseada.

Yo te recomendaría que lo prueves antes de hacer el PID, no pierdes nada ya que el circuito electrónico es el mismo para ambos casos, pero la programación te aseguro es mucho más sencilla de esta manera.

Fíjate que pasada la temperatura deseada yo le dejo una pequeña potencia (potencia residual) a la resistencia, de esta manera la inercia se reduce enormemente, ya que la mayor causante de esta inercia es la propia resistencia.

Un saludo.

Atte. CARLOS.
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado J.C

  • PIC10
  • *
  • Mensajes: 23
Re: Control PID para controlar la temperatura
« Respuesta #7 en: 04 de Julio de 2007, 08:52:42 »
Hola chaly29
Ayer no pude terminar de ver la informacion porque se me cayo el enlace, pero me dio un error cuando estaba accediendo a tu pagina en geosite... es por eso que te pido si no es mucha molestia que me publiques algo de codigo en el foro o si puedes enviarmelo al correo jcvf82@gmail.com me seria de gran ayuda saludos y muchas gracias J.C
Todo esta ahi... no hay mas que mirar.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Control PID para controlar la temperatura
« Respuesta #8 en: 04 de Julio de 2007, 11:29:05 »
Hola J.C, pues no creo que logres entenderlo mucho, ya que yo programo en asembler, por eso mismo trato de explicarte como es el principio de funcionamiento y que tú logres realizarlo en C.

Así mismo si deseas puedo subirte una parte del código, no todo ya que por cuestiones comerciales no tengo esa libertad.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado J.C

  • PIC10
  • *
  • Mensajes: 23
Re: Control PID para controlar la temperatura
« Respuesta #9 en: 04 de Julio de 2007, 16:29:20 »
Ante nada muchas gracias chaly29 por el interes y la ayuda... empezare a tirar codigo en C y a ver que me sale... de todas formas si por casualidad habeis hecho un algoritmo y me lo pudieras pasar me serviria igual... de todas formas muchas gracias por la ayuda...  ah y en cuanto termine te paso el codigo fuente para que lo pruebes a ver que te parece... Saludos J.C
Todo esta ahi... no hay mas que mirar.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Control PID para controlar la temperatura
« Respuesta #10 en: 20 de Octubre de 2007, 17:08:44 »
hola! estaba buscando informacion de un control pid para mantener una temperatura de unos 70ºC en un sistema y me encontre con esto... la idea de chaly29 me pare mucho mas sencilla que hace un control pid, ya uqe yo tengo la libertad de que mi temperatura puede variar hasta 5ºC sin problemas. chaly, entendi el funcionamiento de tu manera de llegar hasta la temperatura deseada, pero no comprendo como logro mantener esa temperatura... es decir, como encuentro el duty del PWM para mantener esa temperatura?
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado HH_HOZ

  • PIC10
  • *
  • Mensajes: 6
Re: Control PID para controlar la temperatura
« Respuesta #11 en: 21 de Octubre de 2007, 00:34:58 »
J.C. yo he implementado varios controlodores PID para motores de temperatura. El algoritmo en si no es dificil lo que es importante y debes considerar en sintonizar tu controlador para que sea lo mas efectivo posible es decir encontrar los valores de Pi Pd P. tengo por ahi unos documentos de como hacer la sintonizacion de los controladores pID pero no los encuentro..... espero poder encontrarlos y te los paso. pero basicamente consiste en encontrar la respuesta atu sistema es decir tiempos de calentamiento a diferentes niveles de potencia...... tambien para encontrar la frecuencia de muestreo..... por lo general 1/10 e tu tiempo max de respuesta mecanica.

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Control PID para controlar la temperatura
« Respuesta #12 en: 21 de Octubre de 2007, 02:06:06 »
Hola HH_HOZ!
te agradeceria un monton que me echaras un cable con esto del PID... si te digo la verdad casi no recuerdo como se deriva, y definitivamente no recuerdo como se integra  :oops: por lo que implementarlo en C y entender lo que estoy haciendo me resulta complicado... entiendo que el control pid consta de 3 componentes, entiendo que la suma de esos componentes me deberia dar un valor que puedo traducir a un duty de PWM, incluso entiendo que estos 3 componentes dependen cada uno de una constante que es la que habria que determinar en la practica... pero no se como programar el pic para que a travez de un valor del ADC haga "calculos" y me devuelva un duty  :8}
no existe alguna libreria que determinando las constantes y dandole el valor del adc te devuelva el valor del duty? encontre ESTO ( CE019 - Proportional Integral Derivative (PID) controllers & closed-loop control) en microchip... pero el codigo C que incuye es tan enrevesado que me marea, tiene un monton de constantes, que a su vez hace referencia a otras constantes y estas son el producto de la resta de la raiz cubica de todas a la vez....  :D :D :D
ademas esta TAN comentado el codigo, que en vez de esclarecer confunde...

por cierto! puedo implementar un control pid en un pic de la familia 12F? estos son capaces de derivar e integrar?
« Última modificación: 21 de Octubre de 2007, 02:14:21 por Marttyn »
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: Control PID para controlar la temperatura
« Respuesta #13 en: 21 de Octubre de 2007, 17:41:47 »
hola he estado unos dias desconectado ya habeis hablado un poco de los pid aqui os pego una rutina de cálculo de un PID que la verdad es que funciona bastante bien, aunque mi experiencia no  a sido por duty cycle de continua sino de alterna +- como mi sistema tenia que alimentado en alterna, disparaba un triac antes o despues no me enrollo mucho mas esta es la formulilla del pid.
Código: [Seleccionar]
     Error_actual=(ref-temp2);
     uT=uT+(Cte_Propor*Error_Actual)+(Cte_Int*(Error_actual-(Cte_Der*(Error_actual-Ultimo_Error))));
     Ultimo_Error=Error_actual;

todas las variables las usé float pero tb se pueden usar double... todo depende de las precisiones o necesidades de tu sistema..., ante todo no uses int por que puedes tener valores negativos en Error_actual uT... y demas variables.

si tienes alguna duda pregunta hasta luegooo
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Control PID para controlar la temperatura
« Respuesta #14 en: 21 de Octubre de 2007, 21:25:38 »
si, qiqe... una duda...
que seria uT? por que sumas todo el calculo a uT ("uT = uT + ....")?
con uT que hago? es decir, entre que valores varia? o es un porcentaje de error? como lo aplico vamos...  :mrgreen:
gracias! salu2

EDITO:
por cierto... si un control Proporcional Integral Derivativo es la suma de estos controles...
Código: C
  1. Cte_Propor*Error_Actual
seria el control proporcional...

pero en
Código: C
  1. Cte_Int*(Error_actual-(Cte_Der*(Error_actual-Ultimo_Error)))
el control derivarivo e integral estan calculados al mismo tiempo? o como es el tema?
segun jfh900:

En un sistema discreto la integral se calcula como la suma de los productos de la función por el incremento de la variable independiente. Para la derivada en un sistema discreto es la diferencia en la función dividido por el incremento de la variable independiente.

en tu formula no logro discernir que es cada cosa  :z)
« Última modificación: 21 de Octubre de 2007, 21:45:37 por Marttyn »
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.