Я работаю над системой управления отоплением для своего дома, но у меня проблемы с показаниями датчика температуры выше, чем я ожидаю.
У меня есть клон 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 может читать высоко и что я могу сделать, чтобы предотвратить это?
источник
Ответы:
Сейчас я установил множество датчиков 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 тоже подделаны.
источник
В моем случае проводка между моим uC и датчиком была слишком короткой и передавала немного тепла. Сначала я подумал, что это не так, поскольку другой датчик температуры сообщает точные значения температуры на том же расстоянии. Я перенес его в другое место на доске и вуаля!
источник
Возможно, вы захотите откалибровать свой датчик.
Что он читает, когда погружен в кипящую воду (при условии уровня моря)? 102,5 по Цельсию? Это даст вам высокотемпературную калибровку -2,5 ° С.
Очевидно, что лучше проводить калибровку по тем температурам, которые вы ожидаете от меня. Это значит доверять (или усреднять?) Какому-то измерительному устройству и калибровать его.
источник
Я видел смещения в несколько градусов C при использовании DS18B20 на шине 3,3 В, переключении на стабильную шину 5,0 В, и я получил более разумные значения. (проверено с паразитной силой и без нее)
источник
Я провел несколько экспериментов. Если DS18B20 был на коротком кабеле <1 см к моему Arduino Pro Micro, показания были на 5 градусов выше, чем окружающая среда. На длине кабеля> 10 см от платы Arduino и независимо от того, где был установлен резистор (рядом с Arduino или рядом с DS18B20), показания были хорошими.
источник