विषयसूची:
वीडियो: सरल रोटरी डिकोडर: 4 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
यह निर्देशयोग्य एक Arduino Uno R3 का उपयोग करके अनुक्रमिक रोटरी एनकोडर को डिकोड करने की एक सरल विधि का वर्णन करता है।
कॉम्पैक्ट सॉफ़्टवेयर रूटीन का उपयोग संक्रमणों की संख्या की गणना करने, संपर्क उछाल को समाप्त करने और रोटेशन की दिशा निर्धारित करने के लिए किया जाता है। अतिरिक्त घटकों और लुकअप टेबल की आवश्यकता नहीं है।
कोड के इंटरप्ट और नॉन-इंटरप्ट संस्करण प्रदान किए गए हैं।
कोड के इंटरप्ट संस्करण के लिए केवल एक इंटरप्ट पिन की आवश्यकता होती है।
इमेजिस:
- उद्घाटन की तस्वीर असेंबल किए गए एनकोडर को दिखाती है।
- स्क्रीन शॉट इंटरप्ट संस्करण और गिनती के लिए कोड दिखाता है जब एन्कोडर शाफ्ट को दक्षिणावर्त और काउंटर क्लॉकवाइज घुमाया जाता है।
- वीडियो तेजी से घूमने के दौरान गिनती दिखाता है।
चरण 1: सर्किट आरेख
एनकोडर वायरिंग आरेख चित्र 1 में दिखाया गया है।
जम्पर तारों को सीधे एनकोडर पिन में मिलाया जाता है।
यदि गिनती की दिशा उलट दी जाती है तो दो नीले तारों को आपस में बदल दें।
चरण 2: भागों की सूची
निम्नलिखित भाग https://www.aliexpress.com/ से प्राप्त किए गए थे।
- 1 USB केबल के साथ केवल Arduino UNO R3।
- स्विच के साथ 1 केवल अनुक्रमिक रोटरी एन्कोडर (ईसी 11 या समकक्ष)।
- शाफ्ट के अनुरूप 1 केवल घुंडी।
- 3 केवल Arduino पुरुष-से-पुरुष जम्पर तार।
चरण 3: सिद्धांत
अनुक्रमिक रोटरी एनकोडर दो वर्ग-तरंगें उत्पन्न करते हैं जिनमें से प्रत्येक को 90 डिग्री से विस्थापित किया जाता है जैसा कि चित्र 1 में दिखाया गया है।
संपर्क ए और संपर्क बी में तर्क पैटर्न भिन्न होते हैं जब शाफ्ट को दक्षिणावर्त घुमाया जाता है (सीडब्ल्यू) और काउंटर क्लॉकवाइज (सीसीडब्ल्यू) स्थिति 1 से 6 के माध्यम से।
रोटेशन की दिशा निर्धारित करने के सामान्य तरीकों में शामिल हैं:
- हार्डवेयर
- जुड़वां व्यवधान
- पैटर्न लुकअप टेबल
यह प्रोजेक्ट एक सॉफ़्टवेयर पद्धति का उपयोग करता है जिसमें लुकअप टेबल की आवश्यकता नहीं होती है। [1]
दिशा
कॉन्टैक्ट ए और कॉन्टैक्ट बी के आउटपुट पैटर्न को देखने के बजाय कॉन्टैक्ट ए पर ध्यान दें।
यदि हम प्रत्येक संपर्क A संक्रमण के बाद संपर्क B का नमूना लेते हैं तो हम ध्यान दें कि:
- जब एनकोडर को CW घुमाया जाता है, तो संपर्क A और संपर्क B में विपरीत तर्क स्थितियाँ होती हैं
- जब एनकोडर को CCW घुमाया जाता है तो संपर्क A और संपर्क B की तर्क स्थिति समान होती है
वास्तविक कोड:
// ----- संक्रमणों की गणना करें
CurrentStateA = StateContactA (); अगर (CurrentStateA!= LastStateA) { CurrentStateB = digitalRead (ContactB); अगर (CurrentStateA == CurrentStateB) काउंट++; अगर (CurrentStateA!= CurrentStateB) गणना--; LastStateA = CurrentStateA; }
यह विधि निम्नलिखित लाभ प्रदान करती है:
- लुकअप टेबल की आवश्यकता नहीं है
- केवल एक इंटरप्ट लाइन की आवश्यकता है
debounce
सभी यांत्रिक एन्कोडर "संपर्क उछाल" से ग्रस्त हैं।
यदि कोई स्विच संपर्क सफाई से नहीं बनता/टूटता है तो उसकी तर्क स्थिति उच्च से निम्न तक तेजी से दोलन करेगी जब तक कि स्विच संपर्क व्यवस्थित नहीं हो जाता। इसके परिणामस्वरूप झूठी गिनती होती है।
संपर्क उछाल को दबाने की एक विधि प्रत्येक स्विच संपर्क में एक छोटा संधारित्र जोड़ना है। कैपेसिटर और संबंधित पुल-अप रेसिस्टर एक इंटीग्रेटर बनाते हैं जो प्रभावी रूप से उच्च आवृत्तियों को छोटा करता है और स्विच वोल्टेज को इनायत से बढ़ने/गिरने की अनुमति देता है।
इस दृष्टिकोण का नकारात्मक पक्ष यह है कि यदि एन्कोडर शाफ्ट को तेजी से घुमाया जाता है, तो संक्रमण छूट सकता है।
सॉफ्टवेयर डिबगिंग
यह विधि दो काउंटरों (खुले, बंद) का उपयोग करती है जिन्हें शून्य पर सेट किया गया है। [2]
एक बार संपर्क A पर संक्रमण का पता चलने पर:
- लगातार मतदान संपर्क ए.
- जब भी संपर्क A अधिक हो, खुले काउंटर को बढ़ाएँ और बंद काउंटर को रीसेट करें।
- जब भी संपर्क A कम हो, बंद काउंटर को बढ़ाएँ, और खुले काउंटर को रीसेट करें।
- लूप से बाहर निकलें जब काउंटरों में से एक पूर्व निर्धारित गिनती तक पहुंच जाए। हम किसी भी संपर्क उछाल के बाद प्रभावी रूप से स्थिर स्थिति की तलाश कर रहे हैं।
वास्तविक कोड:
// ----- डेब्यू संपर्क ए
जबकि (1) { अगर (डिजिटल रीड (संपर्क ए)) {//----- संपर्क ए खुला बंद है = 0; // खाली विपरीत इंटीग्रेटर ओपन ++; // एकीकृत करें अगर (ओपन> मैक्सकाउंट) हाई रिटर्न; } और {//----- संपर्कए बंद खुला है = 0; // खाली विपरीत इंटीग्रेटर बंद ++; // एकीकृत अगर (बंद> मैक्सकाउंट) कम रिटर्न; } }
संपर्क बी को खारिज करने की कोई आवश्यकता नहीं है क्योंकि संपर्क ए और संपर्क बी संक्रमण मेल नहीं खाते हैं।
गिनती
एक यांत्रिक "डिटेंट" आपकी गिनती को प्रभावी रूप से दोगुना कर देता है क्योंकि क्लिक के बीच दो गणनाएँ दर्ज की जाती हैं (अंजीर 1 देखें)।
जैसा कि नीचे दिखाया गया है, मॉड्यूल 2 अंकगणित का उपयोग करके "डिटेंट्स" की संख्या निर्धारित की जा सकती है।
वास्तविक कोड:
// ----- "डिटेंट्स" की गणना करें
अगर (गणना% 2 == 0) { सीरियल.प्रिंट ("गणना:"); Serial.println (गणना / 2); }
संदर्भ
अधिक जानकारी यहां पाई जा सकती है:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
चरण 4: सॉफ्टवेयर
इस परियोजना के लिए Ardino Uno R3 IDE (एकीकृत विकास वातावरण) के हाल के संस्करण की आवश्यकता है जो https://www.arduino.cc/en/main/software से उपलब्ध है।
निम्नलिखित दो Arduino स्केच में से प्रत्येक को डाउनलोड करें (संलग्न)
- Rotary_encoder_1.ino (मतदान संस्करण)
- Rotary_encoder_2.no (व्यवधान संस्करण)
अपने पसंदीदा संस्करण पर डबल-क्लिक करें और ऑन-स्क्रीन निर्देशों का पालन करें।
आनंद लेना …
मेरे अन्य अनुदेशों को देखने के लिए यहां क्लिक करें।
सिफारिश की:
LabDroid: मोर्स कोड एनकोडर/डिकोडर: 4 कदम
LabDroid: मोर्स कोड एनकोडर/डिकोडर: नोट: इस निर्देश को LabDroid के नवीनतम संस्करण में 1:1 लागू नहीं किया जा सकता है। मैं इसे जल्द ही अपडेट करूंगा। यह प्रोजेक्ट आपको दिखाएगा कि आप LabDroid के साथ क्या कर सकते हैं। चूंकि हैलो वर्ल्ड आम तौर पर टेक्स्ट, लाइट या साउंड के आधार पर बनाया जाता है, इसलिए मैंने LabDr के लिए सोचा
बाइनरी ट्री मोर्स डिकोडर: 7 कदम (चित्रों के साथ)
बाइनरी ट्री मोर्स डिकोडर: ए.आर्टिकल्स {फ़ॉन्ट-साइज़: 110.0%; फोंट की मोटाई: बोल्ड; फ़ॉन्ट-शैली: इटैलिक; पाठ-सजावट: कोई नहीं; बैकग्राउंड-कलर: रेड;} ए.आर्टिकल्स: होवर {बैकग्राउंड-कलर: ब्लैक;} यह इंस्ट्रक्शनल बताता है कि Arduino Uno R3.T का उपयोग करके मोर्स कोड को कैसे डिकोड किया जाए
एक साधारण डीटीएमएफ (टोन) फोन लाइन डिकोडर कैसे बनाएं: 3 कदम
एक साधारण डीटीएमएफ (टोन) फोन लाइन डिकोडर कैसे बनाएं: यह एक साधारण परियोजना है जो आपको मूल रूप से किसी भी फोन लाइन पर डीटीएमएफ संकेतों को डीकोड करने देती है। इस ट्यूटोरियल में, हम डिकोडर MT8870D का उपयोग कर रहे हैं। हम एक प्रीबिल्ट टोन डिकोडर का उपयोग कर रहे हैं क्योंकि, मेरा विश्वास करो, यह कोशिश करने और इसे करने के लिए पीछे की ओर दर्द है
लाइब्रेरी के बिना RC5 रिमोट कंट्रोल प्रोटोकॉल डिकोडर: 4 कदम
RC5 रिमोट कंट्रोल प्रोटोकॉल डिकोडर विदाउट लाइब्रेरी: rc5 को डिकोड करने से पहले पहले हम चर्चा करते हैं कि rc5 कमांड क्या है और इसकी संरचना क्या है। इसलिए मूल रूप से rc5 कमांड का उपयोग रिमोट कंट्रोल में किया जाता है जो कि टीवी, सीडी प्लेयर, d2h, होम थिएटर सिस्टम आदि में उपयोग किया जाता है। इसमें 13 या 14 बिट्स की व्यवस्था होती है
मल्टी-स्पीड एसी मोटर कंट्रोल के लिए आईआर डिकोडर कैसे प्रोग्राम करें: 7 कदम
मल्टी-स्पीड एसी मोटर कंट्रोल के लिए आईआर डिकोडर कैसे प्रोग्राम करें: सिंगल-फेज अल्टरनेटिंग करंट मोटर्स आमतौर पर घरेलू सामानों जैसे कि पंखे में पाए जाते हैं, और सेट स्पीड के लिए कई असतत वाइंडिंग का उपयोग करते समय उनकी गति को आसानी से नियंत्रित किया जा सकता है। इस निर्देशयोग्य में हम एक डिजिटल नियंत्रक का निर्माण करते हैं जो एक