Introduction: Home Brew Heater Controller

This is a picaxe-controlled LCD thermostat. The cheap heating pad I bought didn't have any sort of temperature control and I couldn't find a cheap thermostat online that would do what I wanted : easy push-button controls and a simple LCD to show temperature info. Of course it could be used for things other than brewing beer, for example as a pet bed heater, aquarium heater, etc. The temperature sensor works from -55 to +127 degrees celsius.

The temp controller is powered from the same 12v mains transformer that powers the heating pad, which is regulated down to 5v to drive the circuit. A picaxe 18X does the work, and a DS18B20 digital temp sensor is immersed in the brew to sense the temperature. The sensor is encapsulated in stainless steel so it can remain in the vat for the duration of the brewing.

The unit has a 2-line alphanumeric LCD to show the preset temperature, and the actual temp of the brew. Two buttons adjust the present temperature, and LEDs indicate when the heating element is on and/or the brew is at the desired temperature. A MOSFET switches the 12V at about 2 amps to drive the heating element. The mosfet I used can actually handle about 15 amps if required.

I used the thermostat to control a resistive heater which is sewn between a woollen blanket and cotton sheet, to form a thick wrap which I tie around the vat of home brew to keep it at a constant temperature for perfect fermentation, even during cold winter months in an unheated room. Thanks to Bec for sewing the heater element into the blanket!

Step 1: Parts

Some of the major components are illustrated and listed here.

1.PCB. I pay by the square inch to have boards made so I try to keep them small. As such, this one is double-sided and uses plated-through holes. You're welcome to try to make one at home but I really recommend getting one professionally fabricated. I had mine made by BatchPCB, a division of SparkFun. You can buy a board at or download the Eagle files at the end of this Instructable and sort it out yourself.

2.Picaxe 18X. This has since been superceded by the Picaxe 18M2, which should be pin-for-pin compatible. (and slightly cheaper)

3.Temp Sensor. The picaxe can natively interface with a DS18B20 digital temperature sensor from Dallas/Maxim, which makes it super easy to write the code. I found this waterproof version on eBay, whick is far more suitable for immersion in an ethanol-water-sugar solution. Depending on what you're actually using you thermostat to control, you may be able to use the bare sensor, which looks like a TO-92 transistor. However the waterproof version should only set you back about $6. Note that the one I bought had the pins swapped, so that pin 1 of the molex plug was actually pin 3 of the sensor! It is possible to carefully remove the pins from the plug body and move them into their correct places, or you could attach the socket to the board the other way around. Whatever you choose to do, CHECK THE PINOUTS OF THE TEMP SENSOR! On the sensor I used, pin 1 [ground] was the bare shield wire, pin 2 [DQ] was white, and pin 3 [VDD] was red. I repeat, please check before you assemble the circuit!

4.IC sockets and pin headers. To raise the LCD module and the the up/down temperature switches off the board, so they poke out of the front panel. I used strips of header and pins, cut to size.

5.Resistors. I used high-brightness LEDs for the indicators, but used very high value resistors to keep the brightness down. If you want brighter LEDs you may need to use lower values for R8 and R9. Rememer that the green LED is driven from 5v from the picaxe, but the red LED gets 12v from the mosfet. Choose your resistors accordingly!

Step 2: Construction

1. Board Assembly

You do need to think a little while you're building this device. Any components overlapped or covered by the LCD must be mounted on the back of the board, so there is no possibility of shorting on the metal fittings of the LCD module. I also insulated the back of the LCD with some tape for extra protection.

Remember that once you have attached the LCD, you won't be able to solder the components underneath it - ATTACH THE LCD LAST!

The first photo on this page shows the back side of the board, with almost all the components attached. Still to come are the programming connector, mosfet, voltage regulator, and the terminals for power and the heating element.

2. Case

I used a UB5 "jiffy box," available in Australia from Dick Smith Electronics, Jaycar, Altronics and other fine retailers. The external dimensions are 83mm wide, 54mm high, and 30mm deep. The case needed a lot of work to make the board fit -  You will need to remove all the internal bracing and slots with a Dremel. Also you'll need to cut holes for the programming connector and temperature sensor, the power and heater cables, and a couple of slots to fit the voltage regulator and mosfet. This is a good idea anyway as the regulator and mosfet get a bit warm.

In the lid, you'll need holes for the two LEDs, two switches, and the LCD. Be careful with the hole for the screen as it's hard to get clean, straight cuts with a cutting wheel on a Dremel! Start small then enlarge the hole to fit the screen.

Although I removed all the screw holes and board slots in the case, it does still hold together, just from the friction of all the parts. If this isn't enough, a little bit of super glue would probably do the job.

Step 3: Finishing

The Heating Element

What you actually use as a heater is up to you. You may already have a "dumb" heating pad that isn't thermostatically controlled, or you could make your own from nichrome resistance wire, or go all-out and use a Peltier unit for cooling instead of heating.

I used a K290A multipurpose 20W heater from This came with the 2amp power supply to run both the heater and its controller. The kit cost me 32 Australian dollars (at time of writing, about $31 USD)

Step 4: Downloads

The Picaxe programming Editor is free from .

Eagle CAD to edit my PCB design has a freeware version at .

The picaxe code I have supplied is a very "beta" version. It doesn't support temperatures below freezing or farenheit temperatures. The unit does what I want it to with the supplied code. I hope to getting around to updating this with more functionality soon though.

This is my first Instructable so please let me know if there are any mistakes or descriptions that aren't clear. Feel free to ask for more pictures or file and if I have them, I'll upload them.

I hope this is useful to somebody - it certainly does the job for me.

[Edit 28 Oct 2010] The following files will be renamed to .tmp when you download them. After they have downloaded, you will need to rename them back to what you see here. Please let me know if you have any problems and I'll see about uploading them in a different format.