PID is black magic.
WAY back when I thought I was actually going to use my engineering degree, I was working on building controls. PID loops were always lots of fun. Before auto-tuning loops and other such trickery, we used to spend hours and sometimes days in a large plant tuning the loops manually. I think I have blocked out all of those memories with the other traumatic events in my life.
I was afraid that you were going to say that! I was looking at the PID algorithm, thinking "this doesn't look so bad, I can figure this out" and then very quickly realized that I was doing
this...
I need to have a look back at things but there's an overshoot estimator in there which may have tunable points. I also think keeping the glycol within a closer range of your target will help.
I tried to reduce the complexity by setting Kp = 0 to get the algorithm to run as a simple thermostat with the bounds set by the high and low thresholds and left it alone for a day. The period of the cycle has increased and now it is only triggering the cooling to bring the temperature down, rather than cycling the cooling and heating (plot attached). I'll start from here and then work on tuning the PID loop.
Instead of using 27° glycol just because you can, keep it at 50° if you are controlling to 70° or something along those lines. Alternatively or perhaps as a complement to that, the use of an orifice or valve to reduce the flow would help. Scribbled in crayon (and ignoring efficiencies and so on): running a gallon of glycol at 27° through a fermenter containing 7 gallons of 70° wort, will result in a ~6° drop in temps. That's pretty significant.
Agreed. The only problem with this approach is that my glycol chiller also cools my long-draw draught system so I need the glycol set at 27 or 28F to prevent foaming in the lines. Experimentally, I'm seeing a 2F drop at my thermowell with the pump on for 9 minutes. The pump is 9.3 GPM max, but it has a pretty long line with a 6' rise so I'd need to calculate carefully (or measure) how much glycol is going through the loop.
There may also be some benefits to creeping up on your target temps slowly. If you run glycol through the coils or jacket, the beer in immediate contact with that is going to be shocked and the temperature dropped precipitously. If the glycol is closer to the target temp, there's less of a shock to your yeast, and the vessel gets a chance to get some convection going to mix the temperatures inside. This should result in a more homogenous temperature within the vessel. Even a small delta will cool effectively. Glycol and wort are pretty close in mass (in comparison to the mass differential between air and wort.)
I've noticed that I get quite a bit of temperature stratification in my fermenter before active fermentation starts. As a check, I'm monitoring the temperature separately with a tilt and it always reads several degrees higher than the probe in the thermowell until fermentation starts. My probe as reading 48F and the tilt was reading 51F. Convection doesn't seem to be mixing the wort very effectively. Once fermentation starts, the CO2-driven rising and falling of the yeast provides mixes the wort and evens out the temperature. At some point, I'll have to think about the geometry of the fermenter and see if this is expected given the temperature differential. I know how to do this calculation for stars, I need to think about it for wort in a fermenter...
So, those are my morning musings - worth exactly what you paid for them.
Thanks! What I have now is the same plant control that I had with my SSBrewtech FTSS controller, but with the logging and automated temperature ramp control that I didn't have before, so even if I get no further with the PID tuning, this is still a win.