PID tuning for 2 SSBrewtech Brew Bucket chamber and a HERMS system

Hi all,
I’m curious and was looking to do some PID tuning.
I followed this video that I believe was linking here previously.

My main question is how would you recommend to do a manual bump test in order to model the system?
I have 1 brewblox setup running my fermentation chamber (2 7.5 gallon SSBrewtech brew buckets in a chest freezer and a little space heater) and another one running a HERMS setup (15.5 gal keggle BK under a natural gas Wok burner with 50’ of 1/2" stainless steel tubing and a pump mixing the hot hoter and another 15.5gal keggle mash tun with a bottom drain and a return with silicon tube to the top of the mash bed with a 2nd pump moving the wort).
Right now I’m using the default settings from the wizards, which may be fine, but I’m looking to see what I might be able to do to refine the tuning.

For the test itself, you can set setpint 5-10 *C above room temp. This is enough to observe the PID step response and resulting steady state.

For tuning a PID from scratch, it is advisable to start with Ti/Td disabled, but I’d first run a test with the wizard-generated settings. The defaults are often quite appropriate, and may only need minor tuning.

Thanks for the reply.
For the HERMS setup:
I ran the system (water only, no grains in the mash tun)with a constant HLT temperature and it was pretty tight to the setpoint even if it didn’t quite get there. I ran this from 11:20 to 12:15 on the attached graph.
Temperature graph


HLT PID graph.

The HLT PID is running at the default settings. I have a 1m period on my actuator (wok NG burner) and a min off and max on time of 15s.

At 12:15, or so, I switched to constant MT temperature mode.
As you can see on the graph, the HLT temperature swings around a lot, and the MT temp varies around the setpoint by about +/- 1 degree Fahrenheit. The period of the oscillation is about 20minutes (trough of the MT temp to the next trough).
Temperature graph


HLT PID graph

MT PID graph

The PID settings for the MT are also the default, same limitations on the actuator for the burner under the HLT.

As you know, with mashing there is a much more limited time to settle on the target temperature (60-90 minute mashing) as compared to the longer time frames for fermentation. I’m curious about recommendations to get the MT temperature mode to both respond to the setpoint quickly, but to settle within 0.5F of the target in less than 15m. Is this possible?
I assume that the MT PID settings need to be adjusted and not the HLT PID since the HLT constant mode works quite well, correct?

Maybe it is best to simply set the constant HLT temperature 2-4 degrees above the desired MT temperature?

The HLT setpoint is adjusted dynamically, with the MT PID controlling the offset (your proposed static 2-4 deg). Using a fixed offset would significantly degrade MT accuracy.

It seems you may want to increase HLT Kp a bit to make it properly meet setpoint. In your combined graphs, could you please show both HLT setpoint setting and setpoint value? This helps evaluating how well HLT tracks setpoint when the setpoint setting is dynamic.

I agree with Bob, your first graph shows the HLT undershooting. Kp is too low, or Td is too high. I would try with Td at zero initially.

Are you ‘stirring’ the HLT continuously with a pump?

First tune the HLT without the mash tun. Once that is tracking the setpoint nicely, try with the cascaded PID setup where the HLT setpoint is driven by the mash tun PID.

The wizard sets the MT PID Kp based on the volume ratio of the 2 kettles.

If you have 30L in your HLT and 60L in your MT, then your HLT can safely get 2 degrees higher than the mash tun if the mash tun is 1 degree too low. Once all heat is divided over the kettles, they would be both at the setpoint. This would be a Kp of 2.
This is also why I recommend keeping the amount of water in the HLT low. It allows you to give it a higher temperature above the mash setpoint without putting too much heat in the system as a whole. A higher temperature difference between HLT and MT will make the system quicker.

Thanks for the input.
Yes, I am stirring the HLT with a pump.
I’ll run another set of tests and tweaks with the recommendations.
First, setting the HLT Td to 0 and running that without circulating through the MT.
Also, I have about 32L in the HLT and 32L in the MT. 32L in the MT to simulate the liquid part of a mash and 32L in the HLT to fully cover the coils of the heat exchanger. This also helps to heat the sparge water ahead of time. Would you recommend cutting the HLT volume in half? I imagine the answer is yes, but I don’t want to change too many variables at once or I don’t know which way I’m going :).

Just enough to submerge the coils is best.
With equal volumes your Kp should be 1.

I ran the tests on the HLT only and I’m satisfied with the tune there.
Looks like it will be 32L in the HLT and the same or less in the MT for most beers. I’ll run some tests tomorrow.
As always, thanks for the advice and expertise. You guys are The Experts on this and I appreciate your help.

1 Like

Still playing with the tuning parameters. I’m dealing with initial overshoot when stepping up vs time to get to setpoint.
Doing some internet research (always dangerous :slight_smile: ) I found this article on tuning.


The part that particularly interested me was the end that talked about a no-overshoot tuning. This would be my preference for mashing as it can take a long time to return to the setpoint relative to the amount of time a mash takes. My experience during the testing is that the period of the cycles can be 10-20 minutes (1/6 to 1/3 of the whole mash time). Being marginally under the target, IMHO, would be better than overshooting and slowly settling. Maybe that is just me though.

If there is one frustration, the time it takes to run these iterations is long.