“Что на arduino не собирай, все равно получится термометр” – народная мудрость.
В этой статье описана сборка термометра для самогонного аппарата, который пересчитывает считанные показания температуры в относительное содержание спирта в “выходных” парах самогонного аппарата. Очень удобное приспособление для тех, кто занимается так называемой “дробной” перегонкой.
Когда-то это был мой первый “production” проект на arduino, не судите строго. На сайте опубликована вторая версия прибора: Алкогометр на ESP32 с дистанционным управлением с дивана.
С некоторых пор алкогольные напитки для себя и своей семьи я делаю сам. Просто потому, что качество алкоголя в магазинах упало “ниже плинтуса”, и даже от одной рюмки может случится вполне реальное похмелье. Я не будут утверждать, что все напитки в магазинах таковы, но из “среднего ценового сегмента” – подавляющее большинство. И даже продавцы крупных сетевых магазинов по продаже алкоголя неофициально признают сей прискорбный факт (приходится общаться по службе). А вот от своей самогоночки, дважды перегнанной по технологии дробной перегонки, а затем настоянной на ягодках из своего сада, ничего не болит. Разумеется, нужно соблюдать меру, а то, как говорится, “сдуру можно и хер сломать” – если выпить “лишака”, то и с самого хорошего алкоголя можно отравится.
Так вот, повторюсь, я перегоняю сырье по технологии дробной перегонки, то есть:
- Вначале идут “головы” (первая порция, содержащая все легкокипящие ядовитые вещества типа ацетона) – их выливаем в раковину “без разговоров”, ибо травится не желаем.
- Затем до примерно 50% отбираем “тело” – основной продукт, который идет в дальнейшую переработку.
- После 50% в отдельную емкость собираем “хвосты”. Они не так опасны, как “головы”, но “дурно пахнут”, и попадание их в продукт также нежелательно. Но в них содержится еще достаточно спирта, который можно “перегнать”, поэтому собираю их в другую емкость и добавляю к сырью в следующую перегонку.
После первой перегонки разбавляю полученный спирт-сырец до примерно 20%, охлаждаю на балконе, затем фильтрую через кокосовый уголь и перегоняю повторно. После двух перегонок с промежуточной чисткой запаха не остается совсем. Готовый спирт можно разбавлять до нужной крепости и настаивать на чем душа пожелает. Рецептов в интернете много, я пробовал многие рецепты с сайта alcofan.com. Но здесь не об этом.
“Головы” отделить не сильно сложно: самый простой способ – высчитать их объем в зависимости от количества использованного сахара в браге и ориентироваться по мензурке с делениями. Можно также ориентироваться по температуре испарения. Но самое “муторное” в процессе перегонки – отследить момент, когда нужно заканчивать отбор “тела” и начинать собирать в отдельную емкость “хвосты”. Приходится постоянно набирать выходной продует в мензурку, замерять крепость и т.д.. Конечно, после нескольких перегонок немного приспособился ориентировать по температуре в колонне, но хотелось удобства и комфорта.
После поисков в дебрях “этих ваших интернетов” была найдена схема “электронного попугая”: http://forum.homedistiller.ru/index.php?topic=108287.0. Но многое в ней меня не устроило (ну прямо как в том анекдоте – “весь город устраивает, а его нет”), поэтому решил сделать свой вариант. До этого arduino не пробовал вообще, так что не судите строго. Весь “основной” алгоритм пересчета температуры в “спирт” взят из “электронного попугая”, а вся остальная “логика” – своя. Во-первых, хотелось отслеживать каждый этап (головы, тело, хвосты) по времени.Во вторых – контролировать резкие перепады температуры в процессе перегонки, чтобы предотвратить опасные ситуации. Перегонка у меня происходит на газовой плите, поэтому контролировать подогрев емкости автоматически я не могу, но контроль нужен. В третьих – убрал лишний датчик температуры в емкости с брагой, у меня нет для него места, а “дырявить” куб я не хочу. Да не очень-то он там нужен. Так же мне не нужен датчик “перелива” – у меня куб небольшой емкости, 12 литров, поэтому ситуация с переливам маловероятно, банки на 3 литра хватает с большим запасом. Все это “вылилось” вот в такой приборчик, который у меня закреплен на холодильнике самогонного аппарата:
Основная логика
Устройство имеет всего один наружный датчик температуры dallas DS18B20, дисплей LCD1602 и четыре кнопки:
- Красная кнопка – “меню” или “setup”. При нажатии на эту кнопку устройство переходит в режим изменения параметров.
- Зеленая кнопка – “режим” или “mode”. Служит для переключения устройства между режимами “нагрев” – “головы” – “тело” – хвосты”. В режиме настроек переключает шаг изменения параметров (для числовых значений – 0.01, 0.10 или 1.00).
- Кнопки “+” и “-” позволяют изменять параметры в режиме настроек с заданным шагом.
Смысл переключения между режимами “нагрев” – “головы” – “тело” – хвосты” только один – засечь температурную границу следующего этапа. Когда температура достигнет заранее установленного значения – устройство издаст звуковой сигнал “нужно бежать на кухню и менять банки”.
После включения устройство находится в “дежурном режиме”. На дисплее отображается текущая дата и время, а также текущая температура. Содержание спирта при температурах ниже 70% не вычисляется, поэтому вместо него отображается прочерки “–%”. На дисплее в первой позиции первой строки отображается “*” – символ режима ожидания.
Как только аппарат установлен на плиту и зажжен огонь (включен нагрев), нажимает зеленую кнопку – устройство переходит в режим “нагрев”. Устройство начинает отсчет времени и символ на дисплее меняется на “Н”. Температура в колонне по мере нагрева куба меняется неравномерно – вначале температура почти не растет, затем (при закипании сырья) начинает расти очень быстро. Измерение температуры происходит один раз в секунду, и если прибор засек между двумя соседними измерениями разницу более заданной, то это означает, что сырье в кубе закипело и пора включать воду в холодильник. Раздается звуковой сигнал, включаем воду. Этот же “контроль резких изменений температуры” работает на всех этапах перегонки с служит для предотвращения опасных ситуаций, когда температура в колонне начинает резко повышаться.
Как только температура в месте установки датчика достигнет 78 градусов, прибор начинает высчитывать “крепость” паров “на выходе”.
По достижении заданной температуры и (или) появлении первых капель из холодильника вновь нажимаем зеленую кнопку – устройство переключается в режим “G” – отбор “голов”. Собираем “головы” до заданной температуры (их нужно без сожаления вылить).
Затем вновь нажимаем ту же самую зеленую кнопку – устройство переключается в режим “Т” – отбор “тела”. Отсчет времени с начала нагрева продолжается – это позволяет измерить общее время процесса перегонки.
Первое время можно не особо контролировать процесс, приборчик сделает это сам. При приближении к заранее заданной температуре, при которой “крепость” на выходе приближается к 50% (Вы можете выбрать другое значение), прибор опять подаст звуковой сигнал – пора менять банку.
Меняем банку и опять нажимаем зеленую кнопку – включается режим “Х”, собираем “хвосты”. По окончании нажимаем зеленую кнопку – устройство переходит в режим “E” (окончено), а при следующем нажатии – в начальное состояние. После чего “цикл” можно повторить.
Настройка устройства
Прибор имеет довольно много параметров, аж 18 позиций:
1. Размер обнаружения быстрого изменения температуры. То есть если между двумя измерениями температура изменится более заданного здесь значения, прибор начнет верещать. Либо нужно включать воду (если это еще не было сделано), либо нужно убавить огонь под кубом.
2. Температура отбора “голов”. При достижении этой температуры прибор начнет пищать, что вот-вот начнется процесс.
3. Температура отбора “тела”. При достижении этой температуры прибор начнет пищать, что пора ставить основную банку и менять режим дальше. Впрочем, реальный момент Вы определяете сами.
4. Температура отбора “хвостов”. При достижении этой температуры пора заканчивать отбор “тела” и начинать собирать “хвосты”.
5. Температура окончания процесса отбора “хвостов”, дальше кипятить остатки смысла просто нет.
6 – 17. Здесь задаются поправочные коэффициенты для температуры в разных температурных диапазонах. Их Вы должны подобрать сами для имеющегося у Вас оборудования перегонки. Идеально, если будут проведены измерения крепости в середине каждого диапазона. На практике с помощью обычного стеклянного спиртометра (даже не бытового, а достаточно точного), это не всегда удается. Но путем “проб и ошибок” получается настроить прибор даже в этом случае. По крайней мере, для моих целей этого оказалось вполне достаточно.
С помощью белых кнопок изменяем само значение, а с помощью зеленой можно изменять “шаг” изменения – 0.01, 0.10 или 1.00. Нажатие на красную кнопку записывает новое значение в EEPROM и переходит к следующему значению. Подбирать корректировочные коэффициенты можно прямо в процессе перегонки, оценивая продукт другими инструментами и подгоняя высчитанное значение под требуемое. Первое время придется повозится, зато потом перегонка становится гораздо менее хлопотной.
18. Последний пункт меню “настройки” позволяет скорректировать дату и время, так как китайские Tiny RTC очень не точны – за три летних месяца разница составила несколько часов. По идее, если вместо arduino использовать esp8266, то можно подключить его к WiFi и сделать загрузку времени с NTP-серверов. В этом случае можно вообще выкинуть из схемы RTC модуль.
Схема
Схема не представляет собой ничего необычного – все как описано в примерах подключения соответствующих устройств:
Для сборки нам понадобятся (ссылки со временем могут устареть – тогда поможет только поиск по названию):
- Модуль adruino. В принципе любой, подходящий по размерам. Я использовал этот: Nano Atmega168 controller compatible for arduino nano
- Датчик DS18B20 в металлической гильзе. Например такой: DS1820 Stainless steel package
- LCD дисплей 16 символов на 2 строки с I2C интерфейсом. Можно использовать любого цвета, их много. Пример: LCD1602+I2C LCD 1602 module
- Датчик давления BMP180 / BMP280 / BME180. С его помощью будет корректировать показания термометра в зависимости от давления воздуха. По хорошему, конечно, нужно засовывать этот датчик в куб, но мы этого делать не будем. Давление в кубе все равно косвенно зависит от давления снаружи, и для нашей точности этого вполне достаточно. Пример: GY-68 BMP180 Digital Barometric Pressure Sensor
- Любой модуль для часов (RTC). У меня под рукой был Tiny RTC. Повторюсь, если использовать вместо arduino esp8266, можно от него отказаться (а заодно сделать и удаленное управление через интернет).
- Пищалку на проводе от разобранного компьютера (лет 10 валялась, и наконец, дождалась своего часа”).
- Любой блок питания 5-12 вольт. Я использую 8-вольтовый блок от какого-то прибора.
- Еще понадобятся четыре кнопки и с пяток резисторов для “подтяжки” потенциалов на выводах процессора.
- Разъем для подключения питания и любой удобный трехконтактный разъем для подключения датчика температуры.
Собирал все это я в пластиковой коробке подходящего размера, купленной на том же “али”. Так как нужно было “уже вчера”, не стал дожидаться из Китая монтажную плату и собрал все “паутинным” монтажом. С помощью “китайских соплей” (термоклея) и какой-то матери, как говорится. Не аккуратно, конечно, но работает. На фотографиях ниже немного внутренностей (слабонервным не смотреть, нажмите для увеличения):
Резисторы напаяны прямо на выводы разъема и кнопок. Барометр тоже припаян с процессорному модулю жесткими проводами в одной плоскости. Все более-менее закреплено либо винтами либо термоклеем.
Внешне получилось вполне “цивильно”. Прибор крепится на холодильнике самогонного аппарата с помощью пластикового хомута для полипропиленовых труб. Для дополнительной жесткости после установки на “трубу” дополнительно фиксирую концы хомута пластиковой стяжкой – на фото видны отверстия под нее.
Скетч
Для компиляции потребуется предварительно скачать и установить библиотеки: LiquidCrystal_I2C, DallasTemperature, Adafruit_BMP085, ButtonDebounce, RTClib.
Скачать готовый скетч можно здесь:
Скетч "alcoholometer.ino" для ArduinoIDE, версия 2.0
Этот прибор служит мне уже более года, весьма облегчая мне процесс перегонки. Что можно еще улучшить? Можно подключить его через MQTT к смартфону и контролировать все параметры что называется “удаленно”, не отходя от дивана. Но для этого потребуется либо WiFi (или Ehternet) шилд, либо заменить процессор на ESP. Но это уже получится другой прибор, меня и такой вполне устраивает.
За сим прощаюсь, соблюдайте меру и технику безопасности при перегонке!
Пожалуйста, оцените статью:
kotyara12 Здравствуйте. Как сделать автоопределение датчика. В программировании я 0
Добрый день. С этим я не стал заморачиваться. Вначале использовал скетч-пример из библиотеки OneWire. Насколько я помню, он выводит список адресов датчиков. Потом просто подставил найденные адреса в код.
Добрый день! А можно подробней, про настройку датчика температуры? Никак не хочет выводить температуру.
Привет при аварии датчика во время перегонки нет возможности оперативно его поменять Ещё вопрос без rtc не должно работать? Не реагирует на зелёную кнопку и t не изменяется
С аварией данного типа датчика не сталкивался, думаю он маловероятен, если не оторвать провод. Вот DHT22 бывает, отваливается. Без RTC можно сделать, но тогда нужно делать на ESP8266 или ESP32, подключаться к WiFi и брать время из интернета
Привет. Вот как раз по теме автоперегона я и нашел ваш замечательный ресурс. Смотрю, вы в последнии годы успешно разрабатываете на esp32, в том числе нотификейшенами в телегу и на другие сайты мониторинга.
Нет ли у вас желания переписать свой автомат для перегона на новые рельсы? Ну, чтобы можно было хотя бы после отбора голов и начала отбора тела отойти уже по своим делам и только получать куда-нибудь месседжи в духе “отбор тела завершен, аппаратура выключена”. 🙂 или наблюдать график температурный на open-monitoring…
Спасибо вам, кстати, за сей непосильный труд, библиотеки ваши, – это вообще песня отдельная 🙂
Но мне как то сложно всё скомпоновать, всё время какие то сложности то с библиотеками, то с переменными… С++ всё же сильно отличается от моего любимого С# )
Доброго дня.
Да, имеется такое желание. Пока одно препятствие – никак не могу написать драйвер для LCD экрана, все времени не хватает
Не понял для чего использовать модуль реального времени? Почему не сделать просто на таймерах?
Для вывода текущего времени. Как вам будет угодно – вы можете сделать по своему.