DS18B20 Брак производства или неверный скетч
- Войдите на сайт для отправки комментариев
Добрый день. Столкнулся со следующей проблемой:
Есть 3 датчика, все три при подключении к Ардуинке выдают температуру 87-89. При этом реагируют на температуру адекватно, погружал в холодную воду и температура опустилась, подносил горячее - повышалась. Но комнатную температуру показывает 87-89. С сотыми, все как положено.
Использовал стандартный скетч OneWire Temperature и для перепроверки скетч из библиотеки Dallas - Single.
Менял в даллосовском скетче разрядность - точность меняется, но результат нет.
Вывел в монитор порта получаемые байты - младший и старший - все сходится с даташитом, пересчитал вручную - верно, получается 87-89. Складывается ощущение, что у них у всех брак внутри чипа. Но сомнение в том, что сразу у всех трёх. Брал в одном месте.
В интернете нашел только то, что если температура 85 - значит не происходит сброса перед началом работы с датчиком, но у меня она другая и меняется. Может, кто-то сталкивался с подобным?
Идентификаторы чипов засветите. Может это семейство другое... Конечно пальцем в небо, но надо же с чего-то начать.
Если CRC сходится, значит с подключением/схемой проблем нет, полагаю. 5,1к между VCC и DQ?
87*F - это примерно около 30*C ?
Щас доберусь до дому, скину.
Резистор 4,7. Ставил и 1к и 10к - температура меняется на 5 градусов выше/ниже и все.
87-89 градусов по Цельсию выдаёт.
CRC сходится, в том и беда.
Думашь, что в фаренгейтах смотрит показания? Может быть...
Выдержка из даташита.
Тоже проверил сначала, сходится. Но, похоже, что нет.
ROM1 = 28 AF F AE 7 0 0 CF
Ошибка, как всегда, в 47-ой строке кода. И ещё, зелёный провод припаян не туда, его к жёлтому надо.
Семейство правильное: 0x28 - DS18B20. Загадочная история...
Ошибка, как всегда, в 47-ой строке кода. И ещё, зелёный провод припаян не туда, его к жёлтому надо.
Немного вас не понял.
Про код. Вот он:
Что именно в 47 строке не так?
Или для флага type_s = 1 он как-то иначе всё считает?
Не вижу проверки сходимости CRC _после_ чтения Scratchpad.
Немного вас не понял.
А чего тут понимать? Это здесь так намекают на то, что Вы просите помощи по устройству схемы и кода которого никто из присутствующих не видел. Теперь код есть. Выкладывайте схему подключения.
Немного вас не понял.
А чего тут понимать? Это здесь так намекают на то, что Вы просите помощи по устройству схемы и кода которого никто из присутствующих не видел. Теперь код есть. Выкладывайте схему подключения.
ААААА! Рашн традишн! Понял вас! :)
Сейчас с товарищем нашли одну закономерность, если всё сойдётся - напишу решение.
Upd. нет, все закономерности отвалились. Придётся искать другие датчики.
1. "Резистор 4,7. Ставил и 1к и 10к - температура меняется на 5 градусов выше/ниже и все" - это настораживает. Питание осциллографом смотрели?
2. Подключить родную далласовскую библиотеку и запустить пример Single.pde сложно?
1. "Резистор 4,7. Ставил и 1к и 10к - температура меняется на 5 градусов выше/ниже и все" - это настораживает. Питание осциллографом смотрели?
2. Подключить родную далласовскую библиотеку и запустить пример Single.pde сложно?
1. Нет, под рукой сейчас нет осциллографа.
2. Выше указал, что и ей проверял, результат не изменился.
Проверили бы вы сходимость CRC без осциллографа.
Проверили бы вы сходимость CRC без осциллографа.
Разве вот тут она не проверяется? (строки 38-41)
1. "Резистор 4,7. Ставил и 1к и 10к - температура меняется на 5 градусов выше/ниже и все" - это настораживает. Питание осциллографом смотрели?
2. Подключить родную далласовскую библиотеку и запустить пример Single.pde сложно?
1. Нет, под рукой сейчас нет осциллографа.
2. Выше указал, что и ей проверял, результат не изменился.
1. "Резистор 4,7. Ставил и 1к и 10к - температура меняется на 5 градусов выше/ниже и все" - это настораживает. Питание осциллографом смотрели?
2. Подключить родную далласовскую библиотеку и запустить пример Single.pde сложно?
1. Нет, под рукой сейчас нет осциллографа.
2. Выше указал, что и ей проверял, результат не изменился.
Без библиотеки вы же скетч и не запустите.
Разве вот тут она не проверяется? (строки 38-41)
Так там же русским по белому написано, что это CRC идентификатора. Простая проверка на корректность адреса переданного в функцию.
ААААА! Рашн традишн! Понял вас! :)
там по моему крайние выводы это питание, а средний данные , конечно, если это не "авторское" рисование схемы.
Подскажите тогда,пожалуйста, чего надо дописать.
Про схемку - да, сам отрисовал.
В строке #83 есть расчет, но сравнения с CRC-байтом принятого скретчпада не производится.
Если вы считаете что вам подсунули плохие датчики:
1.Найдите и попробуйте другой пример.
Совсем другой.
Чем проще - тем лучше.
2. С другой библиотекой или даже без неё.
Пробовал другие примеры.
Простые. Просто считывал напрямую старший и младший байты. Всё сходится.
Сверил все биты. Всё тоже верно работает.
В конечном итоге взял другой датчик(совсем другой) и сравнил его показания со своими. Пришёл к выводу, что дружественный народ Китая вшил в чип подсчет сразу в Фаренгейтах, ибо если принять эту мысль, то при переводе сырых значений (считая, что это температура в Фаренгейтах) получается весьма точное значение в Цельсиях с другим датчиком. Разбег в 1 градус считаю незначительным.
Так что если у кого такое же с этим чипом проскочит - возможно, мы с вами товарищи по прошивке.
Нужно этот датчик сдать в поликлинику для опытов.