DS18B20 адрес

Вопросы по встроенным блокам
Ответить
starmos
Сержант
Сообщения: 114
Зарегистрирован: 11.04.2016{, 15:46}
Репутация: 13
Откуда: Челябинск

DS18B20 адрес

#1

Сообщение starmos » 16.04.2020{, 08:02}

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

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

DS18B20 адрес

#2

Сообщение Phazz » 16.04.2020{, 10:03}

Если есть свободные пины, то можно каждому датчику выделить отдельный пин. И сканировать автоматически.

starmos
Сержант
Сообщения: 114
Зарегистрирован: 11.04.2016{, 15:46}
Репутация: 13
Откуда: Челябинск

DS18B20 адрес

#3

Сообщение starmos » 16.04.2020{, 10:26}

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

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

DS18B20 адрес

#4

Сообщение Phazz » 16.04.2020{, 10:26}

И в массив можно записать без проблем через запись элемента в массив

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

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

DS18B20 адрес

#5

Сообщение Rovki » 16.04.2020{, 11:32}

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

starmos
Сержант
Сообщения: 114
Зарегистрирован: 11.04.2016{, 15:46}
Репутация: 13
Откуда: Челябинск

DS18B20 адрес

#6

Сообщение starmos » 16.04.2020{, 12:11}

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

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

DS18B20 адрес

#7

Сообщение vovka1973 » 16.04.2020{, 12:23}

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

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

DS18B20 адрес

#8

Сообщение Rovki » 16.04.2020{, 13:36}

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

starmos
Сержант
Сообщения: 114
Зарегистрирован: 11.04.2016{, 15:46}
Репутация: 13
Откуда: Челябинск

DS18B20 адрес

#9

Сообщение starmos » 16.04.2020{, 15:21}

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

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

DS18B20 адрес

#10

Сообщение vovka1973 » 16.04.2020{, 15:32}

Rovki писал(а):
16.04.2020{, 13:36}
А как из сканера(массива) прочитать адрес ???
СпойлерПоказать
датчик.JPG
Изображение

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

DS18B20 адрес

#11

Сообщение Phazz » 16.04.2020{, 17:25}

starmos писал(а):
16.04.2020{, 08:02}
Почему, если у датчика адрес занимает 8 байт, под него создается массив 9 байт? Под что занят дополнительный байт? И как в этом массиве располагается собственно адрес датчика, с 0 или с 1-го индекса и начиная со старшего или с младшего байта адреса?
Сканирование шины - это конечно хорошо, но если датчиков несколько, то как определить какой откуда? Какой стоит на подаче, а какой на обратке например. Поэтому, я планирую вручную заполнять массивы адресов и хранить их в EEPROM, а поэтому мне и нужна информация по заполнению массива.
Кстати, при создании массива для датчика, нет возможности его заполнить начальными значениями - нет кнопок "Заполнить" и "Очистить", которые указаны в описании на блок в Инете.
Попробуйте так
Вложения
пример.flp
(333.43 КБ) 81 скачивание

Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 476
Зарегистрирован: 18.09.2015{, 10:04}
Репутация: 54
Откуда: Омск

DS18B20 адрес

#12

Сообщение kulibinsvv » 17.04.2020{, 09:51}

starmos писал(а):
16.04.2020{, 15:21}
Но массив создается 9 байт, а размер адреса 8.
Вы описание к блоку DS18x2x внимательно читали? Там всё написано.
Посмотрите уроки:
Автоопределение DS18B20
Датчик температуры DS18B20 – Характеристики, распиновка, нюансы подключения
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

DS18B20 адрес

#13

Сообщение Rovki » 17.04.2020{, 19:46}

соединил два датчика параллельно - не работает как нужно . Грею один любой ,а температура растет на двух индикаторах одинаково... :smile427:
дт.jpg
Отправлено спустя 2 минуты 39 секунд:
вот проект
дт.flp
(62.71 КБ) 62 скачивания
Отправлено спустя 2 часа 8 минут 54 секунды:
Проверил проект с двумя разными блоками -сканерами шины (разные массивы) ,но один пин для двух датчиков . Вывод- блоки сканеров не поддерживают такое соединение (на один пин) - значение одинаковое по двум датчикам при нагреве любого ..
Электронщик до мозга костей и не только

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

DS18B20 адрес

#14

Сообщение Phazz » 17.04.2020{, 22:05}

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

ecoins
Полковник
Сообщения: 2920
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 452
Откуда: Шатура
Имя: Энвер

DS18B20 адрес

#15

Сообщение ecoins » 17.04.2020{, 22:13}

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

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

DS18B20 адрес

#16

Сообщение Rovki » 17.04.2020{, 23:24}

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

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

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

Ответить

Вернуться в «Штатные блоки»