Все знают, что йогурт очень полезный продукт, да к тому же и вкусный. Под катом небольшое повествование о том, как я решил сделать йогуртницу, немного фото и скетч.
Блуждая по просторам интернета, наткнулся я на такую интересную вещь, как йогуртница. Жена у меня любит йогурт и частенько его покупает. Почитал профильный сайт, вдохновился. Вдохновила сама мысль о том, что его можно легко приготовить дома, причём он получится даже полезней, чем из магазина. После прочтения нескольких обзоров и сравнений, мы с женой решили купить «Moulinex YG230 YOGURTEO». Но вот незадача – город у нас небольшой и в продаже её мы просто не смогли найти. Хотели уже оформлять под заказ и тут меня осенило.
Что такое йогуртница? Грубо говоря – прибор для поддержания определённой температуры в течении определённого времени. Это же просто, почему бы не сделать самому? Конечно! Как раз в тумбочке уже с полгода лежит без дела arduino. Каюсь, грешен, да простят меня гуру микроконтроллеров, но я далёк от этого. Необходимости и времени изучать программирование микроконтроллеров у меня не было, поэтому, интереса ради, купил ардуинку, поморгал светодиодом, убрал в тумбочку и забыл. И вот, у меня появился шанс объяснить жене «зачем я покупаю весь этот хлам, если он потом всё равно без дела лежит в тумбочке».
Помимо ардуины нужны ещё термодатчик DS18B20 и твердотельное реле. Описывать, как всё это соединять, думаю смысла нет – не раз обсуждалось на хабре и профильных сайтах.
#include <OneWire.h>
OneWire ds(10);
byte addr[8];
int active = true, ssrPin = 4, ledPin = 5;
float millisecondsPerGradus, currentTemperature, cookingTemperature = 36.0;
unsigned long totalWorkTime = 28800000; // 8 * 60 * 60 * 1000
void setup(void) {
Serial.begin(9600);
pinMode(ssrPin,OUTPUT);
pinMode(ledPin,OUTPUT);
while (true) {
if (!ds.search(addr)) ds.reset_search();
else break;
delay(250);
}
//предварительный прогрев
digitalWrite(ssrPin, HIGH);
delay(10000);
digitalWrite(ssrPin, LOW);
delay(1000);
//замер, за сколько миллисекунд температура воды изменяется на один градус
thermometer();
float startTemperature = currentTemperature;
digitalWrite(ssrPin, HIGH);
delay(30000);
digitalWrite(ssrPin, LOW);
delay(1000);
thermometer();
millisecondsPerGradus = 1000.0 / ((currentTemperature - startTemperature) / 30.0);
}
float thermometer(void) {
byte data[9];
while (true) {
ds.reset();
ds.select(addr);
ds.write(0x44,1);
delay(1000);
ds.reset();
ds.select(addr);
ds.write(0xBE);
for (byte i = 0; i < 9; i++) data[i] = ds.read();
currentTemperature = (float)((data[1] << 8) | data[0]) / 16.0;
if (currentTemperature != 85.00) break;
}
//Serial.println(currentTemperature);
}
void loop(void) {
if (!active) {
delay(5000);
return;
}
if (millis() > totalWorkTime) {
//завершаем подогрев и оповещаем светодиодом
digitalWrite(ledPin, HIGH);
active = false;
return;
}
thermometer();
unsigned long delayTime;
if (currentTemperature >= cookingTemperature) {
delay(1000);
return;
}
else if (currentTemperature > cookingTemperature - 2.0){
//если температура близка к необходимой, замедляем процесс подогрева
delayTime = millisecondsPerGradus * ((cookingTemperature - currentTemperature)/3.0);
}
else {
//иначе подогреваем на градус
delayTime = millisecondsPerGradus;
}
digitalWrite(ssrPin, HIGH);
delay(delayTime);
digitalWrite(ssrPin, LOW);
delay(1000);
}
Температура и время подбирались экспериментальным путём, не одна банка йогурта была испорчена. В итоге сошёлся на том, что надо готовить восемь часов (ставлю на ночь) при температуре 36 градусов. Везде пишут, что температура должна быть 38-40 градусов, но при такой температуре за восемь часов йогурт скисал (расслаивался), а за пять часов (до момента начала расслоения), как мне показалось, йогурт не успевал настаиваться и получался хоть и густым, но не таким вкусным. Кстати, точность DS18B20 меня приятно удивила, сверял с ртутным градусником — разница всего в 0,2-0,3 градуса. Об окончании приготовления оповещает светодиод (это же ардуино, она обязана моргать светодиодом в любом проекте, любой сложности).
«Я его слепила из того, что было», реле с радиатором для хиленького кипятильничка это конечно сильно. Реле и без радиатора не нагревается, но чтобы не потерять радиатор — поставил реле вместе с ним.
Кипятильник, термодатчик и «миксер» чтобы температура воды была одинаковой в любой точке.
Внешний вид конечно с «Moulinex YG230 YOGURTEO» ни в какое сравнение, зато своими руками, из подручных средств, на коленке.
На йогурт беру молоко 3,2% жирности (на 2,5% йогурт выходит жидковат). Закваску можно покупать в аптеке, например Эвиталия, но я предпочитаю Активию или Актимель, йогурт получается плотный и однородный, две чайных ложки на такую баночку вполне достаточно.
Готовый йогурт. Аж ложка стоит! Ну, почти стоит.
Вариант сервировки.
Здоровья вам и вашим близким!
P.S.: Удивите свою любимую девушку, подайте на завтрак самодельный йогурт. Как говорится – лучший подарок, это подарок, сделанный своими руками. Йогурт на подарок, конечно, не тянет, но девушка оценит вашу заботу и внимание.
Автор: Shrim