विषयसूची:

2 सेंसर के साथ DIY लॉगिंग थर्मामीटर: 3 चरण (चित्रों के साथ)
2 सेंसर के साथ DIY लॉगिंग थर्मामीटर: 3 चरण (चित्रों के साथ)

वीडियो: 2 सेंसर के साथ DIY लॉगिंग थर्मामीटर: 3 चरण (चित्रों के साथ)

वीडियो: 2 सेंसर के साथ DIY लॉगिंग थर्मामीटर: 3 चरण (चित्रों के साथ)
वीडियो: Biparjoy Cyclone: तूफान के तट से टकराने से पहले भारी बारिश | Gujarat News | ABP News | Hindi News 2024, जुलाई
Anonim
2 सेंसर के साथ DIY लॉगिंग थर्मामीटर
2 सेंसर के साथ DIY लॉगिंग थर्मामीटर
2 सेंसर के साथ DIY लॉगिंग थर्मामीटर
2 सेंसर के साथ DIY लॉगिंग थर्मामीटर

यह परियोजना मेरे पिछले प्रोजेक्ट "DIY लॉगिंग थर्मामीटर" का एक एन्हांसमेंट है। यह तापमान माप को माइक्रो एसडी कार्ड में लॉग करता है।

हार्डवेयर परिवर्तन

मैंने रीयल टाइम क्लॉक मॉड्यूल में एक DS18B20 तापमान सेंसर जोड़ा, जहां इस उपकरण के लिए मुद्रित सर्किट बोर्ड पर प्रावधान है; और Arduino के D2 में RTC के "DS" पिन से उपयुक्त तार जोड़ा।

सॉफ्टवेयर परिवर्तन

फिर मैंने सॉफ्टवेयर को जोड़ा और संशोधित किया। मुख्य परिवर्तन हैं:

एलसीडी डिस्प्ले दो तापमान "इन" और "आउट" दिखाता है।

एसडी कार्ड पर रिकॉर्ड की गई लॉग फाइलों में दो तापमान क्षेत्र होते हैं, "तापमान अंदर" और "तापमान बाहर"।

एसडी कार्ड पर लंबे रिकॉर्ड के कारण, EEPROM के लिए काम करने वाले बफ़र्स बड़े थे और इसके परिणामस्वरूप मुझे मेमोरी संघर्ष की समस्या होने लगी। मैंने डायनेमिक मेमोरी के उपयोग को कम करने के उद्देश्य से कई बदलाव किए हैं, जिसमें स्ट्रिंग ऑब्जेक्ट के बजाय सभी स्ट्रिंग्स के लिए कैरेक्टर एरेज़ का उपयोग करना शामिल है।

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

मेरे द्वारा किए गए परीक्षण के अनुसार, तापमान जांच की पहचान, और एसडी कार्ड को हटाने और बदलने की प्रतिक्रिया, अभी भी मूल रूप से काम करती है।

चरण 1: सॉफ्टवेयर विकास

यह चरण आपको पूर्ण किए गए प्रोजेक्ट के लिए पूर्ण सॉफ़्टवेयर देता है। मैंने इसे Arduino IDE 1.6.12 का उपयोग करके संकलित किया। यह 21, 400 बाइट्स प्रोग्राम मेमोरी (69%) और 1, 278 बाइट्स डायनेमिक मेमोरी (62%) का उपयोग करता है।

मैंने कोड में टिप्पणियां इस उम्मीद में रखी हैं कि यह स्पष्ट कर देगा कि क्या हो रहा है।

चरण 2: दो तापमान सेंसर के साथ कार्य करना - विवरण

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

www.pjrc.com/teensy/td_libs_OneWire.html

जब दो (या अधिक) तापमान सेंसर होते हैं, तो यह पहचानना आवश्यक हो जाता है कि कौन सा है।

मैंने अपने दो सेंसर को "इन" और "आउट" कहा, जो कि वाणिज्यिक इकाइयों के लिए विशिष्ट है, जिसमें डिस्प्ले मॉड्यूल में एक सेंसर होता है जो सामान्य रूप से "अंदर" होता है, और दूसरा सेंसर एक केबल पर होता है ताकि इसे दूसरी तरफ रखा जा सके। एक बाहरी दीवार की और इस प्रकार "बाहर" हो।

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

मेरा इरादा यह था कि सॉफ्टवेयर स्वचालित रूप से सेंसर की पहचान करे और उन्हें "इन" और "आउट" में सही ढंग से आवंटित करे। उन्हें अलग-अलग Arduino पिन पर लगाकर करना काफी आसान है। इस परियोजना में, A0 से A3 और A6 और A7 सभी अप्रयुक्त हैं, इसलिए इस मामले में इनमें से किसी एक का उपयोग किया जा सकता था। हालाँकि मैं एक ही वनवायर बस में सेंसर के साथ स्वचालित पहचान कार्य करने में सफल रहा।

यह इस तरह काम करता है।

वनवायर लाइब्रेरी में एक कमांड "वनवायरऑब्जेक्ट.सर्च (एड्रेस)" है, जहां "एड्रेस" 8 बाइट्स की एक सरणी है और "वनवायरऑब्जेक्ट" वनवायर ऑब्जेक्ट के एक उदाहरण का नाम है जिसे पहले बनाया गया है। इसका कोई भी नाम हो सकता है जो आपको पसंद हो। मेरा "डीएस" कहा जाता है। जब आप यह "खोज" कमांड जारी करते हैं, तो वनवायर लाइब्रेरी वन वायर बस पर कुछ सिग्नलिंग करती है। यदि यह एक प्रतिसाद देने वाला सेंसर पाता है, तो यह "TRUE" बूलियन मान देता है और सेंसर के 8 बाइट अद्वितीय पहचानकर्ता के साथ "पता" सरणी भरता है। इस पहचानकर्ता में एक परिवार कोड (शुरुआत में) और एक चेक राशि (अंत में) शामिल है। बीच में 6 बाइट्स हैं जो विशिष्ट रूप से अपने परिवार के भीतर सेंसर की पहचान करते हैं।

एक परिणाम (पता और वापसी TRUE) हर बार यह आदेश दिए जाने पर प्राप्त होता है, वनवायर बस के सभी उपकरणों के माध्यम से साइकिल चलाना। एक बार प्रत्येक डिवाइस ने प्रतिक्रिया दी है, अगली बार "खोज" जारी किया गया है, वापसी "गलत" है, यह दर्शाता है कि बस में प्रत्येक डिवाइस ने पहले ही प्रतिक्रिया दी है। यदि "खोज" फिर से जारी किया जाता है, तो पहला उपकरण फिर से प्रतिक्रिया करता है - और इसी तरह अनिश्चित काल तक। डिवाइस हमेशा उसी क्रम में प्रतिक्रिया करते हैं। प्रतिक्रियाओं का क्रम वनवायर बस में उपकरणों के पहचानकर्ताओं पर आधारित है। यह डिवाइस पहचानकर्ताओं के कम से कम महत्वपूर्ण बिट्स से शुरू होने वाली बाइनरी खोज प्रतीत होती है। इन पहचानकर्ताओं को खोजने के लिए इस्तेमाल किया जाने वाला प्रोटोकॉल काफी जटिल है, और दस्तावेज़ "बुक ऑफ़ आईबटन स्टैंडर्ड्स" के पेज 51 - 54 में वर्णित है जो https://pdfserv.maximintegrated.com/en/an/AN937.pd पर एक पीडीएफ दस्तावेज़ है। …

मैंने एक बस में 1 से 11 सेंसर के साथ इस खोज प्रक्रिया का परीक्षण किया, और पाया कि दिए गए उपकरणों के लिए प्रतिक्रिया क्रम हमेशा समान था, लेकिन जब मैंने बस के अंत में एक नया उपकरण जोड़ा, तो कोई रास्ता नहीं था मैं भविष्यवाणी कर सकता था कि खोज क्रम में यह कहां दिखाई देगा। उदाहरण के लिए, मेरे द्वारा जोड़ा गया ११वां सेंसर नंबर ५ की स्थिति में आया; और मैंने बस में जो पहला सेंसर लगाया था, वह खोज क्रम में आखिरी था।

इस परियोजना में दो सेंसर के साथ, उनमें से एक आरटीसी मॉड्यूल पर जगह में मिलाप किया गया है; दूसरे को बोर्ड पर एक पुरुष हेडर और केबल पर एक महिला हेडर का उपयोग करके प्लग किया गया है। इसे आसानी से अलग किया जा सकता है।

जब केबल पर लगे सेंसर ("आउट" सेंसर) को अलग कर दिया जाता है, तो "खोज" कमांड बारी-बारी से "TRUE" और "FALSE" रिटर्न देता है।

जब केबल पर सेंसर जुड़ा होता है, तो "खोज" कमांड एक 3-चरण चक्र उत्पन्न करता है, जिसमें दो "TRUE" और एक "FALSE" रिटर्न होता है।

मेरी प्रक्रिया 1, 2 या 3 "खोज" आदेश जारी करना है, जब तक कि कोई FALSE परिणाम वापस न आ जाए। फिर मैं 2 और "खोज" आदेश जारी करता हूं। यदि दूसरा विफल हो जाता है (यानी FALSE) तो मुझे पता है कि बस में केवल एक सेंसर है और यह "इन" सेंसर है। डिवाइस की पहचान रिकॉर्ड की जाती है और "इन" सेंसर को आवंटित की जाती है।

बाद में, यदि पहली और दूसरी रिटर्न दोनों सही हैं, तो मुझे पता है कि बस में दो सेंसर हैं। मैं जांचता हूं कि उनमें से किसकी पहचान "इन" सेंसर के बराबर है, और दूसरे को "आउट" सेंसर के रूप में आवंटित करता है।

दूसरा छोटा बिंदु यह है कि दो सेंसर से परिणामों का संग्रह "प्रारंभ रूपांतरण" भेजकर किया जाता है जिसे "स्किप रोम" कमांड के रूप में जाना जाता है। हमारे पास एक ही डिवाइस (इसकी विशिष्ट पहचानकर्ता का उपयोग करके) या बस के सभी उपकरणों (रोम को छोड़ें) पर कमांड भेजने का विकल्प है। कोड इस तरह दिखता है:

डीएस.रीसेट (); //

// "स्किप ROM" कमांड भेजें (इसलिए अगला कमांड दोनों सेंसर में काम करता है) ds.write (0xCC); // रॉम कमांड छोड़ें ds.write (0x44, 0); // दोनों जांचों में रूपांतरण शुरू करें तापमान_स्टेट = प्रतीक्षा_ कन्वर्ट; // देरी की स्थिति में जाएं

जब आवश्यक विलंब समय बीत चुका होता है, तो तापमान प्रत्येक सेंसर से व्यक्तिगत रूप से प्राप्त होता है। यहाँ दूसरे सेंसर (यानी OUT सेंसर) के लिए कोड है।

अगर (ध्वज 2) {

वर्तमान = डीएस.रीसेट (); ds.select(DS18B20_addr_out); डीएस.लिखें (0xBE); // "बाहर" जांच डेटा का स्क्रैचपैड पढ़ें [0] = ds.read (); डेटा [1] = डीएस.रीड (); तापमान_आउट = (डेटा [1] << 8) + डेटा [0]; तापमान_आउट = (6 * तापमान_आउट) + तापमान_आउट / 4; // 6.25 से गुणा करें} और {// फ्लैग2 नहीं - यानी आउट सेंसर कनेक्टेड टेम्परेचर_आउट = 30000 नहीं; // ३००.०० C पर ठीक करें यदि अस्थायी सेंसर काम नहीं कर रहा है } // if का अंत (flag2)

मैंने इस सॉफ़्टवेयर में से अधिकांश को एक स्टैंड-अलोन स्केच में काम किया, जिसमें एलसीडी, आरटीसी और एसडी कार्ड समर्थन की जटिलताओं के बिना बस इसमें तापमान सेंसर थे। यह विकास स्केच नीचे की फाइल में है।

चरण 3: प्रारंभिक परिणाम

प्रारंभिक परिणाम
प्रारंभिक परिणाम

यह चार्ट रीडिंग के पहले दो भाग-दिनों का एक संयोजन है।

सिफारिश की: