Очередная проблема с DS18B20
- Войдите на сайт для отправки комментариев
Добрый день!
Есть датчик: DS18B20Z+T&R
В даташитах указано, что отличия модификаций DS18B20 в типе корпуса, из этого делаю вывод, что программно датчики идентичные.
Код получения данных:
if (ds.search(addr)) { ds.reset(); ds.select(addr); ds.write(0x44, 1); delay(1000); ds.reset(); ds.select(addr); ds.write(0xBE); byte byte0 = ds.read(); byte byte1 = ds.read(); float celsius = ((byte1 << 8) | byte0) / 16.0; }
На выходе получаю температуру: 4061.50 по Цельсию.
Смотрю на состав байтов температуры: 1111 1101 1101 1000
По даташиту это говорит об отрицательной температуре (первые 5 битов слева - знак, если 0, то положительная, если 1, то отрицательная).
Датчик находится в комнате, где примерно +29 +30 градусов.
Зажимаю датчик пальцем, показания растут: 4063, 4064.50 и так далее
Подношу паяльный фен, выставленный на 100град, температура доползает до переполнения и после примерно 60 градусов отсчет начинается с 0 градусов (0000 0000 0000 1000).
Делаю вывод, что датчик бракованый (сбит ноль). Подключаю еще 3 таких же датчика (правда из той же партии), все показывают одинаковую сбитую температуру: 4061.50 по Цельсию.
Подключаю датчик в другом типе корпуса: показывает верно: 28-29 градусов (программный код тот же).
Попытки менять разрешение датчиков, установка/сброс байтов Th и Tl ни к чему не приводит.
Методом подбора добавляю к старшему биту +4 в десятичной форме:
byte1 += 4;
Температура становится похожа на правду.
Но надежды теперь нет никакой - что если это действительно бракованная партия? И в продуктиве будут установлены "нормальные" датчики, которым не нужно прибавлять магические числа.
Кто сталкивался с такой проблемой?
Забыл сказать: все подключения (и плохих и хорошего датчика) - с паразитным питанием, подтяжка 4.7K есть.
А что показывает DallasTemperature?
Примерно -24 градуса по Цельсию.
Ну, значит, чего-то с датчиком. DallasTemperature вылизывалась годами. Какой ID, кстати, у сенсора? По нему можно семейство уточнить.
Сейчас не в офисе. В понедельник посмотрю ID.
Я бы тоже думал, что что-то с датчиком, но попробовал все 4 - и все кажут одно и то же.
И я бы как-то понял "залипший бит", но данные меняются по всем битам, ошибка только в "сдвиге" старшего байта...
Я задумываюсь, что мне попались датчики с хитрой/китайской/тестовой прошивкой: замена логики битов отрицательной температуры на абсолютный отсчет температуры.
Попробую как-нибудь проверить минусовую температуру, чтобы подтвердить догадку.
С какой бы "китайской прошивкой" (хотя зачем Maxim-у это делать) они вам не попались, факт есть факт - ведут они себя не по datashit'у производителя, стало быть и разбираться с ними придется лично и, возможно, с каждым.
Поправки ли вводить или ещё как-то - уже не нам советовать. Либо обратитесь к продавцу - пусть объяснит сиё поведение. Может это вообще на 18x20, а "датчикосодержащий продукт".
Спасибо за советы - будем думать.
Еще один интересный момент: сразу после сброса питания в температурных регистрах находится вполне "ожидаемая" температура 85 градусов (0000 0101 0101 0000)
датчик случаем не из чида?
Именно оттуда!
https://www.chipdip.ru/product/ds18b20z-t-r-2
а, ну это нормально... они постоянно странный контрафакт подсовывают.
а, ну это нормально... они постоянно странный контрафакт подсовывают.
Ну, я далеко не фанат этих грабителей, однако относительно "постоянно странный контрафакт подсовывают" согласиться не могу. Особенно насчет постоянно. Сколько ни покупал у них деталей, контрафакта не было. Другой вопрос, что за оригинал могут подсунуть неоригинал, но в моем случае все работало как надо. Было дело, сам по дури попалил много чего, но это уже не про это... Касательно проблемы ТС - а не заменена ли надпись на корпусе с какого-нибудь транзистора на дээску? Хотя, за чипом таких уж подлянок не замечено.
продолжайте покупать...
продолжайте покупать...
кто бы спорил, что маузер лучше )))
Датчик показывает:
Другой (заведомо рабочий датчик показывает):
Семейство - первый байт в ROM, правильно я понимаю?
Да, всё похоже на правду - семейство то самое. А температура странная. И в фаренгейты странно пересчитывается.
Не стал больше тратить время с этими датчиками.
Заказал еще 2 разных датчика от других поставщиков.
А в чем причина применения паразитного питания?
Ограничение по количеству доступных проводов.
Сама длина там небольшая - не более 15см.
В планах выпаять датчик и попробовать подключить с внешним питанием - может и в этом дело.
Подключил внешнее питание - эффект тот же.
Жду новые датчики.
Закрываем вопрос. Пришли новые датчики - все работают. Результат:
DS18B20Z+T&R маркировка 1430C4 673AC, PHILIPINES - тот самый проблемный
DS18B20Z+ маркировка 2008C4 776AB, MALAY - новый рабочий
DS18B20Z+T&R маркировка 2010C4 918AC, MALAY - новый рабочий
Ни разу не покупал DS18B20 в чипидипе. Ни разу не имел с ними проблем. Использовал их сотнями. Аднака, тенденция...
Ни разу не покупал DS18B20 в чипидипе. Ни разу не имел с ними проблем. Использовал их сотнями. Аднака, тенденция...
пост 42... для интереса