МОСКОВСКАЯ ВСТРЕЧА
Форум самогонщиков Сайт Барахолка Магазин МОСКОВСКАЯ ВСТРЕЧА

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

Форум самогонщиков Автоматика
1 2 3 4 5 6 7 ... 126 4
OldBean Доцент Красноярск 1K 1.4K
Отв.60  11 Янв. 17, 09:14
10. Классы-обертки

10.1. Классы-обертки для датчиков - модуль sens

Для единообразной работы с разными датчиками из нашего "зоопарка" неплохо было бы создать для них классы-обертки. Такие классы-обертки к трем типам датчиков, подключенных к моей установке, я написал (это классы DS18B20, BMP180 и RMS). Они находятся в модуле sens.py (в приложении к данному топику). Пока, конечно, это очень сырые обертки (см.предупреждение в комментариях к модулю), но их вполне можно использовать для некритичной работы. Зато теперь работа с датчиками стала до смешного простой и единообразной:

Шаг 1. Создаем объект соответствующего класса (если нужно, в конструкторе указываем ID или адрес датчика). Например:
datchik = DS18B20(id-датчика)

Шаг 2. Показания датчика считываются автоматически каждый раз, когда соответствующее свойство/атрибут (температура T, давление P или напряжение V) используется в правой части выражения. Например,
temperature_v_1_3_ot_niza_kolonny = datchik.T
:)))

В модуль sens встроен код для тестирования классов. Соответствующая сессия показана на рисунке ниже. Комментарии - непосредственно в тексте сессии.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Другой пример - работа с датчиками непосредственно из питона показаны на следующем рисунке.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

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

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

==========================================
Примечание
Обновление (18.01.2017) модуля sens - здесь в приложении к топику.

Добавлено 26.01.2017
Новое обновление модуля sens здесь.

Добавлено 01.03.2017
Новое обновление модуля sens здесь. Исправлена реализация многопоточного преобразования температурных датчиков DS18B20. "Глюк" проявился на новых малинках (Raspberry Pi 3 model B).


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

Предыдущий топик  Вернуться к оглавлению  Следующий топик
sens.py.zip 1.7 Кб
SedoY Профессор Новосибирск 5K 2.1K
Отв.61  11 Янв. 17, 19:58
Исполню ка я роль студента первокурсники ))))
А для какой цели плодить сущности? Иметь два блока - регулятор и датчик rms на разных устройствах?
Опять же вернусь к ранее озвученному вопросу: для регулятора применена установка в ℅, даже если на одном контроллере объединить замер напряжения и регулировку "мощности" в каких "попугаях" задавать эту "мощность",если модулем пользовался автономно (без Малинки? Так то бы было неплохо иметь в хозяйстве устройство умеющее поддерживать заданную мощность. Ограничений по примененному индикатору вроде как нет, если пользоваться разделителем.
Рюрик1955 Доцент Серпухов 1.3K 421
Отв.62  11 Янв. 17, 20:35, через 38 мин
OldBean, Не у каждого хорошая проводка и нагрузка в 2-3 кВт. может просаживать сеть. При работе регулятора на малых %% мощности что будет " показывать " RMS- датчик? ( я про это спрашивал в личке ).
Будет набегать ошибка, или они синхронизируются?
сообщение удалено
woddy Новичок Новосиб 1.3K 487
Отв.63  12 Янв. 17, 00:05
Седой, возьми в соседней теме регулятор мощности и добавь пять строчек для протокола I2C )))
OldBean Доцент Красноярск 1K 1.4K
Отв.64  12 Янв. 17, 05:12
А для какой цели плодить сущности? Иметь два блока - регулятор и датчик rms на разных устройствах?SedoY
Хороший вопрос! Причина очень проста. Дело в том, что при кубовой ректификации мы можем использовать разные алгоритмы (точнее - цели) стабилизации. Их несколько, но здесь (на форуме) широко используются только два: стабилизация мощности нагрева куба и стабилизация давления (по сути - стабилизация потока пара в колонну).

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

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

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

Опять же вернусь к ранее озвученному вопросу: для регулятора применена установка в ℅, даже если на одном контроллере объединить замер напряжения и регулировку "мощности" в каких "попугаях" задавать эту "мощность",если модулем пользовался автономно (без Малинки? Так то бы было неплохо иметь в хозяйстве устройство умеющее поддерживать заданную мощность. Ограничений по примененному индикатору вроде как нет, если пользоваться разделителем. SedoY
Здесь тоже все просто и понятно. Рассмотрим на примере. Предполагаем, что номинальная (паспортная) мощность ТЭНа (при 220В) нам известна или измерена. Пусть (как, например, у меня) она равна Wном = 1500 Вт. Допустим, в режиме отбора тела нам нужна мощность нагрева W = 600 Вт. Если бы в сети было ровно 220 В, мы поставили бы на регуляторе Reg220 = (W/Wном)*100 = (600/1500)*100 = 0.4*100 = 40%. Но мы подозреваем, что в сети у нас не 220В. Измеряем его датчиком RMS. Получаем Uизм = 240В (у меня в сети обычно повышенное напряжение, у Вас, естественно может быть другое значение). Вычисляем поправочный коэффициент: k = (220/Uизм)^2 = (220/240)^2 = 0.917^2 = 0.84. Зная этот поправочный коэффициент вычисляем проценты, которые мы должны установить на регуляторе (чтобы мощность ТЭНа была действительно равна 600 Вт) : Reg = Reg220*k = 40% * 0.84 = 33.6%. Т.е. на регуляторе мы должны выставить 34% вместо 40%.

Общая формула для вычисления такая: Reg = (W/Wном)*(220/Uизм)^2*100%, где W - желаемая мощность (Вт), Wном - номинальная (при 220 В) мощность ТЭНа (Вт), Uизм - измеренное среднеквадратичное напряжение в сети (В), Reg - проценты, которые мы должны выставить на контроллере ТЭНа.

Не у каждого хорошая проводка и нагрузка в 2-3 кВт. может просаживать сеть. При работе регулятора на малых %% мощности что будет " показывать " RMS- датчик? ( я про это спрашивал в личке ).
Будет набегать ошибка, или они синхронизируются? Рюрик1955
Все будет измеряться правильно при любых просадках. Напряжение, измеряемое датчиком RMS, практически совпадает с напряжением на клеммах ТЭНа. При измерении RMS происходит усреднение (суммирование) по 50 полупериодам сетевого напряжения. В каждом полупериоде - 50 выборок АЦП. Особенность регулировки Брезенхема (особенно модифицированной!) в том, что пропускаемые к ТЭНу полупериоды напряжения (как раз те, которые могут локально просаживать сеть) более-менее равномерно распределены во времени. Поэтому эти импульсные просадки автоматически учитываются в суммировании (интегрировании) при измерении RMS. А мощность ТЭНа, естественно, будет пропорциональна квадрату RMS.

Есть еще и дополнительный механизм усреднения. Мелочь, но расскажу для полноты картины. При измерении RMS не делается синхронизация к напряжению сети. Поэтому, "окно" измерения RMS слегка плывет по времени относительно колебаний сети. За счет этого происходит дополнительное нивелирование небольшой ошибки, которая может возникать при очень маленьких установленных значениях мощности (1 - 2%) за счет того, что длительность интегрирования (измерения) RMS (50 полупериодов) меньше полного периода Брезенхема (100 полупериодов). Но, еще раз подчеркну, что на уровнях установленной мощности выше 3-5% эта ошибка и так уже становится пренебрежимо малой.

Нужно только предусмотреть, что будет с регулятором в случае потери управляющего сигнала.sevpro
В случае потери управляющего сигнала ничего не происходит. В прямом смысле. Регулятор остается точно в том-же положении в которое был поставлен в последнем обмене перед потерей связи. Т.е. будет пропускать столько полупериодов, сколько ему сказали в последний раз. Он только перестанет адаптироваться под напряжение сети. Ну в этом случае можно просто перейти на "ручное" управление, как было описано выше (Седому). Кстати, это же относится и к контроллеру клапана отбора.
сообщение удалено
SedoY Профессор Новосибирск 5K 2.1K
Отв.65  12 Янв. 17, 09:02
woddy, Алексей, да я как бы на платформу stm32 переползать собрался (ну не принимает мой внутренний мир ардуиноподобное "програмление").

OldBean, в принципе такой ответ и предполагал, и причины понятны, как у нас говорили - старый баг лучше новых двух))) все сделанно, все работает.
но темнеменее выходит модульность не автономная если делить по задачам (задача у модуля регулятора без малинки не решабельная, а это значит что надо сразу все модули собирать - новичков это может пугать, а распространение идеи - в основном новичками массовость достигается)
PavelSaratov Доктор наук Саратов 623 79
Отв.66  12 Янв. 17, 09:22, через 21 мин
Алексей, да я как бы на платформу stm32 переползать собрался
Хороший задел. Сколько уже воинов пало на на начальном этапе Улыбающийся
сообщение удалено
OldBean Доцент Красноярск 1K 1.4K
Отв.67  12 Янв. 17, 12:38
Оставаясь без обратной связи регулятор перестает выполнять свои функции стабилизации.sevpro
Любой регулятор при потере обратной связи перестает выполнять свои регулирующие функции. В моем случае используется чисто цифровая обратная связь, которую замыкает малинка. Можно ее заменить какой-нибудь более простой логикой (или перенести регулирующую логику на один из МК датчика или контроллера), но тогда потеряется самое главное (для меня) - универсальность и гибкость этой установки (автоматизации).

Т.е. причина в том, что Ты пока не определился как работать?
Зачем тогда датчик атмосферного давления нужен?sevpro
Как раз наоборот - полностью определился. Я буду работать (экспериментировать) в разных режимах. В том числе и в тех, про которые здесь еще не написано.

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

но темнеменее выходит модульность не автономная если делить по задачам (задача у модуля регулятора без малинки не решабельная, а это значит что надо сразу все модули собирать - новичков это может пугать, а распространение идеи - в основном новичками массовость достигается) SedoY
Задача регулятора без малинки как раз решаема. Задача стабилизации мощности без малинки нерешаема без потери универсальности (см.ответ для sevpro в этом же топике чуть выше).

Система сразу же задумывалась с малинкой (это и отражено в названии темы), но я ее делал и использовал по частям (и сначала без малинки). В такой последовательности:
1. Сначала - регулятор мощности (контроллер ТЭНа). Это дало возможность избавиться от индукционки с ее "дебильной" регулировкой мощности. Получилась плавная регулировка мощности. Пока вручную. Но работать стало гораздо приятнее.
2. Потом поставил малинку, чтобы измерять температуры и выводить их на экран.
3. Потом подцепил контроллер ТЭНа к малинке. Автоматизировал разгон. С этого момента начал раздражать отбор (пережимка).
4. Сделал контроллер клапана отбора и поставил клапан на колонну. Поскольку малинка уже была - сразу же и подключил. Но можно было бы и вручную. Без малинки. После этого стало вообще хорошо.
5. Сеть сильно не доставала, но дрейф все равно был. Поэтому сделал датчик RMS, подключил его и сделал стабилизацию мощности нагрева. Если бы были готовые датчики давления, возможно, вначале сделал бы стабилизацию по давлению. А по мощности уже потом. Но жизнь так сложилась. А до этого этапа (стабилизации мощности нагрева, не регулирования (!), а именно стабилизации) можно было бы работать и вообще без малинки.
сообщения удалены (2)
OldBean Доцент Красноярск 1K 1.4K
Отв.68  14 Янв. 17, 06:01
11. Еще немного о концепте

Чтобы периодически не "срываться" в оффтоп и, также, не вызывать неоправданных ожиданий, давайте почетче сформулируем цели и задачи данной ветки.

Ветка посвящена системе автоматизации, имеющей вполне определенную, иерархическую структуру. Это отражено в анонсе темы. Блок-схема двухуровневого варианта такой автоматизации показана на рисунке ниже.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Из схемы мы видим, что малинка является неоотъемлимым, центральным (!) узлом этой системы. Это - мозг системы. Можно провести аналогию с человеческим организмом. Малинка - это наш мозг, датчики - это наши органы чувств, а исполнительные устройства - это наши руки-ноги.

Поэтому давайте еще раз уточним пару-тройку моментов.

1. О работе без малинки. Я, конечно, старался проектировать датчики и исполнительные устройства так, чтобы ими можно было бы пользоваться и без малинки. Но ведь кто-то должен выполнять роль мозга (смотрим блок-схему). В принципе это может делать оператор. Слава Богу, процесс ректификации неспешен и человек вполне может выполнять такую задачую. Это - "ручная" ректификация. Естественно, датчики температуры в этом случае нужно заменить на обычные термометры или подцепить датчики к подходящему "показометру". А вместо датчика атмосферного давления - иногда поглядывать в обычный барометр. Но этот вариант предусмотрен только для:  a) постепенного "строительства" системы и ее отладки и b) для отладки в "ручном" режиме каких-то новых, неотработанных алгоритмов ректификации . Поэтому давайте еще раз подчеркнем, что штатный вариант работы этой системы - это работа с малинкой (или с каким-то эквивалентным микрокомпьютером) и закроем этот вопрос.

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

3. О Брезенхеме. Для регулировки мощности здесь используется Брезенхем. Если у кого-то мигает лампочка Ильича, то это означает, лишь то, что такое решение вам (конкретно!) не подходит. Подходящее вам решение тоже можно поискать в других ветках форума. Но это совсем не означает, что я должен срочно переходить на фазовый регулятор. У меня (и у нескольких коллег, которым я раздавал такие регуляторы) ничего не мигает и такое решение меня (и их) полностью устраивает. Еще раз подчеркну, что для домашней ректификации с мощностью ТЭНов 1-2 кВт (не надо путать с дистилляцией!!!) Брезенхем - почти идеальное решение. Поэтому предлагаю тоже закрыть этот вопрос.

Интересно, а электронные лампочки (например, светодиодные) мигают или нет?

4. О надежности выбранного микрокомпьютера и протокола I2C. Ну и, наконец, о восприятии малинки (и протокола I2C), как какого-то ненадежного элемента системы. После отладки и десятка полноценных ректификаций с общим временем наработки несколько сотен часов - ответ однозначен: малинка (и протокол I2C) работает достаточно надежно. Я уже говорил, что был единственный сбой в процессе работы, приведший к останову системы. Он был вызван отвалившимся проводком шины I2C. Поэтому этот вопрос я предлагаю тоже закрыть и больше к нему не возвращаться. Пока не появятся какие-нибудь новые конкретные данные о ненадежности этого микрокомпьютера или протокола в установках данного типа. Кстати, не последнюю роль в надежности системы играет выбор Брезенхема, который не гадит помехами ни в сеть, ни в эфир.

---------------------------

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

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

Предыдущий топик  Вернуться к оглавлению  Следующий топик
OldBean Доцент Красноярск 1K 1.4K
Отв.69  14 Янв. 17, 07:04
Полезные ссылки и заметки

Ссылки

Информации в Сети море. По конкретным вопросам, конечно, нужно пользоваться поисковыми системами. Здесь же просто приведены некоторые ссылки, по которым можно найти как бы "затравки" для более глубокого изучения конкретной темы. Список, по мере развития темы, будет расширяться и углубляться.

СУБД redis
Redis - это быстрая и легкая нереляционная база данных типа "ключ-значение". Она работает непосредственно в оперативной памяти компьютера, но, естественно, периодически сохраняет информацию на энергонезависимых носителях. Кстати, очень удобное средство "расшаривания" оперативной памяти между разными процессами!

1. Маленькая книга о Redis. Это русский перевод англоязычного издания. На этой же странице есть ссылка на самую актуальную версию перевода. В том числе и в pdf-формате.

2. Введение в REDIS-PY - неплохая статья для первоначального ознакомления с работой с redis уже из питона.

3. Ну и, естественно, полная документация по redis-py.

Осваиваем Linux, командную строку и малинку

1. Работа в режиме командной строки Linux. Цикл уроков по информатике
  Очень популярные уроки по работе с командной строкой в Linux

2. Screen — несколько экранов в одной SSH сессии
  Screen — очень удобная программа, если вы часто работаете в консоли, подключившись к серверу по SSH. В таком случае screen позволяет держать в одной консоли несколько разных экранов, удобно переключаясь между ними. Screen позволяет отключиться от SSH, сохранив выполняющиеся на удаленном сервере задания.

3. Raspberry Pi - «ягодка - малина» для творческих
  Учебные материалы и отдельные разработки на Raspberry Pi

Про Python и дополнительные библиотеки к нему

1. A Byte of Python (Russian)  
  Из предисловия к книге "... если всё, что вы знаете о компьютерах, это как сохранять текстовые файлы, вы можете изучить Python по этой книге. Если у вас имеется некоторый предварительный опыт в программировании, вы всё равно можете изучить Python по этой книге..."

2. Paramiko
  paramiko - это питоновская библиотека, позволяющая использовать SSH в коде питона. Очень удобно при работе с малинкой по SSH. Ставится на любую рабочую станцию (Posix, MacOS X, Windows), где есть питон. Например, я использую paramiko для просмотра лога, который ведет малинка во время ректификации, с рабочей станции под Linux. Простенький питоновский скрипт + paramiko + marplotlib дают возможность просматривать лог в виде графика зависимости параметров установки (например, температур) от времени.
  Хорошая статья про paramiko: "SSH Programming with Paramiko" и ее перевод на русский язык.

3. Matplotlib
  Отличная библиотека для построения графиков (практически из чего угодно) в приложениях на python.
  3.1. SciPy Cookbook - "поваренная книга" по многим аспектам matplotlib
  3.2. Огромное количество конкретных примеров использования matplotlib с кодами
  3.3. Неплохой русскоязычный ресурс по matplotlib - Использование библиотеки Matplotlib

Работа с шиной I2C в Raspberry Pi на Python

1. UM10204 I2C-bus specification and user manual
  Обратите внимание на раздел 7.5 "Wiring pattern of the bus lines", где описано как правильно (для улучшения помехозащищенности) "организовать" проводки шины I2C, если ее длина превышает 10 см.

2. Знакомство с шиной I2C в Raspberry Pi, работаем с ADC-DAC PCF8591 на Python

3. Экономим порты (подключение кнопок по i2c)
  Про PCF8574(PCF8575) - 8 битный расширитель ввода/вывода I2C шины на 8(16) портов...

4. Raspberry + дисплей по I2C + Python
  ЖК-дисплей 2х16 с интерфейсом I2C...

Сторожевой таймер

1. Raspberry Pi. Поднимаем watchdog
 
2. «Печенье с малиновым джемом» или чаепитие с Raspberry Pi
  Про аппаратные часы, 1-Wire, IR пульт и watchdog...

Фреймворк WebIOPi

1. Удаленный доступ к датчикам с помощью Raspberry Pi и Фреймворка WebIOPi
  В том числе и про то, как показать график температуры на страничке броузера...

2. Raspberry Pi для домашней автоматизации. Шина 1-wire

Real Time на Raspberry Pi

1. Построение RT системы управления на базе компьютера Raspberry Pi
  Кроме RT есть много примеров конкретных решений, связанных с автоматизацией...

Самодельные USBASP программаторы

1. Схема USB программатора на Atmega8 своими руками

2. USB программатор AVR — USBAsp

3. Миниатюрный USB программатор для AVR микроконтроллеров


Заметки
Это - ссылки на топики данной ветки, к которым, возможно, будет иметь смысл вернуться в свое время...

1. Немножко обсуждений про радиоканалы, ESP-шки и MQTT
  Начало обсуждения здесь, продолжение - на следующей странице.




Вернуться к оглавлению
terminal Бакалавр Челябинск 88 7
Отв.70  15 Янв. 17, 01:23
2. О стабилизации мощности нагрева. Если кому-то нужен режим работы ректификационной установки со стабилизацией мощности нагрева, то он здесь реализован. Как один из вариантов работы установки. Малинка как раз "замыкает" цифровую обратную связь между датчиком RMS и исполнительным устройством (контроллером ТЭНа). Но если кому-то нужен стабилизатор мощности без малинки, то это уже - в другую тему. Поэтому предлагаю тоже закрыть этот вопрос и больше не тратить на него байты и времяOldBean, 14 Янв. 17, 06:01
Какой протокол обмена "малинки" с контроллером ТЕНа ? можно подробнее ? Есть контроллер, только управление по 485, написать под I2С как два пальца.
OldBean Доцент Красноярск 1K 1.4K
Отв.71  15 Янв. 17, 05:43
Какой протокол обмена "малинки" с контроллером ТЕНа ? можно подробнее ?terminal
На физическом уровне - I2C, на прикладном - обмен единичными байтами. Мастер (малинка) может считать с контроллера 1 байт - это текущее относительное количество (в %) пропускаемых контроллером полупериодов сети к нагрузке. Другими словами - это текущее состояние контроллера ТЭНа, пропорциональное текущей мощности нагрева ТЭНа. Немного о том, как эти проценты связаны с реальной мощностью ТЭНа, можно глянуть здесь (второй ответ Седому). Кроме чтения, малинка (мастер) может также записать 1 байт (число от 0 до 100) в контроллер ТЭНа. Контроллер сразу же начнет пропускать к нагрузке новое количество полупериодов, равное этому числу (в %).
------------------------
PS
А вот на более высоком уровне абстракции (на уровне питоновских классов-оберток) все эти вещи (в том числе и датчик RMS) будут инкапсулированы до уровня объекта (например, teh) и его свойства (мощность нагрева) teh.W. Если teh.W появляется в правой части питоновского выражения, это будет означать текущую мощность (уже в ваттах), с которой сейчас греет ТЭН. Если же teh.W стоит в левой части выражения перед знаком "=", то ТЭН начнет греть с мощностью (в ваттах), которая будет указана (или вычислена) в правой части этого выражения. Подробнее об этом уровне абстракции поговорим, когда будем обсуждать классы-обертки контроллеров.
terminal Бакалавр Челябинск 88 7
Отв.72  15 Янв. 17, 07:45
На физическом уровне - I2COldBean, 15 Янв. 17, 05:43
а адрес датчика ?
OldBean Доцент Красноярск 1K 1.4K
Отв.73  15 Янв. 17, 09:10
а адрес датчика ?terminal
4 - контроллер ТЭНа; 5 - датчик RMS; 6 - контроллер клапана отбора. Адреса можно поменять в соответствующих скетчах.
mak Модератор Екатеринбург 6.3K 1.8K
Отв.74  15 Янв. 17, 20:26
на всякий случай напоминаю что отвлеченное обсуждение протокола связи тут
[Создадим свой открытый протокол обмена данными между контроллером и модулями]

terminal Бакалавр Челябинск 88 7
Отв.75  16 Янв. 17, 02:27
4 - контроллер ТЭНа; 5 - датчик RMS; 6 - контроллер клапана отбора. Адреса можно поменять в соответствующих скетчах.OldBean, 15 Янв. 17, 09:10
все устройства работают на 3,3 Вольта? Я правильно понимаю?
OldBean Доцент Красноярск 1K 1.4K
Отв.76  16 Янв. 17, 02:59, через 33 мин
все устройства работают на 3,3 Вольта? Я правильно понимаю?terminal, 16 Янв. 17, 02:27
Нет. Контроллеры ТЭНа, клапана отбора и датчик RMS работают от 5 В. У них и 5 вольтовая логика. Малинка, кстати, тоже питается от 5 В через разъем USB, но ее логика и, естественно, сигналы GPIO - 3.3 вольтовые. Явно от 3.3 В питается только датчик атмосферного давления. Напряжения питания указаны на соответствующих схемах узлов (см. оглавление - из него легко перейти на конкретные узлы).

Поскольку в системе (с точки зрения шины I2C) только 1 мастер (малинка) и подтягивающие резисторы на ней подключены к 3.3 В, то каких-то проблем по согласованию уровней сигналов при связи устройств с разным питанием (3.3 В и 5 В) не возникает. Шина I2C использует только 3 провода: SCL, SDA и GND. На ведомых (slave) устройствах никаких подтягивающих резисторов ставить не нужно (!).
C-Bell Научный сотрудник Улан-Удэ 1.8K 1.3K
Отв.77  16 Янв. 17, 11:32
OldBean, у тебя четыре термометра (если я правильно понял).
Используешь для чтения температуры зашитый в Raspbian модуль w1_therm.
Из документации на этот модуль следует, что в нем не реализована последовательность команд на одновременное измерение температуры всеми термометрами (Skip Rom [CCh], Convert T [44h]).
If none of the devices are parasite powered it would be possible to convert all the devices at the same time and then go back to read individual sensors.  That isn't currently supported.
Соответственно опрос четырех термометров занимает порядка четырех секунд.
За четыре секунды может пройти достаточно спиртового пара, чтобы снизить чистоту выходящего продукта.

Не рассматривал другие варианты интерфейса к цифровым термометрам, чтобы уменьшить время измерения?
сообщение удалено
capsolo Новичок Зелик 5.3K 1.6K
Отв.78  16 Янв. 17, 12:36
Если либа этого не поддерживает, пользуйтесь нормальной или напишите сами.sevpro, 16 Янв. 17, 12:06
Все верно. Запустить преобразование, асинхронно подождать 750мс и прочитать все подряд датчики.Это для полного разрешения, для неполного существенно меньше.
OldBean Доцент Красноярск 1K 1.4K
Отв.79  16 Янв. 17, 12:37, через 2 мин
Не рассматривал другие варианты интерфейса к цифровым термометрам, чтобы уменьшить время измерения?C-Bell, 16 Янв. 17, 11:32
Рассматривал. Хотел подключить все датчики (DS18B20) еще к одной ардуинке ("модульку", только с 4-разрядным индикатором, там и кнопочки были предусмотрены, чтобы можно было переключаться между температурными датчиками, для выбора того, который будет в данный момент показываться на показометре). Даже сделал на макетке, но потом отказался от этого решения. На практике оказалось это не очень нужно. На самом деле время преобразования для DS-ки меньше секунды (что-то порядка 700-750 мс, точно сейчас "на ходу" не вспомню). Цикл опроса всех датчиков у меня сейчас составляет порядка 2.5 - 3 сек (я имею в виду главный цикл программы). За это время, как справедливо заметил sevpro, ничего существенного с колонной не происходит. Но если датчиков DS18B20 будет существенно больше, то тогда, возможно, придется вернуться к этому вопросу.

PS
Пока топик писал, capsolo как раз и написал время преобразования.