Search
Write a publication
Pull to refresh

Йогуртница на основе arduino

картинка для привлечения внимания
Все знают, что йогурт очень полезный продукт, да к тому же и вкусный. Под катом небольшое повествование о том, как я решил сделать йогуртницу, немного фото и скетч.

Блуждая по просторам интернета, наткнулся я на такую интересную вещь, как йогуртница. Жена у меня любит йогурт и частенько его покупает. Почитал профильный сайт, вдохновился. Вдохновила сама мысль о том, что его можно легко приготовить дома, причём он получится даже полезней, чем из магазина. После прочтения нескольких обзоров и сравнений, мы с женой решили купить «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% йогурт выходит жидковат). Закваску можно покупать в аптеке, но я предпочитаю активию или актимель, две чайных ложки на такую баночку вполне достаточно.



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

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

P.S.: Удивите свою любимую девушку, подайте на завтрак самодельный йогурт. Как говорится – лучший подарок, это подарок, сделанный своими руками. Йогурт на подарок, конечно, не тянет, но девушка оценит вашу заботу и внимание.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.