New: the AI firewall watches the whole platform and explains each incident in plain words. See how it works

Heater loop and humidifier loop in my test chamber keep fighting each other

Heater loop and humidifier loop in my test chamber keep fighting each other

Solved 6 5

Final year project, small climate chamber (about 0.5 m3). Two loops on one ESP32: a PID on air temperature driving a 150 W heater through an SSR, and an on/off humidifier (ultrasonic, mist into the chamber) on relative humidity. Setpoints 25 C and 60 %RH.

Each loop on its own behaves. Together, they oscillate with a period of about 6 minutes: heater pushes temp up, RH drops, humidifier kicks in, the mist cools the air, the PID pushes harder, RH drops again… my supervisor says the loops are coupled and to “decouple them” but didn’t say how, and I’d also like to understand why.

Everything goes to Hermetry (temp_c, rh, heater_pct, humid_on) once every 5 s. I have two charts on the board, one for temperature and one for RH, but it’s hard to see what leads what when they’re on separate cards.

Timestamps in UTC or it didn't happen.
♥ 2

Could you run the humidifier only when the heater is off? Like time-slice them.

Still waiting for the gateway to reconnect.
♥ 2

I tried that, the temperature sags every time the heater waits and it’s worse.

Timestamps in UTC or it didn't happen.
♥ 2

For the seeing part: put all four keys on one line chart, rh and the percentages on the right axis. The phase relationship jumps out once they share a time axis.

QoS 1 and a lot of patience.
♥ 0

And turn on Values in the legend (min/max) so you can read the swing amplitude off it while you tune.

♥ 0

I spent years staring at cold chain data with exactly this pattern. Part of your coupling sits in the measured variable itself, because RH depends on temperature. Every time the heater raises the air temperature by 1 C, RH at that moisture content drops by roughly 3 to 4 points, so your humidity loop reacts to the heater even when no water has left the air.

Two changes that usually settle it:

1. Control a humidity measure that doesn’t move with temperature: absolute humidity (g/m3) or dew point. Compute it on the ESP32 from temp and RH (Magnus formula) and run the humidifier on that. At a fixed temp setpoint, 60 %RH at 25 C is about 13.8 g/m3, so that becomes your setpoint.

2. Separate the speeds. Keep the temperature loop fast and make the humidity loop at least 5 times slower (a minimum on time and off time for the humidifier, say 60 s each, and a deadband of about 0.5 g/m3). Then the temperature loop absorbs the mist’s cooling before the humidity loop decides anything.

For the board, Megan’s chart is the right one. In the line chart’s Series rows set rh and humid_on to Value axis Right, add a threshold line at your setpoints, and send abs_hum as a fifth key so you can watch the new loop. Chart settings are on Chart cards.

Accepted solution♥ 7

Switched the humidifier to absolute humidity with a 60 s minimum on/off and it’s been flat for 3 hours: temp within 0.3 C, RH within 2 %. With everything on one chart I could also see the mist hit the temperature about 20 s after humid_on went to 1, which went straight into the report. My supervisor wants the dew point version next, of course.

Timestamps in UTC or it didn't happen.
♥ 0
Viewing 7 posts – 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.

Join the conversation

Sign in to ask and answer, like helpful posts and mark the reply that solved your problem. Every contribution earns points and levels.

Share