Мій DS18B20 читає високо. Як змусити його повернути правильну температуру?


10

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

У мене є 5В Arduino Mini Pro, підключений до релейного модуля, дисплея HD47780 та крихітного модуля RTC, до якого приєднано DS18B20.

DS18B20 живиться від 5v Vcc, застосованого до модуля Tiny RTC, а не від використання паразитарного живлення на лінії DQ (оскільки я не був впевнений, чи підтримують такий режим роботи бібліотеки Onewire), а в аркуші DS18B20 написано, що Vcc може бути між 3.0v та 5.5v. Я виміряв регульовану потужність від міні-Pro в 5,2 В.

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

† Не справжній, а щось подібне.

Читаючи різні форуми, я чув, що ці датчики досить точні, але можуть страждати від локалізованого нагрівання від компонентів поблизу, тому я перемістив датчик на 20-сантиметровий кабель і розташував його далеко від решти електроніки. Це не мало значення.

Потім я прочитав, що DS може перегріватися, якщо він подається з надто високою напругою Vcc, тому додав червоний світлодіод з падінням 1,7 В і виміряв нову напругу над DS як 3,5 В, але знову після очікування на температури для стабілізації ще раз, це не мало значення.

Чи хтось може підказати, чому DS може читати високий рівень і що я можу зробити, щоб цього не допустити?


Наскільки ви впевнені , що ваш кімнатний термостат не просто читати 1-2 градусів низько ? Ви повинні отримати третій термометр і порівняти, щоб визначити, звідки насправді відбувається ваше зміщення . Оскільки РС-термометр, ймовірно, використовує однакову електроніку зчитування для обох датчиків, це, мабуть, не дуже корисно, як дві чіткі посилання на калібрування.
Вонор Коннор

Відповіді:


9

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

Я не знаю, чи використовуєте Ви Цельсій або Фаренгейт, тому ступінь проблеми не зрозуміла.

Локалізоване опалення

Я не думаю про Arduino як про "гарячу" мікросхему, але поміщення DS18B20 у корпус із Arduino та РК-дисплеєм змусило мене побачити показання на 2-3 ° C вище, ніж очікувалося.

Переміщення його за межами корпусу зафіксувало це.

Опалення від високого Vcc / часті перетворення

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

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

OneWire і DallasTemperature підтримують паразитарний режим.

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

Перед тим, як почати грати з DS18B20, у мене було кілька температурних датчиків. Практично без винятку ці недочитані. Більшість з них базується на термісторах, і калібрування є поганим. Я думав, що DS18B20 перевищує читання, але коли я використовував хороший термопару та лічильник, я міг перевірити, що вони правильні.

Йшлося про те, щоб навчитися довіряти DS18B20.

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

Якщо у вас є датчики на дроті, провід проводить дивовижну кількість тепла. Це може бути проблемою при проводці проводки вздовж труб.

Підроблений DS18B20

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


З великою мудрістю програмного забезпечення плати мені не дозволяється відповідати на це питання, тому я додам тут коментар. Як я з’ясував важкий шлях на github.com/PaulStoffregen/OneWire/isissue/91 , якщо ви використовуєте мікросхему 3,3 В, вам потрібно замінити резистор 4,7 К на резистор 2,7 К , або деякі датчики повернуть неправильні значення.
Марк Мерлін

2

У моєму випадку проводка між моїм ЦК та датчиком була занадто короткою і передавала деяку теплоту. Спочатку я подумав, що це не може бути так, оскільки інший датчик тимчасового сигналу повідомляв точні темпи на тій же відстані. Я перемістив його в інше місце на дошці і вуаля!


1

Можливо, ви захочете відкалібрувати свій датчик.

Що він читає при зануренні у киплячу воду (припускаючи рівень моря)? 102,5 Цельсія? Це дало б вам високотемпературну калібрування -2,5С.

Очевидно, що краще відкалібрувати температуру, яку ви очікуєте для мене. Це означає довіряти (чи усереднювати?) Якомусь вимірювальному пристрою та калібрувати його.


1

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


Це цікаво, спасибі, і протилежне тому, що деякі люди повідомляли. Цікаво, чи це інша помилкова проблема DS18B20.
Марк Бут

0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.