Precision Fermentation: Arduino-Controlled Crock Pot Yogurt Maker
A homemade thermostat attachment for a crock pot (or other electric heating device). It can be used to precisely control the temperature of the crock pot for things like yogurt fermentation.
- Making yogurt is fun. It is also way cheaper than buying it.
- You can make yogurt on the stove or in an oven, however it is fairly temperature-sensitive.
- I am lazy. I don’t like waiting around for the milk to sterilize; I usually end up burning it.
- I wanted to experiment with Arduino microcontroller programming (and Fritzing) to give myself a high degree of control over my fermentation process.
- Electric yogurt makers already exist.
- True, but many yogurt makers only incubate; the heating/sterilization has to be done by you on the stovetop.
- You can also buy crock pots with thermostats.
- I know, wanna buy me one?
- You can buy yogurt in the store.
- Yup. This is something I make for fun anyway. I figure I may as well combine it with other fun things I like.
- This is boring.
- Mmm hmm. Maybe this will entertain you.
Here’s the basic yogurt recipe (and the detailed version):
- Mix 1/2 gallon milk with 1 package of dry powdered milk. (This is optional, but it adds nutritional value and makes the yogurt thicker).
- Heat the milk to 185°F (85°C). This kills off microbes to make way for our yogurt cultures, and denatures enzymes in the milk that may interfere with yogurt culture growth.
- Cool the milk to 110°F (43°C). Add 2 tablespoons of already-made yogurt with active cultures, or yogurt starter.
- In a sealed container, ferment the yogurt for 7+ hours by keeping it as close to 100°F (38°C) as possible.
Doing things the old-fashioned way, I’d be using a stovetop and candy thermometer for steps 2 and 3, then a warm oven or a radiator for step 4. That takes a lot of attention, and uses more containers than I care to wash later. Many commercially-sold yogurt makers still require you to perform step 2 yourself.
With the Arduino setup, I use a few canning jars in a water bath inside the crock pot to ensure even heating. I submerge the temperature sensor in the water. A voltage divider circuit is used to indirectly measure the resistance of the thermistor. In the code, I make use of the Steinhart-Hart Thermistor Equation to translate the thermistor’s resistance into temperature. This gives a pretty good idea of the temperature inside the crock pot.
In addition to the thermistor’s resistance at a given time, the Steinhart-Hart equation needs to be fed three coefficients which can be calculated from information on the manufacturer’s data sheet based on predetermined resistances at different temperatures. Since we’ll be measuring a range between 100°F (38°C) and 185°F (85°C), I used resistance values measured at 86°F (30°C), 140°F (60°C) and 194°F (90°C) to calculate my coefficients. Here’s a simple calculator to calculate your coefficients from a given temp/resistance range, and here’s a more in-depth explanation of the math involved.
- (1) Arduino Duemilanove USB-programmable microcontroller @ Sparkfun
- (1) Arduino ProtoShield Kit @ Sparkfun
- (1) Mini Breadboard @ Sparkfun
- (1) Relay Control PCB @ Sparkfun
- (1) Relay SPST-NO Sealed – 30A @ Sparkfun
- (1) Piezo buzzer or small speaker @ Sparkfun
- (3) Resistor 1k Ohm 1/4 Watt @ Jameco
- (1) Resistor 10k Ohm 1/4 Watt @ Jameco
- (1) Signal Diode (eg, 1N4148) @ Jameco
- (1) NPN Transistor (eg, 2N3904) @ Jameco
- (1) LED @ Jameco
- (1) 10K Thermistor @ Jameco
- (1) Moisture-Seal Heat-Shrink End Cap @ McMaster-Carr
- (6″-12″) Moisture-Seal Heat-Shrink Tubing @ McMaster-Carr
- (3″-6″) 1/4″ Inside Diameter Aluminum Tube @ McMaster-Carr
- (1) 120V AC Female Connector @ McMaster-Carr
- (1) Heavy-gauge 3-prong extension cord or power cable
- (1) Crock pot
- (2-3) Glass canning jars & lids (uniform size is ideal)
- You’ll also need some lead wire, a soldering iron and a multimeter.
Since the temperature readings will be taken in the water bath, we need a way to keep the thermistor from getting wet. Here’s a good reference for constructing a waterproof sensor.
I constructed my waterproof thermistor by first soldering the thermistor onto two long (~3′) lead wires, then wrapping the exposed wires with heat-shrink tubing. I slid a short length of aluminum tubing over the sensor, then used moisture-resistant shrink tubing to seal both ends. You could also use epoxy.
Sparkfun.com has a great tutorial for constructing a 120V relay outlet specifically for this relay board. I recommend reading over their instructions.
Yogurt Maker Relay Assembly.
I deviated slightly by using a female connector instead of a GFCI outlet. Use the extension cord’s male end with about 12″-14″ of cord attached. Expose the three extension cord wires in the middle of the cord’s length. Cut the black wire and solder the ends to the relay board’s Load 1 and Load 2 connections. This is where the line voltage toggles on and off.
The three wires on the end of the cord attach to the female connector. The extension cord’s green/blue wire attaches to the green screw terminal. This is the ground wire. The black and white wires attach to the other two screw terminals. Use a connectivity tester to make sure that the larger slot receptacle is connected to the larger prong on the plug.
Be careful when working with line voltage, as it can kill you. The solder points on the relay are basically live exposed wires, so use a project enclosure of some sort to keep the relay from accidentally being touched. I used a discarded plastic petroleum jelly container.
Diagrams and schematics for the Arduino-controlled crockpot yogurt maker are shown below. If you haven’t yet, I’d also recommend checking out Fritzing, an open-source, cross-platform development a tool that allows users to document and share their electronics prototypes.
For more detail: Precision Fermentation: Arduino-Controlled Crock Pot Yogurt Maker
JLCPCB – Prototype 10 PCBs for $2 (For Any Color)
China’s Largest PCB Prototype Enterprise, 600,000+ Customers & 10,000+ Online Orders Daily
How to Get PCB Cash Coupon from JLCPCB: https://bit.ly/2GMCH9w