- आवश्यक घटक और हार्डवेयर सेटअप
- Nuvoton N76E003 सर्किट आरेख को एनालॉग वोल्टेज पढ़ें
- GP76 और N76E003 में एनालॉग पिन के बारे में जानकारी
- N76E003 में एडीसी परिधीय के बारे में जानकारी
- ADC के लिए प्रोग्रामिंग N76E003
- कोड और आउटपुट चमकती
एनालॉग टू डिजिटल कनवर्टर (एडीसी) एक माइक्रोकंट्रोलर पर सबसे अधिक इस्तेमाल किया जाने वाला हार्डवेयर फीचर है। यह एनालॉग वोल्टेज में लेता है और इसे डिजिटल मूल्य में परिवर्तित करता है। चूंकि माइक्रोकंट्रोलर डिजिटल डिवाइस हैं और बाइनरी अंक 1 और 0 के साथ काम करते हैं, इसलिए यह सीधे एनालॉग डेटा को प्रोसेस नहीं कर सकता है। इस प्रकार, एक एडीसी का उपयोग एनालॉग वोल्टेज में लेने के लिए किया जाता है और इसे अपने समकक्ष डिजिटल मूल्य में परिवर्तित करता है जिसे एक माइक्रोकंट्रोलर समझ सकता है। यदि आप एनालॉग से डिजिटल कनवर्टर (एडीसी) के बारे में अधिक चाहते हैं, तो आप लिंक किए गए लेख की जांच कर सकते हैं।
इलेक्ट्रॉनिक्स में विभिन्न सेंसर उपलब्ध हैं जो MQ गैस सेंसर, ADXL335 एक्सेलेरोमीटर सेंसर, आदि जैसे एनालॉग आउटपुट प्रदान करते हैं। इस प्रकार, एनालॉग से डिजिटल कनवर्टर का उपयोग करते हुए, उन सेंसर को एक माइक्रोकंट्रोलर यूनिट के साथ हस्तक्षेप किया जा सकता है। आप अन्य माइक्रोकंट्रोलरों के साथ एडीसी का उपयोग करने के लिए नीचे सूचीबद्ध अन्य ट्यूटोरियल भी देख सकते हैं।
- Arduino Uno में ADC का उपयोग कैसे करें?
- 8051 माइक्रोकंट्रोलर के साथ ADC0808 को इंटरफैस करना
- तस्वीर माइक्रोकंट्रोलर के एडीसी मॉड्यूल का उपयोग करना
- रास्पबेरी पाई एडीसी ट्यूटोरियल
- MSP430G2 में ADC का उपयोग कैसे करें - एनालॉग वोल्टेज को मापना
- STM32F103C8 में ADC का उपयोग कैसे करें
इस ट्यूटोरियल में, हम N76E003 माइक्रोकंट्रोलर यूनिट के इनबिल्ट एडीसी परिधीय का उपयोग करेंगे, तो चलिए मूल्यांकन करते हैं कि इस एप्लिकेशन के लिए हमें किस प्रकार के हार्डवेयर सेटअप की आवश्यकता है।
आवश्यक घटक और हार्डवेयर सेटअप
N76E003 पर ADC का उपयोग करने के लिए, हम एक पोटेंशियोमीटर का उपयोग करके एक वोल्टेज विभक्त का उपयोग करेंगे और 0V-5.0V से लेकर वोल्टेज को पढ़ेंगे। वोल्टेज 16x2 चरित्र एलसीडी में प्रदर्शित किया जाएगा, यदि आप एलसीडी और एन 76 ई 003 के साथ नए हैं, तो आप चेक कर सकते हैं कि एलसीडी को नुवोटन एन 76 ई 003 के साथ कैसे इंटरफेस किया जाए। इस प्रकार, इस परियोजना के लिए आवश्यक प्रमुख घटक 16x2 कैरेक्टर एलसीडी है। इस परियोजना के लिए, हम नीचे दिए गए घटकों का उपयोग करेंगे-
- चरित्र एलसीडी 16x2
- 1k रोकनेवाला
- 50k पोटेंशियोमीटर या ट्रिम पॉट
- कुछ बर्ग तार
- कुछ हुकअप तार
- ब्रेड बोर्ड
उल्लेख करने के लिए नहीं, उपरोक्त घटकों के अलावा, हमें N76E003 माइक्रोकंट्रोलर- आधारित विकास बोर्ड के साथ-साथ न्यू-लिंक प्रोग्रामर की भी आवश्यकता है । एक अतिरिक्त 5V बिजली आपूर्ति इकाई की भी आवश्यकता होती है क्योंकि एलसीडी पर्याप्त मात्रा में विद्युत प्रवाह करता है जो प्रोग्रामर प्रदान नहीं कर सकता है।
Nuvoton N76E003 सर्किट आरेख को एनालॉग वोल्टेज पढ़ें
जैसा कि हम योजनाबद्ध में देख सकते हैं, पोर्ट P0 का उपयोग एलसीडी संबंधित कनेक्शन के लिए किया जाता है। चरम बाईं ओर, प्रोग्रामिंग इंटरफ़ेस कनेक्शन दिखाया गया है। पोटेंशियोमीटर एक वोल्टेज विभक्त के रूप में कार्य करता है और जिसे एनालॉग इनपुट 0 (AN0) द्वारा महसूस किया जाता है।
GP76 और N76E003 में एनालॉग पिन के बारे में जानकारी
नीचे दी गई छवि N76E003AT20 माइक्रोकंट्रोलर यूनिट पर उपलब्ध GPIO पिनों को दर्शा रही है। हालाँकि, 20 पिनों में से, एलसीडी से संबंधित कनेक्शन के लिए, पोर्ट P0 (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6, और P0.7) का उपयोग किया जाता है। एनालॉग पिन को लाल रंगों में हाइलाइट किया गया है।
जैसा कि हम देख सकते हैं, पोर्ट P0 में अधिकतम एनालॉग पिन हैं लेकिन उन का उपयोग एलसीडी संबंधित संचार के लिए किया जाता है। इस प्रकार, P3.0 और P1.7 एनालॉग इनपुट पिन AIN1 और AIN0 के रूप में उपलब्ध हैं। चूंकि इस परियोजना के लिए केवल एक एनालॉग पिन की आवश्यकता होती है, P1.7 जो कि एनालॉग इनपुट चैनल 0 है, इस परियोजना के लिए उपयोग किया जाता है।
N76E003 में एडीसी परिधीय के बारे में जानकारी
N76E003 एक 12-बिट SAR ADC प्रदान करता है । यह N76E003 की एक बहुत अच्छी विशेषता है कि इसमें ADC का बहुत अच्छा रिज़ॉल्यूशन है। एकल अंत मोड में एडीसी में 8-चैनल इनपुट हैं । एडीसी की जगह लेना बहुत सरल और सीधा है।
पहला कदम एडीसी चैनल इनपुट का चयन करना है । N76E003 माइक्रोकंट्रोलर में 8-चैनल इनपुट उपलब्ध हैं। एडीसी इनपुट या I / O पिन का चयन करने के बाद, सभी पिन कोड में दिशा के लिए निर्धारित करने के लिए आवश्यक हैं। एनालॉग इनपुट के लिए उपयोग किए जाने वाले सभी पिन माइक्रोकंट्रोलर के इनपुट पिन हैं। इस प्रकार सभी पिनों को इनपुट-ओनली (हाई-इम्पीडेंस) मोड के रूप में सेट करने की आवश्यकता होती है। इन्हें PxM1 और PxM2 रजिस्टर का उपयोग करके सेट किया जा सकता है । ये दो रजिस्टर I / O मोड सेट करते हैं जहां x पोर्ट नंबर के लिए खड़ा है (उदाहरण के लिए, पोर्ट P1.0 रजिस्टर P1M1 और P1M2 होगा, P3.0 के लिए यह P3M1 और P3M2, आदि होगा) कॉन्फ़िगरेशन हो सकता है निचे इमेज में देखे-
ADC का कॉन्फ़िगरेशन दो रजिस्टरों ADCCON0 और ADCCON1 द्वारा किया जाता है । ADCCON0 रजिस्टर विवरण नीचे दिखाया गया है।
ADC चैनल चयन सेट करने के लिए बिट 0 से बिट 3 तक रजिस्टर के पहले 4 बिट्स का उपयोग किया जाता है। चूंकि हम चैनल AIN0 का उपयोग कर रहे हैं, इसलिए इन चार बिट्स के लिए चयन 0000 होगा।
6 और 7 बिट्स महत्वपूर्ण हैं। ADCS एडीसी रूपांतरण शुरू करने के लिए सेट 1 के लिए आवश्यक है और ADCF सफल एडीसी रूपांतरण के बारे में जानकारी प्रदान करेगा। ADC रूपांतरण शुरू करने के लिए फर्मवेयर द्वारा इसे 0 सेट करना होगा। अगला रजिस्टर ADCCON1 है-
ADCCON1 रजिस्टर मुख्य रूप से बाहरी स्रोतों द्वारा ट्रिगर ADC रूपांतरण के लिए उपयोग किया जाता है। हालांकि, सामान्य मतदान संबंधी कार्यों के लिए, ADC सर्किटरी को चालू करने के लिए पहले-बिट ADCEN को 1 सेट करना आवश्यक है।
इसके बाद, ADC चैनल के इनपुट को AINDIDS रजिस्टर में नियंत्रित करने की आवश्यकता है, जहां डिजिटल इनपुट को डिस्कनेक्ट किया जा सकता है।
N चैनल बिट के लिए खड़ा है (उदाहरण के लिए, AIN0 चैनल को AINDIDS रजिस्टर के पहले बिट P17DIDS का उपयोग करके नियंत्रित करने की आवश्यकता होगी)। डिजिटल इनपुट को सक्षम करने की आवश्यकता है, अन्यथा, यह 0 के रूप में पढ़ेगा। ये सभी एडीसी की मूल सेटिंग हैं। अब, ADCF को साफ़ करना और ADCS को ADC रूपांतरण सेट करना शुरू किया जा सकता है। परिवर्तित मूल्य नीचे के रजिस्टरों में उपलब्ध होगा-
तथा
दोनों रजिस्टर 8-बिट्स हैं। जैसा कि ADC 12-बिट डेटा प्रदान करता है, ADCRH को पूर्ण (8-बिट्स) के रूप में उपयोग किया जाता है और ADCRL को आधे (4-बिट्स) के रूप में उपयोग किया जाता है।
ADC के लिए प्रोग्रामिंग N76E003
हर बार एक विशिष्ट मॉड्यूल के लिए कोडिंग एक व्यस्त काम है, इस प्रकार एक सरल अभी तक शक्तिशाली एलसीडी लाइब्रेरी प्रदान की जाती है जो कि 16x2 वर्ण एलसीडी के लिए N76E003 के साथ बहुत उपयोगी होगी। 16x2 एलसीडी लाइब्रेरी हमारे जीथब रिपॉजिटरी में उपलब्ध है, जिसे नीचे दिए गए लिंक से डाउनलोड किया जा सकता है।
Nuvoton N76E003 के लिए 16x2 एलसीडी लाइब्रेरी डाउनलोड करें
कृपया लाइब्रेरी में (क्लोनिंग या डाउनलोड करके) और वांछित एप्लिकेशन या प्रोजेक्ट में 16x2 एलसीडी के आसान एकीकरण के लिए अपने Keil N76E003 प्रोजेक्ट में lcd.c और LCD.h फाइलें शामिल करें । पुस्तकालय निम्नलिखित उपयोगी प्रदर्शन संबंधी कार्य प्रदान करेगा-
- एलसीडी को इनिशियलाइज़ करें।
- एलसीडी को कमांड भेजें।
- एलसीडी पर लिखें।
- एलसीडी (16 वर्ण) में एक स्ट्रिंग रखो।
- हेक्स मान भेजकर वर्ण प्रिंट करें।
- 16 से अधिक वर्णों वाले लंबे संदेशों को स्क्रॉल करें।
- सीधे पूर्णांक संख्याओं को एलसीडी में प्रिंट करें।
एडीसी के लिए कोडिंग सरल है। सेटअप फ़ंक्शन में Enable_ADC_AIN0; AIN0 इनपुट के लिए ADC स्थापित करने के लिए उपयोग किया जाता है । यह फ़ाइल में परिभाषित किया गया है।
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = GET_BIT0 // P17
तो, उपरोक्त लाइन एक इनपुट के रूप में पिन सेट करती है और ADCCON0, ADCCON1 रजिस्टर के साथ-साथ AINDIDS रजिस्टर को भी कॉन्फ़िगर करती है । नीचे फ़ंक्शन ADCRH और ADCRL रजिस्टर से ADC को पढ़ेगा लेकिन 12-बिट रिज़ॉल्यूशन के साथ ।
अहस्ताक्षरित int ADC_read (शून्य) { अहस्ताक्षरित int adc_value = 0x0000; clr_ADCF; set_ADCS; जबकि (ADCF == 0); adc_value = ADCRH; adc_value << = 4; adc_value - = ADCRL; वापसी adc_value; }
बिट को 4 बार छोड़ा गया और फिर डेटा चर में जोड़ा गया। मुख्य फ़ंक्शन में, एडीसी डेटा पढ़ रहा है और सीधे डिस्प्ले पर प्रिंट हो रहा है। हालांकि, वोल्टेज को बिट मान द्वारा विभाजित वोल्टेज के बीच अनुपात या संबंध का उपयोग करके भी परिवर्तित किया जाता है।
एक 12-बिट एडीसी 5.0 वी इनपुट पर 4095 बिट प्रदान करेगा। इस प्रकार 5.0V / 4095 = 0.0012210012210012V विभाजित हो रहा है
तो, बिट परिवर्तन का 1 अंक 0.001V (लगभग) में परिवर्तन के बराबर होगा। यह नीचे दिखाए गए मुख्य फ़ंक्शन में किया जाता है।
शून्य मुख्य (शून्य) { int adc_data; सेट अप(); lcd_com (0x01); जबकि (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("ADC डेटा:"); adc_data = ADC_read (); lcd_print_number (adc_data); वोल्टेज = adc_data * bit_to_voltage_ratio; स्प्रिंटफ (str_voltage, "Volt:% 0.2fV", वोल्टेज); lcd_com (0xC0); lcd_puts (str_voltage); टिमर__डेले 1ms (500); } }
डेटा को बिट वैल्यू से वोल्टेज में परिवर्तित किया जाता है और स्प्रिंटफ फ़ंक्शन का उपयोग करके आउटपुट को स्ट्रिंग में परिवर्तित किया जाता है और एलसीडी पर भेजा जाता है।
कोड और आउटपुट चमकती
कोड 0 चेतावनी और 0 त्रुटियाँ लौटा दी गई और कीइल द्वारा डिफ़ॉल्ट चमकती विधि का उपयोग करके फ्लैश किया गया था, आप नीचे दिए गए फ़्लैश संदेश देख सकते हैं। यदि आप Keil या Nuvoton के लिए नए हैं, तो मूल बातें और कोड को अपलोड करने के तरीके को समझने के लिए Nuvoton माइक्रोकंट्रोलर से शुरुआत करें।
पुनर्निर्माण शुरू: परियोजना: टाइमर पुनर्निर्माण लक्ष्य 'टारगेट 1' STARTUP.A51 को इकट्ठा करते हुए… मुख्य संकलन… lcd.c संकलित करना… Delay.c… संकलन… लिंक करना… प्रोग्राम का आकार: डेटा = 101.3 xdata = 0 कोड = 4162 "। \ ऑब्जेक्ट्स \ टाइमर"… "। \ ऑब्जेक्ट्स" टाइमर से हेक्स फ़ाइल बना रहा है - 0 त्रुटि (ओं), 0 चेतावनी (ओं)। बिल्ड टाइम बीता हुआ: 00:00:02 लोड "G: \\ n76E003 \\ प्रदर्शन \\ ऑब्जेक्ट्स \\ टाइमर" फ्लैश मिटाएँ। फ्लैश लिखें पूरा: 4162 बाइट्स क्रमादेशित। फ्लैश सत्यापित करें: 4162 बाइट्स सत्यापित। फ्लैश लोड 11:56:04 पर समाप्त हुआ
नीचे दी गई छवि डीसी एडॉप्टर का उपयोग करके पावर स्रोत में जुड़े हार्डवेयर को दिखाती है और डिस्प्ले दाईं ओर पोटेंशियोमीटर द्वारा सेट वोल्टेज आउटपुट दिखा रही है।
यदि हम पोटेंशियोमीटर को मोड़ते हैं, तो एडीसी पिन को दिया गया वोल्टेज भी बदल जाएगा और हम एलसीडी पर प्रदर्शित एडीसी मान और एनालॉग वोल्टेज को नोटिस कर सकते हैं। आप इस ट्यूटोरियल के पूर्ण कार्य प्रदर्शन के लिए नीचे दिए गए वीडियो को देख सकते हैं।
आशा है कि आपने लेख का आनंद लिया और कुछ उपयोगी सीखा, यदि आपके कोई प्रश्न हैं, तो उन्हें नीचे टिप्पणी अनुभाग में छोड़ दें, या आप अन्य तकनीकी प्रश्नों को पोस्ट करने के लिए हमारे मंचों का उपयोग कर सकते हैं।