Основное, для чего я делаю Самовар - это:
1. Безопасность. Реализовано в минимально необходимой (на мой взгляд) конфигурации.
2. Иметь возможность гарантированно получить результат - не цепануть хвосты, не упустить ароматы на зерне и фруктах. Все мы люди, можем ошибиться, отвлечься. Автоматика этот риск минимизирует за счет большого количества емкостей, которые меняются в зависимости от программы.
3. Ради фана. Реализовано. В принципе, получился вполне законченный аппарат. А после реализации доработок, которые озвучены в самом низу - пока не вижу дальнейшего развития, только исправление ошибок, которые наверняка есть, но с которыми я пока не столкнулся.
Как итог - Самовар стабильно отработал несколько погонов, один раз перегрузившись (похоже, что из-за скачка напряжения, так как одновременно вместе с этим вылетел блок питания роутера), нагрев колонны при этом отключился, т. е. нештатная ситуация отработала правильно.
Не смотря на то, что почти все автоматизировано, я очкую оставлять колонну без присмотра, и вам того же советую.
Немного детальнее. На праздниках практически доделал всё, что хотел сделать с аппаратной точки зрения. Дальше осталось только совершенствовать логику.
Самый простой вариант, которым я пошел - задать программу отбора, определяющую, какой объем в какую емкость должен отбираться. Несколько отборов показали, что в принципе можно не подходить к колонне после того, как она запущена, если верно рассчитана программа отбора. За счет большого количества емкостей (10 штук) можно получить нормальный результат, так как есть запас - если немного ошибиться в расчетах, где-то да будет то, что надо
. Например: отобрали 80% голов, переключились на другую емкость, отобрали еще 10%, переключились на другую, добрали головы, переключились на тело, и тоже в процентной разбивке отобрали тело в 4 емкости. А напоследок захватили немного хвостов в последние три емкости. Что по факту будет в этих емкостях - хвосты, головы или тело - все равно нужно нюхать. Естественно, в процесс отбора можно вмешиваться, никто не мешает подкорректировать программу, если стало понятно, что отбор пошел не так, как рассчитано. Вчера пришлось добавлять емкостей, так как по программе уже отобрались хвосты, а температура пара была не сильно выше, чем при старте отбора тела, и характерного для хвостов запаха еще не было, поэтому отобрал еще немного. Гнал зерно, что в конце получилось по факту - еще не нюхал.
К предыдущему функционалу, который был реализован ранее, добавил:
1. Кнопку
. Вещь не обязательная, но удобная. В зависимости от режима работы колонны выполняет разные функции: если Самовар включен, но колонна еще не работает - включает разгон колоны. В режиме разгона колонны - начнет выполнение программы. В режиме выполнения программы - ставит отбор на паузу. У меня смотрится красиво, с синей подсветкой, вписывается в общий дизайн Самовара
2. Датчик потока на выход воды охлаждения. Показывает скорость расхода и общий расход воды, но это не главное. Главное - если расхода воды нет в течении 20 секунд - выключится нагреватель, и отправится сообщение об ошибке.
3. Плюс к датчику потока добавил события, которые тоже приводят к остановке нагрева колонны и отправке сообщения об ошибке - превышение заданной температуры в кубе и превышение заданной температуры пара.
4. Реализовал взаимодействие с регулятором нагрева от Kvic по UART - Стабилизированный регулятор на базе Arduino с управлением через UART. Поставил диоптр перед головой, на него направил камеру, весь погон провел сидя в удобном кресле (ну почти весь, на час выходил прогуляться, и несколько раз все-таки пришлось сходить к колонне), поддерживая режим, когда в диоптре булькает флегма, но выше не поднимается, управляя напряжением регулятора удаленно, и удаленно контролируя основные параметры работы колонны - с телефона на улице, с ноута дома.
5. Когда начинает работать программа отбора тела - фиксируется температура на датчике пара, эта температура считается температурой отбора тела. Учитывается давление, которое было на момент фиксации температуры отбора тела. Температура отбора тела корректируется с учетом изменения атмосферного давления. Если в процессе отбора температура пара выйдет за установленный коридор (у меня 1 градус), Самовар поставит отбор на паузу, и попытается дождаться возврата температуры в заданные параметры. Один раз был какой-то не понятный температурный скачек (и на датчике 2/3 и на датчике пара) ближе к концу отбора тела на 1.5 градуса, продолжалось это минуты две, потом температура вернулась к температуре отбора. Самовар доблестно ждал на паузе возврата к заданной температуре.
6. Сделал в Excel "компилятор" программы отбора, взяв за основу файл с расчетами голов и хвостов с форума. Файл лежит на GitHub в tools. Параметры там стоят мои, далеко не факт, что они правильные, у меня еще не достаточно статистики. Если найдете ошибку в подходе или алгоритме - с удовольствием исправлю.
7. Сделал web-страничку для просмотра графиков. Графики конечно можно смотреть через сам Самовар, но это не удобно. Так же лежит в tools. Для работы надо будет запустить локальный web-сервер. Звучит страшно, но сделать не сложно. Нужно на компьютер установить PHP или Python (это самый простой способ запустить локальный web-сервер ничего не настраивая), что делать дальше - расписано на страничке.
На GitHub в README.md добавил ссылки на датчик потока, на кнопку, и на гальваническую развязку для подключения регулятора от Kvic.
На картинке нарисован датчик потока 201, не нашел нужный компонент во Fritzing, нужно брать 401, у него чувствительность выше, 201 может не видеть маленького потока воды.

Что хочется изменить в логике и доработать:
1. Понятно, что нет смысла менять емкости, если температура при отборе тела стабильна. Т. е. нужно доработать логику, чтобы Самовар понимал, что идет отбор тела (момент старта отбора тела останется расчетным, других идей у меня нет, может кто подскажет?), и пока температура на 2/3 не начала расти - емкости не менять, не зависимо от того объема, который был указан в программе. А после начала роста на 2/3 - переходить к следующей строке программы.
2. Сделать автоматический старт программы, когда температура в колонне стабилизируется после разгона - если температура пара не меняется три минуты (или больше?) - колонна стабилизировалась, можно начинать отбор. Сейчас для этого нужно нажать кнопку 
3. Сделать вывод времени, оставшегося до конца отбора текущей строки программы и общего времени. Для этого все есть, нужно только сделать.
Если будете делать под себя и что-то добавлять/изменять - рассказывайте пожалуйста об этом, чтобы можно было все собрать в одном месте.
PS: Большое спасибо Kvic за то, что он терпеливо помогал мне разобраться с моими косяками в процессе связывания Самовара с его регулятором. Большое спасибо Ивану за конструктив колонны. Относительно простая автоматизация возможна только благодаря тому, что колонна стабильна, и в принципе ее можно вообще не автоматизировать. Но см. п.п. 1-3 в самом начале.
-
Samovar_bb.png
size: 198.83Кб
type: png
Категоричность - признак ограниченности