These days I was reading an interesting post on how to make yogurt “by the gallon” (http://www.instructables.com/id/Yogurt-By-The-Gallon/). One thing needed was to maintain a rather constant temperature of 43ºC (110°F), so the bacteria can grow properly. Though you can buy commercial yogurt makers, they aren’t big enough for a gallon of yogurt. Besides, it’s cheaper (and way more fun) to build one yourself.
Step 1: Wiring the box
When you apply 12V to the 8 ohm resistor you get a current of 1.5A, wich in turn gives you 18W of heat. This is what’s going to keep our yogurt warm!
In order to better dissipate this heat I screwed the resistor to a piece of scrap metal sheet I had lying around. A better option would be a heat sink+fan from an old computer, but I don’t have one right now…
One wire from the resistor connects to the negative of the power supply, the other one connects to the C (center) connector of the relay. The NO (normally open) connects to the 12V of the power supply.
The 12V relay module has 3 pins: Vin goes to the 12V, GND to the negative and data goes to Arduino pin 3. This module has an optocoupler, which protects the Arduino from any interference from the relay.
The Dallas DS18B20 thermometer also has 3 pins (look for the data sheet). All 3 connect to the Arduino: 1 goes to GND pin, 2 to pin 2 and 3 to +5V pin. Use some thin wire, soldering and heat shrinking tube to connect the thermometer to the Arduino. Note that you need to solder a pull up resistor (4.7K) between pin 2 and 3. Position the thermometer in the box with some tape.
Step 2: Programing the Arduino
Now it’s time for some programing. Actually you can just copy my code and upload it to the Arduino
Script by Manuel Schutze – May 2013
DS18B20 thermometer – pin 2
Relay module – pin 3
SD CS – pin 10
SD MOSI – pin 11
SD MISO – pin 12
SD CLK – pin 13
// Include necessary libraries
// Setup vars
long intervalTemp = 1000; // interval between temperature measurements
long intervalSD = 5000; // interval between saving data on the SD card
float tempMin = 42.5; // min temp (< truns on heat)
float tempMax = 43.5; // max temp (> truns off heat)
int rele = 3; // pin where the relay is connected
const int chipSelect = 10; // pin CS (SD card)
Step 3: Saving Data on a SD Card (optional)
One thing I was not sure of was to how to set the min and max temperatures. To get a better ideas what was happening inside the box I attached a SD card module to the Arduino. It uses pins 10-13 for communication and GND and 3.3V pins of the Arduino for power.
Just insert a FAT formatted SD card and the program will create a new TXT file every time you turn it on and save the temperature and relay status every 5 seconds.
If you open the created file in Excel you can make a graph like the one on the image. Looking at the graph you see that it would be probably more interesting to set a narrower temperature range and improve heat transfer from the resistor in order to reduce temperature variations inside the box. Well, I’ll post some update on this later.
Hope you have fun and make some nice yogurts!
Read more: Cheap Arduino Controled Yogurt Maker