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.


BruGuy made it!(author)2013-01-30

Great instructable! I plan on building one soon!

dialup_prisoner made it!(author)2013-02-01

I'm planning a second revision, this time using an Arduino. As usual with hobby projects, I have no idea _when_ it will happen, although I hope to get something working before June (Winter here in Australia) More details will follow here as I make progress.

dialup_prisoner made it!(author)2011-12-01

The latest version of the code supports the Picaxe 18M2 and allows for display of fahrenheit temperatures. Hold down the up and down keys simultaneously when switching the unit on to display temperatures in fahrenheit instead. Thanks to Ash for pointing out that there are still 3 countries that for some reason choose not to use the metric system, and AndyGadget for the suggestion of the most hardware-friendly way to change modes.

c.ash.norris made it!(author)2010-10-27

Great temperature controller, would it be possible to add a switch for Fahrenheit or Celsius display? I know this would only be of use to a small part of the world but they have a habit of complaining when they see something they don't understand.

dialup_prisoner made it!(author)2010-10-28

Yes. There are a few ways to do this.

1. (the easiest way) A firmware change to display farenheit temperatures. Without some form of input (like a switch on one of the picaxe's input pins) you would not be able to select celsius or farenheit on the fly - the only way to select between the two would be to plug in the programming cable and change the firmware. If you're not changing scales every day, this would work fine. I hope to put up code to do this within the next few weeks. Not hard to write, but hard to find the time!

2. (slightly harder) To avoid changing the circuit board, one could solder a switch and a pull-down resistor to one of the unused picaxe input pins, to allow the user to select between celsius and farenheit (even Kelvin if you want to be cheeky) on the fly.

3. Change the circuit board to have another switch on the front panel. This is the hardest route to take but would give the most professional-looking result. We'll wait and see how much interest there is, and if it is demanded, maybe I'll upload a version 2 of the board

3/4. The picaxe 18X, which is what the board was designed for, has a hardware "reset" switch on pin4, which on my prototype I hid at the back of the board. Revolution Education are replacing the 18X with a new chip, the 18M2, which has no requirement for a reset switch. It should be possible to have the best of the all the above options, without having to re-design the PCB - you would just have a little hole in the back of the case, where a hidden button would allow you to switch between celsius and farenheit. Next time I put in a picaxe order, I will make sure to get a couple of 18M2s and try this myself. As an added bonus, this chip is also cheaper than the original 18X.

I hope this is of some use to you.

AndyGadget made it!(author)2011-06-28

Another way :-
Hold down UP and DN together for 3 seconds to switch between Celcius and Fahrenheit.  Store a flag in EEPROM so it remembers the state for next time. 

OR :-
Hold down UP at power up to change to Celcius. Hold down DN to change to Fahrenheit .  Store in EEPROM as above.

Useful project by the way - I'll be making something like this for brewing before next winter.

dialup_prisoner made it!(author)2011-07-02

Good idea Andy. I'm building one for a friend in the next few weeks so hopefully I'll get the chance to implement your suggestion then...

AndyGadget made it!(author)2011-07-03

Hold down key at startup would be the easier one to code.
Picaxe 08M2, 14M2 and 20X2 just released by Rev-Ed., although if you are a 'dialup prisoner' it's going to take a while to download all 88MB of the updated PE.  (If you ask on the PicAxe forum some kind soul may send you a CD as there appear to be a fair few PicAxers in Aus.)

atmorris made it!(author)2010-10-27

Hi, I'd very much like to build one of these, especially since you've already fabricated plans for a PCB. My biodiesel club at school (we're a bunch of chem E's that don't know circuits) really needs one of these attatched to a heating element. I must admit, I have no circuit experience, I do however know theory.

In your instructables you seem to skip over quite a few steps. I'm not really sure what all the resistors/capacitors are connecting. And your eagle files download to .temp when I change the file extension only one of them work on eagle. Is this project just as simple as having the parts, learning to read Eagle schematics and connecting/soldering? Or is this for people who have an understanding of building these projects already?

Also, for my project I'm looking for more of a temperature controlled switch, so could I just replace your mosfet with a relay? Thanks For your help! I'd really like to get this project going

dialup_prisoner made it!(author)2010-10-28

I had success downloading the files, then renaming them back to their .brd and .sch extensions. Both of them opened OK in Eagle 5.10.0. I could put all the required files in a big .zip archive if that would be easier to use? That way when you unzip it, all the original filenames and directory structure should be preserved.

Yes, it should "just work" if you simply follow the Eagle layout. However we both know life isn't that simple! Especially if you haven't used the picaxes before, it might be worth asking someone for help.

The picaxe can't switch enough current to drive a relay directly, so you would still need to increase the picaxe's switching capacity somehow. You could replace the mosfet with a cheaper transistor, but you'd only be saving a few cents.

Let me know if you want me to try uploading the files again. If you can see the circuit board layout on screen, that should give a better idea of what's involved in construction.

atmorris made it!(author)2010-10-28

Ok, I'm near finishing up the research stage, and although ur heating controller looks badass, I'm afraid I might run into too many problems while trying to get it to work. I may save this project for when we get our 20 gallon continous flow going. Thanks very much for the help though!

About This Instructable




More by dialup_prisoner:Picaxe LED night lightHome Brew Heater Controller
Add instructable to: