- ADC (डिजिटल रूपांतरण के अनुरूप) क्या है
- AVR माइक्रोकंट्रोलर Atmega16 में ADC
- अवयव आवश्यक
- सर्किट आरेख
- Atmega16 में ADC नियंत्रण रजिस्टर की स्थापना
- ADC के लिए Atmega16 प्रोग्रामिंग
एक सामान्य विशेषता जो लगभग हर एम्बेडेड एप्लिकेशन में उपयोग की जाती है, वह ADC मॉड्यूल (एनालॉग से डिजिटल कनवर्टर) है। ये एनालॉग टू डिजिटल कन्वर्टर्स एनालॉग सेंसर जैसे टेम्परेचर सेंसर, टिल्ट सेंसर, करंट सेंसर, फ्लेक्स सेंसर आदि से वोल्टेज पढ़ सकते हैं। इस ट्यूटोरियल में हम सीखेंगे कि ADC क्या है और Atmega16 में ADC का उपयोग कैसे करें । इस ट्यूटोरियल में Atmega16 के ADC पिन और 8 LED का एक छोटा सा पोटेंशियोमीटर कनेक्ट करना शामिल है। ADC आउटपुट मान के परिवर्तन के संबंध में ADC आउटपुट मान के बदलते वोल्टेज को प्रदर्शित करने के लिए उपयोग किया जाता है।
पहले हमने अन्य microcontrollers में ADC को समझाया:
- ARM7 LPC2148 में ADC का उपयोग कैसे करें - एनालॉग वोल्टेज को मापना
- STM32F103C8 में एडीसी का उपयोग कैसे करें - मापने के अनुरूप वोल्टेज
- MSP430G2 में ADC का उपयोग कैसे करें - एनालॉग वोल्टेज को मापना
- Arduino Uno में ADC का उपयोग कैसे करें?
- MPLAB और XC8 के साथ PIC माइक्रोकंट्रोलर के ADC मॉड्यूल का उपयोग करना
ADC (डिजिटल रूपांतरण के अनुरूप) क्या है
ADC एनालॉग से डिजिटल कनवर्टर के लिए है। इलेक्ट्रॉनिक्स में, एडीसी एक उपकरण है जो एक एनालॉग सिग्नल को वर्तमान और वोल्टेज जैसे डिजिटल कोड (बाइनरी फॉर्म) में परिवर्तित करता है। वास्तविक दुनिया में अधिकांश सिग्नल एनालॉग हैं और कोई भी माइक्रोकंट्रोलर या माइक्रोप्रोसेसर बाइनरी या डिजिटल भाषा (0 या 1) को समझता है। इसलिए, माइक्रोकंट्रोलर्स को एनालॉग संकेतों को समझने के लिए, हमें इन एनालॉग संकेतों को डिजिटल रूप में बदलना होगा। ADC वास्तव में हमारे लिए ऐसा करता है। विभिन्न अनुप्रयोगों के लिए कई प्रकार के एडीसी उपलब्ध हैं। कुछ लोकप्रिय एडीसी फ्लैश, क्रमिक सन्निकटन और सिग्मा-डेल्टा हैं।
ADC का सबसे सस्ता प्रकार सक्सेस-अपीमीशन है और इस ट्यूटोरियल में सक्सेस-एंबेडेशन-ADC का उपयोग किया जाएगा। एडीसी के एक क्रमिक-स्वीकृति प्रकार में, डिजिटल कोड की एक श्रृंखला, प्रत्येक एक अनुरूप एनालॉग स्तर से मेल खाती है, क्रमिक रूप से उत्पन्न होती है। रूपांतरण के तहत एनालॉग सिग्नल के साथ तुलना करने के लिए एक आंतरिक काउंटर का उपयोग किया जाता है। पीढ़ी तब बंद हो जाती है जब एनालॉग स्तर एनालॉग सिग्नल से बस बड़ा हो जाता है। डिजिटल कोड एनालॉग स्तर से मेल खाता है, एनालॉग सिग्नल का वांछित डिजिटल प्रतिनिधित्व है। यह क्रमिक-सन्निकटन पर हमारी छोटी व्याख्या को पूरा करता है।
यदि आप ADC को बहुत गहराई से देखना चाहते हैं तो आप ADC पर हमारे पिछले ट्यूटोरियल का उल्लेख कर सकते हैं। एडीसी आईसी के रूप में उपलब्ध हैं और माइक्रोकंट्रोलर भी आजकल इनबिल्ट एडीसी के साथ आते हैं। इस ट्यूटोरियल में हम Atmega16 के इनबिल्ट एडीसी का उपयोग करेंगे । आइए Atmega16 के इनबिल्ट एडीसी के बारे में चर्चा करते हैं।
AVR माइक्रोकंट्रोलर Atmega16 में ADC
Atmega16 में एक इनबिल्ट 10 बिट और 8-चैनल एडीसी है । 10 बिट उस से मेल खाती है यदि इनपुट वोल्टेज 0-5V है, तो यह 10 बिट वैल्यू में विभाजित किया जाएगा अर्थात असतत एनालॉग मानों के 1024 स्तर (2 10 = 1024)। अब 8-चैनल Atmega16 पर समर्पित 8 ADC पिंस से मेल खाता है जहां प्रत्येक पिन एनालॉग वोल्टेज पढ़ सकता है। पूरा पोर्टा (GPIO33-GPIO40) ADC ऑपरेशन के लिए समर्पित है। डिफ़ॉल्ट रूप से, PORTA पिन सामान्य IO पिन होते हैं, इसका मतलब है कि पोर्ट पिन मल्टीप्लेक्स हैं। एडीसी पिन के रूप में इन पिनों का उपयोग करने के लिए हमें एडीसी नियंत्रण के लिए समर्पित कुछ रजिस्टरों को कॉन्फ़िगर करना होगा। यही कारण है कि रजिस्टरों को एडीसी नियंत्रण रजिस्टर के रूप में जाना जाता है। आइए हम इन रजिस्टरों को इनबिल्ट एडीसी को चालू करने के लिए कैसे सेटअप करें, इस पर चर्चा करें।
Atmega16 में एडीसी पिंस
अवयव आवश्यक
- एटमेगा 16 माइक्रोकंट्रोलर आई.सी.
- 16Mhz क्रिस्टल थरथरानवाला
- दो 100nF कैपेसिटर
- दो 22pF कैपेसिटर
- बटन दबाओ
- जम्पर तार
- ब्रेड बोर्ड
- USBASP v2.0
- एलईडी (कोई भी रंग)
सर्किट आरेख
Atmega16 में ADC नियंत्रण रजिस्टर की स्थापना
1. ADMUX रजिस्टर (ADC मल्टीप्लेक्स चयन रजिस्टर) :
ADMUX रजिस्टर ADC चैनल के चयन और संदर्भ वोल्टेज के चयन के लिए है। नीचे दी गई तस्वीर ADMUX रजिस्टर का अवलोकन दर्शाती है। इसका वर्णन नीचे दिया गया है।
- बिट 0-4: चैनल चयन बिट्स।
MUX4 |
MUX3 |
MUX2 |
MUX1 |
MUX0 |
एडीसी चैनल का चयन किया |
० |
० |
० |
० |
० |
ADC0 |
० |
० |
० |
० |
1 |
ADC1 |
० |
० |
० |
1 |
० |
ADC2 |
० |
० |
० |
1 |
1 |
ADC3 |
० |
० |
1 |
० |
० |
ADC4 |
० |
० |
1 |
० |
1 |
ADC5 |
० |
० |
1 |
1 |
० |
ADC6 |
० |
० |
1 |
1 |
1 |
ADC7 |
- बिट -5: इसका उपयोग परिणाम को दाएं या बाएं समायोजित करने के लिए किया जाता है।
ADLAR |
विवरण |
० |
परिणाम को सही समायोजित करें |
1 |
परिणाम समायोजित करें |
- बिट 6-7: उनका उपयोग एडीसी के लिए संदर्भ वोल्टेज का चयन करने के लिए किया जाता है।
REFS1 |
REFS0 |
वोल्टेज संदर्भ चयन |
० |
० |
क्षेत्र, आंतरिक Vref बंद हो गया |
० |
1 |
एवीएफ पिन पर बाहरी संधारित्र के साथ एवीसी |
1 |
० |
सुरक्षित |
1 |
1 |
आंतरिक 2.56 वोल्टेज संदर्भ के साथ बाहरी संधारित्र पर हैं |
अब प्रोग्राम में इन रजिस्टर बिट्स को कॉन्फ़िगर करना शुरू करें, जैसे कि हम आंतरिक एडीसी को पढ़ते हैं और सभी पिनों के आउटपुट के लिए।
ADC के लिए Atmega16 प्रोग्रामिंग
पूरा कार्यक्रम नीचे दिया गया है। Atmega16 में JTAG और Atmel स्टूडियो का उपयोग करके कार्यक्रम को जलाएं और ADC मान को अलग करने के लिए पोटेंशियोमीटर को घुमाएं। यहां, कोड को लाइन द्वारा लाइन समझाया गया है।
ADC परिवर्तित मान को पढ़ने के लिए एक फ़ंक्शन बनाने के साथ प्रारंभ करें। फिर ADC_read फ़ंक्शन में चैनल मान को 'chnl' के रूप में पास करें।
अहस्ताक्षरित int ADC_read (अहस्ताक्षरित चार chnl)
चैनल मान 0 से 7 के बीच होना चाहिए क्योंकि हमारे पास केवल 8 ADC चैनल हैं।
chnl = chnl & 0b00000111;
ADMUX रजिस्टर में '40' यानी '01000000' लिखकर हमने PORTA0 को ADC0 के रूप में चुना जहाँ एनालॉग इनपुट डिजिटल रूपांतरण के लिए जोड़ा जाएगा।
ADMUX = 0x40;
अब इस चरण में ADC रूपांतरण प्रक्रिया शामिल है, जहाँ ADCSRA रजिस्टर में ONE से ADSC बिट लिखकर हम रूपांतरण शुरू करते हैं। उसके बाद, रूपांतरण पूर्ण होने पर मान वापस करने के लिए ADIF बिट की प्रतीक्षा करें। हम ADCSRA रजिस्टर में ADIF बिट में '1' लिखकर रूपांतरण रोकते हैं। जब रूपांतरण पूरा हो जाता है तो ADC मान लौटाएं।
ADCSRA - = (1 <
यहां आंतरिक ADC संदर्भ वोल्टेज को REFS0 बिट सेट करके चुना गया है। उसके बाद एडीसी को सक्षम करें और प्रीस्कूलर को 128 के रूप में चुनें।
ADMUX = (1 <
अब ADC मान को सहेजें और PORTC को भेजें। PORTC में, 8 एलइडी जुड़े हुए हैं जो 8 बिट प्रारूप में डिजिटल आउटपुट दिखाएगा। हमने जो उदाहरण दिखाया है वह एक 1K पॉट का उपयोग करके 0V से 5V के बीच वोल्टेज को बदलता है।
i = ADC_read (0); PORTC = i;
डिजिटल मल्टीमीटर का उपयोग एडीसी पिन में एनालॉग इनपुट वोल्टेज को प्रदर्शित करने के लिए किया जाता है और 8 एलईडी का उपयोग एडीसी आउटपुट के संबंधित 8 बिट मूल्य को दिखाने के लिए किया जाता है। बस पोटेंशियोमीटर को घुमाएं और मल्टीमीटर के साथ-साथ चमकते एल ई डी पर संबंधित परिणाम देखें।
पूरा कोड और काम करने वाला वीडियो नीचे दिया गया है।