Your beer temp is lagging a bit on the fridge temp. This causes them to be out of phase and causes the oscillation.
To reduce the lag:
- Less filtering on the beer temp gives less delay in the software.
- Less integral action will reduce the build up of fridge temp offset.
- More proportional action will reduce the need for integral action. The integral should really only act in steady state situations. If it is involved in step responses it is doing work that should be done by the proportional part and it will cause overshoot. A too low proportional gain will result it the integral trying to correct this, but the integral is slow to respond by design.
- Measure fridge temp close to heater and cooler, so you are not building up more heat/cold than you measure.
With our new BrewBlox software on the spark, there are a bit more options for tweaking and you can see charts of all the internal values in the PID, so it is a bit easier to pin down the exact cause. The algorithms have changed a lot too.
But you should be able to tweak this to get better results. I suggest starting with no integral or derivative gain and tweaking proportional gain first. Then add a bit of integral to correct steady state. You probably don’t need derivative gain at all.