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

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

Форум самогонщиков Автоматика
1 ... 115 116 117 118 119 120 121 ... 132 118
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.2340  17 Янв. 22, 18:09
Если Вы собираетесь набрать современной кмоповской логики столько, что у Вас будут амперные уровни постоянных потребляемых токов - дело хозяйское. ... Единственное, что я, все-таки, так и не понял: почему на третий пин RJ-45 нельзя посадить сигнальную землю ("ответка" +5V), а дополнительное питание, если нужно, пустить по свободным витым парам? Почему Вы решили сейчас именно на этот пин посадить +5V, создав тем самым: 1) физическую невместимость форка по i2c-сети и 2) невозможность использования стандартных 4-проводных патч-кордов?OldBean, 17 Янв. 22, 13:19
Вот хочется мне запитать головной модуль с RPi от патч-корда. А одна малинка только кушает 15Вт, не учитывая экран...
По пинам, попарно, по цветам - я пытаюсь уйти от разности потенциалов по парам, чтоб не убить магнетики в стандартном сетевом оборудовании в случае ошибочной коммутации к ним нашей I2C сети c PoE. Я не могу найти данные на магнетики, какое напряжение они могут выдержать. Если спокойно выдержат 5В, то можно вернуться GND на 3 пине, а на 5-6 поместить GND и 5v, НО! это в случае 1Gb стандарта. В стандарте 100Mb, 4-5; 7-8 соединены на накоротко и далее через RC просто отфильтровывают любые переходные процессы на GND. Т.е. по 4-5 мы получим коротыш и для наших 5В. Вот я и подумал о том, что можно защититься от этого, при помощи предложенным мною новым вариантом распиновки.
Это святое право разработчика.OldBean, 17 Янв. 22, 13:19
Не, только небольшое видение со стороны по улучшайзенгу.
Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.


Право на концепцию всецело за тобой, Сергей.
Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.2341  18 Янв. 22, 02:33
Мне жаль, что модули распределенной (сетевой) автоматики получатся физически несовместимыми.
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.2342  18 Янв. 22, 09:35
...модули распределенной (сетевой) автоматики получатся физически несовместимыми.OldBean, 18 Янв. 22, 02:33
Сделал изменение. Ввел в схему еще одну землю GND(LIN) для +5v(LIN). Земля получается полностью изолирована. Пины 1 "+5V(LIN)" и 3 "GND(LIN)" будут питать SO1540 вторую изол.часть. Пины 4-5 оставил на первую землю GND, 7-8 под +PoE.
В таком случае физическая совместимость будет достигнута?
Если да, буду перерисовывать платы...
Schematic_Expansion board P2P DC_DC HiLink_2022-01-18.pdf

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

Или GND сделать одну, объединив пины 3-4-5?
OldBean Доцент Красноярск 1K 1.4K
Отв.2343  18 Янв. 22, 11:18
По поводу PoE. То что мне попадалось, обычно было устроены так: пины 4,5 - это DC+, а пины 7,8 - это DC-. Может быть имеет смысл так и сделать. Ну как у всех. Впрочем, в вопросах PoE решайте сами. У меня здесь нет каких-то особых предпочтений. В таком варианте PoE можно подключить автономно в любом сегменте i2c-сети. Если припрет с питанием. Главное, что его наличие или отсутствие никак не будет сказываться на работе самой i2c-сети. Демократия и свобода творчества, однако.

Про совместимость будет ясно, когда Вы определитесь с линиями SDA и SCL. Просто у Вас в тексте написано, что пин 2 это SDA, а пин 6 - это SCL (т.е. так же, как и у меня), а на схеме в pdf-ке почему-то наоборот.

У меня платы расширения малинки (с питанием от сети) сделаны под такой вариант распиновки RJ-45:

пин 1 - +5V (lin)
пин 2 - SDA
пин 3 - GND (lin)
пин 4 - DC+ (PoE)
пин 5 - DC+ (PoE)
пин 6 - SCL
пин 7 - DC- (PoE)
пин 8 - DC- (PoE)

Если будете переразводить, то может на таком и остановимся?
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.2344  18 Янв. 22, 11:47, через 29 мин
на схеме в pdf-ке почему-то наоборот.OldBean, 18 Янв. 22, 11:18
Да, не заметил...
Исправление внёс.
Все по этой распиновке.
пин 1 - +5V (lin)
пин 2 - SDA
пин 3 - GND (lin)
пин 4 - DC+ (PoE)
пин 5 - DC+ (PoE)
пин 6 - SCL
пин 7 - DC- (PoE)
пин 8 - DC- (PoE)OldBean, 18 Янв. 22, 11:18

Выделил чистую GND, гальванически не связанной ни с GND (lin), ни с DC- (PoE). DC/DC преобразователь Hi-Link HLK-20D2405C изолированный, грех не использовать это.
В других модулях на DC/DC преобразователе K78L05-1000R3 чистую GND не буду выделять, т.к. не получится...
OldBean Доцент Красноярск 1K 1.4K
Отв.2345  18 Янв. 22, 13:09
Сейчас все хорошо. Полная совместимость по i2c-сети имеет место быть. Один маленький совет и маленький вопрос.

Совет. Диод D4, насколько я понимаю, служит для защиты от переполюсовки питания. Зачем же терять пол-вольта на каждой Шоттке? Сейчас в народе модно ставить для этой цели маленькие полевички p-типа. Места занимают практически столько же и для 5V не нужно никакой дополнительной обвязки. Сопротивление исток-сток в открытом состоянии - десятки миллиом.
protection.png
Protection. Ненавязчивая автоматизация ректификационной установки. Автоматика.


И вопрос.
Как Вы планируете делать общую перезагрузку всех модулей i2c-сети, если вдруг, не дай Бог, сеть "встала колом"?
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.2346  18 Янв. 22, 15:24
Совет. Диод D4, насколько я понимаю, служит для защиты от переполюсовки питания. Зачем же терять пол-вольта на каждой Шоттке? Сейчас в народе модно ставить для этой цели маленькие полевички p-типа. Места занимают практически столько же и для 5V не нужно никакой дополнительной обвязки. Сопротивление исток-сток в открытом состоянии - десятки миллиом.OldBean, 18 Янв. 22, 13:09
Да, Разъем Х1 для подачи 5В по витой паре, если вдруг приспичило. Хотя, если учесть мое питать RPi от витой, Х1, в данном случае стремление на плате расширения, не понадобится.
На счет полевого р-типа понял, поставлю их.

Как Вы планируете делать общую перезагрузку всех модулей i2c-сети, если вдруг, не дай Бог, сеть "встала колом"?OldBean, 18 Янв. 22, 13:09
С широким взмахом убрал res вместе с int... Улыбающийся
Сеть не встанет, думаю, ISO1540 не микроконтроллер, не зависнет. А вот какой-нибудь модуль на AtMEGA, может. Watchdog Timer только.
NBVV Специалист Новосибирск 124 2
Отв.2347  19 Янв. 22, 03:43
Пробую откалибровать RMS. Ни test_08 ни test_08_gui запускаться не желают.

pi@raspberrypi:~/Desktop/Amrita/lite_0413 $ python test_08.py
File "/home/pi/Desktop/Amrita/lite_0413/test_08.py", line 21
print "%d   %d   %.1f" % (cntr, crms, v)
^
SyntaxError: invalid syntax
pi@raspberrypi:~/Desktop/Amrita/lite_0413 $

pi@raspberrypi:~/Desktop/Amrita/lite_0413 $ python test_08_gui.py
Traceback (most recent call last):
File "/home/pi/Desktop/Amrita/lite_0413/test_08_gui.py", line 5, in <module>
from Tkinter import * # В этом модуле виджеты для GUI
ModuleNotFoundError: No module named 'Tkinter'

Tkinter установлен
2022-01-19-073231_1024x768_scrot.png
2022-01-19-073231_1024x768_scrot. Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.2348  19 Янв. 22, 05:40
Пробую откалибровать RMS. Ни test_08 ни test_08_gui запускаться не желают.NBVV, 19 Янв. 22, 03:43
Здесь, скорее всего, несколько проблем. Если не изменяет память, то эти тесты вроде бы для старых прошивок. Если Вы используете прошивки для крайней версии lite (0413), то проще откалиброваться при помощи библиотеки lite. Инструкцию смотрите здесь. Раздел 3.5.1. Калибровка.

Измерьте напряжение в сети Uизм. У объекта U0 есть свойство code. Это усредненный код АЦП, соответствующий RMS. Он позволит Вам рассчитать параметр coef из калибровочной "тиады" [coef, offset, index] посредством деления Uизм на code. Для RMS offset=0, index=1. Для проверки (вначале) можете поставить какой-нибудь coef от фонаря. Например, 0.3839.

Я сейчас далеко своих установок, а малинка выключена и подключиться к ней я не могу. Но к вечеру, если у Вас не получится, то напишу на месте боле подробную пошаговую инструкцию.
NBVV Специалист Новосибирск 124 2
Отв.2349  19 Янв. 22, 05:52, через 12 мин
Смущает меня, что в Вашем совете не упоминается подстроечник R4. Он у меня сейчас в крайнем положении после вращения пр. часовой стрелки.
OldBean Доцент Красноярск 1K 1.4K
Отв.2350  19 Янв. 22, 06:30, через 38 мин
Смущает меня, что в Вашем совете не упоминается подстроечник R4. Он у меня сейчас в крайнем положении после вращения пр. часовой стрелки.NBVV, 19 Янв. 22, 05:52
Тут тоже все просто. Печатайте, в консоли питона с загруженной lite, U0.code в цикле. Или руками, периодически. У ATMega328 10-разрядный АЦП. Т.е. максимальный код - 1023. В крайнем положении против ч/с должен быть ноль. Потихоньку крутим резистор пока код не станет на уровне 600-800. Чтобы запас был до 1024. После этого измеряем реальное напряжение сети и считаем coef.

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

Ох, совсем память дырявая стала :(. В этой версии, преобразование запускается при обращении к значению RMS (свойство v), а не к коду (свойство code). Поэтому вместо одиночной команды U0.code вводите пару команд: сначала U0.v, потом U0.code (если в одной строчке, то нужен разделитель ";" между командами). Тогда коды тоже будут обновляться.
sig Кандидат наук Ростов-на-Дону 304 138
Отв.2351  19 Янв. 22, 11:59
pi@raspberrypi:~/Desktop/Amrita/lite_0413 $ python test_08.py
File "/home/pi/Desktop/Amrita/lite_0413/test_08.py", line 21
print "%d %d %.1f" % (cntr, crms, v)
^
SyntaxError: invalid syntax
pi@raspberrypi:~/Desktop/Amrita/lite_0413 $NBVV, 19 Янв. 22, 03:43
Конкретно здесь ошибка синтаксиса. В Python2 можно было писать print "hello". Python3 на это ругается, и писать нужно print("hello"). Т.е. обязательно нужны скобки.
Собственно и с модулем Tkinter у вас скорее всего путаница 2/3 Python
OldBean Доцент Красноярск 1K 1.4K
Отв.2352  19 Янв. 22, 12:20, через 22 мин
Конкретно здесь ошибка синтаксиса. В Python2 можно было писать print "hello". Python3 на это ругается, и писать нужно print("hello").sig, 19 Янв. 22, 11:59
Насколько я понял из листинка, коллега NBVV запускал 2-й питон. Ладно. Старые тесты, для старых прошивок. Что с ними мучиться, когда есть lite? А так-то, конечно, в третьем питоне print - это функция. Нужно ставить скобки.

To NBVV
На всякий случай пошаговая инструкция (скриншот) в помощь, если что-то неполучилось.
2022-01-19-160926_1920x1080_scrot.png
2022-01-19-160926_1920x1080_scrot. Ненавязчивая автоматизация ректификационной установки. Автоматика.
NBVV Специалист Новосибирск 124 2
Отв.2353  19 Янв. 22, 12:40, через 20 мин
Не-не!!! Питон 3-й у меня. OldBean, я думаю, что Ваших пояснений мне хватит, чтобы откалибровать RMS. Просто вышла заминка: Чип и дип продал мне ТПК-0.7 (6В), а он оказался на 12В.
IMG_20220119_1233111.jpg
IMG_20220119_1233111. Ненавязчивая автоматизация ректификационной установки. Автоматика.


Добавлено через 3дн. 23ч. 4мин.:

Уважаемый OldDBean, в sr1.py есть такие строки: "def fcond(): # Проверка условий
#!!!!!!!!!!!!!!!!!! Вставить проверку стационарности T3 и T3 !!!!!!!!!!!!"
Не могли бы Вы пояснить, что имеется в виду?

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

И еще, не могу сообразить одну вещь. У меня три тэна - соответственно в sr1 - три переменных: w0, w1, и w2. Вы задаете рабочую мощность такой строкой: u.ww = 600.0 # Рабочая мощность нагрева куба, Вт. Как мне задать, мощность всех трех тэнов в значение, к примеру, 600?
sig Кандидат наук Ростов-на-Дону 304 138
Отв.2354  23 Янв. 22, 12:58
И еще, не могу сообразить одну вещь. У меня три тэна - соответственно в sr1 - три переменных: w0, w1, и w2. Вы задаете рабочую мощность такой строкой: u.ww = 600.0 # Рабочая мощность нагрева куба, Вт. Как мне задать, мощность всех трех тэнов в значение, к примеру, 600?NBVV, 19 Янв. 22, 12:40
u.ww - это уставка (константа, заданное в настройках значение)
мощность ТЭНов регулируется через w0.v = u.ww
Соответственно для остальных Тэнов w1.v = u.ww; w2.v = u.ww
NBVV Специалист Новосибирск 124 2
Отв.2355  23 Янв. 22, 13:54, через 56 мин
Тогда я неверно задал вопрос. А как будет выглядеть запись в sr1, если мне надо установить, к примеру, первый тэн - 100, второй - 200, третий 300?

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

Другими словами, как мне задать три уставки для тэнов?
sig Кандидат наук Ростов-на-Дону 304 138
Отв.2356  23 Янв. 22, 17:44
Другими словами, как мне задать три уставки для тэнов?NBVV, 23 Янв. 22, 13:54
2 варианта:
  • писать мощность цифрами - w0.v = 100; w1.v = 200; w2.v = 300
  • определить в настройках 3 уставки параметров рабочей мощности -
    u.ww0 = 100; u.ww1 = 200; u.ww2 = 300 и затем в нужном месте присвоить
    w0.v = u.ww0; w1.v = u.ww1; w2.v = u.ww2
Лучше задать уставки в конфиге u, чем потом искать по всей программе и заменять, например 600 на 800, если нужно изменить рабочую мощность.

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

Уважаемый OldDBean, в sr1.py есть такие строки: "def fcond(): # Проверка условий
#!!!!!!!!!!!!!!!!!! Вставить проверку стационарности T3 и T3 !!!!!!!!!!!!"
Не могли бы Вы пояснить, что имеется в виду?NBVV, 19 Янв. 22, 12:40
После начала кипения колонне нужно некоторое время на разогрев и выход на стабильные параметры - для этого есть режим холостого хода или "работа на себя". Сейчас реализована простая задержка по времени 1800 сек. = 30 мин. (Кстати, лучше величину задержки тоже вынести в конфиг u). Есть теория, что можно отследить момент выхода на стабильные параметры по температуре Т3 в ТСА - как она перестала расти и стабилизировалась, переходим на следующий режим отбора голов.
Лично я использую простую константу - уставку по времени (обычно 1 час)
OldBean Доцент Красноярск 1K 1.4K
Отв.2357  24 Янв. 22, 08:45
в sr1.py есть такие строки: "def fcond(): # Проверка условий
#!!!!!!!!!!!!!!!!!! Вставить проверку стационарности T3 и T3 !!!!!!!!!!!!"
Не могли бы Вы пояснить, что имеется в виду?NBVV, 19 Янв. 22, 12:40
Это была рабочая пометка для себя. Просто забыл почистить перед публикацией скрипта. Коллега sig в общем-то все правильно Вам сказал. Но тема критериев перехода между режимами работы важная и интересная. Поэтому имеет смысл сформулировать ее, в приложение к данной автоматике, немного подробнее.

Кубовая ректификация - это многостадийный процесс. Каждая стадия определяется конкретными значениями параметров исполнительных устройств. Для того, чтобы провести кубовую ректификацию полностью автоматически, необходимы четкие критерии перехода от одной стадии процесса к следующей. Это важно как с точки зрения качества конечного продукта, так и с точки зрения общей производительности. В скрипте первичной ректификации спирта-сырца (файл sr1.py) предусмотрено 7 последовательных стадий (режимов). Критерии перехода в следующий режим описываются в соответствующих функциях fcond(). Эти функции вызываются периодически в процессе работы. Для каждого конкретного режима своя конкретная функция. Как только какое-нибудь из условий в функции выполнено, система переходит в следующий режим работы.

Некоторые критерии достаточно четкие (пороговые). Например, критерий окончания разгона: закипело, пар пошел в колонну, температура в царге резко выросла.

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

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

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

PS

Вообще, нечеткие критерии в задачах автоматизации - очень интересная тема, иногда выходящая почти на философский уровень :))) Если интересно, можно как-нибудь обсудить ее подробнее, так сказать, за рюмочкой душистого ликера долгим зимним вечером...
ekochnev Магистр Екатеринбург 206 54
Отв.2358  24 Янв. 22, 08:49, через 5 мин
Есть теория, что можно отследить момент выхода на стабильные параметры по температуре Т3 в ТСА - как она перестала расти и стабилизировалась, переходим на следующий режим отбора голов.
Лично я использую простую константу - уставку по времени (обычно 1 час)sig, 23 Янв. 22, 17:44

У меня очень хорошо зарекомендовал себя следующий алгоритм: переход из режима прогрева колонны и стабилизации к режиму отбора голов происходит после того, как температура в дефлегматоре оставалась неизменной в течении 15 минут. При таком условии весь цикл прогрева-стабилизации занимает примерно 35-40 минут.

Что происходит в эти моменты:
1. После начала кипения куба переходим в режим прогрева. Температура в дефлегматоре в это время комнатная.
2. После подъема пара по колонне в дефлегматоре начинается лавинообразный рост температуры практически до температуры куба.
3. Колонна начинает перераспределять фракции по объему колонны и по мере перехода легкокипящих фракций на самый верх температура в дефлегматоре начинает падать. В какой-то момент это падение замедляется, потом оно начинает колебаться вокруг какого-то значения плюс-минус на 1 квант, затем замирает совсем.
4. После того как она замерла и не менялась ни на один квант в течении 15 минут, происходит переход к режиму отбора голов.

Технически реализовано это так, что после перехода в режим прогрева включается в отдельной переменной счетчик времени. На каждой итерации главного цикла значение температуры в дефлегматоре сравнивается со значением на предыдущей итерации. Если оно изменилось хотя бы на квант, счетчик времени сбрасывается в ноль, если не изменилось, то счетчик времени увеличивается на время цикла. Если время счетчика стало больше, чем заданное в настройках время стабилизации (15 мин), то переход к следующем шагу отбора голов. В итоге общее время шага занимает 35-40 мин, т.е. первые 20-25 мин температура меняется, а последние 15 держится стабильно.

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

Есть у меня давнее желание, сделать самодостаточно устройство для обслуживания всего техпроцесса. Сейчас у меня все управление происходит запуском программы в консоли, подключившись по ssh к малинке с ноутбука или компьютера. Возможность внешнего управления - это конечно хорошо, все отлично работает, но не всегда нравится то, что приходится использовать ноутбук или компьютер. Иногда хочется просто подключить блок управления с малинкой и все сделать локально. При этом совершенно не хочется использовать стандартный графический интерфейс малинки, т.к. это требует подключения монитора, клавиатуры и мыши.
Давно присматривался к различным специализированным сенсорным экранам для малинки, но останавливал от покупки их малый размер и низкое разрешение.
Кажется, сейчас на шел для себя на Али приемлемый вариант - диагональ 7 дюймов, разрешение 1024х600 точек, 5-точечный емкостной сенсорный экран. Работает без драйверов, сенсор обслуживается через I2C. Наверное буду заказывать, напишу потом для себя какую-нибудь простенькую программу с менюшками для управления всем нашим хозяйством.
Может кому еще данная информация будет интересна.
Pi-4B.jpg
Pi-4B. Ненавязчивая автоматизация ректификационной установки. Автоматика.
OldBean Доцент Красноярск 1K 1.4K
Отв.2359  24 Янв. 22, 10:07
Странно, что температура дефа прыгает до кубовой. И еще более странно, что эта температура не колеблется даже на 1 квант. Даже при пограничной температуре (на границе между квантами)? Это у Вас всегда так происходит?
Евгений, а не могли бы Вы привести пример лога?