I occassionaly brew a batch of beer. In learning about what is important to brew a good beer, I found that fermenting the beer at the correct, stable temperature helps with both quality and consistency. Those sound like good things, and they also sounded like something an Arduino could help with. I just so happened to be looking for a first, hands-on, electronics project, so this seemed to fit nicely.
Now, as it seems with most of my ideas, I wasn’t the first person to think of this. In particular, the DIY BrewPi seems fairly popular and reasonably documented. This was my first Arduino/electronics project where I was actually building something, so I used this as a starting point, and then made some adjustments.
For an explanation and details about what I did, check out my Git repo for the project. In short:
The ugly, v1 results:
I used a few general prinicples in my approach:
Some concrete decisions related to these: - Simple, manual “interface”: - Set temperature target and bounds manually with uploading code to the Arduino - Log to a plain text file - Simple temperature control - Learned about PID control, but a little testing showed that “if it’s warm, cool it down for a while” was good enough (for now).
My father-in-law, an electrical engineer by trade, stopped by a few weeks after the project was “live.” I was excited to share the project (and a homebrew!) with him, so I opened up the fridge, and… the keg was warm. :-/
What happened? Well, to prove that the project works before making it perfect, I was relying on two things: connections using a breadboard, and a single temperature sensor with the cord just having the door closed over it. In repeatedly opening and closing the door, the temperature sensor became partially unplugged.
The result: the Arduino was reading a ridiculous low (and invalid) temperature measurement. Fortunately, I had removed the heater in case something like this happened, as I didn’t want to accidentally cook my beer.
Many things could have prevented this:
Hardware is tricky. You really need to think about the details.
PID controllers are super interesting. I wish I had known about them when I was teaching high school calculus – it’s very cool how they taken some natural intuitions and use derivatives and integrals to control the system.
Planning for failure is important, especially when hombrew is on the line. :-D