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
-
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?
-
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. :)
-
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)
-
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... :\
-
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.