My heating controller "Thermostat" uses PWM of the water valve to control the heating power to the room. It has a fixed cycle length and varies the proportion of on-time to manage the temperature, using a PI controller.

I've slowed the PWM down to reduce wear and tear on the valve. With a 30-minute period the room fluctuates only 0.2 degrees over the cycle.

However it is slow to respond to sudden changes in temperature or setpoint, because of the long cycle. Ideally it would immediately start (or stop) heating when the error is greater than 1 degree. Possible solutions could include:

  • Shorter PWM cycle (but most of the time this is a waste)
  • Breaking out of the PI-PWM control into a special fast-ramp mode when a major disturbance is detected

Is there a type of PI-followed-by-PWM that encapsulates this completely, in a single algorithm?

  • 2
    \$\begingroup\$ Wrap your PI controller inside a bang-bang controller (I know what I mean) that has dead-time instead of hysteresis. Within the dead time, the PI controller works. \$\endgroup\$ – Andy aka Jan 7 at 14:37
  • \$\begingroup\$ @andyaka so something like PI-PWM but overruled by an asynchronous three-state controller - hard off and hard on if error > 2 or something. My P constant would normally be enough to do this, just not asynchronously. \$\endgroup\$ – tomnexus Jan 7 at 16:29
  • \$\begingroup\$ That's about how i would imagine it. Anything within 1 degree of the demand results in the PI control. Anything beyond that and it's full on or off. \$\endgroup\$ – Andy aka Jan 7 at 17:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.