Hey guys, I have BrewBlox working and I am getting a better understanding. One thing I noticed is that my beer Setpoint is not often hit or maintained. I am seeing a 10 degree swing with the set point being the bottom.
Looks like you have a very powerful heater. How many watts? I recommend about 100W.
You should heat and cool more gently. Lower Kp in both the heater and the cooler PID.
Your chart doesn’t show the fridge target. This is what the heater and cooler respond to, so omitting it doesn’t help with analyzing the situation.
The PID calculation has seen multiple changes in how input data is filtered. Changes to how it responds to input settings are not intentional, but not impossible either.
If your fridge target is consistently the same as your beer target, it’s likely that your Setpoint driver or beer PID is disabled. You may want to check the chain (see Block Relations in spark page for an easy overview) to verify all blocks are enabled and linked.
Bob and Elco, I want to give you some feedback on this. I have upgraded to the latest release and have been playing with the kp as Elco recommended. Without kp edits I had about a 10 degree swing in temp. As Elco mentioned this is likely due to my high powered hair dryer heater. I have lowered the Heater PID kp to .2 and the temps swings are less, down to about 3-4 degrees now. Comparing this to the BrewPi there is more temp variance from target. Knowing that some yeast do not like temperate swings in excess of a few degrees this is not optimal. Is it possible to somehow have the PIDs within brewblox perform a “learning cycle”? As an example, my Auber PIDs have a setting that allows them to determine the variables required based on the feedback provided from input during the “learning” mode. I think such a setting whether manually executed or programmatically in an interval, would help to stabilize temp oscillation and ultimately make better beer.
Please share the graph of each pid. You should be able to get it within 0.1 deg.
Also share a photo of the actual hardware.
And share an export of your blocks.
Elco, here are the PID graphs and the block export. I will snap photos of the hardware later today. I use a True beverage fridge, and a conair hairdryer mounted inside for heating.
brewblox-blocks-spark-one.json (7.0 KB)
Let me start out by saying that using a hair dryer is not a great idea. You want something around 100W to gently raise the fridge temperature, not 1500W. Just turning it on for a short time will cause the air temp to go up really quickly.
I see you already have a PWM to drive it with a period of 10 seconds. When you are heating at 2%, it will only turn on for 0.2 seconds. Perhaps use a longer PWM period, so it will turn off 1 second every minute instead.
Next, your beer temperature is going up and down almost as quickly as your fridge temperature. If you control the beer temperature indirectly with the fridge temperature, this won’t work well. Do you have a beer sensor deep inside at least 20L of beer?
I also think that your heater is probably pointing towards the beer so it is not indirectly heating the beer by raising the fridge temperature, it is heating the beer directly.
You are probably better off by removing your Beer PID and fridge offset actuator. Use the beer sensor/setpoint as input to the heater and cooler PID directly.
This is what is causing your overshoot. Your heater is heating to get the correct fridge temperature. But your beer is responding more to it than the fridge temperature itself. This will adjust the fridge setting, but with some delay.
Elco, thank you for the feedback. I found the most major issue. I had a small volume of water as a test for the beer temp control. I put the sensor into a 5 gallon bucket and now am getting better results. 67 to 70 with a Setpoint of 68. I will make the other edits but the volume for testing would be worth notating for everyone.
You should be able to get 0.1 degree swings with the right settings.