DS18x20 तापमान सेंसर की विश्वसनीयता


11

मैं मैक्सिम के DS18x20 का उपयोग कर रहा हूं (मुझे वास्तव में एक से अधिक वेरिएंट मिला है) 1-वायर तापमान सेंसर एक मिनट में एक बार मेरे घर के विभिन्न कमरों में तापमान लॉग करने के लिए। एक हजार में एक पढ़ने के बारे में, मुझे कुछ पूरी तरह से फर्जी लगता है। एक क्रम के बीच में जो धीरे-धीरे 65F से 70F तक बढ़ रहा है, मुझे -32.1F या 15.64F जैसा कुछ मिलता है।

किसी और को इस तरह की समस्या थी, या यह मेरे सेटअप में कुछ गड़बड़ है? अगर यह इन चीजों के साथ सिर्फ एक ज्ञात मुद्दा है, तो मुझे कुछ करना होगा जैसे तीन रीडिंग लेना और एकमुश्त बाहर फेंकना।

मेरे सेटअप के बारे में कुछ बयान:

  • मैं 3.3V पर चल रहा हूं
  • मैं पढ़ने के चेकसम की जाँच कर रहा हूँ क्योंकि यह arduino पर वापस आता है, और यह मेल खाता है (या मुझे लगता है कि यह करता है - उस कोड में हमेशा एक बग हो सकता है)।
  • ये सामान्य शक्ति से भाग रहे हैं, परजीवी शक्ति से नहीं।
  • मेरे पास 4.7K पुलअप रेसिस्टर है।
  • मैं केवल प्रत्येक सेंसिंग प्लेटफ़ॉर्म पर एकल सेंसर का उपयोग कर रहा हूं।
  • सेंसर arduino से जुड़े एक पीसीबी पर है जो इसे पढ़ रहा है।
  • मैं एक ही समस्या को विभिन्न अर्डिनो (डायकिमिला, प्रो-मिनी, होममेड कस्टम) से पढ़ रहा हूं।

जवाबों:


5

मैंने इसे DS18B20 के साथ कभी-कभार देखा है। मेरे आवेदन के लिए, कोड के साथ शानदार परिणामों को फ़िल्टर करना सरल था।


यह सुनकर अच्छा लगा कि किसी और को कुछ ऐसा लग रहा है। आपका फ़िल्टरिंग एल्गोरिथ्म क्या था?
edebill

मैं आपको सुझाव दूंगा कि आपने क्या कहा, 3 रीडिंग लें, 5 बेहतर होगा, 7 इससे बेहतर होगा, लेकिन यदि 1/1000 के आसपास किसी चीज की त्रुटि है, तो आपको बस 3 की आवश्यकता है। समस्या हल हो जाएगी। यदि आप 5 लेते हैं तो एक समस्या होने के लिए एक अजीब घटना होगी।
कोर्तुक

मैं अब 5 कर रहा हूं। मैं सिर्फ 2 के उच्च लेने की कोशिश की, लेकिन एक त्रुटि अभी भी कल रात में (मैं हर मिनट पढ़ने 3 सेंसर मिल गया है, तो मैं एक दिन के हजारों datapoints मिलता है)।
edebill

3

यदि आपको त्रुटिपूर्ण रीडिंग का स्रोत नहीं मिल रहा है, तो उन्हें आसानी से फ़िल्टर करना और पिछले रीडिंग से एक्सट्रपलेशन करना आसान होना चाहिए , या यदि हिंडाइट महत्वपूर्ण है, तो रीडिंग के बीच इंटरपोलेट करें। चूंकि आप प्रति मिनट एक बार नमूना ले रहे हैं, इसलिए आप अंतिम रीडिंग को भी कॉपी कर सकते हैं; कमरे का तापमान शायद ही एक मिनट में बदल जाएगा।


3

यह कुछ गलत-लोड स्थितियों के तहत तापमान की प्रतिक्रिया के एक या अधिक बिट्स को गलत तरीके से पढ़ने या एक या अधिक बिट्स को दूषित करने वाले विद्युत हस्तक्षेप के कारण हो सकता है।

यहां डेटा शीट http://www.rentron.com/Files/ds18b20.pdf पर बारीकी से नज़र डालें

पृष्ठ 5 पर, यह दर्शाता है कि 85C के लिए सटीक बाइनरी अनुक्रम है:

+85°C 0000 0101 0101 0000

इसी तरह, 25C के लिए, यह है:

+25.0625°C 0000 0001 1001 0001

कुछ मामलों में, यदि नियंत्रक थोड़ा याद करता है, तो आपको एक मूल्य मिलेगा जो वास्तविक तापमान है, जिसे बाइनरी और बिट-शिफ्ट में व्यक्त किया गया है। अक्सर यह C में 1 / 2x लक्ष्य मान होता है।

कभी-कभी आप लाइन पर विद्युत हस्तक्षेप प्राप्त कर सकते हैं, और नियंत्रक 1 एस की पूरी संख्या को पढ़ता है, उस स्थिति में, आपको कुछ संख्या मिल जाएगी जैसे कि 15.64, जो बाइनरी में व्यक्त किया गया है, वास्तव में 65 और 70F के बीच की संख्याओं को छोड़कर, शुरुआत में 1s का एक गुच्छा।


2

इसके लायक क्या है, मैंने कुछ महीने पहले DS18B20 के साथ थोड़ा काम किया था। मैंने एक छोटा वीडियो शूट किया और अपने ब्लॉग पर एक राइट-अप किया, जिसमें उदाहरण और नमूना कोड के लिंक हैं। उम्मीद है कि यह थोड़ा मदद कर सकता है! http://dailyduino.com/archives/552


2

मेरे पास उनमें से 13 घर हैं जो अब लगभग चार साल से चल रहे हैं। डेटाबेस को अब संभालना मुश्किल है (मैंने सभी नमूनों पर नज़र रखी)। लेकिन, मैंने इस तरह का व्यवहार नहीं देखा। इसके बजाय, हर अब और एक से अधिक संवेदक जमा करते हैं और सभी को अवरुद्ध करते हैं, इसका एकमात्र तरीका (जो मुझे मिला) कुछ सेकंड के लिए आपूर्ति वोल्टेज को बंद करना था। इसलिए मैंने अपने बोर्ड में एक छोटा सा रिले जोड़ा और जब भी माइक्रो सेंस इस व्यवहार को महसूस करता है तो यह सेंसर की पूरी श्रृंखला को रीसेट करता है। ऐसा हफ्ते में कई बार होता है।


हम्म। हो सकता है कि जब मैं पढ़ने वाला हो तो मैं उन्हें केवल शक्ति प्रदान करूं।
13
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.