Armenn

Как считать и запрограмировать ds18b20?

41 сообщение в этой теме

Armenn    187

Есть устройство которое считывает температуру с ds18b20. Датчик от производителя работает, любой другой нет.

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

Вопрос: Как/чем считать информацию из одного датчика и записать в другой? 

Изменено пользователем Armenn

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    476
Только что, Armenn сказал:

Как/чем считать информацию из одного датчика и записать в другой? 

Чисто теоретически - сделать эмулятор датчика, на практике ответ "никак".

Эмуляцией я немножко занимался, но не скажу, что прямо-таки на 100% успешно... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    766

Единственное, что можно записать в датчик - лимит температуры, верхний и нижний. А производитель вполне мог привязать железку к ID датчика, который перезаписать невозможно.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dr. West    3 233

А сам производитель устройства что говорит по этому поводу? Возможно, есть какая-то процедура для прописки серийника нового датчика, ведь выход его из строя вполне вероятен, особенно, если он выносной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

Armenn    187
10 minutes ago, BARS_ said:

Единственное,

А разрядность?

Quote

Регистр конфигурации Байт 4 памяти содержит регистр конфигурации, который организован, как иллюстрировано на рис. 8. Пользователь может настроить конверсионную разрешающую способность DS18B20, используя биты R0 и R1 в этом регистре, как показано в Таблице 3. Значение по умолчанию включения питания этих битов - R0 = 1 и R1 = 1 (12-битовая разрешающая способность). Обратите внимание, что есть прямая зависимость между разрешающей способностью и конверсионным временем. Бит 7 и биты от 0 до 4 в регистре конфигурации зарезервированы для внутреннего использования устройством и не могут быть изменены или использованы пользователем, при чтении эти биты возвращают «1».

 

9 minutes ago, Dr. West said:

А сам производитель устройства что говорит по этому поводу?

Запрос отправил.

 

Quote

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

Датчик от производителя работает на нескольких одинаковых устройствах. Предположить конечно можно что они прописали кучу серийников от тех датчиков которые закупили, но что делать потом, когда датчики закончатся? Менять устройство, посылать спец программу? Надеюсь, что они этим способом не пошли.

Собственно если я считаю данные из датчика и запишу в другой, то проверю версию с серийниками. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    766
6 минут назад, Armenn сказал:

А при чем тут конфигурация датчика? Ее пишут и все. 

 

7 минут назад, Armenn сказал:

они прописали кучу серийников

А зачем? Он может прописать себе один серийник при первом включении девайса и все.

 

8 минут назад, Armenn сказал:

Собственно если я считаю данные из датчика и запишу в другой,

Так а считывать вы что собрались?

Что хоть за девайс?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В eeprom датчика есть два байта, которые можно использовать для нужд пользователя (USER BYTE).
В одном устройстве использовал эти ячейки для хранения порядкового номера датчика. При включении устройство искало датчики на линии и использовало их порядковый номер для определения позиции установки (заполнялась таблица соответствия порядкового номера датчика и  ID), таким образом отсутствовала необходимость определения адреса датчика. Конечно, необходимо было заранее прописать порядковый номер в датчик.

Изменено пользователем technik-1017

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Armenn    187
6 minutes ago, BARS_ said:

Так а считывать вы что собрались?

Эти три байта:
 

Quote

 

Запись в память [4Eh]

Эта команда позволяет устройству управления записывать 3 байта данных в память DS18B20. Первый байт данных записывается в регистр (TH), второй байт записывается в регистр (TL), и третий байт записывается в регистр конфигурации. Данные должны быть переданы наименьшим значащим битом вперед. Для датчиков температуры с паразитным питанием все три байта ДОЛЖНЫ быть записаны командой КОПИРОВАНИЕ ОЗУ В ПЗУ [48h] прежде, чем устройством управления будет сгенерирован импульс сброса, иначе данные будут потеряны.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    766
2 минуты назад, Armenn сказал:

Первый байт данных записывается в регистр (TH), второй байт записывается в регистр (TL),

Я ж про это в самом начале говорил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Armenn    187

Правильно, но есть еще третий байт.

Quote

и третий байт записывается в регистр конфигурации

Производитель отморозился: Мы обслуживаем только свои датчики.

Так что ВСЕ что можно считываю и копирую в новый датчик. Вопрос КАК?

Изменено пользователем Armenn

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    766
4 минуты назад, Armenn сказал:

Вопрос КАК?

Самый простой метод взять ардуйню, взять скетч для работы с датчиком и ей считать/записать

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
andronov    4

а как датчики подключены? было такое дело по двухпроводной системе датчик не работал, а на 3-х проводной заработал.

 

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Armenn    187

По двух проводке, но на трех проводах тоже проверял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Armenn    187
7 hours ago, BARS_ said:

Самый простой метод взять ардуйню

Взял.

7 hours ago, BARS_ said:

взять скетч для работы с датчиком и ей считать/записать

Записал разрядность. Теперь осталось посмотреть что записано:

Quote

в регистр (TH), второй байт записывается в регистр (TL),

Как это сделать пока не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    766
1 минуту назад, Armenn сказал:

Как это сделать пока не знаю.

Послать команду чтения и считать

2 минуты назад, Armenn сказал:

Записал разрядность.

Зачем? Надо было считать регистр из заводского датчика и тоже самое прописать в ваш

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Armenn    187

Как? Можно команду?

  • Лайк 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    766

По идее сначала надо вызвать данные из EEPROM командой B8h, а потом прочесть их командой BEh. При этом должны считаться все три байта данных. А в новый датчик записать их командой 4Eh, после чего внести в EEPROM командой 48h. Все ж в даташите есть. https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

Изменено пользователем BARS_

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 час назад, Armenn сказал:

Как? Можно команду?

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

Изменено пользователем technik-1017

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
BARS_    766
2 минуты назад, technik-1017 сказал:

можно собрать схемку на двух транзисторах

А если у человека нет СОМ порта?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

пусть он сам скажет, что у него есть, может у него и ПК на linux
А приведённая схема должна работать и с переходником USB-COM

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Armenn    187
3 hours ago, technik-1017 said:

не могу понять, зачем вы так всё усложняете,

Показалось, что проще через ардуину.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Armenn    187

Проблему решил. Производитель защиту не ставил.

В моем случае оказалось что в датчиках не работает паразитный режим, эта схема все решила:

p20-1.jpg

Плюс контроллер после включения прописывал номер датчика и заново его перезаписывал только после того как функция "температура" менялась на "вход" и обратно.

 

 

Вроде даже разобрался как программировать датчик, вот инструкция:

1 Качаем библиотеку к ардуино ставим ее.

2 Выбираем Файл>Примеры>DallasTemperature-3.8.0>AlarmHandler

3 Пишем скетч по умолчанию в датчик который надо запрограммировать.

4 Запускаем "Монитор порта"

5 Вытаскиваем из ардуины на горячую датчик и вместо него вставляем датчик с которого надо считать инфу. (Если сделать наоборот, потрем данные в исходном датчике!!!)

6 На экране высветится предустановленная температура.

7 Правим в скетче максимальную и минимальную температуру и заново заливаем.

8 Все! Если надо поменять разрядность, то скетч берем выше по теме.

 

 

 

  • Одобряю 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
andronov    4
В 10.05.2018 в 14:24, Armenn сказал:

По двух проводке, но на трех проводах тоже проверял.

плохо проверяли!  но за идею  с диодом и кондеем плюсик

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
miste-sm    0

Здравствуйте!  Такая вот проблема с DS2431, при считывании данных с одного чипа и записи их в другой чип, он становится не работоспособным. Как я понял,  данные в чипе привязаны к серийному номеру и похоже что использовать другой чип в котором другой серийник, просто так не получиться. Это как-то решается или  это полный тупик. По дампу можно что-то понять, какая информация записана в чипе? Спасибо всем кто может что-то подсказать, в каком направлении копать.

sensor_T(M)_72.bin

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Я буду отдавать на лазерную резку. За шум я с вами согласен, но наврят я буду слушать дома, это спецыально собераю 4х1000Ват на 8Ом для озвучьки мироприятий, так как не особо приятно таскаться с кучей усилителей. А вообще да наверно переделаю под 5мм. А еще хочу сделать панельку накладку для фильтра с паролона чтоб пыль не сосал.
    • а у меня вааще 6-й год отпуска. Кстати, надо к ментам в опорник выдвигаться. Опять комп сломали
    • Наверное , параллельно буду продвигать вариант, который мне более интересен и будем сравнивать результаты . LTSpice достаточно точен,  как говорят .  А если ничему верить нельзя то и жить не стоит . Эскиз первый ( Шиклаи , повторитель , АD823)   Не возбуждается без какой либо коррекции . 
    • Пузырь коня после баньки - не в коня корм!!! После бани лучше всего чай,  из самовара,  на можжевеловых веточках (реально хорошо!!зуб даю!, иначе бы ёжик в гости к медведю сквозь туман не попёрся бы, и не было бы истории с лошадкой !).   А вам, там,  зато уже скоро вставать рано и на больную голову, а у нас пока ну прям лепота!!!   С уважением, Сергей    
    • @сомневаюсь я спасибо.  
    • Купил на аллиэкспресс wifi выключатель. Установил программу, опробовал. Все работает. Вопрос - Как подсмотреть протокол обмена командами.(т.е. на каком порту, HTTP....?)
    • Своих ни т-кон 32AP11S4L, ни панели LTJ320AP01-L я не нашел. Вот здесь есть похожие по обозначению: http://monitor.net.ru/forum/viewtopic.php?t=273856&postdays=0&postorder=asc&start=0 но т-кон сильно не подходят по PCB. Но проблема не в этом. Признаться я подумал, что Вы хотите проверить наличие управления с материнки на матрицу с помощью принудительного питания последней. Потому как при наличии двух неисправных материнках какая мне разница - исправна моя матрица или нет? Третья-то материнка может появиться только в том случае, если китаец согласится заменить эту. По даташиту ток потребления гораздо ниже,  но там не указано потребление для моих условий.