1747
0,5
2014-04-13
Йогуртница на основе arduino
Все знают, что йогурт очень полезный продукт, да к тому же и вкусный. Под катом небольшое повествование о том, как я решил сделать йогуртницу, немного фото и скетч.
Блуждая по просторам интернета, наткнулся я на такую интересную вещь, как йогуртница. Жена у меня любит йогурт и частенько его покупает. Почитал профильный сайт, вдохновился. Вдохновила сама мысль о том, что его можно легко приготовить дома, причём он получится даже полезней, чем из магазина. После прочтения нескольких обзоров и сравнений, мы с женой решили купить «Moulinex YG230 YOGURTEO». Но вот незадача – город у нас небольшой и в продаже её мы просто не смогли найти. Хотели уже оформлять под заказ и тут меня осенило.
Что такое йогуртница? Грубо говоря – прибор для поддержания определённой температуры в течении определённого времени. Это же просто, почему бы не сделать самому? Конечно! Как раз в тумбочке уже с полгода лежит без дела arduino. Каюсь, грешен, да простят меня гуру микроконтроллеров, но я далёк от этого. Необходимости и времени изучать программирование микроконтроллеров у меня не было, поэтому, интереса ради, купил ардуинку, поморгал светодиодом, убрал в тумбочку и забыл. И вот, у меня появился шанс объяснить жене «зачем я покупаю весь этот хлам, если он потом всё равно без дела лежит в тумбочке».
Помимо ардуины нужны ещё термодатчик DS18B20 и твердотельное реле. Описывать, как всё это соединять, думаю смысла нет – не раз обсуждалось на хабре и профильных сайтах.
Приведу только сам скетч:
<code class="cpp">#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); } </code>
Температура и время подбирались экспериментальным путём, не одна банка йогурта была испорчена. В итоге сошёлся на том, что надо готовить восемь часов (ставлю на ночь) при температуре 36 градусов. Везде пишут, что температура должна быть 38-40 градусов, но при такой температуре за восемь часов йогурт скисал (расслаивался), а за пять часов (до момента начала расслоения), как мне показалось, йогурт не успевал настаиваться и получался хоть и густым, но не таким вкусным. Кстати, точность DS18B20 меня приятно удивила, сверял с ртутным градусником — разница всего в 0,2-0,3 градуса. Об окончании приготовления оповещает светодиод (это же ардуино, она обязана моргать светодиодом в любом проекте, любой сложности).
Ну а теперь фотографии:
«Я его слепила из того, что было», реле с радиатором для хиленького кипятильничка это конечно сильно. Реле и без радиатора не нагревается, но чтобы не потерять радиатор — поставил реле вместе с ним.
Кипятильник, термодатчик и «миксер» чтобы температура воды была одинаковой в любой точке.
Внешний вид конечно с «Moulinex YG230 YOGURTEO» ни в какое сравнение, зато своими руками, из подручных средств, на коленке.
Жена отобрала кастрюлю, теперь йогуртница выглядит так.
На йогурт беру молоко 3,2% жирности (на 2,5% йогурт выходит жидковат). Закваску можно покупать в аптеке, например Эвиталия, но я предпочитаю Активию или Актимель, йогурт получается плотный и однородный, две чайных ложки на такую баночку вполне достаточно.
Готовый йогурт. Аж ложка стоит! Ну, почти стоит.
Вариант сервировки.
Здоровья вам и вашим близким!
P.S.: Удивите свою любимую девушку, подайте на завтрак самодельный йогурт. Как говорится – лучший подарок, это подарок, сделанный своими руками. Йогурт на подарок, конечно, не тянет, но девушка оценит вашу заботу и внимание.
Источник: habrahabr.ru/post/219033/
Подборка настолок про космос и обзор их механик
Анализ страниц 404-й ошибки топовых магазинов Рунета