LusoRobótica - Robótica em Português

Electrónica => Electrónica Geral => Tópico iniciado por: zepedro em 23 de Abril de 2013, 23:49

Título: Controlador PI para termostato
Enviado por: zepedro em 23 de Abril de 2013, 23:49
Estou a construir um termostato com um sensor de temperatura e uma lâmpada que é "dimmada" através de triacs. Tudo isto é controlado por um ATMega168.

Apesar de já ter estudado o conceito dum controlador PI (ou PID), estou com uma dificuldade em implementa-lo no que toca à escolha dos ganhos kP e kI...

O nível de dimming na lampada vai de 0 a 95, no entanto não faço a mínima ideia que ganho hei-de colocar na parte do P para começar a testar o sistema. Ainda por cima a resposta do sistema é tão lenta que é difícil eu perceber se vai haver oscilação ou overshoot.

Um setting time de 1 ou 2 minutos é suficiente porque o sistema não vai controlar nada crítico.

Podem-me dar algum concelho de por onde devo começar?
Título: Re: Controlador PI para termostato
Enviado por: tucandroid em 24 de Abril de 2013, 00:18
viva novamente,

o que falas da-me a entender que vais usar uma "incubadora" certo?
(acho que nao é este o nome, mas pronto)

usando a lampada para aquecer o interior é isso?

em relaçao ao resto nao te posso ajudar muito, mas caso seja isto, embora tambem goste de ver as coisas feitas por mim, penso que nesse caso, ha maneira mais simples de fazer isso.

afirmo novamente, PENSO, nao tenho a certeza. :)

no que te puder ajudar visto eu ser de gaia, podes apitar. :)

Título: Re: Controlador PI para termostato
Enviado por: Pedrock em 28 de Abril de 2013, 15:08
Também fiz uma coisa desse género.
Dá uma vista de olhos na biblioteca PID autotune para Arduino:
http://brettbeauregard.com/blog/2012/01/arduino-pid-autotune-library/ (http://brettbeauregard.com/blog/2012/01/arduino-pid-autotune-library/)
Os valores obtidos podem não ser óptimos mas já dá uma ideia.

Para fazer isso manualmente, podes ler umas coisas na Wikipedia:
http://en.wikipedia.org/wiki/PID_controller#Loop_tuning (http://en.wikipedia.org/wiki/PID_controller#Loop_tuning)
Título: Re: Controlador PI para termostato
Enviado por: zepedro em 29 de Abril de 2013, 16:08
Eu já estive a ler e continuo com dificuldades. Eu estou a actuar numa lampada que recebe um valor de dimming de 0 a 100. As temperaturas são lidas por um sensor e o erro é calculado na escala dos 0.1 graus (ou seja 0.1 de diferença de temperatura é igual a um erro de 1).

Quando meto um kp entre 1 e 4 a lampada nunca atinge as temperatura que quero porque nunca tem potencia para isso. Mas se meto maior está sempre a ir ao limite e aquecer demais.

Ao adicionar a componente ki devia resolver isto, mas não sei quanto dar ao valor e de quanto em quanto tempo é que devo somar mais erro, porque se tiver um erro muito grande ele vai fazer com que a componente I seja gigante e fica tudo desregulado... :\
Título: Re: Controlador PI para termostato
Enviado por: Pedrock em 29 de Abril de 2013, 16:24
Com um valor de P correcto, nunca atinges a temperatura ideal. Tens que adicionar I. Vai aumentando deste 0. Baixo demais e demora muito a atingir a temperatura correcta. Alto demais e há oscilação.
Estás a usar arduino? Vê esta front-end para Processing:
http://brettbeauregard.com/blog/2009/05/graphical-front-end-for-the-arduino-pid-library/ (http://brettbeauregard.com/blog/2009/05/graphical-front-end-for-the-arduino-pid-library/)
Podes alterar os valores do PID, que são enviados para o Arduino, e podes ver o gráfico da temperatura.
Vê este projecto para um sous vide, têm alguma informação simples de como fazer o tuning:
http://www.flashingleds.net/sousvader/sousvader.html (http://www.flashingleds.net/sousvader/sousvader.html)

Ao adicionar a componente ki devia resolver isto, mas não sei quanto dar ao valor e de quanto em quanto tempo é que devo somar mais erro, porque se tiver um erro muito grande ele vai fazer com que a componente I seja gigante e fica tudo desregulado... :\
Penso que o melhor é só fazer os cálculos PID quando lês o sensor de temperatura, por exemplo, de 0.1s em 0.1s. O I depende deste intervalo de tempo.