Ну что ж приступим.
Сначала опишу основной алгоритм, далее опишу нюансы.
Для начала хочу сказать что РМ нужно делать фазный с детектом 0. Для обратной связи используем трансформатор напряжения, для более точной инфы еще и датчик тока. У меня такая схема работает и держит мощность стабильно.
Минимум 3 датчика температуры: куб, колонна, ТСА. Можно еще на воду поставить датчик, по желанию.
Для начала буду просто писать о фракциях(головы, тело, хвосты), каким образом мы будем переходить опишу ниже.
1 стадия "разгон". Подаем всю мощю(открываем симистор на полную). Читаем температуру колонны, когда она достигла установленного значения(допустим 60 градусов), значит закипело. Подаем воду, переходим на стадию работы на себя.
2 стадия "работа на себя". Устанавливаем технологическую мощность работы колонны(у каждого она своя, она не меняется до конца процесса). Работаем на себя установленное время(например 30 минут). За это время температура в колонне стабилизируется. Отсчитали заданное время и перешли к стадии головы.
3 стадия "отбор голов". В настройках устанавливаем следующие параметры: величина ШИМ для отбора голов в процентах(1-100%) и время ШИМ в сек(от 1 сек до 30 мин в идеале). Как работает ШИМ думаю тут описывать не надо. По своему опыту с клапаном AR-HX-3 ставлю шим 2% и время 20 сек. Получаю примерно 70-80 мл/ч. В идеале сделать шан не 1% а 0.5% для более точной настройки. Далее нужно установить настройку окончания отбора голов. По температуре отбирать по мне так неудобно. Самое удобное это отбор по времени или по объему. Со временем все понятно, отсчитали нужное время и перешли на следующую стадию. Если отбирать по объему, то тут нужен датчик, который мы погружаем в емкость на нужный нам объем. Как только он сработал, значит головы наполнили емкость и замкнули его. Переходим дальше. Есть еще один способ понять, что головы закончены - по проводимости. Но датчика как такового отлично работавшего я лично не видел. Писали единицы что вроди как пользуются таким, но это не массовое явление. Если конечно будет разработан и доступен такой датчик, то можно и такой алгоритм заложить. У Максима он есть. Перед переходом на следующую стадию запоминаем температуру стабилизации для контроля ее превышения. Переходим к следующей стадии.
4 стадия. Тут можно говорить что это фракция №2(а какая - тело или подголовники тут каждый решает сам). Алгоритм ее отбора одинаков. Если работаем с фракционником, то отбираем все через тот же клапан, только ШИМ ставим другой. Если работаем с 2 клапанами без фракционника, то работаем с клапаном тела. Тут настройки будут немного разливаться в зависимости от вида отбора. Опишу для каждого вида. Если работаем без фракционика то так: температура окончания отбора тела и перехода на хвосты. Если работаем с фракциоником, то так: или температура окончания отбора фракции или время отбора(из практики подголовники удобно отбирать по времени зная скорость, а вот тело удобнее отбирать по температуре куба так как мы не знаем конечный объем спирта). Теперь о ШИМ, он в обоих случаях будет работать одинаково. Есть 2 пути: 1 - консервативный, это устанавливаем постоянный ШИМ и поддерживаем его на протяжении всего процесса отбора тела(снижаем его только в случае сработки стопа например на заданное количество процентов(относительных или абсолютных кому как удобно). 2 путь - прогрессивный, его все больше начинают использовать в работе: плавающий ШИМ. Задаем в настройках ШИМ начала, он устанавливаем когда мы переходим на тело, далее у нас в настройках есть таблица соотвествия %ШИМ от температуры куба например до 10 точек. То есть это выглядит так: начальный ШИМ 20%, 85*С - 18%, 90*С - 15%, 95*С - 10%. То есть начинаем отбирать с 20%, достигаем температуры 85 - опускаем до 18%, далее пользуем формулу апроксимации с вычисляем ШИМ в каждой точке температуры как линейную между 85*С и 90*С, дошли до 90*С поставили 15%, и так далее. Будут вопросы как сделать, обращайся, есть наработки. Начинаем отбирать тело, при этом наблюдая за Ткуба и Тколонны. По Ткуба регулируем ШИМ и следим за окончанием тела, а по Тколонны следим чтобы не было затела хвостов. Так же в настройках нужно поставить дельту Тколонны. Если температура колонны достигла Тстабилизации+дельта - срабатывает стоп. Закрываем отбор и ждем опускания температуры до Тстабилизации. При этом уменьшаем ШИМ на заданное количество процентов. Правда тут есть прикол. Этот % ШИМ будет установлен до очередной точки таблицы ШИМов, дальше по ней уже установится тот который прописан. Идеально было бы делать поправку. То есть например сработал стоп при ШИМе 20% и уменьшил его до 18%, при этом доходя до очередной точки таблицы в которой у нас прописан ШИМ 18 мы учитываем снижение на 2% от стопа и ставим ШИМ 16% и так далее. Тащим эти поправки до конца таблицы. У Максима это не сделано. Но если колонна настроена хорошо, то стоп не должен наступить до хвостов. С телом вроди как все. Если фракционик, то переходим к следующей стадии, если это не хвосты, то работаем по такому же алгоритму как и тело. Если это 2 клапана, то дошли до температуры окончания тела и перешли к хвостам.
5 стадия "отбор хвостов". Тут в настройках нужно указать только температуру окончания отбора хвостов и всего процесса. ШИМ открываем процентов на 90, в настройках смысла нет указывать это, зашито в программу, чтобы не сильно перегревался. Отбирем хвосты через клапан голов. С фракционником проще. Время ШИМ можно взять с голов.
Теперь нюансы, их достаточно.
1.Аварийные ситуации отслеживаем. Датчик разлития жидкости сработал - пищит сигнал, шлет разные аварийные смс и так далее, отсчитываем время например 10-20 сек, если на протяжении этого времени датчик продолжает утверждать что потоп - выключаем аппарат аварийно, закрываем клапана, отключаем нагрев, закрываем воду.
Авария отключения воды - сработал ТСА, температура превысила 45-60*С. Отключаем аварийно по такому же алгоритму. Ждем опуская температуры чтобы снова можно было запуститься.
Датчик давления в кубе - превышение давления - авария, готовься к захлебу. Так же аварийно гасим все.
Пропал 0 - авария. Выключаем все.
Пропало напряжение в сети(транс сдох) - авария - гасим все.
Пропал ток с датчика тока - авария(обрыв тена, сдох датчик тока) - гасим все.
Ошибка датчика температуры - авария. Предлагаю обрабатывать контрольную сумму и считать ошибки, если подряд накопилось 3 ошибки - значит датчик сдох. Если после 2 ошибок данные пошли, то скидываем счетчик и заново. Алгорим могу дать.
Если забыл еще какие аварии, пишите.
2.Теперь поговорим про температуру стабилизации. Не секрет что процесс ректификации может длиться до суток, а то и больше. Так же не секрет, что атмосферное давление напрямую влияет на Ткипения(в частности Тстабилизации). Стабилизировались на одной температуре, через 5 часов давление скакнуло на 6 мм рт ст - при этом температура в колонне поднялась на 0.2*С. А если дельта была 0.2 то сработал стоп ложный. Или давление упало на 6 мм, тогда температура упала на 0.2*С, имея дельту 0.2 мы фактически ложно подняли ее до 0.4, что при подходе хвостов нам гарантировано пустит их в отбор. Первый вариант неприятный но не опасный, второй вариант - может испортить нам всю работу. Максим для компенсаци давления использует такой алгоритм: если наступил стоп и температура за установленное в настройках время не вернулось к Тстаб, то Тстаб принимается за текущую температуру. Это поможет если давление вырасло, хотя это не особо страшный рещим для нас. А вот если давление упало, то такой алгоритм не сработает. Надо тогда применять еще и такой: температура в процессе работы снизилась на 0.1*С и держится например 30 мин - значит давление упало и надо перезаписать новую Тстаб. Хотя тут есть подводный камень - температура может упасть из-за плохого утепления и сквозняка. Поэтому есть более продвинутый алгоритм - ставим датчик давления BMP085(BMP180) и контролим давление. Стабилизировались, запомнили температуру и давление. Если в процессе оно изменилось на 3 мм рт ст, меняем Тстаб на 0.1*С.
3.Так же при работе с фракциоником нужно иметь датчик емкости для каждой фракции. При сработке датчика фракция переходит дальше. Все датчики висят на однои входе паралельно, переключение осуществляется с помощью бегунка. Есть видео и фото.
4.Во время работы в любой момент можно менять настройки, а не так что в начале задали и менять нельзя в работе.
5.Что касается датчиков температуры то чтобы удобнее было с ними работать вижу 2 пути: развести все датчики на отдельне пины. Обычно 3 датчика и 3 пина в меге можно выделить. В этом случае не надо париться с адрсами. Обращайся к нужному пину. Всегда известно на каком разъеме какой датчик сидит. Менять сломанный так же удобно. Второй выход это повесить на один пин но сделать режим инициализации датчик. Если интересно у меня есть алгоритм.
Пока вроди все. Если что вспомню - напишу
создается впечатление, что мы не спирт производим, а готовим беспилотный космический корабль на Марс.Ключница, 07 Апр. 16, 21:39
Алгоритм похлеще будет)))