विषयसूची:
- चरण 1: एडीसी क्या है?
- चरण 2: AVR- माइक्रोकंट्रोलर में ADC कैसे काम करता है
- चरण 3: एडीसी रूपांतरण फॉर्मूला
- चरण 4: ATmega8 में ADC को कैसे कॉन्फ़िगर करें?
- चरण 5: एडलर चयन
- चरण 6: ADCSRA चयन
- चरण 7: यदि आप एडीसी मूल्य लेना चाहते हैं तो आपको कुछ काम करने होंगे जो नीचे सूचीबद्ध हैं
- चरण 8: ADC मान सेट करें
- चरण 9: आउटपुट एलईडी पिन कॉन्फ़िगर करें
- चरण 10: एडीसी हार्डवेयर कॉन्फ़िगर करें
- चरण 11: एडीसी सक्षम करें
- चरण 12: डिजिटल रूपांतरण के अनुरूप प्रारंभ करें
- चरण १३: जबकि हमेशा के लिए
- चरण 14: अंत में पूरा कोड is
वीडियो: एवीआर माइक्रोकंट्रोलर में एडीसी का परिचय - शुरुआती के लिए: १४ कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
इस ट्यूटोरियल में आप avr माइक्रोकंट्रोलर में एडीसी सब कुछ जानेंगे
चरण 1: एडीसी क्या है?
एक एडीसी, या एनालॉग टू डिजिटल कन्वर्टर, एक एनालॉग वोल्टेज को एक डिजिटल मान में परिवर्तित करने की अनुमति देता है जिसका उपयोग माइक्रोकंट्रोलर द्वारा किया जा सकता है। एनालॉग सिग्नल के कई स्रोत हैं जिन्हें मापना पसंद हो सकता है। ऐसे एनालॉग सेंसर उपलब्ध हैं जो तापमान, प्रकाश की तीव्रता, दूरी, स्थिति और बल को मापते हैं, बस कुछ का नाम लेने के लिए।
चरण 2: AVR- माइक्रोकंट्रोलर में ADC कैसे काम करता है
एवीआर एडीसी एवीआर माइक्रोकंट्रोलर को एनालॉग वोल्टेज को डिजिटल मानों में परिवर्तित करने की अनुमति देता है जिसमें कुछ बाहरी भाग नहीं होते हैं। ATmega8 में एक 10-बिट क्रमिक सन्निकटन ADC है। ATmega8 में PortC पर 7 चैनल ADC है। एडीसी में एक अलग एनालॉग आपूर्ति वोल्टेज पिन, एवीसीसी है। AVCC VCC से ± 0.3V से अधिक भिन्न नहीं होना चाहिए। वोल्टेज संदर्भ को AREF पिन पर बाहरी रूप से अलग किया जा सकता है। AVCC का उपयोग वोल्टेज संदर्भ के रूप में किया जाता है। एडीसी को लगातार (फ्री-रनिंग मोड) चलाने के लिए या केवल एक रूपांतरण करने के लिए भी सेट किया जा सकता है।
चरण 3: एडीसी रूपांतरण फॉर्मूला
जहां विन चयनित इनपुट पिन पर वोल्टेज है और चयनित वोल्टेज संदर्भ को Vref करता है
चरण 4: ATmega8 में ADC को कैसे कॉन्फ़िगर करें?
ATmega8 में ADC के कार्यान्वयन के लिए निम्नलिखित रजिस्टरों का उपयोग किया जाता है
एडीसी बहुसंकेतक चयन
चरण 5: एडलर चयन
ADC वाम समायोजन परिणाम ADLAR बिट ADC डेटा रजिस्टर में ADC रूपांतरण परिणाम की प्रस्तुति को प्रभावित करता है। परिणाम को समायोजित करने के लिए बाईं ओर ADLAR में एक लिखें। अन्यथा, परिणाम सही समायोजित है
जब एक एडीसी रूपांतरण पूरा हो जाता है, तो परिणाम एडीसीएच और एडीसीएल में मिलता है जब एडीसीएल पढ़ा जाता है, तब तक एडीसी डेटा रजिस्टर अपडेट नहीं किया जाता है जब तक कि एडीसीएच पढ़ा नहीं जाता है। नतीजतन, यदि परिणाम को समायोजित छोड़ दिया जाता है और 8-बिट से अधिक सटीकता की आवश्यकता नहीं होती है, तो यह ADCH को पढ़ने के लिए पर्याप्त है। अन्यथा, ADCL को पहले पढ़ा जाना चाहिए, फिर ADCH को। एनालॉग चैनल चयन बिट्स इन बिट्स के मान का चयन करता है कि कौन से एनालॉग इनपुट एडीसी से जुड़े हैं।
चरण 6: ADCSRA चयन
• बिट 7 - ADEN: ADC सक्षम करें इस बिट को किसी एक पर लिखने से ADC सक्षम हो जाता है। इसे शून्य पर लिखकर, ADC को बंद कर दिया जाता है
• बिट 6 - एडीएससी: एडीसी रूपांतरण शुरू करें एकल रूपांतरण मोड में, प्रत्येक रूपांतरण शुरू करने के लिए इस बिट को एक में लिखें। फ्री रनिंग मोड में, पहला रूपांतरण शुरू करने के लिए इस बिट को एक पर लिखें।
• बिट 5 - एडीएफआर: एडीसी फ्री रनिंग सिलेक्ट जब यह बिट सेट होता है (एक) एडीसी फ्री रनिंग मोड में काम करता है। इस मोड में, एडीसी लगातार डेटा रजिस्टरों का नमूना और अद्यतन करता है। इस बिट (शून्य) को साफ़ करने से फ्री रनिंग मोड समाप्त हो जाएगा।
• बिट 4 - एडीआईएफ: एडीसी इंटरप्ट फ्लैग यह बिट तब सेट होता है जब एडीसी रूपांतरण पूरा हो जाता है और डेटा रजिस्टर अपडेट हो जाते हैं। यदि ADIE बिट और SREG में I-बिट सेट हैं, तो ADC रूपांतरण पूर्ण व्यवधान निष्पादित किया जाता है। ADIF को हार्डवेयर द्वारा क्लियर किया जाता है जब संबंधित इंटरप्ट हैंडलिंग वेक्टर को निष्पादित किया जाता है। वैकल्पिक रूप से, ध्वज को तार्किक लिखकर ADIF को साफ़ किया जाता है।
• बिट 3 - ADIE: ADC इंटरप्ट सक्षम करें जब यह बिट एक को लिखा जाता है और SREG में I-बिट सेट किया जाता है, तो ADC रूपांतरण पूर्ण इंटरप्ट सक्रिय होता है।
• बिट्स 2:0 - ADPS2:0: ADC Prescaler Select Bits डेटाशीट के अनुसार, इस प्रीस्केलर को सेट करने की आवश्यकता है ताकि ADC इनपुट फ़्रीक्वेंसी 50 KHz और 200 KHz के बीच हो। ADC घड़ी ADPS2:0 की मदद से सिस्टम क्लॉक से ली गई है ये बिट्स XTAL फ़्रीक्वेंसी और ADC को इनपुट क्लॉक के बीच विभाजन कारक निर्धारित करते हैं।
चरण 7: यदि आप एडीसी मूल्य लेना चाहते हैं तो आपको कुछ काम करने होंगे जो नीचे सूचीबद्ध हैं
- एडीसी मान सेट करें
- आउटपुट एलईडी पिन कॉन्फ़िगर करें
- एडीसी हार्डवेयर कॉन्फ़िगर करें
- एडीसी सक्षम करें
- डिजिटल रूपांतरण के अनुरूप प्रारंभ करें
- जबकि हमेशा के लिए
यदि ADC मान अधिक है तो मान सेट करें, LED चालू करें ELSE LED बंद करें
चरण 8: ADC मान सेट करें
कोड: uint8_t ADCValue = 128;
चरण 9: आउटपुट एलईडी पिन कॉन्फ़िगर करें
कोड: DDRB|= (1 << PB1);
चरण 10: एडीसी हार्डवेयर कॉन्फ़िगर करें
एडीसी हार्डवेयर कॉन्फ़िगर करें
यह एडीसी के लिए नियंत्रण रजिस्टरों में बिट्स सेट करके किया जाता है। सबसे पहले, आइए एडीसी के लिए प्रीस्कूलर सेट करें। डेटाशीट के अनुसार, इस प्रीस्कूलर को सेट करने की आवश्यकता है ताकि एडीसी इनपुट आवृत्ति 50 किलोहर्ट्ज़ और 200 किलोहर्ट्ज़ के बीच हो। एडीसी घड़ी सिस्टम घड़ी से ली गई है। 1 मेगाहर्ट्ज की सिस्टम आवृत्ति के साथ, 8 के प्रीस्केलर के परिणामस्वरूप 125 किलोहर्ट्ज़ की एडीसी आवृत्ति होगी। एडीसीएसआरए रजिस्टर में एडीपीएस बिट्स द्वारा प्रीस्कूलिंग निर्धारित की जाती है। डेटाशीट के अनुसार, 8 प्रीस्केलर प्राप्त करने के लिए सभी तीन ADPS2: 0 बिट्स को 011 पर सेट किया जाना चाहिए।
कोड: ADCSRA |= (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
अगला, आइए एडीसी संदर्भ वोल्टेज सेट करें। इसे ADMUX रजिस्टर में REFS बिट्स द्वारा नियंत्रित किया जाता है। निम्नलिखित संदर्भ वोल्टेज को AVCC पर सेट करता है।
कोड: ADMUX |= (1 << REFS0);
मल्टीप्लेक्सर के माध्यम से एडीसी में पारित चैनल को सेट करने के लिए, एडीएमयूएक्स रजिस्टर में एमयूएक्स बिट्स को तदनुसार सेट करने की आवश्यकता है। चूँकि हम यहाँ ADC5 का उपयोग कर रहे हैं
कोड: ADMUX&=0xF0; एडीएमयूएक्स|=5;
एडीसी को फ्री-रनिंग मोड में डालने के लिए, एडीसीएसआरए रजिस्टर में उपयुक्त नामित एडीएफआर बिट सेट करें:
कोड: एडीसीएसआरए |= (1 << एडीएफआर);
ADC मान को पढ़ने को सरल बनाने के लिए एक अंतिम सेटिंग परिवर्तन किया जाएगा। हालांकि एडीसी में 10 बिट्स का रिज़ॉल्यूशन होता है, लेकिन अक्सर इतनी जानकारी की आवश्यकता नहीं होती है। यह 10 बिट मान दो 8 बिट रजिस्टरों, ADCH और ADCL में विभाजित है। डिफ़ॉल्ट रूप से, ADC मान के निम्नतम 8 बिट ADCL में पाए जाते हैं, जिनमें से ऊपरी दो ADCH के निम्नतम दो बिट होते हैं। ADMUX रजिस्टर में ADLAR बिट सेट करके, हम ADC मान को संरेखित कर सकते हैं। यह एडीसीएच रजिस्टर में माप के उच्चतम 8 बिट्स रखता है, बाकी एडीसीएल रजिस्टर में। यदि हम ADCH रजिस्टर पढ़ते हैं, तो हमें एक 8 बिट मान मिलता है जो 0 से 255 तक की संख्या के रूप में हमारे 0 से 5 वोल्ट माप का प्रतिनिधित्व करता है। हम मूल रूप से हमारे 10 बिट एडीसी माप को 8 बिट में बदल रहे हैं। ADLAR बिट सेट करने के लिए कोड यहां दिया गया है:
कोड:
ADMUX |= (1 << एडलर); यह इस उदाहरण के लिए एडीसी हार्डवेयर का सेटअप पूरा करता है। एडीसी द्वारा माप लेना शुरू करने से पहले दो और बिट्स सेट करने की आवश्यकता है।
चरण 11: एडीसी सक्षम करें
ADC को सक्षम करने के लिए ADCSRA में ADEN बिट सेट करें:
कोड: ADCSRA |= (1 << ADEN);
चरण 12: डिजिटल रूपांतरण के अनुरूप प्रारंभ करें
एडीसी माप शुरू करने के लिए, एडीसीएसआरए में एडीएससी बिट को सेट करने की आवश्यकता है:
कोड: एडीसीएसआरए |= (1 << एडीएससी);
इस बिंदु पर, एडीसी लगातार एडीसी 5 पर प्रस्तुत वोल्टेज का नमूना लेना शुरू कर देगा। इस बिंदु पर कोड इस तरह दिखेगा:
चरण १३: जबकि हमेशा के लिए
केवल एक चीज जो करना बाकी है वह है एडीसी मूल्य का परीक्षण करना और एलईडी को उच्च / निम्न संकेत प्रदर्शित करने के लिए सेट करना। चूंकि ADCH में ADC रीडिंग का अधिकतम मान 255 है, इसलिए यह निर्धारित करने के लिए th का परीक्षण मान चुना गया था कि वोल्टेज उच्च या निम्न था। FOR लूप में एक साधारण IF/ELSE स्टेटमेंट हमें सही LED को चालू करने की अनुमति देगा:
कोड
अगर (एडीसीएच> एडीसीवैल्यू)
{
PORTB |= (1 << PB0); // एलईडी चालू करें
}
अन्यथा
{
PORTB&= ~(1 << PB0); // एलईडी बंद करें
}
चरण 14: अंत में पूरा कोड is
कोड:
#शामिल
मुख्य अंतर (शून्य)
{
uint8_t एडीसीवैल्यू = 128;
डीडीआरबी |= (1 << PB0); // LED1 को आउटपुट के रूप में सेट करें
ADCSRA |= (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // ADC प्रीस्कूलर को 8 पर सेट करें - // 125KHz नमूना दर 1MHz
ADMUX |= (1 << REFS0); // AVCC के लिए ADC संदर्भ सेट करें
ADMUX |= (1 << एडलर); // आसान 8 बिट पढ़ने की अनुमति देने के लिए एडीसी परिणाम को बाएं समायोजित करें
एडीएमयूएक्स&=0xF0;
एडीएमयूएक्स|=5; // ADC0 का उपयोग करने के लिए MUX मानों को बदलने की आवश्यकता है
एडीसीएसआरए |= (1 << एडीएफआर); // एडीसी को फ्री-रनिंग मोड पर सेट करें
ADCSRA |= (1 << ADEN); // एडीसी सक्षम करें
एडीसीएसआरए |= (1 << एडीएससी); // A2D रूपांतरण प्रारंभ करें जबकि(1) // लूप फॉरएवर
{
अगर (एडीसीएच> एडीसीवैल्यू)
{
PORTB |= (1 << PB0); // LED1 चालू करें
}
अन्यथा
{
PORTE &= ~(1 << PB1); // LED1 बंद करें
}
}
वापसी 0;
}
पहले इस ट्यूटोरियल को प्रकाशित करें यहाँ क्लिक करें
सिफारिश की:
Arduino ISP के रूप में -- AVR में बर्न हेक्स फ़ाइल -- एवीआर में फ्यूज -- प्रोग्रामर के रूप में Arduino: 10 कदम
Arduino ISP के रूप में || AVR में बर्न हेक्स फ़ाइल || एवीआर में फ्यूज || अरुडिनो प्रोग्रामर के रूप में:………………अधिक वीडियो के लिए कृपया मेरे YouTube चैनल को सब्सक्राइब करें……यह लेख आईएसपी के रूप में आर्डिनो के बारे में सब कुछ है। यदि आप हेक्स फ़ाइल अपलोड करना चाहते हैं या यदि आप एवीआर में अपना फ्यूज सेट करना चाहते हैं तो आपको प्रोग्रामर खरीदने की आवश्यकता नहीं है, आप कर सकते हैं
एवीआर माइक्रोकंट्रोलर। अल्ट्रासोनिक दूरी सेंसर। एलसीडी नोकिया 5110 पर एचसी-एसआर04: 4 कदम
एवीआर माइक्रोकंट्रोलर। अल्ट्रासोनिक दूरी सेंसर। एलसीडी नोकिया 5110 पर एचसी-एसआर04: सभी को नमस्कार! इस खंड में मैं दूरी को सेंसर करने के लिए सरल इलेक्ट्रॉनिक उपकरण बनाता हूं और ये पैरामीटर एलसीडी नोकिया 5110 पर प्रदर्शित होते हैं। पैरामीटर आरेख और संख्याओं के रूप में प्रदर्शित होते हैं। डिवाइस माइक्रोकंट्रोलर AVR ATMEG पर आधारित है
एवीआर माइक्रोकंट्रोलर। एक पुश बटन स्विच का उपयोग करके एलईडी को टॉगल करें। पुश बटन डिबगिंग।: 4 कदम
एवीआर माइक्रोकंट्रोलर। एक पुश बटन स्विच का उपयोग करके एलईडी को टॉगल करें। पुश बटन डिबाउंसिंग: इस खंड में, हम सीखेंगे कि एक बटन स्विच से इनपुट के अनुसार तीन एलईडी की स्थिति को टॉगल करने के लिए ATMega328PU के लिए प्रोग्राम C कोड कैसे बनाया जाए। साथ ही, हमने 'स्विच बाउंस' की समस्या का समाधान खोजा है। आमतौर पर, हम
एवीआर माइक्रोकंट्रोलर। पल्स चौड़ाई उतार - चढ़ाव। डीसी मोटर और एलईडी लाइट की तीव्रता का नियंत्रक: ६ कदम
एवीआर माइक्रोकंट्रोलर। पल्स चौड़ाई उतार - चढ़ाव। डीसी मोटर और एलईडी लाइट इंटेंसिटी के नियंत्रक: सभी को नमस्कार! पल्स चौड़ाई मॉड्यूलेशन (पीडब्लूएम) दूरसंचार और बिजली नियंत्रण में एक बहुत ही सामान्य तकनीक है। यह आमतौर पर एक विद्युत उपकरण को खिलाई गई शक्ति को नियंत्रित करने के लिए उपयोग किया जाता है, चाहे वह मोटर, एलईडी, स्पीकर आदि हो। यह मूल रूप से एक मोडू है।
AVR माइक्रोकंट्रोलर फ्यूज बिट्स कॉन्फ़िगरेशन। माइक्रोकंट्रोलर की फ्लैश मेमोरी में एलईडी ब्लिंकिंग प्रोग्राम बनाना और अपलोड करना: 5 कदम
AVR माइक्रोकंट्रोलर फ्यूज बिट्स कॉन्फ़िगरेशन। माइक्रोकंट्रोलर की फ्लैश मेमोरी में एलईडी ब्लिंकिंग प्रोग्राम बनाना और अपलोड करना: इस मामले में हम सी कोड में सरल प्रोग्राम बनाएंगे और इसे माइक्रोकंट्रोलर की मेमोरी में जला देंगे। हम एकीकृत विकास मंच के रूप में एटमेल स्टूडियो का उपयोग करते हुए, अपना स्वयं का कार्यक्रम लिखेंगे और हेक्स फ़ाइल संकलित करेंगे। हम फ्यूज बाय को कॉन्फ़िगर करेंगे