Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Ненавязчивая автоматизация ректификационной установки

Форум самогонщиков Автоматика
1 2 3 4 5 6 ... 132 3
PavelSaratov Доктор наук Саратов 622 80
Отв.40  04 Янв. 17, 15:46
У РМ-2 есть 2 управляющие кнопки. Вот думаю, может к ним привязаться? Только вот как быть с регулировкой. Уж больно привык я к РМ. Надежен, точен, и, главное, работает как стабилизатор
Даже если вы умудритесь подпаяться к этим кнопка - обратную связь то все равно нужно - а иначе получится - микроконтроллер послал одно нажатие - а оно почему то не нажалось, сдвиг на одно нажатие в неправильном направлении уже есть..
Вобщем сложно это ИМХО.
HBB Кандидат наук Москва 356 94
Отв.41  04 Янв. 17, 16:10, через 24 мин
обратную связь то все равно нужноPavelSaratov, 04 Янв. 17, 15:46

Я хотел снимать показания с ACS712 и посредством малинки регулировать РМ. Мой резон простой - РМ надежная и проверенная машина, а так  как в нашем деле он используется повсеместно, обуздание сего конька значительно расширило бы количество желающих пересесть на малинку.
Благодарю коллегу woddy за ссылку на ветку. Изучаю.

Добавлено через 1мин.:

Тем более Игорь223 как-то его (РМ) приручил.
OldBean Доцент Красноярск 1K 1.4K
Отв.42  05 Янв. 17, 04:37
ИМХО, если делать действительно гибкую систему автоматизации кубовой ректификационной установки, то нужно ставить НЕ СТАБИЛИЗАТОР мощности, а именно РЕГУЛЯТОР мощности. Но - управляемый микрокомпьютером. А по какому параметру регулировать мощность - это уже зависит от задачи. Тогда и соответствующий датчик нужно ставить в обратную связь, которую как раз и обеспечивает управляющий компьютер. Это может быть датчик напряжения (или тока, потребляемого ТЭНом), если задачей является стабилизация мощности нагрева ТЭНа. Если же целью является стабилизация потока пара в колонну, нужно сигнал для обратной связи брать с датчиков давления. Стабилизатор мощности здесь будет просто вреден - получатся натуральные "лебедь, рак и щука" :))) Более того, можно организовывать и другие, более сложные режимы работы (стабилизации) установки. Тут есть где фантазии разыграться.

Еще, не стоит забывать, что у нас есть второй РЕГУЛИРУЕМЫЙ параметр (кроме мощности нагрева) - скорость отбора. Соответствующим контроллером мы займемся чуть позже. Вот "игра на этих двух регуляторах", в зависимости от показаний всяких датчиков, и есть искусство кубовой ректификации. А посильная автоматизация этой "игры" как раз и есть основная цель системы автоматизации, которую мы здесь обсуждаем. Поэтому у нее и концепт такой...
-------------------------
Почему-то вспомнилась такая скороговорка: регулировщики регулярно регулировали регуляторы, но недорегулировали :)))
OldBean Доцент Красноярск 1K 1.4K
Отв.43  05 Янв. 17, 19:21
5. Первый шаг ненавязчивой автоматизации

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

Те, кто хоть раз проводил ректификацию "вручную", знают, что пар, при закипании сырца в кубе, поднимается по колонне довольно шустро. К сожалению, точное время закипания заранее оценить не всегда удается. Вот и приходится перед закипанием сидеть минут 5-10 и пялиться с умным видом на градусник, держа при этом руку на регуляторе мощности. Просто, чтобы не заплевать все вокруг горячим сырцом из трубки связи с атмосферой. Вот хорошо было бы сбрасывать мощность автоматически сразу же в момент закипания сырца! Приятно то, что мы уже сейчас можем это сделать. Этим и займемся. Заодно и испытаем контроллер ТЭНа в "боевых" условиях.

Если малинки и датчиков температуры DS18B20 в наличии нет - значит настала пора их приобрести.

Дальше идем по следующему плану:

5.1. Монтаж датчиков

Размещаем датчики температуры в кубе, в нижней части колонны и в дефлегматоре (у меня еще один датчик подцеплен к возвратной трубке контура охлаждения дефлегматора). Один из вариантов монтажа датчиков я уже описывал в топике, посвященном железу.

5.2. Соединяем датчики, контроллер ТЭНа и малинку в единую систему

Соединяем все что у нас есть (датчики температуры, малинку и контроллер ТЭНа) по схеме, изображенной на рисунке ниже (слева).
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

На этом же рисунке справа показано как это может выглядеть в реальности. На этой фотографии (справа вверху) есть еще один модуль. Это как раз контроллер электромагнитного клапана отбора. Но мы на него пока не обращаем внимания. Он у нас здесь как бы еще не сделан :)))

В качестве питания для малинки и контроллера удобно использовать 5-вольтовые зарядки с двумя или более USB разъемами, желательно с максимальным током 2.5А и более.

5.3. "Обустройство" малинки

На эту тему в Сети написано так много, что абсолютно не имеет смысла здесь все это описывать. Тем более малинок выпущено уже несколько вариантов. Подготавливать ее к работе можно и из Window, и из Linux. В общем, если углубляться в эту темы, то мы еще не скоро займемся автоматизацией. Поэтому - google и немного удачи в помощь! Сформулирую только требования к конечному состоянию малинки:

1. На SD карточке должны быть записана операционная систем Raspbian. Желательно свежей версии.
2. В raspi-config нужно разрешить использование шин i2c и 1 wire.

Прежде чем перейти к написанию скрипта автоматизации нужно протестировать нашу систему.

5.4. Предварительное тестирование системы

Здесь необходимо сделать одно замечание. На всех рабочих станциях, с которыми я имею дело, стоит Linux (Ubuntu). Поэтому я буду рассказывать о своих действиях с точки зрения линуксоида. Писать что-то универсальное и крос-системное я не буду. Это сильно отвлечет нас от темы. Я просто расскажу последовательность действий, которые нужно выполнить, чтобы убедиться в работоспособности системы. Пользователи Windows могут тоже выполнить эти действия, если установят какой-нибудь SSH-клиент. Например, PuTTY.

Итак, проверяем работоспособность собранной системы. Подаем питание 5В на малинку и контроллер ТЭНа. Сеть 220 В можно пока не включать. Естественно, малинка должна быть подключена к локальной сети (через Wi-Fi или по проводам). На рабочей станции, подключенной к этой же локальной сети, запускаем терминал (или PuTTY, если рабочая станция под Windows) и соединяемся с малинкой по протоколу SSH. На рисунке ниже приведена сессия моей работы по тестированию системы. В PuTTY будет то же самое, кроме первой команды соединения с малинкой.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Самая верхняя строчка - это команда соединения с малинкой по протоколу ssh пользователя "pi". IP-адрес малинки в этой локальной сети - 192.168.0.22:
ssh pi@192.168.0.22

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

Сначала проверим работоспособность датчиков температуры, подключенных к малинке.Замечательной особенностью Linux является то, что все в этой системе логически рассматривается как файлы. Дачики температур, подключенные по шине 1 Wire не исключение. В директории /sys/bus/w1/devices/ для каждого датчика, подключенного по шине 1 Wire, создается директория (название ее совпадает с уникальным адресом датчика) и внутри каждой директории в файле w1_slave находится температура, которую этот датчик намерял. Здорово, не правда ли? Ну давайте посмотрим что у нас есть в директории /sys/bus/w1/devices/. Воспользуемся командой ls:
ls /sys/bus/w1/devices/

Эта команда выдает на консоль список файлов и дикторий, внутри директории, которая указана в команде. Мы видим, что (кроме мастера) у нас есть 4 директории с именами типа 28-0000018.... (на рисунке я их обвел красным). Я уже знаю, что датчик 28-00000180a353 - находится в кубе, 28-0000018c5c68 - в колонне, 28-0000018c4de1 - в дефлегматоре и 28-00000180c746 - на выходе контура охлаждения дефлегматора. Определить где какой датчик легко. Шина 1 Wire позволяет подключать или отключать датчики "на лету". Отключаем, подключаем и смотрим что изменилось в директории /sys/bus/w1/devices/.

Продолжим тестирование. Наличие этих директорий (типа 28-0000018...) означает, что шина 1 Wire функционирует и что на ней "висят" четыре работоспособных датчика. Как же нам узнать температуру? Для этого посмотрим что у нас есть в какой-нибудь из директорий, относящихся к датчикам. Например, - в директории 28-00000180a353, которая связана с датчиком, расположенном в кубе. Опять воспользуемся командой ls:
ls /sys/bus/w1/devices/28-00000180a353

Мы видим, что файл с данными о температуре (w1_slave) есть в этой директории. Посмотрим содержимое этого файла. Для этого воспользуемся командой cat:
cat /sys/bus/w1/devices/28-00000180a353/w1_slave

Мы видим, что в файле две строки. Из первой строки мы узнаем что цикл преобразования закончился корректно (об этом говорит слово YES), а в конце второй строки после "t=" мы можем разглядеть температуру (это - градусы Цельсия, умноженные на 1000, чтобы не заморачиваться с десятичной точкой). Т.е. температура в кубе +39.062°C. Посмотрев содержимое такого же файла (w1_slave) в директориях, соответсвующих другим датчикам, мы можем узнать и их температуру.

Итак, датчики температуры работают нормально. Продолжаем тестирование системы. Теперь нам нужно проверить работоспособность шины I2C и подключенного к ней контроллера ТЭНа.

Давайте сначала посмотрим что у нас вообще подключено к этой шине. Для этого выполним команду:
i2cdetect -y 1

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

Теперь немного пообщаемся с контроллером ТЭНа из питона (проверим установлен ли модуль smbus для работы с шиной I2C). Для этого запустим интерпретатор питона командой:
python

Приглашение в виде >>> говорит о том, что мы - уже в интерпретаторе питона. Импортируем модуль smbus:
import smbus

Если модуль есть (интерпретатор не ругнулся), то идем дальше. Если нет, то выходим из питона и инсталлируем этот модуль (командой sudo apt-get install python-smbus), опять заходим в питон и пытаемся импортировать этот модуль. На это раз все должно получиться.

Далее, создаем объект для работы с шиной:
bus = smbus.SMBus(1)

Все. Теперь мы можем общаться с контроллером ТЭНа по шине I2C. Попробуем сначала считать один байт с контроллера инструкцией (байт, который будет считан, это текущая мощность в % от максимальной, которую обеспечивает в данный момент контроллер ТЭНа):
print bus.read_byte(4)

Мы видим 0. Правильно. в таком состоянии контроллер ТЭНа и был оставлен вчера. Теперь запишем в него какое-нибудь число (от 0 до 100), например, 52:
bus.write_byte(4, 52)

4 - это адрес контроллера, 52 - это посылаемое ему число. Смотрим на индикатор контроллера ТЭНа. Мы должны увидеть 52. Если бы сейчас на контроллер ТЭНа подавалось бы напряжение сети, то в ТЭН поступало бы 52% полупериодов сетевого напряжения (по алгоритму Брезенхема). Но сейчас нам это не важно. Мы просто тестируем систему.

Давайте опять считаем один байт информации с контроллера ТЭНа и выведем его на экран:
print bus.read_byte(4)

Отлично! Мы видим 52. Все. Мы убедились, что малинка может управлять контроллером ТЭНа по I2C. В завершение сбросим мощность на 0 и выйдем из интерпретатора питона.
bus.write_byte(4, 0)
exit()

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

5.5. Скрипт первой автоматизации

Текст скрипта - в прилагаемом к топику файле (nna_01.py.zip). Он достаточно подробно прокомментирован. Логика его работы очень проста: после инициализации всех параметров, организуется бесконечный цикл. В этом цикле мы измеряем температуры с датчиков и уровень мощности (в % от максимальной), который обеспечивает контроллер ТЭНа. Начальный режим работы системы - 0. В этом режиме ничего не происходит - только считывание температур и мощности, вывод этих параметров на экран и в файл журнала. Это режим существует для работы с системой "вручную". Например, при проведении каких-нибудь экспериментов.

Нажав на клавишу 1, мы переведем систему в режим 1. Это режим разгона. ТЭН включится на полную мощность. Когда температура, измеряемая датчиком, расположенным в колонне, лостигнет значения T11 = 50°C, мощность ТЭНа автоматически будет уменьшена до рабочего значения sPDM_600 = 38 (соответствующего приблизительно 600 Вт). Система перейдет в режим 2.

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

Ну что, пора переходить к испытанию нашей первой автоматизации.

5.6. Испытание

Наливаем в куб сырец, ставим колонну, подключаем датчики температуры к шине 1 Wire, включаем воду и связываемся с малинкой по SSH ( если успели покинуть ее). Создадим какую-нибудь рабочую директорию, куда будем складывать наши скрипты автоматизации. Пусть эта папка для определенности будет называться nna. Копируем по SSH уже распакованный файл скрипта (nna_01.py) в эту папку. Eсли копирование файлов по SSH кажется непривычным или некомфортным, то можно запустить на малинке какой-нибудь текстовый редактор (например, nano), воспользоваться буфером обмена и сохранить текст уже на малинке под именем nna_01.py.

Далее, включаем контроллер ТЭНа в сеть (полагаем, что 5 вольт на контроллеры уже поданы) и набираем команду:

python nna_01.py


После коротенькой паузы мы увидим в консоли первые данные, полученные малинкой от датчиков температуры и контроллера ТЭНа. Примерно как на рисунке ниже.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

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

Чтобы остановить систему нужно нажать кнопку "q" (маленькая q в английской раскладке)

Все. Мы сделали первый шаг на пути автоматизации нашей установки. Шаг еще маленький и убогий, но он - первый!

В папке nna, где находится наш первый скрипт, мы найдем файл журнала log. Это текстовый файл со всеми параметрами процесса в течение всей работы установки. Этот файл можно открыть в текстовом редакторе и посмотреть. Можно загрузить в какую-нибудь программу для построения графиков (да хоть в тот же Excel или Libre Calc). Ниже на рисунке пример такого графика, полученного во вчерашнем процессе (от незаконченной ректификации в кубе оставалось пару литров АС - как раз, чтобы не скучно было тестировать).
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

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

Все. Испытания закончены и прошли успешно. Возвращаемся опять к изготовлению узлов системы. На очереди - контроллер электромагнитного клапана отбора.
================================================
Предыдущий топик  Вернуться к оглавлению  Следующий топик


nna_01.py.zip 3.1 Кб
log.zip 15.3 Кб
сообщения удалены (3)
woddy Доцент Новосиб 1.3K 489
Отв.44  06 Янв. 17, 00:30
m16, давай дождемся завершения проекта. Если код читаемый, то мы нагло возьмем его, прикрутим к [Регулятор напряжения и тока на Arduino Pro Mini] , датчик напряжения заткнем заглушкой и будем радостно использовать. Важно что у нас есть готовое api для i2c шины и нормальный софт для малины
сообщение удалено
woddy Доцент Новосиб 1.3K 489
Отв.45  06 Янв. 17, 01:08, через 38 мин
очень интересно, что это?HBB, 06 Янв. 17, 00:44
Скрытый текст- почему женщины досматривают порно до конца?
- они надеются что всё закончится свадьбой

я надеюсь что будет какой-то web gui в конце сериала, а не только консольные скрипты Улыбающийся

Добавлено через 7мин.:

удалил из темы посты не относящиеся к проекту. так же удалил вопросы на которые автор дал ответ (они процитированы в постах автора темы)
сообщения удалены (4)
C-Bell Научный сотрудник Улан-Удэ 1.8K 1.3K
Отв.46  06 Янв. 17, 02:34
второе - ось. управляющий контроллер должен быть конечным автоматом т.е. работающий в реалтайме  и никакие оси КА не нужны . в данном случае ось есть злоm16, 06 Янв. 17, 02:03
Довольно спорное утверждение, и в данной теме это флуд.
OldBean Доцент Красноярск 1K 1.4K
Отв.47  06 Янв. 17, 07:17
бред в двойне.m16
Уважаемый, m16, во-первых "вдвойне" здесь должно писаться вместе, а во-вторых, прежде чем давать жесткую характеристику какому-нибудь посту неплохо было бы полностью понять о чем же идет речь в топике. Там речь идет о том, что если поставить в систему вместо РЕГУЛЯТОРА мощности  СТАБИЛИЗАТОР мощности (жестко аппаратный), то гибкость системы мы сразу же сильно ограничим только одним режимом стабилизации.

Я думаю, не стОит нам здесь затевать религиозный спор о фазовых регуляторах и Брезенхеме. Тем более, я уверен на 99%, что большинство авторов на данном форуме, которые пишут про мигающие лампочки, ни разу НА ПРАКТИКЕ не имели дело с ПРАВИЛЬНЫМ Брезенхемом. Либо работали в отдаленном сарае, куда идет переноска метров 40 полу-миллиметрового провода и та самая мигающая "лампочка Ильича" включена в один и тот же тройник вместе с 4 кВт-ным ТЭНом. :)))))))))) Обменялись мнениями - и довольно!

Мы можем поступить проще. Следующую версию контроллера ТЭНа можно сделать универсальной, чтобы перемычками (или по команде от малинки) выбирать режим работы регулятора (фазовый, Брезенхем или просто секундный ШИМ, с целыми полупериодами). Я вначале так и хотел сделать, но потом передумал, т.к. миф о мигающих лампочках был опровергнут на моем ЛИЧНОМ опыте многократных ректификаций (в том числе и при лампочках, которые НЕ мигали и НЕ сводили с ума). Изменений в схеме никаких не потребуется. Просто в новый вариант контроллера ТЭНа нужно поставить оптосимистор без собственного детектора нуля. Все остальное спокойно переносится на софт ардуинки. Даже печатку не нужно переделывать (если режим выбирать малинкой).

я надеюсь что будет какой-то web gui в конце сериала, а не только консольные скриптыwoddy
Сценарий конца сериала еще не написан :)))

Я просто привык к консоли, поэтому и не заморачиваюсь никакой гуей. После того, как плотно поработаешь с консолью хотя бы несколько месяцев, любой GUI кажется тесным и убогим. Я сам в это не верил раньше, пока жизнь (точнее один проект) не заставила научиться работать с консолью... На малинке с питоном web gui (с кнопочками и прочими "рюшечками") написать несложно. Напишем (может быть и совместно) в конце сериала, если нужно...
mak Модератор Екатеринбург 6.3K 1.8K
Отв.48  06 Янв. 17, 09:06
HBB, не по теме ты, особенно про рм2
еще и жалобы тыкаешь что угрожают тебе и оскорбляют
HBB Кандидат наук Москва 356 94
Отв.49  06 Янв. 17, 10:55
еще и жалобы тыкаешь что угрожают тебе и оскорбляютmak, 06 Янв. 17, 09:06
Уважаемый mak, а разве это:
HBB , флудилка в другом месте .больше предупреждений не будет - только бан.m16, 06 Янв. 17, 02:03
не угроза? Мои сообщения удалены, хотя одно из  них вполне резонный вопрос,  а второе – лишь ответ на флуд модератора. А так как я сам модерирую два форума, как поступать, знаю.
И вообще, три модератора в одной ветке - нехило...
Тема ветки - управление периферийными устройствами малинкой. И этой темой я занимаюсь уже скоро год. Решение OldBean, такое, а у меня есть желание РМ использовать, и пока никто мне ничего предложить не смог. Я прекрасно понимаю, что это не совсем то, о чем пишет OldBean, но вполне соответствует теме. Неплохо бы осознать, что кроме "знатоков" в ЛУДе есть и поприземленнее народец. Дойдет до программирования, там и поглядим, кто на что горазд. Особенно, если до WEB-морды дойдет.

Добавлено через 35мин.:

Я думаю, не стОит нам здесь затевать религиозный спор о фазовых регуляторах и Брезенхеме. Тем более, я уверен на 99%, что большинство авторов на данном форуме, которые пишут про мигающие лампочки, ни разу НА ПРАКТИКЕ не имели дело с ПРАВИЛЬНЫМ Брезенхемом. Либо работали в отдаленном сарае, куда идет переноска метров 40 полу-миллиметрового провода и та самая мигающая "лампочка Ильича" включена в один и тот же тройник вместе с 4 кВт-ным ТЭНом. Улыбающийся))))))))) Обменялись мнениями - и довольно!OldBean, 06 Янв. 17, 07:17
OldBean, именно поэтому я сосредоточился на РМ, как на наиболее продвинутом продукте, ИМХО. Вся эта китайская лабуда не прошла такого серьезного испытания, как РМ. Ты вот, 1,5 квт юзаешь, а если будет 5? Выдержит ли твоя техника такую нагрузку 25 часов? Тебе же сразу на клеммник указали.  Одно дело лаборатория, а другое - производство Улыбающийся
slony Магистр Сочи 246 63
Отв.50  06 Янв. 17, 11:35, через 41 мин
я надеюсь что будет какой-то web gui в конце сериала, а не только консольные скриптыwoddy, 06 Янв. 17, 01:08
С малинкой легко и веб интерфейс организовать. Но пока это просто не интересно.OldBean, 30 Дек. 16, 13:12
Сказали же, что кина не будет (
сообщения удалены (3)
OldBean Доцент Красноярск 1K 1.4K
Отв.51  06 Янв. 17, 18:09
Продолжу, пожалуй, по плану...

6. Контроллер электромагнитного клапана отбора

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

Я, по случаю, приобрел отличный клапан AR-HX-3 MSQ с катушкой на 220В. Клапан сделан из нержавейки, кляп - из силикона. Полностью разбирается, что дает возможность починить его, если что... Правда, кое-какие действия руками все равно придется сделать, чтобы довести клапан до кондиции. Конкретно - сделать переходник с жиклером и как-то закрепить клапан около дефлегматора. Я это сделал так, как показано на рисунке ниже.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Проблему крепежа решили: 1) сантехнический хомут, 2) шпилька и 3) небольшая пластинка, которая по совместительству выполняет роль небольшого радиатора. Испытания со 100% открытым клапаном в течение 2 часов показали, что нагрев катушки вполне приемлем (ее спокойно можно держать руками). Так что с крепежом разобрались.

Переходник я сделал из удлиненной нержавеющей гайки на M8, купленной в магазине. См. рисунок ниже.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Сверху примерно до середины гайки было просверлено отверстие диаметром 8 мм. В это отверстие был вставлен и пропаян кусочек нержавеющей трубки 8х1, который соединяется со сливом узла отбора отрезком силиконой трубки.

С другой стороны гайки (снизу) тоже примерно до середины было просверлено отверстие диаметром 9 мм в котором была нарезана резьба M10х1 для входного штуцера клапана. Посредине, между двумя силиконовыми колечками зажимается жиклер, сделанный из нержавеющей фольги 0.1 мм. Отверстие в жиклере было подобрано таким образом, чтобы расход спирта через полностью открытый клапан составлял бы приблизительно 1000 мл/час. К сожалению, сейчас не помню на каком диаметре я остановился. То ли 0.6 мм, то ли 0.8 мм. А разбирать и измерять - как-то не с руки... Но все равно, диаметр жиклера придется подбирать индивидуально, а порядок отверстия жиклера я сказал.

Итак, с железом разобрались, теперь немного о мозгах. Схема контроллера клапана отбора представлена на следующем рисунке.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Схема проста как шлагбаум. В правой части - уже знакомый нам "модулек". Значит нужно сделать еще один и прошить прошивкой (скетчем), прилагаемой к данному топику. К выходу модулька (пин D9) через резистор R4 подключен светодиод оптосимистора. С другой стороны оптосимистора тоже все предельно просто - снаббер, предохранитель, сам клапан и сеть. В отличие от ТЭНа, здесь у нас нагрузка индуктивная. Поэтому снаббер C1, R5-R6 нужен.

Файл печатной платы прилагается к данному топику (valve_16.11.21.lay6.zip), а вид собранной платы (уже встроенной в систему) показан на следующей фотографии.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Пару слов о скетче. Файл скетча находится в приложении к данному топику (valve_16.11.21.ino.zip). Логика работы программы тоже довольно проста. Для управления клапаном использует метод широтно-импульсной модуляции (ШИМ). Клапан периодически открывается и зарывается. Скважность как раз и определяет пропускную способность клапана. Период ШИМ - 10 сек (естественно, его можно изменить в скетче). Но, ИМХО, такой период кажется мне оптимальным. Программная реализации ШИМ тоже проста  - тупо "дергаем" ножкой D9 согласно установленному уровню ШИМ. Комментарий - в соответствующем фрагменте скетча.

Контроллер клапана отбора, так же, как и контроллер ТЭНа, может работать в двух режимах: в ручном (управляется двумя кнопочками) и автоматическом (управляется малинкой по шине I2C). В ручном режиме кнопочками мы устанавливаем скорость отбора в процентах от максимальной скорости, которая определяется жиклером при постоянно открытом клапане.

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

Разные точки графика были получены в разное время в течении примерно двух месяцев. Видно, что стабильность работы клапана выше всяких похвал. Когда, через 2 месяца работы, при проверке калибровки у меня совпали все три цифры трехзначного числа (!), я понял, что не ошибся в клапане AR-HX-3.

Клапан может работать и в автоматическом режиме под управлением малинки. В этом случае малинка может считывать по шине I2C текущее значение ШИМ, установленное в контроллере клапана, либо записывать уровень ШИМ в процентах от максимума в контроллер (число от 0 до 100). Контроллер тут же начнет выполнять это пожелание малинки :)))

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

Ну вот и все про клапан отбора и его контроллер.

=======================================================
Добавлено 05.07.2017

Обновление скетча для клапана отбора от 05.07.2017 можно взять здесь.
Устранен небольшой и некритичный косячок, связанный с эпизодическими короткими "пощелкиваниями" клапана при pwm = 0
=======================================================

Предыдущий топик  Вернуться к оглавлению  Следующий топик
SedoY Профессор Новосибирск 5.1K 2.2K
Отв.52  06 Янв. 17, 19:44
Клапана как то уже избито, опробовано и новизны, как и интереса не представляет. (Пережималки, иголки, высота столба жидкости...) Уже давно известно какой рукой и какой интенсивностью онанировать )))))

Почему мысль не пришла к перестальтическому насосику и автоматическому переключению по фракциям (фракционник)
Прям один модуль идеологический можно смело делать.
сообщение удалено
mak Модератор Екатеринбург 6.3K 1.8K
Отв.53  06 Янв. 17, 21:26
Почему мысль не пришла к перестальтическому насосику и автоматическому переключению по фракциям (фракционник)SedoY, 06 Янв. 17, 19:44
давно уж работаю только с насосами, просто не особо кому это нужно из-за стоимости
сообщения удалены (2)
OldBean Доцент Красноярск 1K 1.4K
Отв.54  07 Янв. 17, 06:05
Колонне, по большому счету, глубоко плевать, чем у нее отобрали спирт: килобаксовым насосом или клапаном за несколько сотен рублей. Ей важно только когда, сколько и с какой скоростью мы у нее отбираем "кровное". Ей также, по сути, глубоко плевать как и чем мы регулируем мощность нагрева (фазой или Брезенхемом). Главное - делать это контролируемым способом и так как нужно. А все остальное, ИМХО, дело вкуса и привычки. Кстати, и дилемма "гуя-консоль" - из той же оперы.  Почти у каждого будут какие-то свои предпочтения.

Я это к тому, что если мы сильно "зароемся" в конкретные вопросы реализации отдельных узлов, то мы никогда не доберемся до главной цели данной ветки - иерархической организации интеллектуальных (ну, ладно, - более-менее :))) устройств (исполнительных устройств и датчиков) в содружестве с малинкой для задач управления процессом ректификации.
сообщения удалены (4)
OldBean Доцент Красноярск 1K 1.4K
Отв.55  07 Янв. 17, 18:08
AlexDol , я использую ПМС-100, но для наших температур (в спиртовой колонне) вполне можно использовать и менее высокотемпературные сорта. Например, ПМС-20 и др.
======================

sevpro, вот сижу и тупо пытаюсь найти хоть одно преимущество перистальтического насоса в системе отбора ректификационной колонны по сравнению с электромагнитным клапаном с ШИМ-ом под управлением контроллера (ну для примера, хотя бы как у меня описано). И не могу найти ни одного. Не поможете?

PS
Скорее наоборот два минуса - и размеры и цены выше.

Узел отбора устроен так, что перепад давления всегда один и тот же. Линейность отбора - прекрасная. Стабильность скорости отбора, думаю, не хуже, чем у насоса. За два месяца работы (порядка десяти ректификаций) ни одного сбоя. Установленный расход - что два месяца назад, что сейчас. Я тоже в любой момент могу попросить контроллер (или малинку) помножить время на расход и доложить мне о количестве пропущенного спирта. Состав жидкости (с точки зрения вязкости) тоже не меняется (на тех стадиях, где важно знать расход). Я понимаю установку перистальтики, когда нужно вверх или вбок качать. Но когда само течет вниз - не понимаю зачем.
Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.
сообщения удалены (13)
mak Модератор Екатеринбург 6.3K 1.8K
Отв.56  08 Янв. 17, 15:14
обсуждение интерфейсов перенес в другую тему
[Создадим свой открытый протокол обмена данными между контроллером и модулями]
тема интереса в свое время не вызвала, но потрындеть можно, вдруг чего выйдет, потом систематизирую
сообщения удалены (3)
OldBean Доцент Красноярск 1K 1.4K
Отв.57  08 Янв. 17, 19:21
7. Немного о концепте

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

Суть подхода стара как мир. Это объектно-ориентированный (ОО) подход в проектировании установок. Обычно концепция ОО ассоциируется с разработкой компьютерных программ, но она вполне применима и при конструировании инженерных устройств. Почему? Потому что наиболее адекватно отражает устройство человеческого мозга и человеческого способа познания и описания окружающего мира.

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

Где-то как-то именно такой подход я и планировал здесь реализовать. К сожалению, я еще не сильно далеко продвинулся в этом направлении, но первые попытки уже вселяют в меня некий оптимизм.

Поскольку управляющим компьютером является малинка под Linux, то в качестве ОО-языка вполне естественно был выбран python. В принципе, можно и C++, но ИМХО, уровень питона более способствует данной задаче (слишком много рутины еще останется в поле зрения программиста, если работать на C++).
--------------------
Увы, Новогодние каникулы заканчиваются. Наступают трудовые будни. Времени заниматься этим проектом будет очень мало. Но постараюсь приложить максимум усилий, чтобы довести его до какого-то приемлемого уровня в разумные сроки.

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

--------------------
PS
Ниже приведена картинка из замечательной книги Гради Руч "Объектно-ориентированный анализ и проектирования". Эта книжка здОрово приводит мозги в порядок, когда начинаешь теряться в сложностях проектируемого объекта и "зашиваться" в мелочах :))))
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

=======================================================

Предыдущий топик  Вернуться к оглавлению  Следующий топик
OldBean Доцент Красноярск 1K 1.4K
Отв.58  09 Янв. 17, 13:14
8. Датчик RMS

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

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

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

Схема датчика RMS представлена на рисунке ниже.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Слева на схеме наш знакомый "модулек" (значит необходимо сделать еще один). Справа - простейшая цепь, состоящая из понижающего трансформатора, выпрямительного мостика и регулируемого делителя напряжения R1-R2 с конденсатором C1, фильтрующим высокочастотные помехи. Если в сети вероятны сильные "выбросы" напряжения, необходимо параллельно C1 поставить защитный стабилитрон D1. Сигнал с делителя подается на вход АЦП ардуинки (A3).

Файл печатной платы находится в приложении к данному топику (файл rms_16.10.19.lay6.zip), а фотография собранного датчика RMS - на рисунке ниже.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Измерение среднеквадаратичного напряжения сети происходит следущим образом. Код АЦП,  соответствующий мгновенному значению напряжения сети, возводится в квадрат и суммируется с предыдущими значениями в накопителе. Частота, с которой происходит оцифровка - 5 кГц. После накопления определенного количества отсчетов (в данном случае 2500 (50 полупериодов сети)) происходит программное преобразование суммы квадратов кодов АЦП в среднеквадратичное напряжение сети и процесс повторяется.

Для преобразования суммы квадратов кодов в напряжение сети используются калибровочные коэффициенты, которые необходимо определеить экспериментально в процессе калибровки. Для калибровки нам понадобится ЛАТР и образцовый вольтметр. Поскольку основное назначение датчика RMS - отслеживать колебания сетевого напряжения (т.е. нам достаточно относительных измерений), то очень высокая точность калибровки нам не нужна. Поэтому в качестве образцового вольтметра может быть использован любой вольтметр, умеющий измерять среднеквадратичное напряжение сети. Вполне сгодится даже бытовой ваттметр (см. рисунок ниже).
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Процедура калибровки подробно описана в скетче, прилагаемом к данному топику (файл rms_17.01.09.ino.zip). После калибровки, датчик RMS готов к работе. Желательно проверить линейность датчика (т.е. построить зависимость напряжения, показываемого индикатором датчика, от напряжения сети, измеряемого образцовым прибором). Как правило, если калибровка выполнена правильно, линейность очень хорошая и цифры на индикаторе датчика полностью совпадают с цифрами образцового прибора во всем рабочем диапазоне датчика (в данному случае от 140 до 260 В).

Для проверки работоспособности датчика по шине I2C малинки, подключим датчик к этой шине, подадим на плату датчика питание 5В и подключим его к измеряемой сети 220 В.

Соединяемся с малинкой по SSH. Протокол всей сессии представлен на рисунке ниже.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Предполагается, что с шиной I2C мы уже работали (т.е. она "включена"). Если же нет и малинка "новая", то необходимо разрешить работу шины, воспользовавшись утилитой raspi-config (команда "sudo raspi-config", затем в меню Advanced Options->A7 I2C).

Итак, смотрим, что у нас "висит" на шине I2C (см. протокол сессии на рисуне). Для этого воспользуемся командой:
i2cdetect -y 1
Мы видим (см.рисунок), что на шине 3 устройства с шестнадцатеричными адресами 0x04, 0x05 и 0x06. Это наши контроллеры: 0x04 - контроллер ТЭНа, 0x06 - контроллер клапана отбора и датчик RMS - 0x05. Ну что ж, датчик RMS на шине виден. Посмотрим теперь как он работает. Для этого заходим в интерпретатор питона (команда python) и импортируем модуль для работы с шиной I2C:
import smbus
и создаем объект - шину (первая шина I2C):
bus = smbus.SMBus(1)
Теперь мы можем общаться с любым устройством, поключенным к этой шине. Посмотрим что же намерял наш датчик RMS (напомню, что у него адрес 0x05). Пишем питоновстую команду:
print bus.read_byte(0x05) + 100
Здесь "+ 100" потому что датчик RMS посылает на шину значение напряжения на 100 меньше измеренного (см.текст скетча в самом конце). Это просто для удобства, чтобы не организовывать обмен словами по 2 байта (на случай, когда напряжение превышает 255 В). На консоли мы видим, что датчик RMS работает (у меня в розетках всегда повышенное напряжение в районе 240 В).

Все. Изготовление и тестирование датчика RMS закончено. Выходим из интерпретатора питона (exit()) и "отцепляемся" от малинки (просто exit).

Осталось рассмотреть последний датчик, подключенный к установки на данный момент - датчик атмосферного давления.
==========================================
Примечание
Обновление (от 18.01.2017) скетча можно взять здесь в приложении к топику (файл rms_17.01.18.ino). Исправлен небольшой (но не критичный) баг: при отсутствии напряжения в сети (или меньше 100 В) датчик отправлял на шину I2C некорректное значение напряжения (отрицательное число, обрезанное под uin8_t).

==========================================

Предыдущий топик  Вернуться к оглавлению  Следующий топик
OldBean Доцент Красноярск 1K 1.4K
Отв.59  09 Янв. 17, 14:29
9. Датчик атмосферного давления

Атмосферное давление - важный параметр. От него зависит температура кипения. Поскольку процесс ректификации обычно довольно длительный (десятки часов), атмосферное давление за это время может существенно изменяться и внести "свои поправки" к показаниям температурных датчиков в кубе, колонне и дефлегматоре. Поэтому иметь на установке датчик атмосферного давления очень полезно (хотя бы для справки).

Я использовал готовый модуль GY-68 c датчиком BMP180. Этот датчик позволяет измерять атмосферное давление в пределах от 30 до 110 кПа (от 225 до 825 мм.рт.ст.) и еще и температуру. К малинке датчик подключается по шине I2C. Кроме земли и сигнальных проводов (SCL и SDA) на датчик необходимо подать напряжение питания 3.3В. Датчик миниатюрный. Поэтому его можно разместить непосредственно на разъемах шины. Вариант размещения датчика можно посмотреть на следующем рисунке.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

После подключения датчика к малинке, соединяемся с малинкой по SSH и проверяем "связь". Если к шине I2C подключены контроллеры куба, клапана и датчик RMS, обязательно подаем на них питание, либо отключаем от шины. Мы предполагаем также, что шина I2C в мастере (малинке) активирована. Если нет - необходимо ее "включить" в raspi-config (команда "sudo raspi-config", затем в меню Advanced Options->A7 I2C сделать enable). Итак, шина "включена". Для просмотра всех устройств, подключенных к шине, даем команду:
i2cdetect -y 1

Мы увидим табличку в которой появилось новое устройство по шестнадцатеричному адресу 0x77 (на рисунке ниже обведено красным).
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Если к шине подключены все наши контроллеры и датчик RMS, мы их тоже увидим (обведено голубым). Контроллер ТЭНа имеет адрес 0x04, датчик RMS - 0x05 и контроллер клапана отбора - 0x06. Если все так - то все работает.

Если мы хотим работать с датчиком давления из python (а мы это хотим), нужно установить несколько пакетов и библиотеку Adafruit BMP. Делается это так. Сначала устанавливаем необходимые пакеты (это мы делаем, соединившись с малинкой по SSH из ее консоли):
sudo apt-get install git build-essential python-dev
Затем репозиторий с GitHub:
git clone https://github.com/adafruit/Adafruit_Python_BMP.git
У нас появится новая директория Adafruit_Python_BMP, в которой находится дистрибутив и примеры. Заходим в эту директорию:
cd Adafruit_Python_BMP
и устанавливаем библиотеку:
sudo python setup.py install
Все. Теперь мы можем работать с датчиком BMP180. Например, измерить атмосферное давление. Попробуем. Заходим в интерпретатор питона:
python
Затем уже в питоне импортируем модуль Adafruit:
import Adafruit_BMP.BMP085 as bmp
Создаем объект (по сути, логически это и есть как бы датчик):
sensor = bmp.BMP085()
и измеряем давление (в паскалях):
print sensor.read_pressure()
Если привычнее в мм.рт.ст., то сразу переведем паскали в мм:
print sensor.read_pressure()/133.322

Аналогично, с помощью этого же объекта-датчика мы можем измерять и температуру окружающей среды:
print sensor.read_temperature()
Ух ты! 30.5°C! То-то я чувствую, жарковато сегодня в комнате - батареи как кипяток! На этом тестирование датчика давления заканчиваем, выходим из интерпретатора питона (exit()) и завершаем SSH-сессию с малинкой (просто exit без скобок).

=================================

Все. С "железом" мы на время "завязываем". Того, что уже подключено к малинке вполне хватает для реализации многих алгоритмов ректификации. Следующий наш шаг - создание объектной модели ректификационной установки в рамках которой будем писать программы ее автоматизации. Нужно разработать иерархию питоновских классов, инкапсулирующих все технические детали (контроллеры, протоколы и т.п.). Даже такое понятие как "обмен данными" будет "зарыто" где-то в недрах иерархии. Мы будем работать только на уровне физико-химических процессов и соответствующих узлов ректификационной установки. К этой, ИМХО, самой интересной части работы, мы приступаем при первой же возможности.

==========================================

Предыдущий топик  Вернуться к оглавлению  Следующий топик