I have a rather niche application of PID control, and I am looking for ideas on how to solve it.
Design
- Temperature sensor is externally mounted on a liquid vessel's body -->
T_surface
- Goal is to control the liquid temperature to a variable setpoint around 35°C -->
T_liquid
- There are stick-on heaters mounted to the liquid vessel's body --> ability to heat the liquid -->
heater_power
- The liquid is cooled by just letting the vessel cool down
PID Set Up
I have a PID control algorithm with:
- Feedback:
T_surface
- Output:
heater_power
- Setpoint:
T_liquid
The vessel wall is thick enough that T_surface != T_liquid
.
Temperature Offset
The difference in temperature is: dT = T_liquid - T_surface
Note: dT
is a function of T_liquid
. For example, if:
T_liquid = ~30°C
-->dT = ~1
T_liquid = ~40°C
-->dT = ~2
My Implementation
- I roughly mapped
dT
to be linearly related withT_liquid
-->offset_value
- I set the feedback sensor's value to be
T_surface - offset_value
. In other words, my input signal is a biased value of the feedback - I tuned my PID loop based on this and it works okay
Question
I realized I am basically trying to tune a PID algorithm to have a steady state offset. The offset is a function of T_liquid
. Let's assume I know what I want offset to be. Here are my questions:
- How can I tune a PID algorithm to have a steady state offset?
- Can you think of a better way to go about this? (Assume an inability to change the mechanical design)
T_surface
, and just bias the setpoint to be an established/mapped value. That way, I just closed-loop control the surface cleanly, and know thatT_liquid
varies fromT_surface
by anoffset_value
$\endgroup$