- आवश्यक घटक:
- सर्किट आरेख:
- 8051 का उपयोग करके LM35 के साथ तापमान को मापने:
- 16x2 एलसीडी:
- ADC0804 IC:
- LM35 तापमान सेंसर:
- कोड स्पष्टीकरण:
कभी-कभी लोगों को उतार-चढ़ाव के कारण एनालॉग थर्मामीटर से तापमान पढ़ना मुश्किल होता है। इसलिए यहाँ हम 8051 माइक्रोकंट्रोलर का उपयोग करके एक साधारण डिजिटल थर्मामीटर बनाने जा रहे हैं जिसमें LM35 सेंसर का उपयोग तापमान को मापने के लिए किया जाता है। हमने Arduino, NodeMCU, PIC, Raspberry Pi और अन्य माइक्रोकंट्रोलर्स का उपयोग करके डिजिटल थर्मामीटर बनाने के लिए LM35 का भी उपयोग किया है।
यह परियोजना 8051 के साथ ADC0804 के एक उचित अंतराल और 8051 माइक्रोकंट्रोलर के साथ 16 * 2 एलसीडी के रूप में भी काम करेगी।
आवश्यक घटक:
- 8051 विकास बोर्ड
- ADC0804 बोर्ड
- 16 * 2 एलसीडी डिस्प्ले
- LM35 सेंसर
- तनाव नापने का यंत्र
- जम्पर के तार
सर्किट आरेख:
LM35 का उपयोग कर डिजिटल थर्मामीटर सर्किट के लिए सर्किट आरेख नीचे दिया गया है:
8051 का उपयोग करके LM35 के साथ तापमान को मापने:
8051 माइक्रोकंट्रोलर एक 8 बिट माइक्रोकंट्रोलर है जिसमें चिप रैम पर 128 बाइट्स, चिप रॉम पर 4K बाइट्स, दो टाइमर, एक सीरियल पोर्ट और चार 8 बिट पोर्ट हैं। 8052 माइक्रोकंट्रोलर माइक्रोकंट्रोलर का एक विस्तार है। नीचे दी गई तालिका में 8051 परिवार के सदस्यों की तुलना दिखाई गई है।
फ़ीचर |
8051 है |
8052 |
ROM (बाइट्स में) |
4K |
K के |
RAM (बाइट्स) |
128 |
256 |
टाइमर |
२ |
३ |
I / O पिंस |
32 |
32 |
सीरियल पोर्ट |
1 |
1 |
बाधा के स्रोत |
६ |
। |
16x2 एलसीडी:
16 * 2 एलसीडी एम्बेडेड अनुप्रयोगों के लिए एक व्यापक रूप से उपयोग किया जाने वाला डिस्प्ले है। यहाँ पिन और 16 * 2 एलसीडी डिस्प्ले के काम करने के बारे में संक्षिप्त विवरण दिया गया है। एलसीडी के अंदर दो बहुत महत्वपूर्ण रजिस्टर हैं। वे डेटा रजिस्टर और कमांड रजिस्टर हैं। कमांड रजिस्टर का उपयोग कमांड भेजने के लिए किया जाता है जैसे स्पष्ट डिस्प्ले, घर पर कर्सर आदि, डेटा रजिस्टर का उपयोग डेटा भेजने के लिए किया जाता है जिसे 16 * 2 एलसीडी पर प्रदर्शित किया जाना है। नीचे दी गई तालिका 16 * 2 एलसीडी का पिन विवरण दिखाती है।
पिन |
प्रतीक |
मैं / ओ |
विवरण |
1 |
वीएसएस |
- |
भूमि |
२ |
Vdd |
- |
+ 5 वी बिजली की आपूर्ति |
३ |
वी |
- |
कंट्रास्ट को नियंत्रित करने के लिए बिजली की आपूर्ति |
४ |
रुपये |
मैं |
RS = 0 कमांड रजिस्टर के लिए, आरएस = 1 डेटा रजिस्टर के लिए |
५ |
आरडब्ल्यू |
मैं |
लिखने के लिए आर / डब्ल्यू = 0, पढ़ने के लिए आर / डब्ल्यू = 1 |
६ |
इ |
मैं / ओ |
सक्षम |
। |
डी ० |
मैं / ओ |
8-बिट डेटा बस (LSB) |
। |
डी 1 |
मैं / ओ |
8-बिट डेटा बस |
९ |
डी 2 |
मैं / ओ |
8-बिट डेटा बस |
१० |
डी 3 |
मैं / ओ |
8-बिट डेटा बस |
1 1 |
डी 4 |
मैं / ओ |
8-बिट डेटा बस |
१२ |
D5 |
मैं / ओ |
8-बिट डेटा बस |
१३ |
डी 6 |
मैं / ओ |
8-बिट डेटा बस |
१४ |
डी 7 |
मैं / ओ |
8-बिट डेटा बस (MSB) |
१५ |
ए |
- |
बैकलाइट के लिए + 5 वी |
१६ |
क |
- |
भूमि |
नीचे दी गई तालिका में अक्सर एलसीडी कमांड कोड का उपयोग किया गया है।
कोड (हेक्स) |
विवरण |
०१ |
स्पष्ट प्रदर्शन स्क्रीन |
06 |
वृद्धि कर्सर (दाएं बदलाव) |
0 ए |
प्रदर्शन, कर्सर पर |
0 सी |
प्रदर्शन, कर्सर बंद |
0 फ |
प्रदर्शन, कर्सर ब्लिंकिंग |
.० |
1 सेंट लाइन की शुरुआत के लिए कर्सर को बल दें |
C0 |
2 एन डी लाइन की शुरुआत के लिए कर्सर को मजबूर करें |
३। |
2 लाइनें और 5 * 7 मैट्रिक्स |
ADC0804 IC:
ADC0804 आईसी राष्ट्रीय सेमीकंडक्टर से ADC0800 श्रृंखला के परिवार में एक 8 बिट समानांतर एडीसी है। यह +5 वोल्ट के साथ काम करता है और इसका रिज़ॉल्यूशन 8 बिट है। चरण का आकार और विन रेंज Vref / 2 के विभिन्न मूल्यों के लिए भिन्न होता है। नीचे दी गई तालिका Vref / 2 और Vin श्रेणी के बीच के संबंध को दर्शाती है।
Vref / 2 (V) |
विन (V) |
चरण आकार (एमवी) |
खुला हुआ |
0 से 5 |
19.53 है |
2.0 |
0 से 4 |
15.62 है |
1.5 है |
0 से 3 |
11.71 |
1.28 |
0 से 2.56 |
१० |
हमारे मामले में Vref / 2 1.28 वोल्ट से जुड़ा है, इसलिए चरण का आकार 10mV है। ADC0804 के लिए चरण आकार की गणना (2 * Vref / 2) / 256 के रूप में की जाती है।
आउटपुट वोल्टेज की गणना करने के लिए निम्न सूत्र का उपयोग किया जाता है:
Dout = Vin / step size
जहाँ Dout दशमलव में डिजिटल डेटा आउटपुट है, विन = एनालॉग इनपुट वोल्टेज और स्टेप साइज़ (रिज़ॉल्यूशन) सबसे छोटा परिवर्तन है। ADC0804 के बारे में यहाँ और जानें, 8051 के साथ ADC0808 का इंटरफेस भी जाँचें।
LM35 तापमान सेंसर:
LM35 एक तापमान सेंसर है जिसका आउटपुट वोल्टेज रैखिक रूप से सेल्सियस तापमान के समानुपाती होता है। LM35 पहले से ही कैलिब्रेटेड है इसलिए किसी बाहरी अंशांकन की आवश्यकता नहीं है। यह सेल्सियस तापमान के प्रत्येक डिग्री के लिए 10mV का उत्पादन करता है।
LM35 सेंसर तापमान के अनुरूप वोल्टेज पैदा करता है। इस वोल्टेज को ADC0804 द्वारा डिजिटल (0 से 256) में परिवर्तित किया जाता है और इसे 8051 माइक्रोकंट्रोलर को खिलाया जाता है। 8051 माइक्रोकंट्रोलर इस डिजिटल मूल्य को डिग्री सेल्सियस में तापमान में परिवर्तित करता है। फिर इस तापमान को एससीआई रूप में परिवर्तित किया जाता है जो प्रदर्शित करने के लिए उपयुक्त है। यह एससीआई मान 16 * 2 एलसीडी को खिलाया जाता है जो इसकी स्क्रीन पर तापमान प्रदर्शित करता है। निर्दिष्ट अंतराल के बाद इस प्रक्रिया को दोहराया जाता है।
8051 का उपयोग करते हुए LM35 डिजिटल थर्मामीटर के लिए सेटअप छवि नीचे दी गई है :
आप सभी LM35 आधारित डिजिटल थर्मामीटर यहां पा सकते हैं।
कोड स्पष्टीकरण:
LM35 का उपयोग कर इस डिजिटल थर्मामीटर का पूरा सी कार्यक्रम इस परियोजना के अंत में दिया गया है। कोड को छोटे अर्थों में विभाजित किया गया है और नीचे समझाया गया है।
8051 माइक्रोकंट्रोलर के साथ 16 * 2 एलसीडी इंटरफेसिंग के लिए, हमें पिंस को परिभाषित करना होगा, जिस पर 16 * 2 एलसीडी 8051 माइक्रोकंट्रोलर से जुड़ा है। 16 * 2 एलसीडी का RS पिन P2.7 से जुड़ा है, 16 * 2 का RW पिन P2.6 से जुड़ा है और 16 * 2 का E पिन P2.5 से जुड़ा है। डेटा पिन 8051 माइक्रोकंट्रोलर के पोर्ट 0 से जुड़े हैं।
sbit rs = P2 ^ 7; // रजिस्टर सेलेक्ट (RS) पिन का 16 * 2 LCD sbit rw = P2 ^ 6; // पढ़ें / लिखें (RW) पिन 16 * 2 lcd sbit en = P2 ^ 5; // सक्षम (ई) 16 * 2 एलसीडी का पिन
इसी तरह, ADC0804 8051 माइक्रोकंट्रोलर के साथ इंटरफेस करने के लिए, हमें पिन को परिभाषित करना होगा, जिस पर ADC0804 8051 माइक्रोकंट्रोलर से जुड़ा है। ADC0804 का RD पिन P3.0 से जुड़ा हुआ है, ADC0804 का WR पिन P3.1 से जुड़ा है और ADC0804 का INTR पिन P3.2 से जुड़ा है। डेटा पिन 8051 माइक्रोकंट्रोलर के पोर्ट 1 से जुड़े हैं।
sbit rd_adc = P3 ^ 0; // पढ़ें (RD) ADC0804 sbit wr_adc = P3 ^ 1 का पिन; // लिखें (WR) ADC0804 sbit का पिन intr_adc = P3 ^ 2; // InterC0804 का इंटरप्ट (INTR) पिन
आगे हमें कुछ कार्यों को परिभाषित करना होगा जो कार्यक्रम में उपयोग किए जाते हैं। विलंब फ़ंक्शन का उपयोग निर्दिष्ट समय विलंब बनाने के लिए किया जाता है, c mdwrt फ़ंक्शन का उपयोग 16 * 2 एलसीडी डिस्प्ले पर कमांड भेजने के लिए किया जाता है, डेटावार्ट फ़ंक्शन का उपयोग 16 * 2 एलसीडी डिस्प्ले में डेटा भेजने के लिए किया जाता है और AD_ डेटा को तापमान में परिवर्तित करने के लिए Convert_display फ़ंक्शन का उपयोग किया जाता है। और इसे 16 * 2 एलसीडी डिस्प्ले पर प्रदर्शित करने के लिए।
शून्य विलंब (अहस्ताक्षरित int); // देरी शून्य cmdwrt (अहस्ताक्षरित चार) बनाने के लिए कार्य; // 16 * 2 एलसीडी डिस्प्ले शून्य डेटावर्ट (अहस्ताक्षरित चार) को कमांड भेजने के लिए फ़ंक्शन; // 16 * 2 एलसीडी डिस्प्ले शून्य कन्वर्ट_डिसप्ले (अहस्ताक्षरित चार) को डेटा भेजने का कार्य; // ADC मान को तापमान में परिवर्तित करने के लिए फ़ंक्शन और इसे 16 * 2 एलसीडी डिस्प्ले पर प्रदर्शित करें
कोड के नीचे के भाग में, हम 16 * 2 एलसीडी को कमांड भेज रहे हैं । स्पष्ट डिस्प्ले, इंक्रीमेंट कर्सर जैसे कमांड्स, कर्सर को 1 सेंट लाइन की शुरुआत के लिए मजबूर करते हैं, कुछ निर्दिष्ट समय देरी के बाद एक-एक करके 16 * 2 एलसीडी डिस्प्ले पर भेजे जाते हैं।
के लिए (i = 0; i <5; i ++) // 16 को कमांड भेजें * 2 एलसीडी एक समय में एक कमांड प्रदर्शित करें {cmdwrt (cmd); // फ़ंक्शन कॉल को कमांड भेजने के लिए 16 * 2 एलसीडी डिस्प्ले देरी (1); }
कोड के इस भाग में, हम 16 * 2 एलसीडी पर डेटा भेज रहे हैं । 16 * 2 एलसीडी डिस्प्ले पर प्रदर्शित होने वाले डेटा को कुछ निर्दिष्ट समय देरी के बाद एक-एक करके प्रदर्शित करने के लिए भेजा जाता है।
के लिए (i = 0; i <12; i ++) // 16 डेटा भेजें * 2 एलसीडी एक समय में एक चरित्र को प्रदर्शित करते हैं {datawrt (data1); // फ़ंक्शन कॉल डेटा भेजने के लिए 16 * 2 एलसीडी डिस्प्ले देरी (1); } कोड के इस भाग में हम LM35 सेंसर द्वारा निर्मित एनालॉग वोल्टेज को डिजिटल डेटा में परिवर्तित कर रहे हैं और फिर इसे तापमान में परिवर्तित किया जाता है और 16 * 2 एलसीडी डिस्प्ले पर प्रदर्शित किया जाता है। रूपांतरण शुरू करने के लिए ADC0804 के लिए हमें ADC0804 के WR पिन पर एक उच्च पल्स को कम भेजना होगा, फिर हमें रूपांतरण के अंत की प्रतीक्षा करनी होगी। रूपांतरण के अंत में INTR कम हो जाता है। एक बार INTR कम हो जाने के बाद, RD को 8051 माइक्रोकंट्रोलर के 0 पोर्ट करने के लिए डिजिटल डेटा को कॉपी करने के लिए कम किया जाता है। एक निर्दिष्ट समय देरी के बाद, अगला चक्र शुरू होता है। इस प्रक्रिया को हमेशा के लिए दोहराया जाता है।
जबकि (1) // हमेशा के लिए {wr_adc = 0; // WR पिन देरी (1) पर उच्च पल्स को कम भेजें; wr_adc = 1; जबकि (intr_adc == 1); // रूपांतरण की समाप्ति के लिए प्रतीक्षा करें rd_adc = 0; // ADC0804 मान = P1 से डेटा पढ़ने के लिए RD = 0 करें; // कॉपी एडीसी डेटा Convert_display (मूल्य); // फ़ंक्शन कॉल एडीसी डेटा को तापमान में बदलने और इसे 16 * 2 एलसीडी डिस्प्ले देरी (1000) पर प्रदर्शित करने के लिए; // हर चक्र के बीच अंतराल rd_adc = 1; // अगले चक्र के लिए RD = 1 बनायें}
कोड के नीचे के भाग में, हम 16 * 2 एलसीडी डिस्प्ले पर कमांड भेज रहे हैं। कमांड को 8051 माइक्रोकंट्रोलर के पोर्ट 0 पर कॉपी किया जाता है। RS को कमांड लिखने के लिए कम किया जाता है। राइट ऑपरेशन के लिए आरडब्ल्यू को कम किया जाता है। कमांड राइट ऑपरेशन शुरू करने के लिए हाई (लो) पल्स इनेबल (E) पिन पर लगाया जाता है।
शून्य cmdwrt (अहस्ताक्षरित चार x) {P0 = x; // पोर्ट 0 पर कमांड भेजें, जिस पर 16 * 2 एलसीडी जुड़ा हुआ है rs = 0; // कमांड rw = 0 के लिए RS = 0 करें; // लिखने के लिए आरडब्ल्यू = 0 करें ऑपरेशन एन = 1; // कमांड राइट ऑपरेशन देरी (1) शुरू करने के लिए इनेबल (ई) पिन पर कम करने के लिए एक उच्च भेजें; एन = 0; }
कोड के इस भाग में, हम 16 * 2 एलसीडी डिस्प्ले पर डेटा भेज रहे हैं। डेटा को 8051 माइक्रोकंट्रोलर के पोर्ट 0 पर कॉपी किया जाता है। RS को कमांड लिखने के लिए उच्च बनाया जाता है। राइट ऑपरेशन के लिए आरडब्ल्यू को कम किया जाता है। डेटा राइट ऑपरेशन शुरू करने के लिए सक्षम (ई) पिन पर उच्च से निम्न पल्स लागू किया जाता है।
शून्य डेटावार्ट (अहस्ताक्षरित चार y) {P0 = y; // पोर्ट 0 पर डेटा भेजें, जिस पर 16 * 2 एलसीडी जुड़ा हुआ है rs = 1; // कमांड rw = 0 के लिए RS = 1 बनाएं; // लिखने के लिए RW = 0 लिखिए en = 1; // डाटावाइट ऑपरेशन देरी (1) शुरू करने के लिए इनेबल (ई) पिन पर कम पल्स के लिए एक उच्च भेजें; एन = 0; }
कोड के इस भाग में, हम डिजिटल डेटा को तापमान में परिवर्तित कर रहे हैं और इसे 16 * 2 एलसीडी डिस्प्ले पर प्रदर्शित कर रहे हैं।
शून्य Convert_display (अहस्ताक्षरित चार मूल्य) {अहस्ताक्षरित चार X1, x2, x3; cmdwrt (0xc6); // कमांड को कर्सर को 16 * 2 एलसीडी X1 = (मान / 10) पर 2 पंक्ति की 6 वीं स्थिति में सेट करने के लिए; // मान को 10 से विभाजित करें और चर X1 X1 X1 = X1 + (0x30) में स्टोर करें; // 0x30 x2 = मान% 10 जोड़कर चर X1 को ascii में बदलें; // मूल्य को 10 से विभाजित करें और चर x2 x2 = x2 + (0x30) में शेष स्टोर करें; // 0x30 x3 = 0xDF जोड़कर वेरिएबल x2 को ascii में बदलें; // ascii मूल्य की डिग्री (°) प्रतीक डेटाावर्ट (X1); // प्रदर्शन तापमान 16 * 2 एलसीडी डिस्प्ले डेटावर्ट (x2) पर; डेटावर्ट (x3); डेटावर्ट ('सी'); }
इसके अलावा, विभिन्न माइक्रोकंट्रोलर के साथ LM35 का उपयोग कर अन्य थर्मामीटर की जाँच करें:
- Arduino और LM35 का उपयोग कर डिजिटल थर्मामीटर
- LM35 और AVR माइक्रोकंट्रोलर का उपयोग करके तापमान मापन
- रास्पबेरी पाई के साथ कमरे का तापमान माप