Автоматическая пивоварня своими руками пошаговая инструкция

Домашняя пивоварня из кастрюли своими руками. Пошаговая инструкция

Составил для вас подробную инструкцию, которая поможет собрать простую и доступную пивоварню (заторный бак), с помощью которой, можно сварить невероятно вкусное пиво у себя дома. Некоторые думают, что процесс пивоварения очень сложен и сварить пиво дома — практически невозможно. На самом деле это не так, всё гораздо проще чем вам кажется!

Для изготовления заторного бака, нам понадобится:

  • Эмалированная кастрюля, объём может быть любой, рекомендую брать 30 литровую. В моём случае кастрюля на 40 литров и покупал я её за 2400 рублей. Можно приобрести и из нержавейки, но в таком случае цена будет в несколько раз дороже, но, зато она долговечней и надёжней, если есть лишние деньги — то пожалуйста!

  • Сгон из нержавейки, диаметр 1/2 дюйма. К нему так-же нужны две резьбовые шайбы. Ещё понадобится шаровый кран, соответственно тоже на 1/2 дюйма.

  • Заторный бак обязательно должен быть утеплён, для этого я буду использовать утеплитель»пенофол» с блестящим слоем, чем он будет толще — тем лучше!

  • Также, обязательно понадобится фильтр-система, её можно изготовить из гибкой подводки для газа сильфонного типа, желательно чтобы она была из нержавейки, хотя, обычная тоже подойдёт!

  • Такая же гибкая подводка понадобится для изготовления охлаждающей системы (чиллера) без которой не обойтись. Кстати можно и без него, например — охлаждать заторный бак, помещая его в ёмкость с холодной водой. Как изготовить чиллер, можно прочитать в этой статье: Простой, но очень мощный чиллер для домашней пивоварни

Процесс изготовления заторного бака

Итак, для начала, нам нужно просверлить отверстие в нижней части кастрюли, чем ближе к дну — тем лучше. Для этого идеально подойдёт конусное свело, но у меня такого не было поэтому, сверлил обычными, начиная с мелкого — заканчивая самым крупным, постепенно рассверливая отверстие. Диаметр его должен быть немного больше, диаметра сгона, резьба должна плотно — но без труда проходить в отверстие!

Теперь необходимо установить сгон, для этого накручиваем сначала одну гайку и ставим прокладку или, подматываем фторопластовой лентой. Сгон продеваем в отверстие, подматываем ещё ленты (или ставим прокладку) и фиксируем второй гайкой.

Фильтр-система

Данная система необходима для фильтрации сусла после окончания процесса затирания. Делается она очень просто — нам понадобится, гибкая подводка, о которой я говорил выше и, бронзовый тройник на 1/2 дюйма.

Длину шланга, нужно подобрать по внутреннему диаметру кастрюли. Ножовкой по металлу, необходимо сделать частые прорези, примерно через 1 сантиметр.

Затем накрутить шланг на тройник, и соединить его с сгоном в кастрюле.

Но я, всё же, рекомендую пойти более правильным путём и приобрести самую дешевую фильтр-базуку. Я поступил именно так, стоила она всего 450 рублей — это половина стоимости шланга и тройника. Тем более вы всё ровно будете заказывать солод в интернете, там же, можно купить и фильтр-базуку.

Устанавливается она очень просто, намного проще чем шланг с тройником и кстати, изготовлена из нержавейки.

Утепления заторного бака

О том, какой нужен утеплитель, я говорил выше. Нам необходимо утеплить кастрюлю по кругу, дно и крышку. Тут всё просто — вырезаем утеплитель по форме кастрюли, крышки и дна, ни чего сложного. Фиксировать его можно, обычным скотчем.

Вот такой заторный бак получился! И поверьте — это всё, что нужно для варки вкусного домашнего пива.

Теперь осталось сварить это самое пиво, для этого, рекомендую прочитать статью с пошаговой инструкцией, которую можно найти на моём канале (скоро появится). На этом всё, надеюсь информация была полезной, пожалуйста, не забывайте статьёй в социальных сетях, буду очень благодарен!

Источник

Часть 2. Делаем сусловарочный котел

В прошлой статье я писал об отсутствие необходимости покупки дорогих сусловарочных котлов, почувствовать себя настоящим пивоваром можно и без него. Сегодня я бы хотел предоставить на ваш суд свою идею (хотя, может быть, кто-то ее уже давно притворил в жизнь), как можно изготовить полноценную мини пивоварню своими руками. Я не претендую на лучшую идею, и более того уверен, что есть более грамотные варианты, дело в том, что на данном этапе для меня этого вполне достаточно. Решение, которое я предлагаю, имеет свои плюсы и минусы о которых я расскажу позже, но основной плюс в том, что можно с минимальными затратами и усилиями его реализовать. А в условиях текущего кризиса это очень актуально))).

Делаем пивоварню для дома своими руками

Для изготовления пивоварни нам понадобится все тот же набор, о котором я писал ранее и ряд дополнительных элементов (если бюджет на любимое занятие ограничен, как у меня, то я приведу ссылки на алиэкспресс, так можно немного сэкономить):

  • ТЭН – для нагрева затора желательно из нержи (2 кВт на Али, 1кВт на Али);
  • Встраиваемый термометр – на всякий случай, если вдруг терморегулятор будет врать;
  • Терморегулятор – для контроля температуры нагрева, терморегулятор можно приобрести на aliexpress, цена вопроса 500 рублей.
  • Датчик температуры, который передает информацию на контроллер с резьбой (в комплекте с терморегулятором идет без резьбы — ссылка на али)

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

Покопавшись немного в интернете, я решил автоматизировать процесс затирки и варки, с пригоранием солода я решил не бороться, поскольку помешивание во время затирки сказывается только положительно на будущем пиве (затор становится более плотным). К тому же фальшдно оберегает соприкосновение солода с нагревательным элементом.

Я не буду подробно описывать процесс, думаю, вам и так все будет понятно, если у вас появятся вопросы — оставляйте их в комментариях.

Если вы уже обзавелись набором, о котором я писал ранее, то вам придется его немного модифицировать:

1) Необходимо приобрести нагревательный элемент закрытого типа (такие используются в современных электрочайниках) мощностью не более 1 кВт, лучше всего ктловатный. ТЭН необходимо врезать выше нашего крана с фильтр-системой и ниже фальшдна. Обязательно используем термостойкие уплотнители, чтобы нигде ничего не подтекало. Подключение (провода) выводим наружу.

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

3) Сам термоэлемент мы также врежем в емкость и уплотним, сделать это лучше где-нибудь сбоку, чтобы нам ничего не мешало. Термоэлемент на фото это серебристый цилиндр, от которого отходят черные провода. Я отдельно заказал термоэлемент с резьбой, чтобы его можно было вкрутить в котел.

4) ТЭН запитываем через терморегулятор, при покупке терморягулятора убедитесь, чтобы он работал в диапазоне необходимых нам температур, был рассчитан на мощность ТЭНа и 220В.

Теперь чуть подробнее о работе всей системы и терморегуляторе:

Нагреваться затор будет с помощью врезанного ТЭНа, при этом текущую температуру затора будет передавать врезанный термоэлемент. Контроллер, который находится в терморегуляторе будет анализировать с заданной, то есть та, которую мы выставим (показывается на дисплее), далее контроллер принимает решение либо отключить ТЭН, либо включить его. Нам же остается засекать время для текущей температурной паузы и периодически помешивать затор, чтобы избежать пригорания. По истечению времени выставить температуру на терморегуляторе для следующей температурной паузы.

Терморегулятор, который изображен у меня на фотографиях, по отзывам в интернете, несмотря на то, что китайского производства довольно хорошо себя зарекомендовал. Работает от сети 220В, ток выходного реле 2А, максимальная мощность 2 кВт (расчетная), температурный диапазон 0-100 гр. C. Я не рискнул покупать 2-х киловатный ТЭН, а купил 1 кВт.

Заказать такой термоконтроллер и термометр можно на алиэкспрессе, цена вопроса — 600 рублей, ТЭН можно купить в любом магазине по ремонту водонагревателей, все остальное в магазине товаров для дома.

Ничего сложного в изготовлении автоматической домашней пивоварни своими руками нет. Фотоотчет о проделанной работе я выложу чуть позже. А также дам свой отзыв о работе всей системы и терморегулятора, если вдруг с ним будут проблемы, у меня есть запасной вариант.

Если у Вас есть интересный материал о том ,как можно сделать домашнюю пивоварню своими руками, или другие интересные решения, то свяжитесь со мной, я с удовольствием их опубликую.

Источник

Автоматическая пивоварня своими руками пошаговая

Модератор форума: sibep, Alexpnz

В прошлой статье я писал об отсутствие необходимости покупки дорогих сусловарочных котлов, почувствовать себя настоящим пивоваром можно и без него. Сегодня я бы хотел предоставить на ваш суд свою идею (хотя, может быть, кто-то ее уже давно притворил в жизнь), как можно изготовить полноценную мини пивоварню своими руками. Я не претендую на лучшую идею, и более того уверен, что есть более грамотные варианты, дело в том, что на данном этапе для меня этого вполне достаточно. Решение, которое я предлагаю, имеет свои плюсы и минусы о которых я расскажу позже, но основной плюс в том, что можно с минимальными затратами и усилиями его реализовать. А в условиях текущего кризиса это очень актуально))).

Делаем пивоварню для дома своими руками

Для изготовления пивоварни нам понадобится все тот же набор, о котором я писал ранее и ряд дополнительных элементов (если бюджет на любимое занятие ограничен, как у меня, то я приведу ссылки на алиэкспресс, так можно немного сэкономить):

  • ТЭН – для нагрева затора желательно из нержи (2 кВт на Али, 1кВт на Али);
  • Встраиваемый термометр – на всякий случай, если вдруг терморегулятор будет врать;
  • Терморегулятор – для контроля температуры нагрева, терморегулятор можно приобрести на aliexpress, цена вопроса 500 рублей.
  • Датчик температуры, который передает информацию на контроллер с резьбой (в комплекте с терморегулятором идет без резьбы — ссылка на али)

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

Покопавшись немного в интернете, я решил автоматизировать процесс затирки и варки, с пригоранием солода я решил не бороться, поскольку помешивание во время затирки сказывается только положительно на будущем пиве (затор становится более плотным). К тому же фальшдно оберегает соприкосновение солода с нагревательным элементом.

Я не буду подробно описывать процесс, думаю, вам и так все будет понятно, если у вас появятся вопросы — оставляйте их в комментариях.

Если вы уже обзавелись набором, о котором я писал ранее, то вам придется его немного модифицировать:

1) Необходимо приобрести нагревательный элемент закрытого типа (такие используются в современных электрочайниках) мощностью не более 1 кВт, лучше всего ктловатный. ТЭН необходимо врезать выше нашего крана с фильтр-системой и ниже фальшдна. Обязательно используем термостойкие уплотнители, чтобы нигде ничего не подтекало. Подключение (провода) выводим наружу.

составляющая мини пивоварни для дома

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

термометр для домашней пивоварни

3) Сам термоэлемент мы также врежем в емкость и уплотним, сделать это лучше где-нибудь сбоку, чтобы нам ничего не мешало. Термоэлемент на фото это серебристый цилиндр, от которого отходят черные провода. Я отдельно заказал термоэлемент с резьбой, чтобы его можно было вкрутить в котел.

терморегулятор для пивоварни

4) ТЭН запитываем через терморегулятор, при покупке терморягулятора убедитесь, чтобы он работал в диапазоне необходимых нам температур, был рассчитан на мощность ТЭНа и 220В.

делаем домашнюю мини пивоварню

пивоварня своими руками

Теперь чуть подробнее о работе всей системы и терморегуляторе:

Нагреваться затор будет с помощью врезанного ТЭНа, при этом текущую температуру затора будет передавать врезанный термоэлемент. Контроллер, который находится в терморегуляторе будет анализировать с заданной, то есть та, которую мы выставим (показывается на дисплее), далее контроллер принимает решение либо отключить ТЭН, либо включить его. Нам же остается засекать время для текущей температурной паузы и периодически помешивать затор, чтобы избежать пригорания. По истечению времени выставить температуру на терморегуляторе для следующей температурной паузы.

Терморегулятор, который изображен у меня на фотографиях, по отзывам в интернете, несмотря на то, что китайского производства довольно хорошо себя зарекомендовал. Работает от сети 220В, ток выходного реле 2А, максимальная мощность 2 кВт (расчетная), температурный диапазон 0-100 гр. C. Я не рискнул покупать 2-х киловатный ТЭН, а купил 1 кВт.

Заказать такой термоконтроллер и термометр можно на алиэкспрессе, цена вопроса — 600 рублей, ТЭН можно купить в любом магазине по ремонту водонагревателей, все остальное в магазине товаров для дома.

Ничего сложного в изготовлении автоматической домашней пивоварни своими руками нет. Фотоотчет о проделанной работе я выложу чуть позже. А также дам свой отзыв о работе всей системы и терморегулятора, если вдруг с ним будут проблемы, у меня есть запасной вариант.

Если у Вас есть интересный материал о том ,как можно сделать домашнюю пивоварню своими руками, или другие интересные решения, то свяжитесь со мной, я с удовольствием их опубликую.

Пивоварня с автоматикой.

Довелось мне как-то отведать пива сваренного дома, да не из солодового концентрата, а из самого настоящего солода. И так оно мне понравилось, что уж очень захотелось и самому освоить данную технологию. Пиво которым меня угощали варилось в обычной кастрюле. В процессе изучения данного вопроса от данной технологии я как-то сразу отказался и стал задумываться об автоматизированном процессе приготовления пенного напитка. При изучении профильных форумов, просмотре каналов на YouTube, понял, что все уже придумано до нас) На рынке очень много готовых решений, как от именитых заморских производителей так и от отечественных, есть даже частные лица делающие пивоварни под заказ. Все конечно хорошо, но цена вопроса… Отдать сразу требуемую сумму за котел я был не готов, да и хотелось немного «потворить» самому.
В итоге, после пары лет раздумий, изучения вопроса и накопления средств была выбрана следующая конструкция:
1. Кастрюля Амет 50 л цельнотянутая с размерами 50 см. х 50 см.
2. Насос GRUNDFOS Comfort 15-14 B PM.
3. Заторный бак для кастрюли 50 литров.
2. ТЭН 2.5 кВт, в форме кольца и длинной около 2-х метров.
3. Arduino и все сопутствующие датчики и рэле для сборки автоматики.
Ну а после получения всего этого добра началось самое интересное, а именно сборка)

Полный размер

Автоматизация

На данном котле сварено на сегодняшний день уже 6 варок, пока сбоев не было. Схема рабочая, если кому что интересно, обращайтесь, напишу подробней.

.

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

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

Для чего же мне понадобилась автоматика?

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

Делать я свою автоматику решил из готового проект ArdBir. Работает она на arduino, к нему подключается датчик температуры, два реле, дисплей и кнопки. Первое реле управляет ТЭНом, второе реле насосом. Насос для затирания очень удобен, т.к. отпадает необходимость за весь процесс затирания перемешивать затор (подробнее как варить пиво, рекомендую прочитать в моих ранних обзорах)

Первую автоматику я собрал с помощью модулей:

— Arduino mini
— Блок из двух реле на 15А
— Дисплей 2004
— Температурный датчик
— 4 кнопки
— БП на 5 вольт
Удобство модульной сборки, только состоит в том, что достать все детали не составит труда и паять практически ничего не нужно. Но самый большой минус — это огромное количество проводов, а дешевое китайское реле создавало помехи на дисплее, по этому механическое реле пришлось заменить твердотельным.

Со временем я пришел к выводу, что надо собрать свою автоматику на чипе с 64кб памяти (у arduino mini всего 32 кб) на одной плате. Готового решения я не нашел, по этому сам стал создавать схему и в последующем плату для своей поделки.

Схема:

Схему разработал и рисовал так сказать на коленке и для себя, по этому возможны кое-какие недочеты, но схема полностью рабочая:

Плата:

Схему нарисовал, далее осталось нарисовать плату, сначала рисовал с помощью программы Sprint-Layout 6, очень удобная, но маловато в ней функционал, по этому решил от нее уйти в сторону программы DipTrace и вот что у меня получилось:

Скачать исходники можно тут.
Как видно свою пивоварню я назвал QRBeer и это уже версия 0.5…

Плата готова, осталось ее как-то изготовить. Для этого я решил использовать фоторезист. Почему именно им, а не ЛУТ? Просто решил испробовать для себя такую новую технологию, ЛУТ я уже испробовал, так сказать пощупал, не скажу, что мне она понравилась…

Фоторезист:

Для изготовления печатных плат с помощью фоторезиста понадобится:
— Пленка для принтера
— Фоторезист пленочный
— УФ лампа
— Сода кальцинированная

УФ лампа

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

Светодиоды приклеил на радиатор термоклеем, хотя можно было их собрать на текстолите, сомневаюсь, что они перегрелись бы.
Вот что у меня получилось:

Изготовление платы

1. Итак, шаблон я подготовил, осталось его только распечатать на пленке. Как я писал выше нужна пленка для принтера, я испробовал пленку как для лазерного принтера, так и для струйного, лучший вариант получается только на пленке для струйной печати. Печатать нужно в негативе и в зеркальном отражении:

Шаблон я сразу заламинировал, что бы отпечатки пальцев и мусор легко можно был смыть.
2. Далее нужно зашкурить нашу будущую плату (фальгированный стеклотекстолит). Для этого подойдет слегка смоченная обычная губка или меламиновая губка:

3. После этой процедуры, медь ещё нужно обезжирить ацетоном:

Как видно на моем фото обезжиривал я обычной салфеткой, а ацетон я перелил в бутылочку от перекиси, так удобнее брать…
4. Следующим шагом нужно обрезать фоторезист под свою будущую плату слегка с запасом и аккуратно снять верхнюю защитную пленку, что бы не повредить его. Если фоторезист отечественный, отклеивать нужно матовую сторону, если китайский, то тут разницы нет…
5. Далее наклеиваем фоторезист на текстолит, что бы под фоторезистом не появились воздушные пузыри, иначе в таких местах дорожки не проявятся, обрезаем лишнее…
Процесс наклеивания фоторезиста напоминает наклеивание защитной пленки на телефон.

6. Когда фоторезист наклеен, текстолит с ним нужно пропусить через ламинатор 2-3 раза или воспользоваться теплым утюгом и проглаживать через лист бумаги сложенным в два раза:

Главное фоторезист не перегреть, а то получится вот так:

Если при наклеивании фоторезиста получился «косяк», то лучше его убрать (смыть или соскоблить) и заново наклеить, а то после травления платы будет печально… Я же убирать этот фоторезист не буду, покажу конечный результат.
7. Накладываем на текстолит с фоторезистом шаблон и прижимаем стеклом (я взял его от старой фоторамки), а на стекло устанавливаем груз:

8. Засвечиваем фоторезист с помощью УФ лампы. Моей лампы хватает примерно 2 минуты:

Как видно фоторезист который засветился поменял цвет со светло-синего до темно-синего, причем засвеченный фоторезист очень хрупкий.
9. Убираем стекло и шаблон. Лишний фоторезист можно (не обязательно) обрезать и аккуратно отделить пинцетом:

10. Следующим шагом следует щелочью смыть непроявившийся фоторезист, для этого берем 2 стакана воды и столовую ложку кальцинированной соды, хорошенько размешиваем. Отклеиваем верхнюю защитную пленку у фоторезиста и опускаем в щелочной раствор наш текстолит.

11. Берем кисточку и трем по фоторезисту в щелочи, постепенно непроявленный фоторезист смывается:

Щелочь можно не выливать, а оставить на следующую плату или для смывания фоторезиста после травления, но об этом чуть позже…
12. Травление платы:
Тут два способа доступнее всего: травление хлорным железом или перекисью+лимонная кислота и соль. Про хлорное железо писать не буду, а вот с помощью перекиси пожалуй опишу:
— 100 мл. перекиси водорода 3% — продается она в аптеке за 7-12 рублей
— 30 гр. лимонной кислоты (есть в любом продуктовом магазине)
— 1 ст. ложка соли (подойдет как мелкая так и каменная)

Все это смешивается в емкости и погружается туда плата с готовым фоторезистом, через некоторое время на плате появляются пузыри:

А через некоторое время «голая медь» полностью протравится:

Кстати, если травить в более высокой температуре, например у лампы накаливания или в водяной ванне, то тремя травления уменьшится, главное не переусердствовать, иначе лишнее протравится…
13. Убирать фоторезист удобнее всего в этой же щелочи, в которой смывали непротравленный фоторезист, минут через 20 он сам отпадет и ничего тереть не надо…

А вот и мои «косяки»:

Хоть и не значительные, но все же, а во всем виновата невнимательность, не заметил пузырьки воздуха под фоторезистом или перегрел…

Следующая плата у меня получилась «чистая»:

14. Далее сверлим отверстия и лудим плату:

15. Припаиваем все детали и отмываем от лишнего флюса:

Припаивал SMD компоненты китайской инфракрасной паяльной станцией, очень удобно:

Вот и все, самое сложное позади, осталось прозвонить дорожки на предмет короткого замыкания и приступить к программирования чипа.

Программирование atmega644

1. Для начала программирования нужно загрузить в него bootloader. Делается это не сложно с помощью Arduino UNO, но для начала нужно скачать и установить программу Arduino.
2. Следующим шагом в установленную программу добавить Sanguino или взять сразу готовую сборку: Arduino+Sanguino
3. Заливаем на UNO скетч ArduinoISP:

4. И подключаем к UNO нашу плату:

В соответствии инструкции скетча:

// pin name
// slave reset: 10:
// MOSI:        11:
// MISO:        12:
// SCK:         13:

Получается по моей схеме так:

5. Далее устанавливаем в настройках нашу плату и загружаем bootloader:

Если все удачно прошло, то увидим сообщение: «Запись загрузчика завершена»
На этом загрузка bootloader’a завершена, можно подключать дисплей, кнопки, датчик температуры и заливать скетч автоматики.

Корпус еще не сделал, но все работает:

Почти все детали покупал на тао:

— Atmega644 — 7.5元
— Радиатор — 8元
— SMD кнопки — 0.1元
— Кнопки — 0.5元/шт.
— Оптрон MOC3023 — 0.6元/шт.
— Семистор BTA16-600C — 0.8元/шт.
— Семистор BTA41-800B — 4元/шт.
— Пищалка — 0.43元/шт.
— Дисплей 2004 — 16.3元/шт.
— Датчик температуры DS18b20 — 5.79元/шт.

Выводы

По автоматике:
Работает отлично, без нареканий и в любой момент можно добавить нужные модули, например, wifi, что бы управлять автоматикой и снимать логи варки через комп или смартфон…
Китайские детали:
Стоят минимум в 2 раза дешевле, чем в ближайшем магазине, качество не хуже…
Фоторезист:
Знакомство понравилось, в следующий раз буду пробовать фоторезист пастой (уже заказал), который исключит попадание воздуха и перегрев…
Общий:
Опыт в создании платы интересен, но это у меня все еще beta версия платы, которые я буду улучшать, модернизировать, тоже самое и по программированию чипа, идей много, а времени…

На этом все, надеюсь не слишком утомил, если будут вопросы или что-то упустил в обзоре, пишите, по возможности постараюсь ответить.

PS. Так же приглашаю в «Клуб домашних пивоваров» в контакте, мы всем рады, делимся своими рецептами, хвастаемся своим оборудованием и помогаем в решении каких-либо проблем.

Время на прочтение
12 мин

Количество просмотров 38K

Данная публикация навеяна другой. Она называется «Контроллер для домашней пивоварни Mega Brewery. Part I» и опубликована за авторством megadenis.

С чего все началось?

Я студент технического ВУЗа. Однажды, сидя в кафе с другом, который тогда учился в медицинском университете, решили открыть бар. Было много идей, которые, в принципе, заслуживали некоторого внимания. Например, танц-пол, который изменяет угол наклона в зависимости от стиля музыки… Но, наряду со всем многообразием идей, так же была еще одна —

… а не сварить ли нам свое пиво?

Через пару недель я сварил пиво, взяв ингредиенты с пивзавода, на котором работал друг отца. Но многие технологические процессы были нарушены, поэтому вместо пива вышло что-то с не очень приятным запахом.

Через несколько лет решил повторить процесс, немного автоматизировав его с помощью Arduino UNO. И вот, что получилось.

Начну с того, что должна делать вся установка.

  • Проверять себя — все ли работает, все ли подключено;
  • Чистить себя;
  • Подготавливаться к процессу пивоварения;
  • Варить пиво в полуавтоматическом режиме;
  • Варить пиво в ручном режиме;
  • Варить пиво в автоматическом режиме (как стиральная машина стирает белье).

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

Подготовка к процессу пивоварения

Сообщение от системы о том, что необходимо залить воду в чан -> программа ждет нажатия клавиши ОК — > программа посылает arduino команду на включение твердотельного реле -> твердотельное реле включает однокиловатный тенн в чане, доводит до температуры 37 градусов, отсылает программе команду, что все готово для варки. Поддерживает температуру 37 градусов.

Хочется, чтобы была проверка на наличие воды, но датчик еще ждет своего отправления от «китайских братьев».

Варка пива в полуавтоматическом режиме

В принципе, несложная процедура:

— Нажимаем в управляющей программе кнопку «Прогрев», остальные управляющие кнопки не активны;
— После прогрева программа выводить сообщение «Все готово, можно варить»;
— Засыпаем ингредиенты, выбираем программу для варки — кнопка «Варка пива» становится активной;
— Нажимаем кнопку «Варка пива», процесс пошел;
— Далее система периодически будет оповещать информационными сообщениями, что делать и когда.

Нужно следовать инструкциям.

Варка пива в ручном режиме

Данный процесс позволяет задавать параметры варки, изменять их в цикле варки. До него еще не дошел.

Варка в автоматическом режиме

Это мечта. В данный момент нет компонентов для реализации. Не хватает насосов, датчиков уровня воды. Не знаю, как мерить плотность сусла, сколько алкоголя в молодом пиве и еще много чего. Но я не отчаиваюсь и буду автоматизировать постепенно, пока варка пива не будет выглядеть так:

Закинул ингредиенты в соответствующие лотки, нажал кнопку и… через полтора месяца получил готовое пиво.

Это вкратце о процессе, а теперь перейдем к техническое стороне.

Техническая сторона процесса

Как сказано выше за управляющий микроконтроллер выступает arduino UNO. К нему подключены 2 реле, 2
цифровых термометра DS18B20.

Arduino общается с основной программой через com порт. Т.к. у меня нет шильда реального времени к arduino, пришлось таймеры брать из visual c#. Опыта написания программ у нет, так что, если вдруг у кого есть идеи, критика — почту за честь. Критикуйте, дербаньте, так сказать, что вдруг не нравится.

Вот текст программы на arduino

#include <OneWire.h>

OneWire  ds(8);  // датчики температуры сидят на 8 пине
int reley1 = 13;
int reley2 = 12;
int reley3 = 11;
int reley4 = 10;
int reley5 = 7; //включение тен
int reley6 = 6; // тен на заторном чане

float temp1;
float temp2;

void setup(void) {
  Serial.begin(9600);
  
  pinMode(reley1,OUTPUT);
  pinMode(reley2,OUTPUT);
  pinMode(reley3,OUTPUT);
  pinMode(reley4,OUTPUT);
  pinMode(reley5,OUTPUT);
  pinMode(reley6,OUTPUT);
  digitalWrite(reley1,LOW);
  digitalWrite(reley2,LOW);
  digitalWrite(reley3,LOW);
  digitalWrite(reley4,LOW);
  digitalWrite(reley5,LOW);
  digitalWrite(reley6,LOW);
  
  
  
  
}

void loop(void) {
if (Serial.available()) {
  
  switch (Serial.read()){ 
 case 'i':
 infuz();
 break;

case 'p':
progrev();
break;

case 'a':
avariya();
break;

case 'v':
varka();
break;

case 't':
temperature();
break;

  }
}
}

void varka() {
  digitalWrite(reley6, HIGH);
  while(Serial.read()!='m') {
    temperature();
    if (temp1 >= 52.00)
  digitalWrite(reley6,LOW);
  else 
  digitalWrite(reley6,HIGH);
  }
  
  while(Serial.read()!='n') {
  //digitalWrite(reley6,HIGH);
  temperature();
  if(temp1>= 62.00)
  digitalWrite(reley6,LOW);
  else
  digitalWrite(reley6,HIGH);
  }
  
   while(Serial.read()!='b') {
  //digitalWrite(reley6,HIGH);
  temperature();
  if(temp1 >= 75.00)
  digitalWrite(reley6,LOW);
  else
  digitalWrite(reley6,HIGH);
  }
digitalWrite(reley6,LOW);

while(Serial.read()!='c')

delay(1000);

while(Serial.read()!='x') {
digitalWrite(reley5,HIGH);
temperature();
}
digitalWrite(reley5,LOW);

  }

void infuz() {
  //temperature();
 //Serial.available();
 while (Serial.read()!='s'){ //выключение цикла инфузионной варки
 if (temp<=69.50)
  digitalWrite(reley5,HIGH);
  else
  digitalWrite(reley5,LOW);
 }
 digitalWrite(reley5,LOW);
}


void progrev() {
  while (temp1 <=36.00)
  temperature();
  digitalWrite(reley6,HIGH);
  digitalWrite(reley6,LOW);
  //while (temperature() >40.0)
  //delay(1000);
  Serial.println('s');
}

void avariya(){
  digitalWrite(reley1,LOW);
  digitalWrite(reley2,LOW);
  digitalWrite(reley3,LOW);
  digitalWrite(reley4,LOW);
  digitalWrite(reley5,LOW);
}


void temperature() {
   byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
  byte zator[8] = {40, 23, 218, 43, 6, 0, 0, 22}; // адрес температурного датчика в заторе
  byte varilka[8] = {40, 255, 240, 115, 59, 4, 0, 234}; //адрес температурного датчика в варильном чане
  float celsius;
 // float temp;
  boolean gde;
  
  if ( !ds.search(addr)) {
    //Serial.println("No more addresses.");
    //Serial.println();
    ds.reset_search();
    delay(250);
   // return;
  }
  
  
 
  

  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
     // return;
  }
  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
  
  delay(840);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
  
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    
  }
  
  int16_t raw = (data[1] << 8) | data[0];
 
    byte cfg = (data[4] & 0x60);
    
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    
  celsius = (float)raw / 16.0;
  
  for(i = 0; i<8; i++) {
  if (addr[i] == zator[i]) 
  gde = true;
  else {
    gde = false;
  break;
  }
  }
  if (gde) {
    Serial.print("t2 "); //temperatura варочника
    temp2 = celsius;
    Serial.print(temp2);
    Serial.println();
  }
  else
  {
 
   Serial.print("t1 "); //температура затора
   temp2 = celsius;
   Serial.print(temp1);
   
 
}   

}


 

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

Вкратце опишу, что делает программа.

Программа разделена на подпрограммы, каждая из которых активируется, если на com порту появляется определенный символ. Например, если в порт попадает буква «p», то включается режим «Прогрев». Или же, если «a» — то вызывается подпрограмма avariya() и все отключается. При вызове подпрограммы temperature() данные записываются в глобальные переменные temp1, temp2. Оттуда и попадают в нужные подпрограммы.

В будущем появятся подпрограммы для варки различных сортов и даже самогона.

Теперь, что касается основной программы управления.

Основная программа управления

Она написана на visual studio c#.

Исходный код программы:

Исходный код программы

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

namespace WindowsFormsApplication1
{
    

    public partial class Form1 : Form
    {
       
// String portnumber;
        SerialPort Port1 = new SerialPort("COM5", 9600);
        int s=0;
        public Form1()
        {
            InitializeComponent();
        }

        /*private const int CP_NOCLOSE_BUTTON = 0x200;
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams myCp = base.CreateParams;
                myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON;
                return myCp;
            }
        }*/
        private void Form1_Load(object sender, EventArgs e)
        {
            label2.Text = Port1.PortName;
            Port1.Open();
          
        }
        //Проверка оборудования
        private void button1_Click(object sender, EventArgs e)
        {
            if (Port1.IsOpen == false)
            {
                try
                {
                    //программу можно доработать информация из podrugomu.com/node/987
            
                    Port1.PortName = label2.Text;
                    Port1.Open();
                    Port1.Write("Check");
                    //SerialPort Port2 = new SerialPort("COM4", 9600);
                    //Port2.Open();
                    //label3.Text = Convert.ToString(Port2.ReadByte()); //проверка показаний порта

                   
                    MessageBox.Show("Процес проверки оборудования запущен", "Инфорамационное сообщение");
                    richTextBox1.Text = richTextBox1.Text + "n" + "Запуск процесса проверки оборудования"+" "+DateTime.Now.ToString("HH:mm");


                    button1.Enabled = false;
                    button2.Enabled = false;
                    button3.Enabled = false;
                  

                    if (Port1.ReadByte() == 1000)
                    {
                        richTextBox1.Text = richTextBox1.Text + "n" + "Окончание процесса проверки оборудования"+" "+DateTime.Now.ToString("HH:mm");
                        button1.Enabled = true;
                        button2.Enabled = true;
                        button3.Enabled = true;
                       

                        Port1.Close();
                        MessageBox.Show("Конец Цикла проверки оборудования" +" "+ DateTime.Now.ToString("HH:mm"));
                        richTextBox1.SaveFile("CheckLOG.rtf");
                    }
                    }
                catch
                {
                    richTextBox1.Text = richTextBox1.Text + "n" + "Ошибка процесса проверки оборудования" +" "+ DateTime.Now.ToString("HH:mm");
                    MessageBox.Show("Неверно выбран порт устройства. Процесс проверки не может быть запущен", "Warninig");
                    richTextBox1.SaveFile("log/Check_"+DateTime.Now.ToString("ddMMyyyy")+".rtf");
                }
            }
        }
        // Чистка оборудования
        private void button3_Click(object sender, EventArgs e)
        {
            if (Port1.IsOpen == false)
            {
                try
                {
                    //программу можно доработать информация из podrugomu.com/node/987

                    MessageBox.Show("Вы точно налили дезинфектор", "WARNING", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    Port1.PortName = label2.Text;
                    Port1.Open();
                    Port1.Write("Clean");
                   
                    MessageBox.Show("Процес чистки оборудования запущен", "Инфорамационное сообщение");
                 
                    button1.Enabled = false;
                    button2.Enabled = false;
                    button3.Enabled = false;
                    

                    if (Port1.ReadByte() == 1000)
                    {
                        button1.Enabled = true;
                        button2.Enabled = true;
                        button3.Enabled = true;
                       

                        Port1.Close();
                        MessageBox.Show("Конец Цикла чистки оборудования");
                    }
                }
                catch
                {
                    MessageBox.Show("Неверно выбран порт устройства. Процесс чистки не может быть запущен", "Warninig");
                }
            }
        }

        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {

        }

        private void cOM1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SerialPort Port1 = new SerialPort("COM1", 9600);
          //  MessageBox.Show("Выбран порт COM1");
            label1.Visible = true;
            label2.Text = "COM1";

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void cOM2ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SerialPort Port1 = new SerialPort("COM2", 9600);
            //  MessageBox.Show("Выбран порт COM2");
            label1.Visible = true;
            label2.Text = "COM2";
        }

        private void cOM3ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SerialPort Port1 = new SerialPort("COM3", 9600);
            //  MessageBox.Show("Выбран порт COM3");
            label1.Visible = true;
            label2.Text = "COM3";
        }

        private void cOM4ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SerialPort Port1 = new SerialPort("COM4", 9600);
            //  MessageBox.Show("Выбран порт COM4");
            label1.Visible = true;
            label2.Text = "COM4";

        }

        private void cOM5ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SerialPort Port1 = new SerialPort("COM5", 9600);
            //  MessageBox.Show("Выбран порт COM5");
            label1.Visible = true;
            label2.Text = "COM5";
        }

        private void cOM6ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SerialPort Port1 = new SerialPort("COM6", 9600);
            //  MessageBox.Show("Выбран порт COM6");
            label1.Visible = true;
            label2.Text = "COM6";
        }

        private void cOM7ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SerialPort Port1 = new SerialPort("COM7", 9600);
            //  MessageBox.Show("Выбран порт COM7");
            label1.Visible = true;
            label2.Text = "COM5";
        }

        private void программаВаркиToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }
        // Варка пива
        private void button2_Click(object sender, EventArgs e)
        {
           // if (Port1.IsOpen == false)
            //{
               // try
                //{
                    //программу можно доработать информация из podrugomu.com/node/987
                    //Port1.PortName = label2.Text;
                    //Port1.Open();
                    switch (label3.Text)
                    {
                        case "Выбрано инфузионное затирание":
                            MessageBox.Show("Процесс инфузионного затирания Запущен", "Инфорамационное сообщение");
                            Port1.WriteLine("i");
                            timer1.Start();
                            break;
             
                        case "Выбрана варка Cooper":
                            MessageBox.Show("Процесс затирания Cooper запущен", "Инфорамационное сообщение");
                            Port1.WriteLine("v");
                            timer3.Start();
                            break;

                    }



                    button1.Enabled = false;
                    button2.Enabled = false;
                    button3.Enabled = false;
                   // button5.Enabled = false;


                   // richTextBox1.Text = Port1.ReadLine()+"n";
                   
                    
                    /*        if (Port1.ReadLine() == "er") {

                                button1.Enabled = true;
                                button2.Enabled = true;
                                button3.Enabled = true;
                                button5.Enabled = true; */
                                //Port1.Close();
                               // MessageBox.Show("Конец Цикла варки пива");
                               
                       // }
                       // }

                        
                        
                    
            
               // catch
                //{
                   // MessageBox.Show("Неверно выбран порт устройства. Процесс варки не может быть запущен", "Warninig");
                //}
          //  }









        }

        private void button5_Click(object sender, EventArgs e)
        {
            Port1.Write("p");
            button1.Enabled = false;
            button2.Enabled = false;
            button3.Enabled = false;
            timer2.Start();
            richTextBox1.Text = richTextBox1.Text + "n" + "Запуск подогрева воды в заторном чане до 37 градусов" + " " + DateTime.Now.ToString("HH:mm");


           /* Port1.Open();
            
                //Port1.Open();

                //richTextBox1.Text = richTextBox1.Text + "n" + Port1.ReadLine();
             
            Port1.WriteLine("o");
                Port1.Close(); */
            }
       

        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            
        }

        private void инфузионноеЗатираниеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            label3.Text = "Выбрано инфузионное затирание";
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            textBox1.Text = Convert.ToString(Convert.ToInt32(s / 60));
            textBox2.Text = Convert.ToString(Convert.ToInt32((s)));
            s++;
            label5.Text = Port1.ReadLine();

               if (s==4200){  //70 минут это 4200 секунд
                   timer1.Stop();
                   //timer2.Start();
                   //Port1.Open();
                   Port1.WriteLine("s");
                  // Port1.Close();
                   MessageBox.Show("инфузионное затирание окончено необходимо отфильтровать сусло");
                   button1.Enabled = true;
                   button2.Enabled = true;
                   button3.Enabled = true;
                   button5.Enabled = true;
               textBox1.Text = "";
               textBox2.Text = "";

               }
              
                   
                   //Port1.Close();
               
               

        }

        private void label4_Click(object sender, EventArgs e)
        {
        
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            label5.Text = Port1.ReadLine();

            if (Port1.ReadLine() == "sr")
            {
                timer2.Stop();
                MessageBox.Show("Вода имеет температуру 37 градусов. Можно засыпать солод и включать режим затирания");
                richTextBox1.Text = richTextBox1.Text + "n" + "Окончание процесса подготовки заторного чана. Т=37 градусов" + " " + DateTime.Now.ToString("HH:mm");
                button2.Enabled = true;
            }


        }

        private void аварийноеОтключениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Port1.WriteLine("a");
            MessageBox.Show("Пользователь аварийно отключил всю систему");
        }

        private void заторногоКотлаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Port1.WriteLine("k");
            MessageBox.Show("Включен режим кипячения заторного чана. Ждите 60 минут");
            richTextBox1.Text = richTextBox1.Text + "n" + "Включен режим кипячения заторного чана. Ждите 60 минут" + " " + DateTime.Now.ToString("HH:mm");
 
        }

        private void timer3_Tick(object sender, EventArgs e)
        {
            string s1 = "";
            Port1.ReadLine();
            if (s1.Substring(0, 2) == "t1")
                label5.Text = s1.Substring(4, 5);
            if (s1.Substring(0, 2) == "t2")
                label9.Text = s1.Substring(4, 5);

            s++;
            if (s == 900)
            {
                Port1.WriteLine("m");
                MessageBox.Show("Этап затирания при 62 градусах");
                richTextBox1.Text = richTextBox1.Text + "n" + "Этап затирания при 62 градусах" + " " + DateTime.Now.ToString("HH:mm");
                
            }
            if(s== 2250)
            {
                Port1.WriteLine("n");
                MessageBox.Show("Этап затирания при 78 градусах");
                richTextBox1.Text = richTextBox1.Text + "n" + "Этап затирания при 78 градусах" + " " + DateTime.Now.ToString("HH:mm");

                
            }

            if (s ==2700)
            {
                Port1.WriteLine("b");
                MessageBox.Show("Этап затирания закончен, можно сливать сусло");
                richTextBox1.Text = richTextBox1.Text + "n" + "Этап затирания окончен. Можно сливать сусло" + " " + DateTime.Now.ToString("HH:mm");

                
            }

        }

        private void обычнаяToolStripMenuItem_Click(object sender, EventArgs e)
        {
            label3.Text = "Выбрана варка Cooper";
        }

        

    }
}

Программа общается с arduino через com порт. Единственное, никак не могу победить, чтобы при опрашивании com порта программа не подвисала на момент выполнения подпрограммы. После окончания подпрограммы программа отвисает, но пока это не критично и даже некий плюс. Защита от дурака — чтобы не нажать ничего во время определенной процедуры.

Итого, программа умеет

— готовить оборудование к варке;
— варить;
— писать простенький лог работы (очень полезно при дальнейшем анализе варки);
— выбирать порт для подключение к управляющему контроллеру(arduino UNO);
кипятить варочник и заторный чаны.

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

to be continued…

UPD:

Вот несколько фотографий пивоварни

Это варочный котел. Таких у меня два. С боку установлен датчик температуры DS18B20 в герметичной оправе.
Долго не мог понять, почему периодически arduino виснет, пока не осенило, что нужно все заземлить, наче пробивает на корпус, далее на корпус датчика и на arduino.

Медная трубка внутри — это для фильтрования сусла. Можно сделать красивее, но лучше использовать фальшдно. К сожалению китайские собрать не торопятся высылать его.

Пока рано говорить о результате, вот что получилось

Общий вид чана выглядит вот так.

Использовал обычные коннекторы
для подключения датчиков температуры, подключающиеся к двойной розетке. Удобнее мыть оборудование. Отключил, понес в ванную. Помыл, подключил и все работает.

Все пенилось по графику, лишнего не вытекало. А самых ближайших планах — слить на дображивание партию пива, сварить еще одну. Рецепт, в принципе можно посмотреть в коде в подпрограмме varka() у arduino.

Наконец-то пришли соленойдные клапаны. Процесс автоматизации продолжается.

Понравилась статья? Поделить с друзьями:
  • Метрофуроксин инструкция по применению для птиц
  • Авторитарный властный стиль руководства
  • Фервекс порошок инструкция по применению взрослым от чего помогает
  • Мужская формула арт лайф инструкция по применению
  • Нистатин крем инструкция по применению цена отзывы