Страница 1 из 1

DS18B20 адрес

Добавлено: 16 апр 2020, 08:02
starmos
Почему, если у датчика адрес занимает 8 байт, под него создается массив 9 байт? Под что занят дополнительный байт? И как в этом массиве располагается собственно адрес датчика, с 0 или с 1-го индекса и начиная со старшего или с младшего байта адреса?
Сканирование шины - это конечно хорошо, но если датчиков несколько, то как определить какой откуда? Какой стоит на подаче, а какой на обратке например. Поэтому, я планирую вручную заполнять массивы адресов и хранить их в EEPROM, а поэтому мне и нужна информация по заполнению массива.
Кстати, при создании массива для датчика, нет возможности его заполнить начальными значениями - нет кнопок "Заполнить" и "Очистить", которые указаны в описании на блок в Инете.

DS18B20 адрес

Добавлено: 16 апр 2020, 10:03
Phazz
Если есть свободные пины, то можно каждому датчику выделить отдельный пин. И сканировать автоматически.

DS18B20 адрес

Добавлено: 16 апр 2020, 10:26
starmos
Нет свободных пинов. Нужна именно шина. Я планирую сделать на отдельной Ардуинке тестер датчиков, для проверки исправности и определения адреса. А в целевой системе этот адрес будет вводиться с экрана для каждого установленного датчика. Это необходимо не только для определения какой датчик какую температуру измеряет, но и для замены неисправного датчика без перепрошивки системы.
Кстати, при сканировании шины, стандартный блок ЗАПОЛНЯЕТ массивы найденными адресами, или пытается найти датчик по адресу из массива и при наличии выдает сигнал на выходе? Как вообще работает этот блок, в случае, если сначала датчиков было 3 (три строки массивов), а потом вдруг один (средний например) перестал отвечать? Блок сдвинет адреса, или оставит пустое место?

DS18B20 адрес

Добавлено: 16 апр 2020, 10:29
Phazz
И в массив можно записать без проблем через запись элемента в массив

Отправлено спустя 2 минуты 18 секунд:
сканирование работает только с одним датчиком. Можно конечно сделать режим записи датчика в память и подключать их по очереди меняя им номера а значения сохранять

DS18B20 адрес

Добавлено: 16 апр 2020, 11:32
Rovki
Для меня тоже темный лес по работе нескольких (до 8) датчиков по одной шине . Как узнать их адреса и считать с каждого температуру. ? Пин (gpio0-D3 esp8266) используется один . :smile390:

DS18B20 адрес

Добавлено: 16 апр 2020, 12:11
starmos
Я знаю как записать в массив. И в общем мне не нужно сканирование. Но я в начале написал - "адрес датчика 8 байт, а массив под него создается - 9 байт, почему?" И как в этом массиве располагается адрес? Я конечно сам выясню, методом проб и ошибок. Но я думал мне здесь специалисты подскажут?

DS18B20 адрес

Добавлено: 16 апр 2020, 12:23
vovka1973
starmos писал(а): 16 апр 2020, 08:02 Сканирование шины - это конечно хорошо, но если датчиков несколько, то как определить какой откуда?
У каждого датчика свой адрес и он не повторяется, просто сканируете и запоминаете в блокноте адрес и подписываете датчик чтоб не путаться ,это плохо когда датчик один крякнет то другой не поставишь адрес другой будет и без перепрошивки ни как . А если создать масив для каждого датчика то у меня так не получилось ,либо один пин один датчик или несколько датчиков со своими адресами на один пин.

DS18B20 адрес

Добавлено: 16 апр 2020, 13:36
Rovki
vovka1973 писал(а): 16 апр 2020, 12:23
starmos писал(а): 16 апр 2020, 08:02 Сканирование шины - это конечно хорошо, но если датчиков несколько, то как определить какой откуда?
У каждого датчика свой адрес и он не повторяется, просто сканируете и запоминаете в блокноте адрес и подписываете датчик чтоб не путаться ,это плохо когда датчик один крякнет то другой не поставишь адрес другой будет и без перепрошивки ни как . А если создать масив для каждого датчика то у меня так не получилось ,либо один пин один датчик или несколько датчиков со своими адресами на один пин.
А как из сканера(массива) прочитать адрес ???

DS18B20 адрес

Добавлено: 16 апр 2020, 15:21
starmos
Сканер определяет адрес датчика и пишет его в массив. (Как я понимаю). Этот массив можно прочитать стандартными средствами/блоками. Для определения адреса датчика есть "Сканирование Шины" в "Инструменты" FLProg - работает, я проверял. Массив для каждого датчика можно создать в соответствующем стандартном блоке FLProg. Записать туда полученный адрес тоже несложно, стандартными блоками. Но массив создается 9 байт, а размер адреса 8. Т.е. можно заполнять массив либо с индекса 0, либо с 1. Опять же, заполнять можно: младший байт адреса по младшему индексу, или наоборот. Как правильно? Сам я попробовать не могу, а то бы не спрашивал - у меня под рукой нет "железа" пока.

DS18B20 адрес

Добавлено: 16 апр 2020, 15:32
vovka1973
Rovki писал(а): 16 апр 2020, 13:36 А как из сканера(массива) прочитать адрес ???
[spoiler]
датчик.JPG
[/spoiler]

DS18B20 адрес

Добавлено: 16 апр 2020, 17:25
Phazz
starmos писал(а): 16 апр 2020, 08:02 Почему, если у датчика адрес занимает 8 байт, под него создается массив 9 байт? Под что занят дополнительный байт? И как в этом массиве располагается собственно адрес датчика, с 0 или с 1-го индекса и начиная со старшего или с младшего байта адреса?
Сканирование шины - это конечно хорошо, но если датчиков несколько, то как определить какой откуда? Какой стоит на подаче, а какой на обратке например. Поэтому, я планирую вручную заполнять массивы адресов и хранить их в EEPROM, а поэтому мне и нужна информация по заполнению массива.
Кстати, при создании массива для датчика, нет возможности его заполнить начальными значениями - нет кнопок "Заполнить" и "Очистить", которые указаны в описании на блок в Инете.
Попробуйте так

DS18B20 адрес

Добавлено: 17 апр 2020, 09:51
kulibinsvv
starmos писал(а): 16 апр 2020, 15:21Но массив создается 9 байт, а размер адреса 8.
Вы описание к блоку DS18x2x внимательно читали? Там всё написано.
Посмотрите уроки:
Автоопределение DS18B20
Датчик температуры DS18B20 – Характеристики, распиновка, нюансы подключения

DS18B20 адрес

Добавлено: 17 апр 2020, 21:58
Rovki
соединил два датчика параллельно - не работает как нужно . Грею один любой ,а температура растет на двух индикаторах одинаково... :smile427:
дт.jpg
Отправлено спустя 2 минуты 39 секунд:
вот проект
дт.flp
Отправлено спустя 2 часа 8 минут 54 секунды:
Проверил проект с двумя разными блоками -сканерами шины (разные массивы) ,но один пин для двух датчиков . Вывод- блоки сканеров не поддерживают такое соединение (на один пин) - значение одинаковое по двум датчикам при нагреве любого ..

DS18B20 адрес

Добавлено: 17 апр 2020, 22:05
Phazz
Так не будет работать, только сначала подключать по одному с сохранением каждого в отдельный массив. А потом присваивать эти массивы конкретным датчиками.

DS18B20 адрес

Добавлено: 17 апр 2020, 22:13
ecoins
Мой опыт по этому вопросу - в сети 1-Wire все работает хорошо, но на практике удобнее 1 пин=1 датчик DS1820. Шина разрабатывалась Dallas для использовании в научных установках, но оказалась удачной, в домофонах многоквартирных домов например используется.

DS18B20 адрес

Добавлено: 17 апр 2020, 23:38
Rovki
Phazz писал(а): 17 апр 2020, 22:05 Так не будет работать, только сначала подключать по одному с сохранением каждого в отдельный массив. А потом присваивать эти массивы конкретным датчиками.
Именно подключение по одному ? Это можно проверить ...но пин один и нужно что бы при команде дать адрес ,ранее подключенный датчик молчал ...
Не совсем понял про присваивание массивов ...

Отправлено спустя 1 минуту 32 секунды:
ecoins писал(а): 17 апр 2020, 22:13 Мой опыт по этому вопросу - в сети 1-Wire все работает хорошо, но на практике удобнее 1 пин=1 датчик DS1820. Шина разрабатывалась Dallas для использовании в научных установках, но оказалась удачной, в домофонах многоквартирных домов например используется.
Вся фишка в одной шине для N датчиков ,а так бы незачем было городить разные адреса из 64бит

Отправлено спустя 12 минут 14 секунд:
Проверил- подключил 1 датчик ,отсканировал шину , отключил первый ,подключил второй ,отсканировал , потом подключил 1 датчик , не отключая питания - все работает . Но только отключил питание и все пропало ....что то не продумано в блоках или скажите как правильно делать ,плиз. :smile37: даже если мы будем знать адреса датчиков ,надо заставить мастера шины по очереди читать данные с разных датчиков ,по разным адресам ...Значит нужно отсканировать адреса и как то их сохранить в разных массивах...