I am trying to write a micro-controller program for controlling temperature in a system with the following characteristics:
- output can only be On or Off, with fixed cycle frequencies (~2-10 per hour)
- The plant is slow to respond (measurable changes in temperature take a long time > 10 minutes).
- The plant loses temperature based on environmental conditions.
- the set-point can vary in large steps based on user demand.
I am writing a controller that aims to minimize error, as well as adhering to the cycle-rate provided as an input.
This could easily be done with a PI controller and it's output converted to the duty-cycle. The problem is that the program needs to auto-tune and choose correct Kp, Ki constants and adapt to varying environmental conditions and changes in heating capacity. Therefore, tuning the PI controller in advance is not too useful.
Using an actual PI or PID is not a requirement. I'm open to use of Fuzzy-Logic if it helps, also have a machine-learning algorithm on the chip that models the system response and heat-loss (linear approx.) which suggests information about measured step response. Just don't know what to do with that information.
A couple of posts suggest I could use the modelling data to tune the PI on-line, as well the lab-view manual that suggests I could use Fuzzy-Logic to tune the PI.
My question is, what is the best approach for this kind of scenario (e.g. PID, fuzzy-pid, convolution, etc) and how would I go about actually implementing it in software/practice.
I'm not a EE so any input would be greatly appreciated.