Python и пиво — взболтать, но не смешивать

  • Tutorial


Привет, Habr! Решил описать небольшую систему автоматизации для создания чудесного напитка. Для того, чтобы пиво было вкусным важны время и температура, температура и время. Причём они настолько же необходимы, как и ингридиенты, составляющие сусло. Чтобы пройти путь до готового продукта требуется от 14 до 20 шагов с различной температурой и временем пивоварения. Для всех заинтересовавшихся этим загадочным процессом, прошу под кат.

Нам потребуется два чана различного объёма, для трёх видов:

  • сусло Эля
  • Пшеничное сусло
  • Пильзнер

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

Далее возьмём rasbpberry pi zero и присоединим к нему два датчика температуры DS18B20.
Каждый из датчиков позволит отслеживать температуру в соответствующем чане. Для того, чтобы автоматизировать процесс отсчёта времени установим на малинку adafruit 128x64 oled, на дисплее которого будет отображаться вся необходимая информация.
Кнопками же мы сможем управлять проходом по шагам таблицы, а также запускать таймер.

Код таймера
def timer_code(seconds, t_counter = 2, restart = False):
    time.sleep(0.023)
    seconds -= time.time() - t_counter
    t_counter = time.time()
    minutes = trunc(seconds / 60.0)
    return seconds, minutes, t_counter

Загадочные
time.sleep(0.023)
здесь по причине того, что на обновление дисплея уходит порядка двух секунд, соответственно экспериментально была установленна данная поправка, позволяющая времени таймера идти каждые две секунды.

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

Отображаемые на дисплее секунды
if timer:
    if ((minutes < 0) and (seconds < 0)):
        sec = -round(seconds - 60.0*minutes)
    else:
        sec = round(seconds - 60.0*minutes)
else:
    sec = 0


Готово. Осталось лишь в бесконечном цикле отобразить всю необходимую информацию на дисплее и вуаля — мы получаем полуавтоматическую пивоваренную установку.

Код отрисовки
draw.rectangle((0, 0, width, height), outline=0, fill=0)
draw.text((x,top),    f"{beer_type[countB]} step {step} Pot 1", font=font, fill=255)
draw.text((x,top+8),  f"T={T1} deg., Target {Target1[step]}", font=font, fill=255)
draw.text((x,top+16), f"V={V1[step]} litres", font=font, fill=255)
if hop[step] == '':
     draw.text((x,top+25), " Pot 2 ", font=font, fill=255)
else:
     draw.text((x,top+25), f" Pot 2,  Pot = {hop[step]}", font=font, fill=255)
draw.text((x,top+34), f"T={T2} deg., Target {Target2[step]}", font=font, fill=255)
draw.text((x,top+45), f"V={V2[step]} litres", font=font, fill=255)
draw.text((x,top+54), f"Timer {minutes} min {sec} sec", font=font, fill=255)
# Display image.
disp.image(image)
disp.show()


Не забудем лишь запускать таймер по нажатию кнопки.

Кнопка
# Start timer
if not button_A.value:
    t_counter = time.time()
    print('A #5', button_A.value)
    timer = True


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

Подробнее
Реклама

Комментарии 21

    0
    «мы получаем полностью автоматическую пивоваренную установку»
    Разве эта конструкция может управлять температурой?
    Если нет, то тогда это сложно назвать автоматом.
      0
      Благодарю, исправил на полуавтомат. Действительно остаётся много ручных действий, однако контроль времени теперь не является головной болью. Нет необходимости каждый раз сверять температуру с датчика с нужным шагом из таблицы и держать в голове температуру и время шага, а также засекать секундомер. Можно спокойно заниматься перемешиванием и наблюдением за процессом.
        0
        Вообще за статью благодарен, решился все таки сделать свою автоматическую пивоварню, приблуды с китая уже едут, планирую посадить на реле и на теновую плитку, и попробую реализовать полный цикл на автоматике :)
          0
          Где об этом читать?
      +4
      Пока что это больше похоже на пост в твиттере.

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

      Если греть электрическими тэнами, то можно при этом контролировать еще и степень нагрева, например с помощью диммера, тут возникает задача PID регулятора, чтобы выдерживать идеальную температуру для каждого этапа процесса.

      Заодно возникает задача — в каком месте объема измерять температуру и какие допуски по температур допустимы. Где-то рядом будет полезно еще и перемешивать, хотя бы по гудку.

      Не затронута тема подготовки воды, потому что от неё зависит вкус итогового продукта.
        0
        Благодарю. Поправил на «полуавтоматическую». Почти согласен с показометром, хотя и не слышал раньше такого термина. Прошу прощение, за сокрытие шагов пивоварения, это небольшой секрет. Условно:
        шаг 3; объем — 3.4 л; целевая температура — 35 град; время — 35 мин.

        шаг 6; объем — 5.2 л; целевая температура — 52 град; время 0 мин.

        шаг 8; объем — 6.4 л; целевая температура — 62 град; время 1 минута.
        0
        На какой номер слать смски для заказа?
          +1
          Можно просто в личку diad Правда, вам ещё понадобится понимать весь процесс. Как справедливо заметили выше, есть много важных вещей, а именно: подготовка сусла, подготовка воды, процесс перемешивания и нагрева, а также шаги пивоварения, которые остались за рамками статьи.
            0
            Спасибо. По теории был соответствующий цикл статей.
              +1
              О, а где нынче форум домашних пивоваров? Что-б и теорию и терминологию и типы и примеры конструкций пивоварен посмотреть? А то Brewtarget, ради интереса, скачал… «Ничего не понятно, но очень интересно.»©
              До этого только домашний сидр и домашнее фруктовое вино делал, но пиво это-ж куда интереснее!
                +1
                в домашнем самое важное — солод. Свой. Самому сделать реально, но надо и территория для сушки, да и варка — вещь оч ароматная, не всем соседям понравится ))
                Знакомый солод делал, варил пиво. Настаивал в деревянной бочке. Говорил, что вкус от современного " с газами" — небо и земля. Но вкус своего — весьма специфичен!
            0
            В связи с сезонным повышением температуры воздуха, я тоже делаю похожую штуку, только для охлаждения моего домашнего ЦКТ, правда я решил не морочиться с ардуинами, а просто заказал с али STC-3018, который будет запускать насос, гоняющий охлажденный раствор пропиленгликоля через змеевик внутри ЦКТ.
            А с поддержанием температуры затора как то проще вручную справляться по моему)
              0
              В мешке толкового пива не получить, да и геморрой это приличный. Автоматизация варки — это варочный порядок из тройки кастрюль с электронагревом + ПИД-регуляторы, да пара насосов.
                +2
                я новичок тут, может кто подскажет:
                А есть на этом форуме возможность опросов? то есть, задать вопрос «а интересна народу тема „ляляля“? Если хотя бы ХХ человек говорят „да“, то автор описывает свою конструкцию.

                на примере этой статьи: я делал полный автомат, 6 стадий. Бак плавает в другом баке с глицерином (он кипит при бОльшей чем у воды температуре). Нагреватель — 30 Квт.
                Если такое интересно — могу описать подробнее.
                <spoiler title=»Схема «затиратора» (устройство контроля варкой пива или кваса)">
                image
                  +1
                  Боюсь без инвайта опрос создать не получится, но уверен сообществу будет очень интересна ваша разработка, особенно оно любит технические детали.
                    +1
                    Не вникал, но уважаю — промподход виден по количеству LC фильтров :)
                      +1
                      спасибо.
                      Заголовок спойлера
                      Но до «пром» мне далеко: я — самоучка, как в электронике, так и программировании…
                      А учусь разбирая те же Сименсы, Овены и прочее, смотрю что и как.
                      А подстраховываюсь всегда: и программно, и аппаратно. Когда у тебя коммутируются два нагревателя по 30 киловатт каждый — тут начнёшь немного и бояться ))

                      Хотя недавно делал контроллер для ленточной пилы взамен сгоревшего ПЛК (да, пришлось колхозить, так как таких не выпускается, а установка иного = полная замена всего :) Останутся двигатель да несколько пускателей, частотники, регуляторы всякие — выбросить. Рука не поднялась, сделал своё ))
                      так там 18 киловатт движочек. Тоже напряжно его запускать, сделал ступенчатый запуск.
                      А второй двигатель, примерно 2 киловатта на подачу, частотником регулировал по Модбас, так спокойнее ))
                        +1
                        Глаз именно 30 кВт и зацепился. Сам черпаю решения из аудиотехники попадающей в ремонт. Питание цифры, аналога, силы (привода и тд) раздельно, раздельные земли. На каждый чип через L/RC, сигнальные где скорость небольшая на всех RC, ферритом всё просто обмазано. Это всё решения 15-20 летней давности, сейчас даже не представляю… только недавно опознал с подсказкой на схеме, что есть низковольтные варисторы например.
                        Сам я не умею в такое, поэтому просто везде стараюсь гальваническую развязку по возможности делать.
                          0
                          На каждый чип через L/RC, сигнальные где скорость небольшая на всех RC, ферритом всё просто обмазано

                          о, как понимаю про ферриты!!! я до сих пор собираю и цепляю на все кабели около ПК. У меня это пошло после наводок на всё и вся от передатчика (в прошлом радиолюбитель). А потом коллективная радиостанция. Да, дули в антенну-треугольник и 1.5 квт иногда ;) а по бумагам было вроде 200 Ватт…
                          Если нет экранировки, толковой фильтрации, то в наушниках — вой.
                          Брат до сих пор музыкой интересуется, на гитаре я парнями для души играет, так пришлось все кабели у них переделать, экраны по-уму распаять, да джеки вычистить.

                          ps
                          есть низковольтные варисторы например

                          а о чем конкретно речь? ниже 70, 30, 12 вольт? или о чем вы?
                          Я ставлю везде, на все свои контроллеры!
                          Заголовок спойлера
                          image

                          горький опыт был, когда графический дисплей контроллера сожгли подав напряжение в 2 раза больше! Повезло, что выгорела м-ма памяти, нашел на плате от какой-то древней кассы (когда-то обслуживал и это).
                            0
                            Да, у меня тоже с радио — без феррита на _все_ концы из компа включение закрывало эфир полностью. С передачей не особо связывался, но читал ещё в Радио много про TV1, так что кольца тоже полюбил заранее :)
                              0
                              помню, на коллективке появился мощный (!) комп, уровня 486 :) и кто-то начал заниматься RTTY. Половины полосы вообще не принималось из-за каких-то местных помех. Воевали с ними долго, оказалось в БП ПК не запаян фильтр, фонила видеокарта и, неожиданно, CD-ROM!
                              после замены и исправления БП начали принимать без проблем.
                              А, еще были заморочки из-за заземления! оно тоже фонило из-за неверного монтажа в помещении, переделывали.

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

                  Самое читаемое