|The Arduino-based system in action during yogurt making (an annotated photo at Flickr)|
Sometimes DIY is more about the journey than saving money, more about what you learn than what you save. This was certainly the case for me when I built a system to monitor temperature in my kitchen.
A few of my kitchen projects require temperature monitoring — the heating and cooling cycles of yogurt making, making Japanese stock (boiling supposedly makes the stock bitter), and tempering chocolate, to name three — and so many months ago I went looking for a commercial product. I wasn’t asking for much, really, just some beeping when the temperature dropped below a set point, and beeping when the temperature rises above a set point. But when I quizzed employees at cooking stores about the products on offer, no one could tell me if product X or Y would do what I want. Sure, many are designed to handle a rising temperature situation, as they are designed to tell you when your meat is done. And there might have been one that will tell you when something has cooled properly in the refrigerator. But would they do what I wanted? Hard to say.
Arduino Inspires Action
A few months later I stumbled into the world of Arduino, and a DIY solution seemed feasible. Arduino, for those who haven’t heard the word, is a family of open-source electronic controllers that can be combined with sensors, actuators and other devices to do lots of things, like radio-controlled flying vehicles, home-built robots, controlling processes in beer making, to name a few applications I have seen. The boards are easily programmed using free development software and a fairly simple language, with a USB connection between your computer and the board’s CPU (there are, to be sure, more complicated ways of programming the boards, with custom bootloaders, your favorite C-compiler, and so on). Several companies make and sell accessories for the Arduino platform to help you with your projects, like Adafruit, SparkFun and Virtuabotix. And tutorials and forums at various websites provide resources to get everything working together.
|An early incarnation (annotation at Flickr)|
With help from the accessory vendors, a bit of soldering, and some programming, I built an Arduino-based system to measure a temperature and sound an alarm when the temperature goes above or below a set point. With slight changes in the program, I can make the system do many things: “Beep when reaching 180 °F,” “Beep when falling below 120,” “Beep twice at 160, four times at 170 and 20 times at 180 °F,” and so on.
Putting It Together
The basic components of my system are the controller, an audible alarm, and a temperature sensor. To be a bit fancy — and to allow me to monitor the process without needing a computer — I splurged on a character display device. Adafruit was my source of all of the components except for the thermocouple, which I got from Omega:
- Ardunio Uno R3: the “brain” of the system, it executes my program: get the temperature from the thermocouple (via the next item on the list), write text to the display, act when a button is pressed, print to the screen on my computer (if connected) and sound the alarm when the target is hit.
- Thermocouple conditioning circuit: thermocouples are finicky devices, and need special circuitry to convert their signals into temperatures. This handy “breakout board” from Adafruit makes it easy.
- Basic proto shield: for connecting the thermocouple circuit and alarm to the Arduino in a more robust and permanent way than with a terminal block or breadboard (an example of this is shown in the photo above, and you can tell it’s a lot flimsier than the device in the top picture)
- LCD with 16×2 character display shield kit: This snazzy device can display two rows of sixteen characters (“16×2”), and has five buttons for user input. Thanks to great work by Adafruit’s engineers, the device only uses two of the Arduino’s pins.
- Piezo buzzer: the audible alarm (it’s a bit quiet, so I’ll be looking for an upgrade).
- Thermocouple, Type K: the temperature sensor. This one is stainless steel. I accidentally ordered the wrong size — 1/4″ diameter instead of 1/16″ diameter — but the larger size is working out OK. Things don’t happen very fast in a cooling bowl of milk or a simmering stock.
Thanks to free library files and sample programs available at Adafruit, it was fairly easy to get everything put together and working. Of course, getting it to do exactly what I want can be tricky, as my programming often has subtle mistakes or poor logic (I can only hope that an Arduino IDE with debugger is in the works). One of these programming mistakes almost messed up a batch of yogurt.
The LCD shield has with five buttons for user-input in an up, down, left, right, select pattern. I programmed the select button to switch between the rising and falling temperature programs. The left and up buttons raise the set point by one and five degrees, respectively. Right and down lower the set point by one and five degrees, respectively.
Outside of the already mentioned mistake, the system has been working well on several yogurt batches. In the future, I might build an enclosure with controlled temperature for fermenting and proofing loaves of bread, as my place is usually a bit cold for rising bread. I’m envisioning a large box that has enough space for a few loaves of bread, an incandescent light bulb or electric heater inside it as a heat source, a relay to control the heat source, and the thermocouple to monitor the temperature.
After all of this tech talk, I’d like to close this post by emphasizing that you absolutely don’t need fancy gizmos like my temperature monitoring system to make yogurt or do many other kitchen projects. An inexpensive pocket thermometer from Taylor would do the job just fine, as the yogurt process doesn’t demand precision (and there are probably people that make yogurt without a thermometer, instead they somehow know when the temperature is about right).