विषयसूची:

XYZ प्वाइंट स्कैनर बचाए गए रोटरी एन्कोडर्स का उपयोग कर: 5 कदम
XYZ प्वाइंट स्कैनर बचाए गए रोटरी एन्कोडर्स का उपयोग कर: 5 कदम

वीडियो: XYZ प्वाइंट स्कैनर बचाए गए रोटरी एन्कोडर्स का उपयोग कर: 5 कदम

वीडियो: XYZ प्वाइंट स्कैनर बचाए गए रोटरी एन्कोडर्स का उपयोग कर: 5 कदम
वीडियो: क्रिमिनल प्रोसिजर आईडेंटिफिकेशन बिल 2022 पर विवाद क्यों बढ़ता जा रहा है ? | Sunil Verma | UPSC CSE 2024, जुलाई
Anonim
XYZ प्वाइंट स्कैनर बचाए गए रोटरी एन्कोडर्स का उपयोग कर रहा है
XYZ प्वाइंट स्कैनर बचाए गए रोटरी एन्कोडर्स का उपयोग कर रहा है

अपने कार्यस्थल से बड़ी संख्या में परित्यक्त रोटरी ऑप्टिकल एन्कोडर प्राप्त करने के बाद, मैंने आखिरकार उनके साथ कुछ मजेदार/उपयोगी करने का फैसला किया।

मैंने हाल ही में अपने घर के लिए एक नया 3D प्रिंटर खरीदा है और 3D स्कैनर से बेहतर इसकी तारीफ और क्या हो सकती है! इस परियोजना ने मुझे आवश्यक भागों के निर्माण के लिए अपने 3डी प्रिंटर को नियोजित करने का सही अवसर भी प्रदान किया।

आपूर्ति

ऑप्टिकल एन्कोडर और संबंधित ऑप्टिकल सेंसर

अरुडिनो यूएनओ

वैकल्पिक प्रोटोटाइप ढाल

स्टील-बार रेल्स

एक 3D प्रिंटर तक पहुंच

चरण 1: ऑप्टिकल एनकोडर

ऑप्टिकल एनकोडर
ऑप्टिकल एनकोडर
ऑप्टिकल एनकोडर
ऑप्टिकल एनकोडर
ऑप्टिकल एनकोडर
ऑप्टिकल एनकोडर

इस परियोजना के लिए लगभग किसी भी रोटरी एन्कोडर का उपयोग किया जा सकता है, जब तक कि यह आपको प्रति मिमी अपेक्षाकृत अधिक संख्या में 'क्लिक' प्रदान करता है। स्पष्ट रूप से विभिन्न एन्कोडर्स को उपयुक्त बढ़ते समाधान की आवश्यकता होगी।

मैंने फोटो-सेंसर के लिए वायरिंग आरेख का पता लगाने के लिए एक निरंतरता मीटर का उपयोग किया।

चरण 2: 3डी प्रिंटेड पार्ट्स

3डी प्रिंटेड पार्ट्स
3डी प्रिंटेड पार्ट्स
3डी प्रिंटेड पार्ट्स
3डी प्रिंटेड पार्ट्स

इन भागों में रोटरी एनकोडर होते हैं और रेल के लिए एक स्लाइड प्रदान करते हैं। क्रॉस रेल को माउंट करने के लिए सिंगल एन्कोडर हाउसिंग में पीछे दो छेद होते हैं। डुअल एनकोडर हाउसिंग केवल दो सिंगल हाउसिंग हैं जो समकोण पर एक साथ जुड़े हुए हैं।

मैंने इन माउंट को फ्यूजन360 पर अपनी पसंद के एनकोडर और रेल के अनुरूप डिजाइन किया है, एन्कोडर के शाफ्ट में गुलेल रबर म्यान का एक छोटा टुकड़ा है, जिससे यह स्टेनलेस स्टील शाफ्ट को बेहतर ढंग से पकड़ने में मदद करता है।

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

चरण 3: वायरिंग आरेख

वायरिंग का नक्शा
वायरिंग का नक्शा

सर्किट बहुत सरल है। ऑप्टो-सेंसर को IR एमिटर डायोड के लिए कुछ करंट की आवश्यकता होती है, फोटो-डायोड के लिए एक ग्राउंड और पुल-अप रेसिस्टर्स।

मैंने इन-सीरीज़ एमिटर डायोड के लिए 5mA पर निर्णय लिया, इस विशेष एनकोडर में डायोड के पार वोल्टेज ड्रॉप 3.65V है। मैं Arduino से 5V आपूर्ति का उपयोग कर रहा हूं, जो रोकनेवाला के लिए 1.35V छोड़ता है, 5mA पर यह 270 ओम का काम करता है।

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

चरण 4: Arduino कोड

Arduino कोड
Arduino कोड
Arduino कोड
Arduino कोड
Arduino कोड
Arduino कोड

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

सबसे पहले हम केवल दिशा डेटा को संसाधित करना चाहते हैं यदि एन्कोडर स्थिति में कोई बदलाव आया है।

परिवर्तन = new_value ^ संग्रहीत मूल्य;

अपने एन्कोडर से अधिक रिज़ॉल्यूशन प्राप्त करने के लिए मुझे बढ़ते और गिरते किनारों दोनों को संसाधित करना पड़ा।

मेरे सेटअप पर मेरा संकल्प 24 क्लिक प्रति 1 सेमी है।

यह हमें कुछ परिदृश्यों के साथ छोड़ देता है।

S1 स्थिर 0 है और S2 0 से 1. तक टॉगल किया जाता है

S1 स्थिर 0 है और S2 1 से 0. तक टॉगल किया जाता है

S1 स्थिर 1 है और S2 0 से 1 तक टॉगल करता है

S1 स्थिर 1 है और S2 1 से 0. तक टॉगल करता है

S2 स्थिर 0 है और S1 0 से 1 तक टॉगल किया जाता है

S2 स्थिर 0 है और S1 1 से 0. तक टॉगल किया जाता है

S2 स्थिर 1 है और S1 0 से 1 तक टॉगल करता है

S2 स्थिर 1 है और S1 1 से 0. तक टॉगल करता है

उपरोक्त सत्य-सारणी में इन स्थितियों को बेहतर ढंग से समझा जाता है, साथ ही प्रत्येक स्थिति एक 'दिशा' उत्पन्न करती है, जिसे मनमाने ढंग से 0 या 1 नाम दिया जाता है।

चार्ट हमें दो महत्वपूर्ण सुराग देते हैं:

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

2) चार्ट ही केवल S1 और S2 संकेतों का XOR है। (दूसरा चार्ट इसका नहीं है)।

अब कोड को समझना आसान है।

// PORT में समानांतर में पढ़ें // याद रखें कि आसन्न जोड़े एक ही एनकोडर स्थिति से संबंधित हैं = PINB और 0x3f; // यदि कोई अंतर = पकड़ ^ राज्य हो तो क्या पिन बदल गए हैं; // एक्सओआर आसन्न एस 1 और एस 2 सिग्नल सत्य तालिका प्राप्त करने के लिए // सबसे आसान तरीका वर्तमान स्थिति की प्रतिलिपि बनाना है // और इसे एक बिट लुकअप द्वारा दाईं ओर स्थानांतरित करना = राज्य >> 1; // अब बिट्स XOR dir = लुकअप ^ स्टेट के लिए संरेखित हैं; // याद रखें, यदि इनपुट में से एक // स्थिर रहता है, तो तालिका को उल्टा करने की आवश्यकता है, इसके लिए हमें IF // स्टेटमेंट की आवश्यकता नहीं है। वर्तमान में वांछित दिशा बिट // 'dir' वेरिएबल में प्रत्येक जोड़ी का दाहिना हाथ बिट है // लेफ्ट हैंड बिट अर्थहीन है // 'diff' वेरिएबल में बिट है जो 'सेट' को बदल देता है // इसलिए हमारे पास या तो है '01' या '10' // इसे 'dir' बाइट के साथ XOR करें या तो // इनवर्ट करें या सार्थक बिट नहीं। डीआईआर ^ = अंतर; // अब होल्ड वैरिएबल होल्ड = स्टेट अपडेट करें; // यदि इस एन्कोडर के लिए कोई भी बिट बदल गया है अगर (diff & 0x03) {// दिशा निर्धारित करें if(dir & 0x01) {// आपके हैडवेयर और वायरिंग के आधार पर ++ या -- --z; } और {++z; } } // बाकी के लिए भी अगर (diff & 0x0c) {if(dir & 0x04) {++y; } और {--y; } } अगर (अंतर और 0x30) { अगर (डीआईआर और 0x10) {--x; } और {++x; } }

जब बटन दबाया जाता है तो हम टर्मिनल प्रोग्राम को वर्तमान XYZ मान भेजते हैं।

सीरियल डेटा धीमा है, लेकिन सामान्य ऑपरेशन के दौरान एन्कोडर्स की स्थिति इस दौरान वैसे भी नहीं बदलेगी।

डेटा को रॉ काउंट के रूप में भेजा जाता है। आप गणित कर सकते हैं और डेटा को मिमी या इंच आदि में भेज सकते हैं। मुझे लगता है कि कच्चे मूल्य उतने ही अच्छे हैं क्योंकि हम बाद में सॉफ्टवेयर में ऑब्जेक्ट को स्केल कर सकते हैं।

चरण 5: पहला स्कैन

पहला स्कैन
पहला स्कैन
पहला स्कैन
पहला स्कैन
पहला स्कैन
पहला स्कैन
पहला स्कैन
पहला स्कैन

अंक इकट्ठा करना एक धीमी प्रक्रिया है, मैं ऊपरी बाएं कोने में जांच को फर्श करता हूं और Arduino को रीसेट करता हूं।

यह घर के रूप में स्थिति को शून्य करता है।

फिर जांच को लक्ष्य के स्थान पर ले जाएं, इसे स्थिर रखें और 'स्नैपशॉट' बटन दबाएं।

इसके बजाय बड़े नमूने के टुकड़े के लिए मैंने केवल ~ १४० अंक लिए, इसलिए अंतिम उत्पाद पर विवरण बहुत अच्छा नहीं है।

डेटा को एक. PCD फ़ाइल में सहेजें, और हेडर जोड़ें

#. PCD v.7 - पॉइंट क्लाउड डेटा फ़ाइल स्वरूप संस्करण.7 फ़ील्ड x y z आकार 4 4 4 प्रकार F F F COUNT 1 1 1 चौड़ाई (आपकी पॉइंट काउंट) ऊँचाई 1 व्यूपॉइंट 0 0 0 1 0 0 0 पॉइंट्स (आपकी पॉइंट काउंट)

हेडर में पॉइंट काउंट रखें, यह किसी भी संपादक पर आसान है जो आपको लाइन नंबर प्रदान करता है।

डॉट्स के ऊपर फ्रीकैड में देखा जा सकता है, फिर उन्हें फ्रीकैड से. PLY फ़ाइल के रूप में निर्यात किया जाता है।

MeshLab पर. PLY खोलें और ऑब्जेक्ट को सरफेस करें। किया हुआ!!

सिफारिश की: