Beer, mmmmm, beeeeeer and Arduino?

Hi All,

Now first of all, i want to point out that I’m a SysAd, sortof. My official title is “Senior Operations Engineer” at work, however I’m more doing SysAd work than engineering work, nonetheless, I’m a SysAd, and SysAds like beer. There’s a small problem with that though, in the quantities that we tend to drink it can be quite an expensive hobby.

I’ve been considering brewing my own beer for quite a while, and after speaking with a few friends of mine that are involved with HomeBrew, I decided that for christmas, I’d buy myself a Home Brew beer kit. I decided on the Coopers Home Brew Kit after I was pointed at it by a friend. This kit comes with everything you need to start your first brew. I bought the kit, eagerly set it up, and the brewing began. Using the “can” method – that is you buy a pre-mixed can of ingredients, it really is quite simple, you just need to make sure that all of the parts are thoroughly cleaned before you begin.

Here’s an image of the setup, just after I unboxed it, and set the beer brewing on the bar (After all, what better place for beer to brew?). We started off with the first brew of “Coopers Australian Pale Ale” although I accidentally used the wrong brew enhancer, so it’ll be a little less malty than it’s supposed to be. We started off with a specific gravity of 1.037, targetting around 1.008. My friends advised this would take 3-4 days to brew.

Beer brewing is really supposed to be done at certain temperatures, and given that I live in Australia, it’s the beginning of summer – and the fact that our air con in the lounge room has packed it in I had to come up with something better than just a black cover over the fermenter. I’ve been looking at many different methods to keep the unit cool, with many ideas I was pointed in the direction of “Son of a Fermentation Chiller“. Essentially this design is a foam box with two chambers with some ports between the two. The large chamber contains your “Wort” (Unfermented Beer) and the other chamber contains a baffle inside with an opening at the bottom, and two ports in/out of the “Wort” chamber. The idea is that you can use a simple off-the-shelf thermostat to set the temperature in the “Wort” chamber, and you fill the smaller chamber with bottles of frozen water. When the temp gets too high, it switches a fan on, and pumps the air in to the Wort chamber. I set about putting my own take on this together. I was unable to find the recommended foam at my local hardware store, so I made mine out of some particle board I had laying around the house. I had to modify the design a little in order to make it large enough to accommodate my somewhat oddly shaped fermenter, and I turned out with this monstrosity, that requires 2 people to lift.

I had to bring it in to the house using our trolley, and I had to get my girlfriend to help my lift it on the to bar. Once up there we placed the fermenter in, and we set some ice freezing in the freezer.

I had thought about how I was going to control the temperature inside the chiller, and I already had a Freetronics Terminal Shield and a Freetronics LCD Keypad Shield for my Arduino Duemilanove, so I decided to use these. In addition I had picked up two Freetronics Temperature Sensors and a Freetronics Sound module. The fan that I used was a left over 100mm case fan from a 2U rackmount server that has long since bitten the dust, and to control the fan I ratted a Toshiba K2837 N-Type FET out of an old welder that has also long since bitten the dust.

The Buzzer module I wanted to hide away on the prototype board, so that got soldered directly to the pins on the proto area of the terminal shield. The fan control is set up as a “low side switching” with the N type fet, so as the Arduino is powered with a 12V plug pack, the “Vin” pin on the shield is also charged with 12V so that supplies the positive line to the fan, and the N type fet is in the earth return of the fan. Switching on/off the fan is as simple as pulling a pin high and low on the Arduino. The two temp sensors are attached to the shield via the screw terminals, as the wires are soldered to the temp sensor boards and need to be removeable from the box somehow. The FET that I’m using is like using a cannon to kill a mosquito, but I’d prefer to use a cannon to kill a mosquito than to use a BB gun and possibly miss. The next thing to do was to lay out the rules of operation. I settled on the following:

Monitor both the temp in the “Wort” chamber and the “Ice” chamber
Switch on the fan from the “Ice” chamber to the “Wort” chamber if the temp in the “Wort” chamber went over a certain threshold (21 degrees C)
Alarm the buzzer if the temperature of either the “Wort” chamber or the “Ice” chamber goes over a “maximum acceptable threshold” (27 and 10 degrees respectively) as well as display an indication on the LCD of which alarm has triggered.
Silence the alarm by pressing a button, and reset once the fault condition has been rectified.

I spent a few hours putting the sketch together and got it all working, you can see the final result at The code isn’t very elegant, nor probably the most efficient it could be, but it works and that’s all that matters (For this application anyway). When all is said and one, the Arduino just kinda hangs there off the side of the box. Unfortunately the hole I drilled for the wires wasn’t big enough for both temp sensors and the fan, so once this brew is done I need to pull it apart and fix it up properly. I’ll mount it properly one day (read: double sided tape) but for now it works. Unfortunately in my testing one of the buttons on the shield failed, but after a quick email to Freetronics some replacement parts for the shield are on their way. (A big shout out to Jon Oxer and the team at Freetronics – Your customer service was fantastic )

After 3 days, the brewing process finished and was ready for bottling, so tonight we set about bottling the beer. This simply involves taking the fermenter out of the cooler, very carefully as not to disturb the sediment too much, attaching the bottling fitting, priming (Adding extra sugar for secondary fermentation and carbonation) and filling up the bottles. I had to unplug the Arduino during this process, as the room temp was higher than 21 degrees and it wanted to run the fan constantly. I might need to put some kind of “override” on the unit or “pause” button in place, so that ice changes/measurements can be taken without the Arduino getting grumpy (And the alarm going off!)

When all was said and done I’ve decided to use the chiller for not quite it’s intended purpose. The temperature over the next few days is going to be pretty warm, and although the secondary fermentation calls for a slightly warm dark place, the mercury is going to hit temps that are likely to kill the yeast, and render the brew a failure, so back in to the chiller the bottles went. (The tape that you can see was to fill up some of the air gaps. On the to do list before the next brew is get a few tubes of sealant and go around the edges and inside of all the panels to prevent air leaks)

The bottles should be finished their secondary fermentation in a few days, and then they’ll be stored for at least a few weeks before they get drunk. I’m planning on bringing a bunch of them to Linux Conf 2013 in Canberra, so if you’re coming, give me a shoutout on twitter (zindello), the lca-chat email list or directly via email and you’re welcome to try a sample. I’m also hoping to have at least one more brew under my belt to bring with me and might need some assistance in the consumption department. (I’m looking at you, Hackvana people, and Freetronics Jon Oxer and co!).

Until next time,



About zindello

Just a guy who's interested in Horses, Ham Radio (VK3XJM), Model Engineering, Railways, Electronics and more... Feel free to catch me on Google talk, add
This entry was posted in Arduino, Beer. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>