विषयसूची:
वीडियो: 2 सेंसर के साथ DIY लॉगिंग थर्मामीटर: 3 चरण (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:20
यह परियोजना मेरे पिछले प्रोजेक्ट "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: प्रारंभिक परिणाम
यह चार्ट रीडिंग के पहले दो भाग-दिनों का एक संयोजन है।
सिफारिश की:
स्मार्टफोन को गैर संपर्क थर्मामीटर / पोर्टेबल थर्मामीटर के रूप में उपयोग करें: 8 कदम (चित्रों के साथ)
स्मार्टफोन को नॉन कॉन्टैक्ट थर्मामीटर / पोर्टेबल थर्मामीटर के रूप में इस्तेमाल करें: थर्मो गन की तरह नॉन-कॉन्टैक्ट / कॉन्टैक्टलेस से शरीर के तापमान को मापना। मैंने यह प्रोजेक्ट इसलिए बनाया क्योंकि थर्मो गन अब बहुत महंगी है, इसलिए मुझे DIY बनाने का विकल्प मिलना चाहिए। और उद्देश्य कम बजट संस्करण के साथ बनाना है। आपूर्तिMLX90614Ardu
InfluxDB, Grafana और Hassio का उपयोग करके सेंसर लॉगिंग: 5 चरण
InfluxDB, Grafana और Hassio का उपयोग करके सेंसर लॉगिंग: इस पोस्ट में, हम सीखते हैं कि लंबी अवधि के सेंसर डेटा स्टोरेज के लिए InfluxDB का उपयोग कैसे करें और हम डेटा विश्लेषण के लिए Grafana का उपयोग करते हैं। यह होम ऑटोमेशन श्रृंखला का हिस्सा है जहां हम सीखते हैं कि होम असिस्टेंट को कैसे सेट अप और उपयोग करना है, इसलिए यह सब हसियो का उपयोग करके किया जाएगा।
Arduino आधारित गैर संपर्क इन्फ्रारेड थर्मामीटर - Arduino का उपयोग करते हुए IR आधारित थर्मामीटर: 4 चरण
Arduino आधारित गैर संपर्क इन्फ्रारेड थर्मामीटर | Arduino का उपयोग करते हुए IR आधारित थर्मामीटर: हाय दोस्तों इस निर्देश में हम arduino का उपयोग करके एक गैर संपर्क थर्मामीटर बनाएंगे। चूंकि कभी-कभी तरल / ठोस का तापमान बहुत अधिक होता है या कम होता है और फिर इसके साथ संपर्क बनाना और इसे पढ़ना कठिन होता है। तापमान तो उस दृश्य में
थर्मामीटर का उपयोग कर थर्मामीटर: 5 कदम
थर्मिस्टर का उपयोग करने वाला थर्मामीटर: यह केवल थर्मिस्टर और रेसिस्टर का उपयोग करने वाला थर्मामीटर है। आप किसी भी समय अपने कमरे या किसी भी चीज़ के तापमान की निगरानी और भंडारण भी कर सकते हैं। आप चीजों पर पहले से संग्रहीत डेटा की निगरानी भी कर सकते हैं
रीयलटाइम MPU-6050/A0 Arduino और Android के साथ डेटा लॉगिंग: 7 चरण (चित्रों के साथ)
रीयलटाइम MPU-6050/A0 Arduino और Android के साथ डेटा लॉगिंग: मुझे मशीन सीखने के लिए Arduino का उपयोग करने में दिलचस्पी है। पहले चरण के रूप में, मैं एक एंड्रॉइड डिवाइस के साथ एक रीयलटाइम (या इसके बहुत करीब) डेटा डिस्प्ले और लॉगर बनाना चाहता हूं। मैं MPU-6050 से एक्सेलेरोमीटर डेटा कैप्चर करना चाहता हूं इसलिए मैं डिजाइन करता हूं