Brewblox Release 2025/03/05

Brewblox release notes

Relevant links:

Brewblox Release 2025/03/05

Firmware date in this release: 2025/03/03

This release took a bit longer, but we moved into a new office had I had a baby. Some great new features are included in this release though.

PID improvements and feed forward support (ambient temperature correction)

This is probably the biggest feature in this release for most users. I added the option to configure an ambient sensor for PID blocks.

A feed forward term (FF) can now be used to compensate for ambient losses, calculated as FF = (setting - ambient) * Kff. The PID output will be P+I+D+FF, instead of P+I+D when an ambient sensor is selected. With the right value for Kff, the integral can remain near zero if the fementation does not generate heat. The ambient temperature is smoothed with a time constant in the order of Ti.

I also changed the limits on D from +/- Kp to +/- P. This allows D to grow larger to counteract the proportional part P. When P is small, because the setpoint and sensor are close, it limits D more. In my testing, this works well to reduce overshoot and not cause oscillations in steady state.

Improved network handling on the Spark 2 and 3

I took the time to rewrite some of the network layer for the Spark 2 and 3 to bypass the TCP/UDP classes provided by Particle and use a custom implementation more directly on the network layer. This helps with memory use, latency and early discarding of closed connections. It also avoids blocking the execustion loop when waiting for certain NTP or MDNS packages.

Further improvements and final fixes for the new analog module for RTDs and pressure sensors

This new module will finally be available soon. This release adds the option to fully customize RTD specs (R0, A,B,C in the Callendar-Van Dusen equation). It also optimizes channel cycling order, conversion latency, loose wire detection and internal calculations.

Bug fix: always init enough filter stages

This is a small bug fix, but with enough impact to deserve its own header. I discovered a bug that only enough filter stages were initialized if the a PID derivative needed them. So if you configured a filter over 15s in a setpoint, but a PID did not use the setpoint with a Td over 15 seconds, the intput filtering would only be 15s.

Other changes

  • Enabled digital input support for DS2408
  • Bumped victoria version from 1.98 to 1.112
  • Reduced size of flasher docker image
  • Better explanation of PID settings in UI
  • Improvements in brewblox-ctl for installing and updating python packages with uv.
2 Likes

Can you explain the FF a little more? Is this only for fermentation? Is the best ambient sensor for this purpose the temp sensor inside the fridge?

Does this enhancement help with ambient temp losses in the mash - say if I put a temp sensor just outside my HERMS coil, and another one just before where it enters the Mash Tun? The difference between the two would be any losses I have in hoses and hard piping.

You can think of feed forward as extra measurement to anticipate losses, hence the name.
Instead of waiting for the integral to slowly increase, you already know that if you are x degrees above ambient, you need x*kff extra power at all times.

I think even for the hot side, basing kff on room temp will get you most of the benefits. Your losses in pipes are also to ambient.

I assume you already use a cascaded pid setup with a setpoint driver for the HLT? With a dynamic setpoint for the HLT it doesn’t really matter what the coil output temperature is, it will adjust the HLT setting. But Fred forward will speed that up instead of waiting for the integral to slowly increase the HLT temp for the losses.

In a fermentation setting, would the ambient temperature sensor make more sense inside or outside the chamber?

My chamber has both but the chamber is in the laundry with a clothes drier so ambient temperature in that room can fluctuate a lot. I currently only use these 2 sensors for logging. My primary sensor is on a long cable which goes into a thermowell when fermenting or just coiled up on the shelf when operating as a normal fridge.

Outside. The fridge has to work harder if the ambient temperature is higher. Feed forward handles that.

If your beer is at 4, the chamber is at 4 and ambient is at 20, feed forward will add a value to the output to compensate for the losses to ambient. Your chamber still needs to be at 4 to keep the beer at equilibrium, assuming fermentation is done. There is no feed forward there.

Your integral can hopefully mostly adjust to fermentation heat now, while feed forward handles the dryer.

2 Likes

Oops, I forgot to merge the release for the UI.

Now it has been merged and you should be able to actually configure feed forward :sweat_smile:.

So please run update again.

2 Likes