Sie sind auf Seite 1von 10

UNIVERSITATEA POLITEHNICA DIN BUCURETI

FACULTATEA DE INGINERIA SISTEMELOR BIOTEHNICE


DEPARATAMENTUL DE SISTEME BIOTEHNICE

SESIUNEA DE COMUNICRI TIINIFICE

" Cheap Arduino Controled Yogurt Maker"

Conductor stiinific:
.L.dr.ing. George IPATE

Studeni:
Emilia MANTARAU, Anul III, ISB
.........................., Anul I, ISB
.........................., Anul I, ISB

MAI 2014

CUPRINS

Sesiunea de comunicri tiinifice - ISB

Mai 2014

1. Introducere
2. Obiectivele lucrarii
3. Conceptul de .....................................
4. Prezentare generala a .......................
5. .............................................................
6. Concluzii
Bibliografie

Cheap Arduino Controled Yogurt Maker


2

Sesiunea de comunicri tiinifice - ISB

Mai 2014

1. Introducere

Picture of Cheap Arduino Controled Yogurt Maker


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 43C (110F), 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.
This is what you'll need:
- Styrofoam box big enough to fit your yogurt jar
- 8 Ohm 55W power resistor (USD 3.80 at aliexpress)
- 12V 6A power supply (got mine from an old laptop)
- Arduino Uno board (USD 11 at dealextreme)
- 5V relay module for Arduino (USD 3.40 at dealextreme)
- GROVE Temperature Sensor (USD 2.50 at dealextreme)
- 4.7k 1/4W resistor
- Heat sink or piece of scrap metal
- Some wiring.

2. Obiectivele lucrrii
Obiectivul general al lucrarii este .................
Im lazy. My impatience often leads me to botch important steps when I make yogurt. So to
get better control over the fermentation process, I made a crockpot thermostat attachment to
precisely control the temperature.
3

You can buy electric yogurt makers, but most of them only incubate; the heating/sterilization
step still has to be done on the stovetop. I wanted to experiment with Arduino microcontroller
programming and electronic circuit design in Fritzing (an open source circuit layout tool that
lets users document and share designs), so why not combine them into something I enjoy
doing?
With my old-school yogurt recipe (adapted from wikihow.com/Make-Yogurt), Id use a
stovetop and a candy thermometer to heat the milk to 185F and cool it to 110F, then use a
warm oven or radiator to ferment it at 100F. That takes a lot of attention, and more containers
than I care to wash later. Even with a commercial yogurt maker, Id probably have to heat the
milk myself, and thats the step Im most likely to botch.
Dont get me wrong its a great recipe as long as youre diligent. But the combination of
boring, time-consuming, temperature-sensitive steps puts my diligence to the test; thats why
the automation of an Arduino-controlled crockpot yogurt maker makes perfect sense to me.

3. ...................................

Build the circuit.

Sesiunea de comunicri tiinifice - ISB

Mai 2014

Picture of 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.

4. Programing the Arduino


5

Picture of Programing the Arduino

Now it's time for some programing.


/*
#include "Bridge.h"
#include "HttpClient.h"
#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
const int colorR = 0;
const int colorG = 255;
const int colorB = 0;
const int TempSens = A0; // Photo resistor input
const int pot = A1; // Potentiometer input
const int relay = 2; // relay output
double temp; //variable that stores the incoming temperature level
int timp;
int Setpoint;
// ThingSpeak
String thingspeak_update_API = "http://api.thingspeak.com/update?";
String thingspeak_write_API_key = "key=1NJB3FLY6XPAJ582";//Insert Your Write API key
here
String thingspeakfieldname1
= "&field1=";
String thingspeakfieldname2
= "&field2=";
void setup() {
6

Sesiunea de comunicri tiinifice - ISB

Mai 2014

pinMode(relay, OUTPUT);
lcd.begin(16, 2);
lcd.setRGB(colorR, colorG, colorB);
Bridge.begin();
Serial.begin (9600);
Console.begin();
}
void loop() {
timp = millis() / 1000;
// temp = ((analogRead(TempSens) / 1024.0) * 5.0) * 100.0; // converteste valoarea in grade
Kelvin
// temp = temp - 273.0; // convert Kelvin to Celsius
Setpoint = (map(analogRead(pot), 0, 1024, 0, 255))*0.39; //Read our setpoint
// Setpoint = 26;
/* Senzor Temperatura GROVE */
temp = readTemp();
if (temp <= Setpoint)
{
digitalWrite(relay, HIGH); //Write out the output from the PID loop to our relay pin
}
else
{
digitalWrite(relay, LOW);
}
Serial.print(" timp ");
Serial.print(timp);
Serial.print(" r ");
Serial.print(Setpoint);
Serial.print(" Temp ");
Serial.print(temp);
Serial.print("\n");
lcd.setCursor(0, 0);
lcd.print(temp);
lcd.print(" oC ");
lcd.print(Setpoint);
lcd.print(" ref oC ");
lcd.setCursor(0, 1);
lcd.print(timp); // print the number of seconds since reset:
lcd.print(" s ");
// Console.print(temp);
delay(1000);

postToThinspeak();
Serial.flush();
}
float readTemp()
{
const int B = 3975;
int sensorValue = analogRead( TempSens );
float Rsensor;
Rsensor = (float)(1023 - sensorValue) * 10000 / sensorValue;
temp = 1 / (log(Rsensor / 10000) / B + 1 / 298.15) - 273.15;
return temp;
}
void postToThinspeak() {
HttpClient client;
String request_string = thingspeak_update_API + thingspeak_write_API_key +
thingspeakfieldname1 + temp + thingspeakfieldname2 + Setpoint;
// Make a HTTP request:
client.get(request_string);
Console.print(timp);
Console.print ("\t timp");
Console.print(temp);
Console.print("\t oC ");
Console.print(Setpoint);
Console.print("\t ref oC ");
delay(150);
}
/* Code ends here! */
Everything is commented. Just set the min and max temperature and upload it to your Arduino
board.
This code prints the current temperature and relay status on the serial port every 1 second, sou
you have an idea what is happening inside the box!
Note that the code also calls for an SD card to save the data. This is optional and commented
on the next step.

5. Saving data
Step 3: Saving data

Sesiunea de comunicri tiinifice - ISB

Mai 2014

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!

6. Concluzii
.............................................................

Bibliografie selectiv
1. George Ipate. APTB. Note de curs , 2013 - 2014.

2.
3.
4.
5.
6.

http://makezine.com/projects/yobot-arduino-yogurt-maker/
http://www.instructables.com/id/Cheap-Arduino-Controled-Yogurt-Maker
.............................
...............................
..........................

10

Das könnte Ihnen auch gefallen