इस ट्यूटोरियल में हम ATMEGA8 माइक्रोकंट्रोलर के साथ फ्लेक्स सेंसर को इंटरफेस करने जा रहे हैं । ATMEGA8 में, हम इस काम को करने के लिए 10bit ADC (एनालॉग से डिजिटल रूपांतरण) सुविधा का उपयोग करने जा रहे हैं। अब ATMEGA में ADC + 5V से अधिक इनपुट नहीं ले सकता है।
फ्लेक्स सेंसर क्या है?
एक FLEX सेंसर एक ट्रांसड्यूसर जो अपने प्रतिरोध बदल जाता है जब अपने आकार को बदल दिया जाता है। इसे नीचे दिए गए आंकड़े में दिखाया गया है।
इस सेंसर का उपयोग रैखिकता में परिवर्तन को महसूस करने के लिए किया जाता है। तो जब फ्लेक्स सेंसर मुड़ा हुआ होता है तो प्रतिरोध काफी तेज होता है। यह नीचे दिए गए आंकड़े में दिखाया गया है।
अब वोल्टेज में परिवर्तन के प्रतिरोध में इस परिवर्तन को परिवर्तित करने के लिए, हम एक वोल्टेज विभक्त सर्किट का उपयोग करने जा रहे हैं । इस प्रतिरोधक नेटवर्क में हमारे पास एक निरंतर प्रतिरोध और अन्य चर प्रतिरोध है। जैसा कि नीचे दिए गए आंकड़े में दिखाया गया है, आर 1 यहां एक निरंतर प्रतिरोध है और आर 2 फ्लेक्स सेंसर है जो प्रतिरोध के रूप में कार्य करता है। शाखा का मध्यबिंदु मापन के लिए लिया जाता है। जब प्रतिरोध R2 बदल जाता है, तो इसके साथ Vout बदल जाता है। तो इसके साथ हमारे पास एक वोल्टेज है जो रैखिकता के साथ बदलता है।
अब यहां ध्यान देने योग्य बात यह है कि ADC रूपांतरण के लिए नियंत्रक द्वारा लिया गया इनपुट 50µAmp जितना कम है। प्रतिरोध आधारित वोल्टेज विभक्त का यह लोडिंग प्रभाव महत्वपूर्ण है क्योंकि वाउट ऑफ वोल्टेज डिवाइडर से वर्तमान में त्रुटि प्रतिशत बढ़ जाता है, अब हमें लोडिंग प्रभाव के बारे में चिंता करने की आवश्यकता नहीं है।
हम दो प्रतिरोधक ले जा रहे हैं और एक विभक्त सर्किट बनाते हैं ताकि 25Volts Vin के लिए, हमें 5Volt Vout मिले। इसलिए हम सभी को वास्तविक इनपुट वोल्टेज प्राप्त करने के लिए कार्यक्रम में "5" के साथ Vout मान को गुणा करना होगा।
अवयव आवश्यक
हार्डवेयर: ATMEGA8, बिजली की आपूर्ति (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), 100uF संधारित्र, 100nF संधारित्र (5 टुकड़े), 100KΩ रोकनेवाला।
सॉफ्टवेयर: Atmel स्टूडियो 6.1, progisp या फ़्लैश जादू।
सर्किट आरेख और कार्य स्पष्टीकरण
ATMEGA8 के सर्किट पोर्ट में डेटा पोर्ट एलसीडी से जुड़ा है। 16x2 एलसीडी में बैक लाइट होने पर सभी में 16 पिन होते हैं, अगर बैक लाइट नहीं है तो 14 पिन होंगे। एक बिजली या वापस प्रकाश पिन छोड़ सकते हैं। अब 14 पिनों में 8 डेटा पिन (7-14 या D0-D7), 2 पावर सप्लाई पिन (1 & 2 या VSS & VDD या gnd & + 5v), कंट्रास्ट कंट्रोल के लिए 3 rd पिन (VEE- नियंत्रण हैं कि पात्रों को कितना मोटा होना चाहिए दिखाया गया है) और 3 नियंत्रण पिन (आरएस और आरडब्ल्यू और ई)।
सर्किट में, आप देख सकते हैं कि मैंने केवल दो नियंत्रण पिन लिए हैं। कंट्रास्ट बिट और READ / WRITE का उपयोग अक्सर नहीं किया जाता है, ताकि उन्हें जमीन पर छोटा किया जा सके। यह एलसीडी को कंट्रास्ट और रीड मोड में डालता है। हमें केवल वर्ण और डेटा भेजने के लिए सक्षम और आरएस पिन को नियंत्रित करने की आवश्यकता है।
ATmega8 के साथ एलसीडी कनेक्शन इस प्रकार हैं:
पिन 1 या वीएसएस से ग्राउंड
PIN2 या VDD या VCC से + 5v पावर
PIN3 या VEE to ग्राउंड (एक शुरुआत के लिए अधिकतम विपरीत देता है)
PIN4 या RS (रजिस्टर चयन) को uC के PB0 पर भेजें
पिन 5 या आरडब्ल्यू (पढ़ें / लिखें) ग्राउंड में (रीड मोड में एलसीडी लगाता है उपयोगकर्ता के लिए संचार को आसान बनाता है)
पिन 6 या E (सक्षम करें) को uC के PB1 में
पिन 7 या U0 से PD0 का D0
पिन 8 या यूसी के पीडी 1 को डी 1
पिन 9 या यूसी के पीडी 2 से डी 2
पिन 10 या यूसी के पीडी 3 से 3 डी
पिन 11 या यू 4 के डी 4 से
पिन 12 या U5 के PD5 के लिए D5
पिन 13 या U6 के PD6 से D6
पिन 14 या यूसी के पीडी 7 को डी 7
सर्किट में आप देख सकते हैं कि हमने 8bit संचार (D0-D7) का उपयोग किया है, लेकिन यह अनिवार्य नहीं है, हम 4bit संचार (D4-D7) का उपयोग कर सकते हैं, लेकिन 4 बिट संचार कार्यक्रम थोड़ा जटिल हो जाता है, इसलिए हम सिर्फ 8 बिट पर चले गए संचार। (इस ट्यूटोरियल की भी जाँच करें: AVR माइक्रोकंट्रोलर के साथ 16x2 एलसीडी इंटरफेसिंग)
इसलिए उपरोक्त तालिका से मात्र अवलोकन से हम एलसीडी के 10 पिनों को नियंत्रक से जोड़ रहे हैं जिसमें 8 पिन डेटा पिन हैं और 2 पिन नियंत्रण के लिए हैं।
R2 के पार वोल्टेज पूरी तरह से रैखिक नहीं है; यह एक शोर होगा। फ़िल्टर कैपेसिटर को विभक्त सर्किट में प्रत्येक प्रतिरोधक पर रखा जाता है जैसा कि चित्र में दिखाया गया है।
यहां 1K पॉट ADC की सटीकता को समायोजित करने के लिए है। अब 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 के लिए यह बिट सेट है। यह बिट प्रोग्राम में अक्षम किया जा सकता है जब हमें रूपांतरण को रोकने की आवश्यकता होती है।
ATmega8 के साथ फ्लेक्स सेंसर का इंटरफेस नीचे दिए गए C कोड में स्टेप बाई स्टेप बताया गया है।