इस ट्यूटोरियल में हम atmega8 माइक्रोकंट्रोलर के साथ जॉयस्टिक मॉड्यूल को इंटरफेस करने जा रहे हैं । एक खुशी छड़ी संचार के लिए इस्तेमाल एक इनपुट मॉड्यूल है। यह मूल रूप से उपयोगकर्ता मशीन संचार को आसान बनाता है। एक जॉयस्टिक नीचे दिए गए आंकड़े में दिखाया गया है।
जॉयस्टिक मॉड्यूल में दो अक्ष हैं - एक क्षैतिज है और दूसरा ऊर्ध्वाधर है। जॉयस्टिक की प्रत्येक धुरी को एक पोटेंशियोमीटर या पॉट या चर प्रतिरोध में लगाया जाता है। मध्य बिंदुओं को Rx और Ry के रूप में लाया जाता है। ये पिन JOYSTICK के लिए आउटपुट सिग्नल पिन के रूप में चलते हैं। जब छड़ी को क्षैतिज अक्ष के साथ स्थानांतरित किया जाता है, तो आपूर्ति वोल्टेज मौजूद होने के साथ, आरएक्स पिन पर वोल्टेज बदल जाता है।
Rx पर वोल्टेज आगे बढ़ने पर बढ़ जाता है, Rx पिन पर वोल्टेज पीछे जाने पर घट जाती है। इसी तरह, Ry में वोल्टेज ऊपर की ओर बढ़ने पर बढ़ जाती है, जब नीचे की ओर ले जाया जाता है, तो Ry पिन पर वोल्टेज घट जाती है।
तो हमारे पास दो ADC चैनलों पर JOYSTICK की चार दिशाएँ हैं। सामान्य परिस्थितियों में हमारे पास सामान्य परिस्थितियों में प्रत्येक पिन पर 1Volt होता है। जब छड़ी को स्थानांतरित किया जाता है, तो प्रत्येक पिन दिशा के आधार पर उच्च या निम्न हो जाती है। तो x- अक्ष के लिए चार दिशाओं (0V, 5V चैनल 0 पर) के रूप में; Y- अक्ष के लिए (1V, चैनल 1 पर 5V)।
हम नौकरी करने के लिए ATMEGA8 के दो ADC चैनलों का उपयोग करने जा रहे हैं। हम चैनल 0 और चैनल 1 का उपयोग करने जा रहे हैं।
अवयव आवश्यक
हार्डवेयर: ATMEGA8, बिजली की आपूर्ति (5v), AVR-ISP PROGRAMMER, LED (4 टुकड़े), 1000uF संधारित्र, 100nF संधारित्र (5 टुकड़े), 1KΩ रोकनेवाला (6 टुकड़े)।
सॉफ्टवेयर: Atmel स्टूडियो 6.1, progisp या फ़्लैश मैजिक।
सर्किट आरेख और कार्य स्पष्टीकरण
जॉयस्टिक के पार वोल्टेज पूरी तरह से रैखिक नहीं है; यह एक शोर होगा। शोर को छानने के लिए संधारित्र को सर्किट में प्रत्येक प्रतिरोधक के पार रखा जाता है जैसा कि चित्र में दिखाया गया है।
जैसा कि चित्र में दिखाया गया है कि सर्किट में चार एलईडी हैं। प्रत्येक एलईडी जॉयस्टिक के प्रत्येक दिशा का प्रतिनिधित्व करता है। जब छड़ी को एक दिशा में स्थानांतरित किया जाता है, तो संबंधित एलईडी चमकती है।
आगे जाने से पहले हमें ATMEGA8 के ADC के बारे में बात करनी होगी, ATMEGA8 में, हम PORTC के किसी भी चैनल पर एनालॉग इनपुट दे सकते हैं, इससे कोई फर्क नहीं पड़ता कि हम कौन सा चैनल चुनते हैं, सभी समान हैं, हम PORTC के चैनल 0 या PIN0 का चयन करने जा रहे हैं।
ATMEGA8 में, ADC 10 बिट रिज़ॉल्यूशन का है, इसलिए कंट्रोलर Vref / 2 ^ 10 के न्यूनतम बदलाव का पता लगा सकता है, इसलिए यदि संदर्भ वोल्टेज 5V है तो हमें हर 5/2 ^ 10 / 5mV के लिए एक डिजिटल आउटपुट वेतन वृद्धि मिलती है। " । इसलिए इनपुट में प्रत्येक 5mV वेतन वृद्धि के लिए हमारे पास डिजिटल आउटपुट पर एक वेतन वृद्धि होगी।
अब हमें निम्नलिखित शर्तों के आधार पर ADC के रजिस्टर को सेट करने की आवश्यकता है, 1. सबसे पहले हमें ADC में ADC सुविधा को सक्षम करना होगा।
2. यहां एडीसी रूपांतरण के लिए अधिकतम इनपुट वोल्टेज प्राप्त होने जा रहा है + 5 वी। इसलिए हम ADC के अधिकतम मान या संदर्भ को 5V तक सेट कर सकते हैं।
3. नियंत्रक में एक ट्रिगर रूपांतरण सुविधा है, जिसका अर्थ है कि एडीसी रूपांतरण बाहरी ट्रिगर के बाद ही होता है, क्योंकि हम नहीं चाहते हैं कि हमें एडीसी के लिए निरंतर फ्री रनिंग मोड में चलाने के लिए रजिस्टरों को सेट करना होगा।
4. किसी भी एडीसी के लिए, रूपांतरण की आवृत्ति (डिजिटल मूल्य के अनुरूप मूल्य) और डिजिटल आउटपुट की सटीकता व्युत्क्रमानुपाती होती है। इसलिए डिजिटल आउटपुट की बेहतर सटीकता के लिए हमें कम आवृत्ति का चयन करना होगा। सामान्य एडीसी घड़ी के लिए हम अधिकतम मूल्य (2) के लिए एडीसी के पूर्व निर्धारित कर रहे हैं। चूंकि हम 1MHZ की आंतरिक घड़ी का उपयोग कर रहे हैं, ADC की घड़ी (1000000/2) होगी।
ये केवल चार चीजें हैं जिन्हें हमें एडीसी के साथ शुरू करने के लिए जानना आवश्यक है।
उपरोक्त सभी चार विशेषताएं दो रजिस्टरों द्वारा निर्धारित हैं:
RED (ADEN): इस बिट को ATMEGA के ADC फीचर को सक्षम करने के लिए सेट किया जाना है।
BLUE (REFS1, REFS0): इन दो बिट्स का उपयोग संदर्भ वोल्टेज (या अधिकतम इनपुट वोल्टेज जिसे हम देने जा रहे हैं) को सेट करने के लिए किया जाता है। चूंकि हम संदर्भ वोल्टेज 5V रखना चाहते हैं, REFS0 को तालिका द्वारा सेट किया जाना चाहिए।
येल्लो (ADFR): इस बिट को ADC के लिए निरंतर (फ्री रनिंग मोड) चलाने के लिए सेट किया जाना चाहिए।
PINK (MUX0-MUX3): ये चार बिट्स इनपुट चैनल को बताने के लिए हैं। चूँकि हम ADC0 या PIN0 का उपयोग करने जा रहे हैं, हमें तालिका के अनुसार बिट्स सेट करने की आवश्यकता नहीं है।
BROWN (ADPS0-ADPS2): ये तीनों बिट्स ADC के लिए प्रीस्कूलर सेट करने के लिए हैं। चूंकि हम 2 का प्रीस्कूलर उपयोग कर रहे हैं, इसलिए हमें एक बिट सेट करना होगा।
DARK GREEN (ADSC): रूपांतरण शुरू करने के लिए ADC के लिए यह बिट सेट है। यह बिट प्रोग्राम में अक्षम किया जा सकता है जब हमें रूपांतरण को रोकने की आवश्यकता होती है।