Homebrew Temperature Monitor/Controller
Latest News
I have finally added the source code to this site.
Sample Cooks
Notes and graph from first cook
Notes and graph from butt cook.
Some other cooks:
Pork butt with new temperature control algorithm
Eye of round
Buckboard Bacon
Pork Butt
If I'm cooking, the latest data can always be found
here.
The Hardware
I really need to draw up the schematics for the entire setup, but I haven't yet. The descriptions below should
give you a good idea on assembly - and I am always willing to help out via email.
Development Board
I started with a development board from Olimex.
Their AVR-P40 board
was perfect. All I would need to add is an LCD display, some temperature
monitoring circuitry, a blower, and blower control hardware.

The board plus the Atmel ATMega32 controller chip was only $24 from
Spark Fun Electronics. A serial port programmer set me back another $12 and all the development
tools are free: WinAVR
Temperature Measurement
I decided to use thermocouples because I had never played with them before,
and there is a pretty good supply of them on E-Bay for a decent price. I
found several auctions and ended up with 6 metal probe K-type thermocouples
for under $40.

Interfacing the thermocouples is another challenge. The voltage output from
them is so small, you need special circuitry to amplify it to a level that
the analog to digital converter on the ATMega32 can read. Luckily,
SparkFun comes through again with the AD595 IC. It converts thermocouple
inputs to 10mV per degree Celcuis. Coupling this IC with a 74HC4052N IC
Mux, I could select any one of four thermocouples at a time using only
one AD595. I am still having a bit of trouble with noise from the
relay/motor slightly changing my thermocouple readings. This results in
about a 1-2 degree spike when they energize. If it all worked perfect,
I wouldn't have anything to keep working on!
UPDATE: I had a decoupling capacitor on the power input to the AD595, but I neglected to put
one on the 4052 mux. I added one there, and things seem to be much better.
Display
The easiest part of the project, because I had done it so many times before,
was the LCD. I chose your basic 16x4 LCD based on the Hitachi HD44780
controller. SparkFun sells these for $12 and there are several good
libraries written for them for the Atmel controllers.
Final Assembly
All of the electronics went together fairly straight forward. I was not
able to get a box that I liked, but i settled on one from Radio Shack that
is just a bit too big. There are four 1/8" plugs for thermocouples, one 1/8"
jack for the blower, one DB-9 serial connecter to send data to the computer,
and one power jack.

The Blower
The biggest mystery was how to rig up a blower. I specifically say "blower"
and not "fan" and I have Rock (from The Stoker fame) to thank for that. He
pointed me to DigiKey, where I decided on a 12V DC blower (DigiKey part
#P12902-ND) To mount it to the smoker, I found a small stainless steel
pan, originally made for simmering BBQ sauce, at the local Ace Hardware.
I fabbed up a bracket for the blower to mount to the bowl, and the bowl then
bolts through a smoker vent and is held in place. I also had to fabricate
an air diverter for the inside of the vent. This causes the blower air to
blow down instead of straight at the coals causing all kinds of ash.


The Software
Latest version of the software and WinAVR project files:
tempmon.zip
The ATMega32 has 32 Kbytes of flash and 2 Kbytes of RAM. Not being
cramped for space, I decided to go all out and use GCC and not worry
about silly things like floating point, math, or string libraries.
The software has a very simple job:
- Initialiaze the hardware
- Keep track of time
- And in a continuous loop:
- Read the four probes and convert them to degrees F
- Update the display
- Adjust blower speed based on the current temps.
I am now using a MOSFET transistor as a switch instead of a relay. This has allowed me to use PWM output from the ATMega32 to drive the fan speed variably. This on top of a proportional control loop has really stabilized temps
- Send data logs out the serial port. This enables me to monitor/graph the
cook.
- Check for command data from the host computer. I am able to make
adjustments to the temperature setpoint, tune the PID algorithm, change the time, manually control
the fan, etc... from an external program.
Using the Controller
Writeups and graphs of various cooks can be found in the Latest News section above. During
testing, it logged a nice graph of my workshop for 20 hours:

Feel free to contact me at
bbqcontroller@gmail.com I will
keep up as best as I can, at least until all the spammers get the address.