Мой DS18B20 читает высоко. Как я могу заставить его вернуть правильную температуру?

10

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

У меня есть клон Arduino Mini Pro 5 В, подключенный к релейному модулю, дисплей HD47780 и модуль Tiny RTC, с подключенным к нему DS18B20.

DS18B20 питается от 5 В Vcc, подаваемого на модуль Tiny RTC, а не от паразитного питания на линии DQ (как я не был уверен, поддерживают ли библиотеки Onewire этот режим работы), и в спецификации DS18B20 говорится, что Vcc может быть между 3.0v и 5.5v. Я измерил регулируемую мощность от Mini Pro, находящегося на уровне 5.2v.

Я сравниваю температуру от DS с существующим комнатным термостатом (биметаллическим), настольным монитором температуры RS с двумя датчиками, небольшим «термогигрометром» и биметаллическим термометром-холодильником (в верхней четверти его температуры). диапазон) . Показания от DS всегда примерно на 1-2 градуса выше, чем показания от других датчиков, которые находятся в градусах друг от друга.

† Не факт, а нечто подобное.

Читая различные форумы, я слышал, что эти датчики достаточно точны, но могут страдать от локального нагрева от компонентов, расположенных рядом с ними, поэтому я переместил датчик на кабель длиной 20 см и расположил его далеко от остальной электроники. Это не имеет значения.

Затем я прочитал, что DS может стать самонагревающимся, если на него подается слишком высокое напряжение Vcc, поэтому я добавил красный светодиод с падением 1,7 В и измерил новое напряжение на DS как 3,5 В, но снова после ожидания температура стабилизировалась еще раз, это не имело никакого значения.

Кто-нибудь может подсказать, почему DS может читать высоко и что я могу сделать, чтобы предотвратить это?

Марк Бут
источник
Насколько вы уверены , что ваш комнатный термостат не просто читать 1-2 градусов низко ? Вы должны получить третий термометр и сравнить, чтобы определить, откуда на самом деле исходит ваше смещение . Поскольку термометр RS, вероятно, использует одну и ту же электронику считывания для обоих датчиков, он, вероятно, не очень полезен в качестве двух разных калибровочных эталонов.
Коннор Вольф

Ответы:

9

Сейчас я установил множество датчиков DS18B20 на различных сенсорных узлах - может быть, 50 или около того. Я немного узнал о показаниях, полученных от них. Я знаю, что вы выделили некоторые из них как не являющиеся причиной, но хорошо подтвердить, что они являются проблемами.

Я не знаю, используете ли вы Цельсий или Фаренгейт, поэтому степень проблемы не ясна.

Локальное отопление

Я не думаю о Arduino как о «горячем» чипе, но размещение DS18B20 в корпусе с Arduino и ЖК-дисплеем привело к тому, что показания стали на 2-3 ° C выше, чем ожидалось.

Перемещение его за пределы корпуса исправило это.

Нагрев от высоких Vcc / частых преобразований

Если вы снабжаете чип высокой Vcc и выполняете частые преобразования (то есть так часто, как можете), чип нагревается. Я видел это увеличение показаний на 1-2 ° C.

Я не видел проблемы только с высоким Vcc, но большинство DS18B20 я использую в паразитном режиме и конвертирую не чаще, чем раз в 10 секунд. Те, которые работают в активном режиме, обычно выключаются, когда не используются.

OneWire и DallasTength поддерживают паразитный режим.

Не все датчики температуры созданы равными

У меня было несколько датчиков температуры, прежде чем я начал играть с DS18B20. Почти все без исключения эти читают. Большинство из них основаны на термисторах и калибровка плохая. Я думал, что DS18B20 перечитал, но когда я использовал хорошую термопару и измеритель, я мог подтвердить, что они были правильными.

Это было о том, как научиться доверять DS18B20.

Тепло проведено вдоль провода

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

Поддельный DS18B20

Эти датчики очень популярны, и это, кажется, вызвало появление подделок. У меня есть партия водонепроницаемых датчиков из нержавеющей стали, которые перечитали, и время истекло. Они работали с библиотекой OneWire, но не с мастером DS2482 OneWire. Я слышал, что обычные корпуса ТО-92 тоже подделаны.

Cybergibbons
источник
Судя по всему, я не могу ответить на этот вопрос, поэтому я добавлю здесь комментарий. Как я выяснил на github.com/PaulStoffregen/OneWire/issues/91 трудный путь , если вы используете микросхему 3,3 В, вам необходимо заменить резистор 4,7 кОм на резистор 2,7 кОм, или некоторые датчики будут возвращать неправильные значения.
Марк Мерлин,
2

В моем случае проводка между моим uC и датчиком была слишком короткой и передавала немного тепла. Сначала я подумал, что это не так, поскольку другой датчик температуры сообщает точные значения температуры на том же расстоянии. Я перенес его в другое место на доске и вуаля!

Джордан Ситкин
источник
1

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

Что он читает, когда погружен в кипящую воду (при условии уровня моря)? 102,5 по Цельсию? Это даст вам высокотемпературную калибровку -2,5 ° С.

Очевидно, что лучше проводить калибровку по тем температурам, которые вы ожидаете от меня. Это значит доверять (или усреднять?) Какому-то измерительному устройству и калибровать его.

Кингсли
источник
1

Я видел смещения в несколько градусов C при использовании DS18B20 на шине 3,3 В, переключении на стабильную шину 5,0 В, и я получил более разумные значения. (проверено с паразитной силой и без нее)

NiKiZe
источник
Это интересно, спасибо, и наоборот, о чем сообщали некоторые люди. Интересно, это еще одна фальшивая проблема DS18B20.
Марк Бут
0

Я провел несколько экспериментов. Если DS18B20 был на коротком кабеле <1 см к моему Arduino Pro Micro, показания были на 5 градусов выше, чем окружающая среда. На длине кабеля> 10 см от платы Arduino и независимо от того, где был установлен резистор (рядом с Arduino или рядом с DS18B20), показания были хорошими.

Michal.S
источник