A friend of mine has a Big Green Egg. This is a barbecue grill and smoker that’s fairly expensive, but made very solidly of ceramic, has the heat-retaining properties of a brick oven, and will last forever.
The user interface will consist of a display of some sort, and some sort of input to turn it on and off and set the temperature. A cheap lcd display from Sparkfun will do the job nicely. The input can consist of pushbutton switches.
We’ll want to monitor the temperature inside the smoker. There are numerous ways to do this, I decided to use a type K thermocouple from Omega Instruments. These are cheap, and you can stick the thermocouple right in the hole where the regular thermometer goes. The thermocouple generates a known voltage based on the temperature differential between the sensor end and the connected end. Since the voltage is on the order of millivolts, we need to amplify the signal to something meaningful to the analog to digital inputs of the controller, in this case an Arduino.
In searching around, I found something a bit better, the MAX6675, which integrates a thermocouple amplifier with an analog-to-digital converter, and also has a cold-end thermocouple built in to accurately gauge the differential temperature. This gives a 0C to 1023.75C reading with an accuracy of .25C! Not bad for $14!
Finally, to actually control the temperature, a PWM output of the Arduino is used to control the speed of a fan, through a cheap transistor.
The system will operate using a standard feedback loop – read the temperature, determine the difference between the desired and actual temperature (the error), and adjust the fan speed based on the error (proportional), as well as the rate of change of the error (derivative) and cumulative error history (integral). This sort of algorithm has been around for a long time, and is known as a PID controller.
Next Article: Reading the temperature!