FTSS Glycol Setup Brewblox

Your pump is also so weak that you are almost running it digitally. There is not much of a gradual approach if it goes from 100% to 0% because of the high Kp. You could try halving Kp.

Yeah both 0 running on P alone, i just wondered why it hadn’t overshot on the initial ramp down, is that because it had more temperature range to play with and taper down, where as in the cooling coming on at 03:02 it doesn’t and so overshoots?

I didnt apply any TD because i didnt see any overshoot in that initial ramp down, will apply some and see if that helps!

[Edit: Yep thats done the trick 6m Td has kept it just around 0.1oc overshoot on that second cooling]

1 Like

Yeah I’m not controlling the pump im controlling a ball valve open or shut that allows flow from the pump which runs constantly at a speed i’m not in control of at the moment, so yes it’s an on or off scenario!!

As per screen shot the cooler recirculates the glycol internally via its own in built pump at a constant speed which I dont control at the moment, the Spark simply opens one of the ball valves to allow flow of Glycol through the coil in the left or right or both fermenters, the only control I have on the cooling at the moment is the amount of time that the ball valve that feeds the cooling coil is open for and hence the amount of time Glycol is circulated or pushed through that coil!

I had this setup before SS Brewtech offered their packaged heating and cooling solution so its less than ideal but just making do with what I have. I have all of the SS Brewtech FTSS2 kit but just not the pump or their extortionate Glycol chiller!

As you will see from the most recent graph with Kp -80 Ti 3h and Td 0 it seems to be doing a pretty decent job, its able to drop 2oc in 20 minutes and hold temp within 0.05 so i’m not really sure how much faster i’d really want it to be able to drop the temperature anyway! I don’t know if i will run into problems with a real fermentation as a result of the limited cooling control but i guess I’ll see when i run with a real fermentation.

I mean I guess I just dont see the point in having a cooling capability that is then handbraked down to 5% of its output in order to maintain steady state cooling a small capacity system particularly given the costs. Kinda feels like buying a Ferrari and then driving it about in first gear most of the time whilst paying for a car that can do incredible speed. Obviously i can see the benefits if you are running multiple large capacity fermentation vessels, but i’'m only running two 50L vessels which aren’t going to have the same cooling demands at exactly the same points in time. Yes you need that extra capability to be able to adequately and quickly crash cool but the majority of fermentation time is going to be about maintaining steady state.

Do you have a link to those pumps you sell that you were suggesting so i can have a look?

It would probably help a lot of you close he third valve whenever one of the coils gets water. Do you do this already? If not, it is not the pump that is weak, just that you have a alternative path with lower friction.

The third valve is open all the time but only a small amount, I’ve set it by observing the flow with no return from the fermenter coils and tried to limit it to just effectively be a pressure relief. Bob had suggested doing a test with it closed to see the difference I’ve not done that yet as it’s a manual valve but will try and find time to do this. Ideally I’d like an automated solution for this controlled via logic block in brewblox and associated hardware.

For info I’m running a test now with Kp at 50 to see how that goes!

1 Like

Bob/Elco

Does the integral reset to zero once the error is zero.

In the example of the tuning test I’m noticing windup of the Integral (set at 2h) when I’m ramping up from one of the steps going from 10oC up to 12oc. as can be observed around 14:30 mark.

Although setpoint was reached around 16:21 the integral continued to accumulate and heating continued and as you will see overshoots.

If I don’t have any integral set then this doesn’t happen, but would be concerned in real fermentation that without the Integral then steady state errors wouldn’t be corrected?

Is there a setting I should be inputting to prevent this if running with integral, or something i’ve set incorrectly that would cause this?

Still Heating even though above set point

[EDIT: Might be because of the five minutes of Td that were applied as it only seems to occur when there is a derivative value as can be seen in PID graph below, integrator doesn’t seem to build up otherwise on the 2c ramp up.

Generally speaking, you reduce overshoot by reducing Ti, or increasing Td. You won’t need drastic changes.

For a more detailed approach, you’ll need Elco. He has significantly more experience zeroing in PID settings.

One request: could you select the -10 to 20 range for the Ferment-left Heat PID? (drag a box to capture the full X range, and the -10 => 20 Y range). Right now, most of the data is made illegible by the spikes in P.

See attached

As a side note the UI doesnt like me doing that as it bounces me out of the graph and back to the dashboard and sometimes shows the spark as not responding for about 5-10 seconds (red icon next to it in the services)

Example of it throwing me out of the graph about 2 minutes after zooming in to that graph

Could you please tun ctl log? That’s really weird, as graph data isn’t fetched from the spark service.

Attached logs as requested

brewblox.log (273.1 KB)

I’m seeing a lot of what looks like network resets. You may benefit from following the instructions at Some basic newbie questions to disable IPv6 on your Pi.

1 Like

The graph is a bit hard to read. Try some longer cycles and only show 2 or 3 instead of 20.

As requested, this is a rise to 12 from 10 and hold for 4 hours, pretty happy with how its tuned so far (never really dips below 0.1 degree difference) but at the moment im seeing on the steady state oscillation +/- 0.1 degree, throughout the 4 hours. Not sure if i can expect much better than this, so will go up to 12.125 and then down to 11.875 and cycle around that oscillation?

From the bottom graph, you can see that I (the integrator part) is rising much too quickly.
This is because of a few issues:

  • Your PID output value dips under 100% around 16:40, then the integral starts to rise. Whenever the output is at 100%, the integral anti-windup is active and the integral is kept at zero.
  • Your D value is probably too much. It starts to decrease the output value early and by too much. Try leaving D at zero at first.
  • Your overshoot is caused entirely by the integral. P dips under zero at 17:50, but the integral already has built up too much.

So what can we learn from this graph, which is an excellent example:

  • The SS brewtech heating pad is pretty weak, I think you can probably run it at full power until you are 1 degree from the setpoint. This would mean a Kp of 100.
  • The overshoot caused by just the proportional part will be almost nothing probably. So Td can be zero, 5 or 10 min max.
  • A normal heating step takes about 2-3 hours. Your integral time constant should be 6-9 hours. It should only slowly increase, so it only reaches significant values if an error is present for 6 hours or more. Ti is the time it takes for the I part to grow as big as the P part for a constant error. It should do its work after the step is over.

Yep these graphs are with Kp at 100% that seems to have worked well for me, i notice it seems to do 1c every 30 minutes on my setup with water filled fermenter 50L at least goiing from 10c to 12c.

Yeah i’ve been playing about with Td in the 1 to 5 range so think just need to home in on that value

Yes this is the bit i’m really struggling with because on the heating side im sure the larger i made the Ti the bigger overshoot i was seeing which was what was confusing but i’ve really only had it set to between 1 - 3 hours. It only seemed to rear its head after the ramp up part of the square steps test on the maintaining steady state(holding at 10c) after the crash cool i didnt see any serious overshoots.

I’m running a test now with Kp 100, Ti 6h and Td 5m and will report back!

Thanks for your detailed response Elco! :+1:

It should be equal in both PIDs and at least 6 hours. Increasing Ti should reduce overshoot that is caused the by integral. It should be long enough to not have much effect until your lines are flat.

If you have Ti too low, it will increase too quickly and cause overshoot. It will also decrease quicker, perhaps that is what you have seen. But it really should be soo long that it only does something when the graph is nearly flat.

A ramp, a setpoint constantly moving away, will cause the integral to do some work. Because it has the same effect as a constant external disturbance. So the integral can indeed cause overshoot after a ramp.

So with 6 hours of Ti the integrator as built up to 6.34 by the time its almost at 12 setpoint had to lower Td to 1 minute otherwise it just seemed to hover around 11.94 for ages and didnt move. See below

I’m assuming from looking at the PID that output of 6.34 is going to remain for a period of time until the Integral degrees centigrade an hour is zero currently 0.38, im assuming i’m loosing heat to the environment and the output is compensating for this?

Seems to have solved the overshoot :grinning:

Right makes sense now just watching what happened there on the live PID graph, so in the case of the heating the I part grew to around +6.xx and the P had to grow in the opposite direction -6.xx before they then cancelled each other out and the output became zero.

Jings I just couldnt get my head around how the heating was going to stop, light bulb moment. Hence why if that I element grow too much it takes longer for the P part to cancel out the output driven by the Integrator and hence you end up with overshoot yes?

So i obviously want to tweak the Ti until the integrator doesnt grow very much if at all so that when when P passes zero it quickly cancels out I and you end up with as minimal a overshoot initially as practically possible without limiting system performance.

Sounds like it clicked!
Looks pretty much perfect now.

The only purpose of the integral is this.

  • Assume you are loosing some heat to environment at all times.
  • Your proportional part P will bring your temperature to the setpoint, but it might just reach a value where it is 19.8 degrees instead of 20. So with Kp at 100, P is now 20%. If that 20% equals what you are losing to the environment, this is the state it will remain in. It is in equilibrium.
  • Now with Ti at 6 hours, the integral will also grow to 20% in about 6 hours. So Kp will now be zero, because you are at the setpoint. And the integral will have taken over the 20%. You are still in equilibrium, but at the right value.

Technically, it will take a bit longer than 6 hours, because 0.2 / 6h will be added to I every second at first, but only 0.1 / 6h later.

1 Like

Elco looking pretty good now. :grinning:

[Edit: should the cooling be a bit smoother on the cool down from 12 to 10, obviously its stopped around maybe 10.5 and then cooled another twice to get to setpoint, just wondering if that should be a bit more curved rather than the stop start that it is currently?]

1 Like