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

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

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

Датчик DS18B20 питается от источника постоянного тока 5 В, подаваемого на модуль Tiny RTC, а не от паразитного питания на линии DQ (поскольку я не был уверен, что библиотеки Onewire поддерживают такой режим работы) и Техническое описание DS18B20 говорит, что Vcc может быть между 3,0 В и 5,5 В. Я измерил отрегулированную мощность Mini Pro на уровне 5,2 В.

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

† Не настоящий, а что-то похожее.

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

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

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

, 👍13

Обсуждение

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


5 ответов


Лучший ответ:

12

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

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

Местное отопление

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

Это исправили, переместив его за пределы ограждения.

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

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

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

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

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

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

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

Тепло передается по проводу

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

Подделка DS18B20

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

,

В великой мудрости программного обеспечения платы мне не разрешено отвечать на этот вопрос, поэтому я добавлю комментарий здесь. Как я узнал на собственном горьком опыте на https://github.com/PaulStoffregen/OneWire/issues/91, если вы используете чип 3,3 В, вам нужно заменить резистор 4,7 кОм на резистор 2,7 кОм, иначе некоторые датчики будут возвращать неверные значения., @Marc Merlin


1

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

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

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

,

2

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

,

1

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

,

Это интересно, спасибо, и противоположно тому, о чем сообщают некоторые люди. Интересно, это еще одна подделка DS18B20?, @Mark Booth


1

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

,

Прочитав ваш ответ, я попытался отодвинуть датчик, и мои показания упали на 5 градусов до более точного значения. У вас есть идеи, почему? Я не думаю, что тепло цепи вызвало разницу., @bart