DS18b20 Заказ датчиков на кабеле

У меня есть группа из 10 датчиков DS18b20, подключенных к одной двухпроводной линии (паразитное питание). Ниже приведена таблица датчиков, где они расположены на проводе, и в каком порядке, где они обнаружены.

Serial              Order on wire*   Order discovered
286305560100002c    1                7
28a158610100006a    2                3
28ad48610100006b    3                6
2851ae60010000ad    4                4
289b426101000089    5                8
28cd1161010000ce    6                5
2864026101000030    7                1
280c766101000026    8                2

Я прочитал этот документ о том, как OneWire обнаруживает датчики на шине. https://www.maximintegrated.com/en/app-notes/index.mvp/ идентификатор/187

Мой вопрос: есть ли способ определить порядок датчиков на проводе?

, 👍3

Обсуждение

Я так не думаю. Между разными датчиками нет ничего другого, кроме незначительной разницы в сопротивлении провода из-за большей длины., @Gerben

Порядок обнаружения соответствует алгоритму поиска (который зависит от номера ROM/ID). Вы можете расположить датчики по порядку, когда у вас есть их ID, или использовать таблицу сопоставления в своем скетче. Алгоритм поиска не определяет физический порядок датчиков., @Mikael Patel


3 ответа


Лучший ответ:

1

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

(Чтобы усложнить ситуацию, что такое «порядок устройств» — или даже значение «порядка» в шине с центральным питанием, кольцевой, звездообразной или другой разветвленной сети? Порядок — это то, что мы воспринимаем, когда Глядя на линейную сеть с конечным питанием Электроны не заботятся Представьте конденсатор (к сожалению, шина ведет себя как один, но это другая история) с двумя пластинами, площадью в несколько сантиметров, и дюжиной 1-проводных устройств, подключенных от пластины на тарелку. А теперь в каком порядке? Ой, у меня мозг болит! Вернемся к линейным автобусам.)

Порядок обнаружения зависит от набора двоичных идентификаторов устройств на шине. Есть два известных мне способа узнать физический порядок, оба эмпирические (т. е. путем наблюдения):

  1. Подключите набор устройств по одному к временной шине, например к макетной плате. С помощью Arduino прочитайте их идентификаторы и пометьте их (удобно для чтения). Зная алгоритм обнаружения или запустив фактическое обнаружение на Arduino со всеми подключенными устройствами, запишите идентификаторы в порядке их обнаружения, который является инвариантным для данного набора идентификаторов устройств. Соберите свою проводную шину с устройствами в этом порядке.

  2. (Обратное 1 и более быстрое построение, и это то, что вы уже показали в своем вопросе: подключите шину. С помощью простой программы Arduino многократно сэмплируйте все устройства на шине и распечатывайте их индексы. и температуры (индексы будут в порядке открытия).По одному нагревайте каждое устройство рукой и отмечайте, какой индекс устройства затронут.Запишите физическое положение (первое, второе, ...) и индекс.Это — это таблица сопоставления между позицией и индексом. Включите ее в свой алгоритм управления.

,

Так что я бы сказал, что DS1820 для профессионального использования бесполезен! Нет простого способа добавить или заменить датчик на существующем приборе для измерения температуры и быть уверенным в том, что вы измеряете. Я прав?, @Satman

@Satman Иногда датчики все равно не реагируют, поэтому вы можете подумать, что датчик 3 станет датчиком 2, если датчик 2 не ответит. Я бы не сказал, что они бесполезны, но вам нужно знать идентификатор датчика (что-то, что вы можете узнать на стенде), прежде чем развертывать его в полевых условиях. Использование ID в любом случае будет намного точнее, потому что тогда вы будете уверены, что получили определенный датчик, а не только потому, что он оказывается пятым в цепочке., @Nick Gammon


0

Я нашел эту заметку по применению.

ПРИМЕЧАНИЕ ПО ПРИМЕНЕНИЮ 4037
Восстановите информацию о местоположении, используя функцию 1-Wire® Chain — простой метод сигнализации и протокола для определения физического местоположения устройства

https://www.maximintegrated.com/en/app-notes/index .mvp/id/4037

,

Обратите внимание, что 1) этот метод не применим к DS18b20 и аналогичным устройствам 1-wire; и новые устройства - при использовании этой возможности - больше не являются 1-проводными, для цепного сигнала требуется другой проводник., @JRobert


1

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

,