रोटरी एनकोडर कैसे काम करता है और इसे Arduino के साथ इंटरफ़ेस करता है

Rotari Enakodara Kaise Kama Karata Hai Aura Ise Arduino Ke Satha Intarafesa Karata Hai



रोटरी एनकोडर एक महत्वपूर्ण इलेक्ट्रोमैकेनिकल उपकरण है जिसका इलेक्ट्रॉनिक्स के क्षेत्र में विविध उपयोग है। यह लेख रोटरी एनकोडर के प्रकार और कार्यप्रणाली के साथ-साथ Arduino के साथ इसके इंटरफेसिंग के बारे में बताएगा।

रोटरी एनकोडर क्या है

रोटरी एनकोडर एक डिजिटल इनपुट डिवाइस है जो रोटरी नॉब की कोणीय स्थिति को महसूस करता है और माइक्रोकंट्रोलर या किसी अन्य डिवाइस को सिग्नल भेजता है जिससे वे जुड़े हुए हैं। ये बिना रुके 360° घूम सकते हैं। इसे शाफ्ट एनकोडर भी कहा जाता है। इसका उपयोग प्रिंटर, ऑडियो इलेक्ट्रॉनिक्स, मोटर और कंट्रोलर में किया जाता है।









रोटरी एनकोडर के प्रकार

मुख्य रूप से दो प्रकार के रोटरी एनकोडर होते हैं जिनका निर्णय उनके द्वारा उत्पन्न आउटपुट सिग्नल के आधार पर किया जाता है। इन प्रकारों के नाम हैं:



वृद्धिशील रोटरी एनकोडर

इस प्रकार का एनकोडर पल्स के रूप में रोटरी नॉब की क्रांतियों की गणना करता है। जब घुंडी को एक बार घुमाया जाता है, तो एक पल्स उत्पन्न होती है। प्रत्येक पल्स के लिए, काउंटर शाफ्ट की कोणीय स्थिति को इंगित करने के लिए बढ़ता है।





पूर्ण रोटरी एनकोडर

इस प्रकार का एनकोडर शाफ्ट की पूर्ण कोणीय स्थिति देता है, क्योंकि इसमें प्रत्येक शाफ्ट स्थिति के लिए एक अलग कोड होता है, और यह उस कोड के माध्यम से कोण को मापता है। इसे कोणीय स्थिति का आउटपुट देने के लिए किसी काउंटर की आवश्यकता नहीं है। भले ही पूर्ण रोटरी एनकोडर डी-एनर्जेटिक हो, कोणीय स्थिति के लिए संबंधित मान बरकरार रहते हैं। यह एक कम लागत वाला एनकोडर भी है।



रोटरी एनकोडर का कार्य करना

रोटरी एनकोडर में एक डिस्क होती है जिसमें समान दूरी वाले क्षेत्र एक सामान्य पिन सी से जुड़े होते हैं जो ग्राउंडेड होता है। दो अन्य पिन ए और बी संपर्क पिन हैं जो रोटरी नॉब घुमाए जाने पर सी से संपर्क बनाते हैं। जब पिन ए या बी जमीन से जुड़ जाता है तो एक सिग्नल उत्पन्न होता है। आउटपुट पिन से उत्पन्न ये सिग्नल 90° आउट ऑफ़ फ़ेज़ हैं। ऐसा इसलिए है क्योंकि जब नॉब को दक्षिणावर्त घुमाया जाता है तो पिन A जमीन से जुड़ जाता है, और जब नॉब को वामावर्त घुमाया जाता है तो पिन B पहले जमीन से जुड़ जाता है। इसलिए, इन कनेक्शनों के माध्यम से नॉब घूमने की दिशा निर्धारित की जाती है।

यदि की स्थिति बी के बराबर नहीं है , तो घुंडी दक्षिणावर्त घूम गई है।


यदि B की स्थिति A के बराबर है, तो घुंडी वामावर्त घूम गई है।

रोटरी एनकोडर का पिन कॉन्फ़िगरेशन

नीचे दिया गया आरेख रोटरी एनकोडर का एक पिनआउट देता है जो आउटपुट पिन ए और बी दिखाता है, एक रोटरी स्विच जिसे पुश बटन के रूप में इस्तेमाल किया जा सकता है, और बिजली आपूर्ति के लिए पिन दिखाता है।

रोटरी एनकोडर का पिन विवरण

निम्नलिखित सभी रोटरी एनकोडर पिन का विवरण दिया गया है।

आउट बी या सीएलके

यह पिन यह आउटपुट देता है कि नॉब या रोटरी एनकोडर कितनी बार घुमाया गया है। हर बार जब घुंडी घुमाई जाती है, तो सीएलके उच्च और निम्न का एक चक्र पूरा करता है। इसे एक रोटेशन के रूप में गिना जाता है।

आउट ए या डीटी

यह रोटरी एनकोडर का दूसरा आउटपुट पिन है जो रोटेशन की दिशा निर्धारित करता है। यह सीएलके सिग्नल से 90° पीछे है। इसलिए, यदि इसकी स्थिति सीएलके की स्थिति के बराबर नहीं है तो घूर्णन की दिशा दक्षिणावर्त है, अन्यथा, वामावर्त है।

बदलना

स्विच पिन का उपयोग यह जांचने के लिए किया जाता है कि पुश बटन दबाया गया है या नहीं।

वी.सी.सी

यह पिन 5V सप्लाई से जुड़ा है

जी.एन.डी

यह पिन जमीन से जुड़ा होता है

Arduino के साथ रोटरी एनकोडर को इंटरफ़ेस करना

रोटरी एनकोडर में पाँच पिन होते हैं। रोटरी एनकोडर का VCC और GND Arduino से जुड़े हुए हैं। शेष पिन CLK, DT, और SW Arduino के डिजिटल इनपुट पिन से जुड़े हैं।

रोटरी एनकोडर के लिए Arduino कोड

// रोटरी एनकोडर इनपुट
#सीएलके_पिन 2 को परिभाषित करें
#डीटी_पिन 3 को परिभाषित करें
#SW_PIN 4 को परिभाषित करें
पूर्णांक काउंटर = 0 ;
int currentCLKSate;
पूर्णांक अंतिमCLKState;
स्ट्रिंग धारा दिशा = '' ;
अहस्ताक्षरित लंबे समय तक चलने वाला बटनप्रेसटाइम = 0 ;
व्यर्थ व्यवस्था ( ) {
// एनकोडर पिन सेट करें जैसा आदानों
    पिनमोड ( सीएलके_पिन, इनपुट ) ;
    पिनमोड ( डीटी_पिन, इनपुट ) ;
    पिनमोड ( SW_PIN, INPUT_PULLUP ) ;
// सेटअप सीरियल मॉनिटर
सीरियल.शुरू ( 9600 ) ;
// सीएलके की प्रारंभिक स्थिति पढ़ें
अंतिमसीएलकेस्टेट = डिजिटलरीड ( सीएलके_पिन ) ;
}
शून्य पाश ( ) {
// सीएलके की वर्तमान स्थिति पढ़ें
वर्तमानसीएलकेस्टेट = डिजिटलरीड ( सीएलके_पिन ) ;
// यदि अंतिम और सीएलके की वर्तमान स्थिति भिन्न है, तब एक नाड़ी उत्पन्न हुई
// केवल प्रतिक्रिया दें 1 दोहरी गिनती से बचने के लिए राज्य परिवर्तन
अगर ( वर्तमानसीएलकेस्टेट ! = अंतिमCLKState && वर्तमानसीएलकेस्टेट == 1 ) {
// यदि डीटी स्थिति सीएलके स्थिति से भिन्न है, तब
// एनकोडर वामावर्त घूम रहा है, इसलिए कमी
अगर ( डिजिटल पढ़ें ( डीटी_पिन ) ! = वर्तमानसीएलकेस्टेट ) {
विरोध करना--;
वर्तमानदिशा = 'सीसीडब्ल्यू' ;
} अन्य {
// एनकोडर दक्षिणावर्त घूम रहा है, इसलिए वृद्धि
काउंटर++;
वर्तमानदिशा = 'सीडब्ल्यू' ;
}
सीरियल.प्रिंट ( 'रोटेशन दिशा:' ) ;
सीरियल.प्रिंट ( वर्तमानदिशा ) ;
सीरियल.प्रिंट ( ' | काउंटर वैल्यू: ' ) ;
सीरियल.प्रिंटएलएन ( विरोध करना ) ;
}
// याद करो अंतिम सीएलके राज्य
अंतिमसीएलकेस्टेट = वर्तमानसीएलकेस्टेट;
// बटन स्थिति पढ़ें
int बटनस्टेट = डिजिटलरीड ( SW_पिन ) ;
// यदि हमें कम सिग्नल का पता चलता है, तो बटन दबाया जाता है
अगर ( बटनस्टेट == कम ) {
// यदि 50ms बीत चुके हैं अंतिम कम पल्स, इसका मतलब है कि
// बटन दबाया गया, छोड़ा गया और दोबारा दबाया गया
अगर ( मिली सेकंड ( ) - लास्टबटनप्रेसटाइम > पचास ) {
सीरियल.प्रिंटएलएन ( 'बटन दबाया गया!' ) ;
}
// याद करो अंतिम बटन दबाने की घटना समय
लास्टबटनप्रेसटाइम = मिलिस ( ) ;
}
// रखना में करने में थोड़ी देरी मदद पढ़ने की निंदा करें
देरी ( 1 ) ;
}


ऊपर दिए गए कोड में, लूप() फ़ंक्शन में सीएलके पिन की स्थिति की जांच की जाती है। यदि यह अपनी पिछली स्थिति के बराबर नहीं है, तो यह दर्शाता है कि रोटरी घुंडी घूम गई है। अब, नॉब घूमने की दिशा की जांच करने के लिए, सीएलके की वर्तमान स्थिति की तुलना डीटी की स्थिति से की जाती है। यदि दोनों अवस्थाएँ असमान हैं, तो यह दर्शाता है कि घुंडी दक्षिणावर्त घूम गई है और रोटरी घुंडी की स्थिति दिखाने के लिए इसके मूल्य में विपरीत वृद्धि होती है। विपरीत स्थिति में, काउंटर में कमी आती है।

निष्कर्ष

रोटरी एनकोडर उन्नत स्थिति सेंसर हैं जो लगातार घूम सकते हैं। वे दो प्रकारों में उपलब्ध हैं: वृद्धिशील और निरपेक्ष। रोटरी एनकोडर घुंडी के घूमने के कारण उत्पन्न दालों की गिनती करके काम करता है। दैनिक जीवन के इलेक्ट्रॉनिक्स से लेकर औद्योगिक स्वचालन तक इसके विविध अनुप्रयोग हैं।