
Все знают, что йогурт очень полезный продукт, да к тому же и вкусный. Под катом небольшое повествование о том, как я решил сделать йогуртницу, немного фото и скетч.
Блуждая по просторам интернета, наткнулся я на такую интересную вещь, как йогуртница. Жена у меня любит йогурт и частенько его покупает. Почитал профильный сайт, вдохновился. Вдохновила сама мысль о том, что его можно легко приготовить дома, причём он получится даже полезней, чем из магазина. После прочтения нескольких обзоров и сравнений, мы с женой решили купить «Moulinex YG230 YOGURTEO». Но вот незадача – город у нас небольшой и в продаже её мы просто не смогли найти. Хотели уже оформлять под заказ и тут меня осенило.
Что такое йогуртница? Грубо говоря – прибор для поддержания определённой температуры в течении определённого времени. Это же просто, почему бы не сделать самому? Конечно! Как раз в тумбочке уже с полгода лежит без дела arduino. Каюсь, грешен, да простят меня гуру микроконтроллеров, но я далёк от этого. Необходимости и времени изучать программирование микроконтроллеров у меня не было, поэтому, интереса ради, купил ардуинку, поморгал светодиодом, убрал в тумбочку и забыл. И вот, у меня появился шанс объяснить жене «зачем я покупаю весь этот хлам, если он потом всё равно без дела лежит в тумбочке».
Помимо ардуины нужны ещё термодатчик DS18B20 и твердотельное реле. Описывать, как всё это соединять, думаю смысла нет – не раз обсуждалось на хабре и профильных сайтах.
Приведу только сам скетч:
#include <OneWire.h>
OneWire ds(10);
int active = true, ssrState = LOW, ssrPin = 4, ledPin = 5;
byte data[9], addr[8];
float temperature;
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);
}
}
void thermometer(void) {
if (ssrState == HIGH) {
digitalWrite(ssrPin, LOW);
delay(100);
}
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();
temperature = (float)((data[1] << 8) | data[0]) / 16.0;
if (temperature != 85.00) break;
}
if (ssrState == HIGH) {
digitalWrite(ssrPin, HIGH);
}
//Serial.println(temperature);
}
void loop(void) {
if (!active) {
delay(5000);
return;
}
if (millis() > 28800000) {
ssrState = LOW;
digitalWrite(ssrPin, ssrState);
digitalWrite(ledPin, HIGH);
active = false;
return;
}
thermometer();
if (temperature < 33) {
if (ssrState != HIGH) {
ssrState = HIGH;
digitalWrite(ssrPin, ssrState);
}
delay(5000);
}
else if (temperature < 34) {
ssrState = HIGH;
digitalWrite(ssrPin, ssrState);
delay(1000);
ssrState = LOW;
digitalWrite(ssrPin, ssrState);
delay(1000);
}
else if (temperature < 35) {
ssrState = HIGH;
digitalWrite(ssrPin, ssrState);
delay(750);
ssrState = LOW;
digitalWrite(ssrPin, ssrState);
delay(1500);
}
else if (temperature < 35.5) {
ssrState = HIGH;
digitalWrite(ssrPin, ssrState);
delay(500);
ssrState = LOW;
digitalWrite(ssrPin, ssrState);
delay(2000);
}
else if (temperature < 36) {
ssrState = HIGH;
digitalWrite(ssrPin, ssrState);
delay(250);
ssrState = LOW;
digitalWrite(ssrPin, ssrState);
delay(2500);
}
else {
if (ssrState != LOW) {
ssrState = LOW;
digitalWrite(ssrPin, ssrState);
}
}
}
Температура и время подбирались экспериментальным путём, не одна банка йогурта была испорчена. В итоге сошёлся на том, что надо готовить восемь часов (ставлю на ночь) при температуре 36 градусов. Причём точность DS18B20 меня приятно удивила, сверял с ртутным градусником — разница всего в 0,2-0,3 градуса. Об окончании приготовления оповещает светодиод (это же ардуино, она обязана моргать светодиодом в любом проекте, любой сложности).
Ну а теперь фотографии:
«Я его слепила из того, что было», реле с радиатором для хиленького кипятильничка это конечно сильно. Реле и без радиатора не нагревается, но чтобы не потерять радиатор — поставил реле вместе с ним.

Кипятильник, термодатчик и «миксер» чтобы температура воды была одинаковой в любой точке.

Внешний вид конечно с «Moulinex YG230 YOGURTEO» ни в какое сравнение, зато своими руками, из подручных средств, на коленке.

На йогурт беру молоко 3,2% жирности (на 2,5% йогурт выходит жидковат). Закваску можно покупать в аптеке, но я предпочитаю активию или актимель, две чайных ложки на такую баночку вполне достаточно.


Готовый йогурт. Аж ложка стоит! Ну, почти стоит.

Вариант сервировки.

«Я его слепила из того, что было», реле с радиатором для хиленького кипятильничка это конечно сильно. Реле и без радиатора не нагревается, но чтобы не потерять радиатор — поставил реле вместе с ним.

Кипятильник, термодатчик и «миксер» чтобы температура воды была одинаковой в любой точке.

Внешний вид конечно с «Moulinex YG230 YOGURTEO» ни в какое сравнение, зато своими руками, из подручных средств, на коленке.

На йогурт беру молоко 3,2% жирности (на 2,5% йогурт выходит жидковат). Закваску можно покупать в аптеке, но я предпочитаю активию или актимель, две чайных ложки на такую баночку вполне достаточно.


Готовый йогурт. Аж ложка стоит! Ну, почти стоит.

Вариант сервировки.
P.S.: Удивите свою любимую девушку, подайте на завтрак самодельный йогурт. Как говорится – лучший подарок, это подарок, сделанный своими руками. Йогурт на подарок, конечно, не тянет, но девушка оценит вашу заботу и внимание.