A yogurt controller.About a year ago, a friend mentioned how she made yogurt in a Crock-Pot slow cooker. It sounded impressive, and a good way to save on the cost of yogurt. We also figured that we could customize our yogurt recipe and eventually make something that would rival the taste of store-bought yogurt.

After researching a number of ways to make yogurt in a slow cooker, it all essentially came down to heating some milk up to about ~180 degrees fahrenheit, then cooling it down and holding it at approximately 110 degrees for six to eight hours. Since I have some experience working with Arduino microcontrollers, I figured this was a natural project to take to the next level. I also had some experience with PID control theory, so I knew I could write some software that would control a slow cooker and hit a desired set point with minimal error.

After some further research, I found Aaron Stubbendieck’s web site “over-engineered.” On his site, he decided to use PID control theory to control a Crock-Pot so he could try sous vide cooking. After looking over his site, I was very impressed. Not only did he use an Arduino Pro Mini for his controller, but he also fabricated some circuit boards and used laser-cut acrylic for an enclosure. My project suddenly become even more attractive since I could learn to make my own circuit boards and enclosures!

I ended up using most of Aaron’s Arduino code, but revised some of his programming (so I could better understand it – it was a little complex for my skill level). I ended up adding a “Yogurt” mode and made it the default mode so that my controller would start on this mode when first powered on. I also added a buzzer to allow notifications to the user. You can download my code here.
A circuit board.
To make the circuit boards, I started with the Eagle files that Aaron provided, and modified them to match the circuit I wanted. Eagle is a free printed circuit board (PCB) design software package, and is fairly easy to use. I have attached my files, so you can download the schematics and layouts.

• Main circuit board schematic
• Main circuit board layout
• Button circuit board schematic
• Button circuit board layout

To make the circuit boards, I used BatchPCB, a circuit board aggregation service which collects a number of individual boards, groups them together, then sends them out to be made. The main circuit board cost $31, and the button board cost $14.43 to make. They did take several weeks to arrive, but I also received two of each board even though I had ordered only one of each. The work was flawless, including the printing on the boards. I was very impressed.
A half assembled yogurt controller.
Aaron had used Adobe Illustrator to design his enclosure. The service he used to laser cut the acrylic was Ponoko. I also used Illustrator (CS5.5) and waited until Ponoko had a sale. I submitted my box design, and received my laser cut acrylic within a few weeks. I believe the cost was about $40, which included the cost of the acrylic. The acrylic arrived with a brown paper attached to it that you need to peel off. This protects the acrylic from scratches while you are working with it. I highly recommend the acrylic that has a matte finish on one side (the outside of my project) since it doesn’t show fingerprints. Ponoko did a fantastic job, and I would highly recommend them for future projects.

A file showing the laser cutting design.
The pieces are easy to pop out from the acrylic sheet, and I glued them into place with some acrylic cement. Of course, I had to test fit everything first to make sure my measurements were accurate when designing the enclosure.

For the temperature probe, I ended up using an audio jack and some very flexible audio cable. I put the one-wire temperature sensor in a thermowell from Brewer’s Hardware. They were also easy to work with, I just emailed them my project requirements and they helped me select the appropriate sized thermowell.

After running into a few problems making the circuit work, I found out that resistor R4 on the main circuit board should be ~240 ohms, not 1K. When I had it set at 1K ohms, there was insufficient power to drive the optoisolator LED. Thus, the triac never turned on and I kept getting a very strange output.A piece of laser cut acrylic.

One half assembled laser cut piece of acrylic.

My yogurt controller is set to heat the Crock-Pot slow cooker up to 178 degrees (which is as hot as my slow cooker goes in two to three hours), then it sounds an alert tone, and cools the yogurt down to 110 degrees. It holds the yogurt at that temperature until you unplug the controller. Since I also left in Aaron’s code for sous vide cooking, I can use this controller for other cooking as well. Never before has a Crock-Pot been so versatile!

Many thanks to Aaron for his work on this project. His web site taught me quite a bit and allowed me to make my own circuit boards and enclosure. After all, most of the fun in a project like this is learning to do something new. Now if you will excuse me, I’m off to eat some yogurt!
An assembled yogurt controller.
This is the final yogurt controller in operation.



15 Responses

  1. Awesome looking device you built there!
    How did you secure the button-board and the lcd board?
    I would have assumed it was necessary to screw them onto the top acrylic.

    • Yes, I had a hard time mounting this to the acrylic. I ended up purchasing some acrylic cement from Amazon.com and it worked moderately well. A hard press on the board will cause it to fall off, so I would recommend designing in some mounting holes. I also glued the acrylic box together. If I had a chance to do this over, I would have used screws for the box as well. Then I could have taken it apart and made modifications to the software as new ideas came along.

  2. Thank you for the reply. Ok, I guess there is no avoiding screws to secure the lcd and buttons 🙁

    I am building a similar arduino based sous vide, although using the pro micro with built-in microUSB. This way I can add a USB port to the enclosure.

    I think I need to find a way to assemble the case with screws as you suggest… Maybe something similar to the sammichSID case http://www.midibox.org/dokuwiki/doku.php?id=sammichsid

    • Sorry, I do not have any more to sell. All of the information on how to make one was posted to this site, so if you are adventurous, you should be able to make one of your own.

    • Sure, I simply soldered a Dallas 1-Wire DS1820 temperature sensor to some audio cable that I purchased from a local electronics supplier. I picked up about four feet or so of the cable, and it was flexible with a rubber sleeve over the conductors. I believe it was 1/4″ cable for microphones, or something similar. I inserted the temperature sensor, after it was soldered to the wires, into the thermowell from Brewer’s Hardware. I e-mailed them to get some help selecting the correct probe, and explained it was a TO-92 package. They responded:

      All of these items are designed for building temp sensors around to92 devices: https://www.brewershardware.com/Temperature-Probe-Ends/ They all have an ID that will fit. As far as connectors go, that’s all kind of up to you in how you’re going to get your device connected to whatever is reading it.

      Once I inserted the probe into the thermowell, I pulled some of the rubber wire insulation over the end which held the thermowell in place using friction. It works well.

  3. Just a note to say, we finally settled on a spa temp thermostat and thermostatic probe to cycle a crock pot, to control the water bath that heats the yogurt. I forget what the exact setpoint we wanted to make the yogurt, but the deadband was not more than 1.5degF. Normally spas run at 103degF, we very little deadband. I’d leave a URL of the device, but not sure the forum likes to have URLs in the posts.

    • Sounds like an interesting approach! It is probably overkill to use a PID controller, but it is fun to take pride in knowing your yogurt temperature is being controlled very accurately. I haven’t noticed much difference in the yogurt taste, but it does certainly make the creation process much easier.

  4. Great project, I’m starting in this world and I want to start by replicating this one, I have the same components (exept for the triac I have the Q6025L6) and I already checked all the connection many times, but the controller starts (in yogurth mode) the status led goes on and the crock pot starts, but after 15 seconds (aprox.) the status led goes off and also the crock pot, and thats it, the crock pot remains off alll the time….

    I don’t know what is the problem, can you please confirm me the correct connection of the DS1820 sensor, the PCB has two ports but the sensor has three outputs, I’m not sure about his connection.

    Thank you so much.

    (Greetings from Colombia)

    • It has been quite a while since I worked on this, and I can no longer recall all of the connections. However, your problem sounds like a software issue rather than a hardware issue. I’d suggest adding some code to your software to make sure it is doing what you are expecting it to do at each point in the program.

  5. How do you avoid killing the yoghurt culture when you heat to 180 degrees? Or do you add the culture in after it is heating to only 110?


    • I started with a recipe that I found online. It would be fairly easy to customize the temperature set points when you program your Arduino device. And as for whether the yoghurt culture is killed off during the heating, I don’t know. Somehow it just works!

  6. If you don’t mind checking, it’s possible that something has gone wonky with the Eagle Board file for the controller board. I’m getting crashes from Eagle 8.7.0 when trying to load it, and OSHPark also seems to think there’s something wrong.

    Looking at the schematic, it’s easy enough for anyone to start with Aaron’s Eagle files and add the buzzer, but you’ve got such a nice package here, it’s a shame to see part of it not working.

    • It is possible I was using an older version of Eagle. I no longer have this software installed, so I can’t check the file. It shouldn’t be too hard to recreate, so I would encourage you to try to design it yourself. Then you can improve it further!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Contact Us
Send us an email

Note: All fields are required, except for the third question. If you do not know the answer, you can refresh the page or just leave it blank and the form will submit.


Email Address:



By submitting this form, you agree that you either made up a fake name and email address, or that you give me consent to store your name and email address for the sole purpose of responding to your submission. If you want to use a fake email address, grab one from mailinator.com or a similar site.