DS18B20 адрес

Вопросы по встроенным блокам
Ответить
starmos
Сержант
Сообщения: 141
Зарегистрирован: 11 апр 2016, 15:46
Откуда: Челябинск

DS18B20 адрес

Сообщение starmos »

Почему, если у датчика адрес занимает 8 байт, под него создается массив 9 байт? Под что занят дополнительный байт? И как в этом массиве располагается собственно адрес датчика, с 0 или с 1-го индекса и начиная со старшего или с младшего байта адреса?
Сканирование шины - это конечно хорошо, но если датчиков несколько, то как определить какой откуда? Какой стоит на подаче, а какой на обратке например. Поэтому, я планирую вручную заполнять массивы адресов и хранить их в EEPROM, а поэтому мне и нужна информация по заполнению массива.
Кстати, при создании массива для датчика, нет возможности его заполнить начальными значениями - нет кнопок "Заполнить" и "Очистить", которые указаны в описании на блок в Инете.
Аватара пользователя
Phazz
Полковник
Сообщения: 3120
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 232 раза
Поблагодарили: 112 раз

DS18B20 адрес

Сообщение Phazz »

Если есть свободные пины, то можно каждому датчику выделить отдельный пин. И сканировать автоматически.
starmos
Сержант
Сообщения: 141
Зарегистрирован: 11 апр 2016, 15:46
Откуда: Челябинск

DS18B20 адрес

Сообщение starmos »

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

DS18B20 адрес

Сообщение Phazz »

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

Отправлено спустя 2 минуты 18 секунд:
сканирование работает только с одним датчиком. Можно конечно сделать режим записи датчика в память и подключать их по очереди меняя им номера а значения сохранять
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

DS18B20 адрес

Сообщение Rovki »

Для меня тоже темный лес по работе нескольких (до 8) датчиков по одной шине . Как узнать их адреса и считать с каждого температуру. ? Пин (gpio0-D3 esp8266) используется один . :smile390:
Электронщик до мозга костей и не только
starmos
Сержант
Сообщения: 141
Зарегистрирован: 11 апр 2016, 15:46
Откуда: Челябинск

DS18B20 адрес

Сообщение starmos »

Я знаю как записать в массив. И в общем мне не нужно сканирование. Но я в начале написал - "адрес датчика 8 байт, а массив под него создается - 9 байт, почему?" И как в этом массиве располагается адрес? Я конечно сам выясню, методом проб и ошибок. Но я думал мне здесь специалисты подскажут?
vovka1973
Подполковник
Сообщения: 1202
Зарегистрирован: 14 фев 2016, 14:16
Откуда: kazahstan
Благодарил (а): 32 раза
Поблагодарили: 6 раз

DS18B20 адрес

Сообщение vovka1973 »

starmos писал(а): 16 апр 2020, 08:02 Сканирование шины - это конечно хорошо, но если датчиков несколько, то как определить какой откуда?
У каждого датчика свой адрес и он не повторяется, просто сканируете и запоминаете в блокноте адрес и подписываете датчик чтоб не путаться ,это плохо когда датчик один крякнет то другой не поставишь адрес другой будет и без перепрошивки ни как . А если создать масив для каждого датчика то у меня так не получилось ,либо один пин один датчик или несколько датчиков со своими адресами на один пин.
Изображение
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

DS18B20 адрес

Сообщение Rovki »

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

DS18B20 адрес

Сообщение starmos »

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

DS18B20 адрес

Сообщение vovka1973 »

Rovki писал(а): 16 апр 2020, 13:36 А как из сканера(массива) прочитать адрес ???
[spoiler]
датчик.JPG
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
Аватара пользователя
Phazz
Полковник
Сообщения: 3120
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 232 раза
Поблагодарили: 112 раз

DS18B20 адрес

Сообщение Phazz »

starmos писал(а): 16 апр 2020, 08:02 Почему, если у датчика адрес занимает 8 байт, под него создается массив 9 байт? Под что занят дополнительный байт? И как в этом массиве располагается собственно адрес датчика, с 0 или с 1-го индекса и начиная со старшего или с младшего байта адреса?
Сканирование шины - это конечно хорошо, но если датчиков несколько, то как определить какой откуда? Какой стоит на подаче, а какой на обратке например. Поэтому, я планирую вручную заполнять массивы адресов и хранить их в EEPROM, а поэтому мне и нужна информация по заполнению массива.
Кстати, при создании массива для датчика, нет возможности его заполнить начальными значениями - нет кнопок "Заполнить" и "Очистить", которые указаны в описании на блок в Инете.
Попробуйте так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 487
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 3 раза
Поблагодарили: 5 раз

DS18B20 адрес

Сообщение kulibinsvv »

starmos писал(а): 16 апр 2020, 15:21Но массив создается 9 байт, а размер адреса 8.
Вы описание к блоку DS18x2x внимательно читали? Там всё написано.
Посмотрите уроки:
Автоопределение DS18B20
Датчик температуры DS18B20 – Характеристики, распиновка, нюансы подключения
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

DS18B20 адрес

Сообщение Rovki »

соединил два датчика параллельно - не работает как нужно . Грею один любой ,а температура растет на двух индикаторах одинаково... :smile427:
дт.jpg
Отправлено спустя 2 минуты 39 секунд:
вот проект
дт.flp
Отправлено спустя 2 часа 8 минут 54 секунды:
Проверил проект с двумя разными блоками -сканерами шины (разные массивы) ,но один пин для двух датчиков . Вывод- блоки сканеров не поддерживают такое соединение (на один пин) - значение одинаковое по двум датчикам при нагреве любого ..
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
Аватара пользователя
Phazz
Полковник
Сообщения: 3120
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 232 раза
Поблагодарили: 112 раз

DS18B20 адрес

Сообщение Phazz »

Так не будет работать, только сначала подключать по одному с сохранением каждого в отдельный массив. А потом присваивать эти массивы конкретным датчиками.
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

DS18B20 адрес

Сообщение ecoins »

Мой опыт по этому вопросу - в сети 1-Wire все работает хорошо, но на практике удобнее 1 пин=1 датчик DS1820. Шина разрабатывалась Dallas для использовании в научных установках, но оказалась удачной, в домофонах многоквартирных домов например используется.
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

DS18B20 адрес

Сообщение 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: даже если мы будем знать адреса датчиков ,надо заставить мастера шины по очереди читать данные с разных датчиков ,по разным адресам ...Значит нужно отсканировать адреса и как то их сохранить в разных массивах...
Электронщик до мозга костей и не только
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей