- DHT11 - विशिष्टता और कार्य
- DHT11 सेंसर के साथ संचार
- आवश्यक घटक
- ढांच के रूप में
- DHT11 PIC MPLABX कोड स्पष्टीकरण के साथ
तापमान और आर्द्रता माप अक्सर कई अनुप्रयोगों में उपयोगी होता है जैसे होम ऑटोमेशन, पर्यावरण निगरानी, मौसम स्टेशन, आदि। LM35 के बगल में सबसे लोकप्रिय इस्तेमाल किया जाने वाला तापमान संवेदक DHT11 है, हमने पहले कई DHT11 प्रोजेक्ट्स को Arduino के साथ रखकर, रास्पबेरी के साथ बनाया है। पाई और कई अन्य विकास बोर्ड। इस लेख में, हम सीखेंगे कि इस DHT11 को PIC16F87A के साथ कैसे जोड़ा जाए जो 8-बिट PIC माइक्रोकंट्रोलर है। हम DHT11 का उपयोग करके तापमान और आर्द्रता के मूल्यों को पढ़ने और इसे एलसीडी डिस्प्ले पर प्रदर्शित करने के लिए इस माइक्रोकंट्रोलर का उपयोग करेंगे । यदि आप PIC माइक्रोकंट्रोलर्स का उपयोग करने के साथ पूरी तरह से नए हैं, तो आप PIC माइक्रोकंट्रोलर को प्रोग्राम और उपयोग करने का तरीका जानने के लिए हमारी PIC ट्यूटोरियल श्रृंखला का उपयोग कर सकते हैं, कहा जा रहा है, चलो शुरू करें।
DHT11 - विशिष्टता और कार्य
DHT11 सेंसर या तो मॉड्यूल रूप में या सेंसर रूप में उपलब्ध है। इस ट्यूटोरियल में हम सेंसर का उपयोग कर रहे हैं, दोनों के बीच एकमात्र अंतर यह है कि मॉड्यूल रूप में सेंसर में फ़िल्टरिंग कैपेसिटर और सेंसर के आउटपुट पिन से जुड़ा पुल-अप रेज़िस्टर होता है। इसलिए यदि आप मॉड्यूल का उपयोग कर रहे हैं, तो आपको उन्हें बाहरी रूप से जोड़ने की आवश्यकता नहीं है। सेंसर फॉर्म में DHT11 को नीचे दिखाया गया है।
DHT11 सेंसर एक नीले या सफेद रंग के आवरण के साथ आता है। इस आवरण के अंदर, हमारे पास दो महत्वपूर्ण घटक हैं जो हमें सापेक्ष आर्द्रता और तापमान को समझने में मदद करते हैं। पहला घटक इलेक्ट्रोड की एक जोड़ी है; इन दो इलेक्ट्रोड के बीच विद्युत प्रतिरोध एक नमी-धारण सब्सट्रेट द्वारा तय किया जाता है। तो मापा प्रतिरोध पर्यावरण के सापेक्ष आर्द्रता के विपरीत आनुपातिक है। उच्च सापेक्ष आर्द्रता कम प्रतिरोध और इसके विपरीत का मूल्य होगा। इसके अलावा, ध्यान दें कि सापेक्ष आर्द्रता वास्तविक आर्द्रता से अलग है। सापेक्ष आर्द्रता हवा में तापमान के सापेक्ष हवा में पानी की मात्रा को मापती है।
अन्य घटक एक सतह घुड़सवार एनटीसी थर्मिस्टर है । NTC शब्द नकारात्मक तापमान गुणांक के लिए है, तापमान में वृद्धि के लिए प्रतिरोध का मूल्य घट जाएगा। सेंसर का आउटपुट फैक्ट्री कैलिब्रेटेड है और इसलिए एक प्रोग्रामर के रूप में हमें सेंसर को कैलिब्रेट करने की चिंता नहीं करनी चाहिए। 1-वायर संचार द्वारा दिए गए सेंसर का आउटपुट, चलो इस सेंसर का पिन और कनेक्शन आरेख देखें।
उत्पाद 4pin एकल पंक्ति पैकेज में है। 1 पिन VDD से जुड़ा हुआ है और 4th पिन GND से जुड़ा है। 2 पिन डेटा पिन है, जिसका उपयोग संचार उद्देश्यों के लिए किया जाता है। इस डेटा पिन को 5k के पुल-अप रोकनेवाला की आवश्यकता होती है। हालाँकि, अन्य लोग प्रतिरोधों को खींचते हैं जैसे कि 4.7k से 10k का भी उपयोग किया जा सकता है। 3 पिन कुछ के साथ जुड़ा नहीं है। इसलिए इसे नजरअंदाज किया जाता है।
डेटाशीट तकनीकी विनिर्देश प्रदान करती है और साथ ही साथ नीचे दी गई तालिका में देखी जा सकने वाली सूचनाओं को भी प्रस्तुत करती है-
उपरोक्त तालिका तापमान और आर्द्रता माप सीमा और सटीकता दिखा रही है । यह 0-50 डिग्री सेल्सियस की सटीकता के साथ +/- 2-डिग्री सेल्सियस और सापेक्ष आर्द्रता 20-90% आरएच की सटीकता के साथ +/- 5% आरएच से तापमान को माप सकता है। नीचे दी गई तालिका में विवरण विनिर्देश देखा जा सकता है।
DHT11 सेंसर के साथ संचार
जैसा कि पहले उल्लेख किया गया है, PIC के साथ DHT11 से डेटा पढ़ने के लिए हमें PIC एक तार संचार प्रोटोकॉल का उपयोग करना होगा। इसे कैसे निष्पादित किया जाए, इसके विवरण को डीएचटी 11 के इंटरफेसिंग आरेख से समझा जा सकता है, जो इसके डेटाशीट में पाया जा सकता है, वही नीचे दिया गया है।
संचार शुरू करने के लिए DHT11 को MCU से एक स्टार्ट सिग्नल की आवश्यकता होती है । इसलिए, हर बार एमसीयू को तापमान और आर्द्रता के मूल्यों को भेजने के लिए DHT11 सेंसर को एक स्टार्ट सिग्नल भेजने की आवश्यकता होती है। स्टार्ट सिग्नल को पूरा करने के बाद, DHT11 एक प्रतिक्रिया संकेत भेजता है जिसमें तापमान और आर्द्रता की जानकारी शामिल होती है। डेटा संचार एकल बस डेटा संचार प्रोटोकॉल द्वारा किया जाता है । पूर्ण डेटा लंबाई 40bit है और सेंसर उच्च डेटा बिट पहले भेजता है।
पुल-अप रोकनेवाला के कारण, डेटा लाइन हमेशा निष्क्रिय मोड के दौरान वीसीसी स्तर पर बनी रहती है। MCU को इस वोल्टेज को कम से कम 18ms की ऊँचाई तक खींचने की आवश्यकता है। इस समय के दौरान, DHT11 सेंसर स्टार्ट सिग्नल का पता लगाता है और माइक्रोकंट्रोलर 20-40 के लिए डेटा लाइन को उच्च बनाता है। इस 20-40 के समय को प्रतीक्षा अवधि कहा जाता है जहां DHT11 प्रतिक्रिया के लिए शुरू होता है। इस प्रतीक्षा अवधि के बाद, DHT11 डेटा को माइक्रोकंट्रोलर यूनिट को भेजता है।
DHT11 सेंसर डेटा प्रारूप
डेटा में दशमलव और अभिन्न अंग एक साथ संयुक्त होते हैं। सेंसर निम्न डेटा प्रारूप का अनुसरण करता है -
8bit इंटीग्रल आरएच डेटा + 8 बिट दशमलव आरएच डेटा + 8 बिट इंटीग्रल टी डेटा + 8 बिट दशमलव टी डेटा + 8 बिट चेकसम।
एक प्राप्त डेटा के साथ चेकसम मान की जांच करके डेटा को सत्यापित कर सकता है । ऐसा इसलिए किया जा सकता है, क्योंकि यदि सब कुछ उचित है और यदि सेंसर ने उचित डेटा संचारित किया है, तो चेकसम "8bit इंटीग्रल आरएच डेटा + 8 बिट दशमलव RHdata + 8 बिट इंटीग्रल टी डेटा + 8 बिट दशमलव टी डेटा" का योग होना चाहिए ।
आवश्यक घटक
इस परियोजना के लिए, निम्न बातों की आवश्यकता है -
- PIC माइक्रोकंट्रोलर (8 बिट) प्रोग्रामिंग सेटअप।
- ब्रेड बोर्ड
- 5V 500mA बिजली की आपूर्ति इकाई।
- 4.7k रोकनेवाला 2 पीसी
- 1k रोकनेवाला
- PIC16F877A
- 20mHz क्रिस्टल
- 33pF संधारित्र 2 पीसी
- 16x2 वर्ण एलसीडी
- DHT11 सेंसर
- जम्पर के तार
ढांच के रूप में
PIC16F877A के साथ DHT11 के इंटरफेस के लिए सर्किट आरेख नीचे दिखाया गया है।
हमने DHT11 से मापने वाले तापमान और आर्द्रता के मूल्यों को प्रदर्शित करने के लिए 16x2 एलसीडी का उपयोग किया है। एलसीडी को 4-वायर मोड में इंटरफेयर किया जाता है और सेंसर और एलसीडी दोनों एक 5 वी बाहरी बिजली आपूर्ति द्वारा संचालित होते हैं। मैंने सभी आवश्यक कनेक्शन बनाने के लिए ब्रेडबोर्ड का उपयोग किया है और बाहरी 5 वी एडेप्टर का उपयोग किया है। आप 5V के साथ अपने बोर्ड को पावर देने के लिए इस ब्रेडबोर्ड बिजली आपूर्ति बोर्ड का उपयोग कर सकते हैं।
एक बार सर्किट तैयार हो जाने के बाद, हमें बस इतना करना है कि इस पेज के नीचे दिए गए कोड को अपलोड करें और हम नीचे दिखाए गए तापमान और आर्द्रता को पढ़ना शुरू कर सकते हैं। यदि आप जानना चाहते हैं कि कोड कैसे लिखा गया था और यह कैसे काम करता है आगे पढ़ें। इस परियोजना के पूर्ण कार्य को आप इस पृष्ठ के नीचे दिए गए वीडियो में भी पा सकते हैं ।
DHT11 PIC MPLABX कोड स्पष्टीकरण के साथ
कोड MPLABX IDE का उपयोग करते हुए लिखा गया था और XC8 कंपाइलर का उपयोग करके संकलित किया गया था, जो दोनों माइक्रोचिप द्वारा प्रदान किया गया था और डाउनलोड और उपयोग करने के लिए स्वतंत्र है। कृपया प्रोग्रामिंग की मूल बातें समझने के लिए बुनियादी ट्यूटोरियल देखें, केवल DHT11 सेंसर के साथ संचार के लिए आवश्यक तीन महत्वपूर्ण कार्यों पर चर्चा की गई है। कार्य हैं -
शून्य dht11_init (); शून्य find_response (); char read_dht11 ();
पहला फ़ंक्शन dht11 के साथ स्टार्ट सिग्नल के लिए उपयोग किया जाता है । जैसा कि पहले चर्चा की गई है, DHT11 के साथ हर संचार एक स्टार्ट सिग्नल के साथ शुरू होता है, यहां पिन दिशा को माइक्रोकंट्रोलर से आउटपुट के रूप में डेटा पिन को कॉन्फ़िगर करने के लिए सबसे पहले बदल दिया जाता है। तब डेटा लाइन कम खींची जाती है और 18mS की प्रतीक्षा करती रहती है। उसके बाद फिर से लाइन को माइक्रोकंट्रोलर द्वारा उच्च बनाया जाता है और 30us तक प्रतीक्षा करता रहता है। उस प्रतीक्षा समय के बाद, डेटा प्राप्त करने के लिए डेटा पिन माइक्रोकंट्रोलर के इनपुट के रूप में सेट हो जाता है।
void dht11_init () { DHT11_Data_Pin_Direction = 0; // RD0 को आउटपुट DHT11_Data_Pin = 0 के रूप में कॉन्फ़िगर करें ; // RD0 सेंसर __delay_ms (18) को 0 भेजता है ; DHT11_Data_Pin = 1; // RD0 सेंसर को 1 भेजता है __delay_us (30); DHT11_Data_Pin_Direction = 1; // RD0 को इनपुट के रूप में कॉन्फ़िगर करें )
अगले फ़ंक्शन का उपयोग डेटा पिन स्थिति के आधार पर चेक बिट स्थापित करने के लिए किया जाता है। इसका उपयोग DHT11 सेंसर से प्रतिक्रिया का पता लगाने के लिए किया जाता है ।
void find_response () { Check_bit = 0; __delay_us (40); if (DHT11_Data_Pin == 0) { __delay_us (80); if (DHT11_Data_Pin == 1) { Check_bit = 1; } __delay_us (50);} }
अंत में dht11 रीड फंक्शन; यहां डेटा को 8-बिट प्रारूप में पढ़ा जाता है जहां डेटा पिन स्थिति के आधार पर बिट शिफ्ट ऑपरेशन का उपयोग करके डेटा लौटाया जाता है।
char read_dht11 () { char data, for_count; for (for_count = 0; for_count <8; for_count ++) { जबकि (DHT11_Data_Pin); __delay_us (30); if (DHT11_Data_Pin == 0) { डेटा और = ~ (1 << (7 - for_count)); // स्पष्ट बिट (7-बी) } और { डेटा- = (1 << (7 - for_count)); // सेट बिट (7-बी) जबकि (DHT11_Data_Pin); } } डेटा वापस; }
उन्होंने कहा कि इस तरह की घटनाओं को रोकने के लिए सरकार ने कई कदम उठाए हैं।
उसके बाद, सब कुछ मुख्य कार्य में किया जाता है। सबसे पहले, सिस्टम इनिशियलाइज़ेशन किया जाता है जहाँ LCD को इनिशियलाइज़ किया जाता है और LCD pins पोर्ट डायरेक्शन को आउटपुट पर सेट किया जाता है। एप्लिकेशन मुख्य फ़ंक्शन के अंदर चल रहा है
शून्य मुख्य () { system_init (); जबकि (1) { __delay_ms (800); dht11_init (); find_response (); if (Check_bit == 1) { RH_byte_1 = read_dht11 (); RH_byte_2 = read_dht11 (); Temp_byte_1 = read_dht11 (); Temp_byte_2 = read_dht11 (); संक्षेप = read_dht11 (); if (सारांश == ((RH_byte_1 + RH_byte_2 + Temp_byte_1 + Temp_byte_2) & 0XFF)) { आर्द्रता = Temp_byte_1; आरएच = RH_byte_1; lcd_com (0x80); lcd_puts ("टेम्प:"); // lcd_puts (""); lcd_data (48 + ((आर्द्रता / 10)% 10)); lcd_data (48 + (आर्द्रता% 10)); lcd_data (0xDF); lcd_puts ("C"); lcd_com (0xC0); lcd_puts ("आर्द्रता:"); // lcd_puts (""); lcd_data (48 + ((आरएच / 10)% 10)); lcd_data (48 + (आरएच% 10)); lcd_puts ("%"); } और { lcd_puts ("चेकसम त्रुटि"); } } और { clear_screen (); lcd_com (0x80); lcd_puts ("त्रुटि !!!"); lcd_com (0xC0); lcd_puts ("कोई प्रतिक्रिया नहीं।"); } __delay_ms (1000); } }
DHT11 सेंसर के साथ संचार उस समय लूप के अंदर किया जाता है जहां स्टार्ट सिग्नल सेंसर को सबमिट किया जाता है। उसके बाद, find_response फ़ंक्शन ट्रिगर होता है। यदि Check_bit 1 है तो आगे संचार किया जाता है अन्यथा LCD त्रुटि संवाद दिखाएगा।
40bit डेटा के आधार पर, read_dht11 5 बार (5 बार एक्स 8 बिट) कहा जाता है और डेटापत्रक में उपलब्ध कराए गए आंकड़ों प्रारूप के अनुसार डेटा संग्रहीत किया जाता है। चेकसम स्थिति भी चेक किया जाता है और यदि त्रुटियां मिलने पर, यह भी एलसीडी में सूचित करेंगे। अंत में, डेटा 16x2 कैरेक्टर एलसीडी में परिवर्तित और प्रसारित होता है।
इस PIC तापमान और आर्द्रता माप के लिए पूरा कोड यहाँ से डाउनलोड किया जा सकता है। यह भी जांच प्रदर्शन वीडियो नीचे दी गई।
आशा है कि आपने परियोजना को समझा और कुछ उपयोगी बनाने का आनंद लिया। यदि आपके कोई प्रश्न हैं, तो उन्हें नीचे टिप्पणी अनुभाग में छोड़ दें या अन्य तकनीकी प्रश्नों के लिए हमारे मंचों का उपयोग करें।