সুচিপত্র:

XYZ পয়েন্ট স্ক্যানার উদ্ধার করা রোটারি এনকোডার ব্যবহার করে: 5 টি ধাপ
XYZ পয়েন্ট স্ক্যানার উদ্ধার করা রোটারি এনকোডার ব্যবহার করে: 5 টি ধাপ

ভিডিও: XYZ পয়েন্ট স্ক্যানার উদ্ধার করা রোটারি এনকোডার ব্যবহার করে: 5 টি ধাপ

ভিডিও: XYZ পয়েন্ট স্ক্যানার উদ্ধার করা রোটারি এনকোডার ব্যবহার করে: 5 টি ধাপ
ভিডিও: ডিলিট হওয়া ফাইল ফেরত আনার সহজ উপায় - How to Recover Deleted Files? 2024, নভেম্বর
Anonim
XYZ পয়েন্ট স্ক্যানার উদ্ধার করা রোটারি এনকোডার ব্যবহার করে
XYZ পয়েন্ট স্ক্যানার উদ্ধার করা রোটারি এনকোডার ব্যবহার করে

আমার কর্মস্থল থেকে প্রচুর পরিমাণে ফেলে দেওয়া রোটারি অপটিক্যাল এনকোডারগুলি অর্জন করার পরে, আমি অবশেষে তাদের সাথে কিছু মজা/দরকারী করার সিদ্ধান্ত নিয়েছি।

আমি সম্প্রতি আমার বাড়ির জন্য একটি নতুন 3D প্রিন্টার কিনেছি এবং এটি 3D স্ক্যানারের চেয়ে ভাল কি প্রশংসা করতে পারে! এই প্রকল্পটি আমাকে প্রয়োজনীয় যন্ত্রাংশ তৈরির জন্য আমার 3 ডি প্রিন্টার নিয়োগের নিখুঁত সুযোগও দিয়েছে।

সরবরাহ

অপটিক্যাল এনকোডার এবং সংশ্লিষ্ট অপটিক্যাল সেন্সর

আরডুইনো ইউএনও

alচ্ছিক প্রোটোটাইপিং ieldাল

ইস্পাত-বার রেল

একটি 3D প্রিন্টারে অ্যাক্সেস

ধাপ 1: অপটিক্যাল এনকোডার

অপটিক্যাল এনকোডার
অপটিক্যাল এনকোডার
অপটিক্যাল এনকোডার
অপটিক্যাল এনকোডার
অপটিক্যাল এনকোডার
অপটিক্যাল এনকোডার

এই প্রকল্পের জন্য প্রায় যেকোনো ঘূর্ণমান এনকোডার ব্যবহার করা যেতে পারে, যতক্ষণ এটি আপনাকে প্রতি মিমি অপেক্ষাকৃত উচ্চ সংখ্যক 'ক্লিক' প্রদান করে। স্পষ্টতই বিভিন্ন এনকোডারগুলির একটি উপযুক্ত মাউন্ট সমাধানের প্রয়োজন হবে।

আমি ফটো-সেন্সরের জন্য ওয়্যারিং ডায়াগ্রাম খুঁজে বের করতে একটি ধারাবাহিকতা মিটার ব্যবহার করেছি।

ধাপ 2: 3D মুদ্রিত অংশ

3D মুদ্রিত যন্ত্রাংশ
3D মুদ্রিত যন্ত্রাংশ
3D মুদ্রিত যন্ত্রাংশ
3D মুদ্রিত যন্ত্রাংশ

এই অংশগুলি ঘূর্ণমান এনকোডারগুলি রাখে এবং রেলের জন্য একটি স্লাইড সরবরাহ করে। একক এনকোডার হাউজিংয়ের পিছনে দুটি গর্ত রয়েছে যাতে ক্রস রেলগুলি মাউন্ট করা যায়। দ্বৈত এনকোডার হাউজিংটি কেবল দুটি একক হাউজিং ডান কোণে একত্রিত হয়।

আমি ফিউশন 360 এ এই মাউন্টগুলি আমার এনকোডার এবং রেলগুলির পছন্দ অনুসারে ডিজাইন করেছি, এনকোডারের শ্যাফ্টে স্লিংশট রাবারের শীটের একটি ছোট টুকরা রয়েছে, যাতে এটি স্টেইনলেস স্টিলের খাদকে আরও ভালভাবে ধরতে সাহায্য করে।

আপনি চান যে খাদটি অবাধে স্লাইড করতে হবে এবং উল্লম্বভাবে ধরে রাখার সময় হাউজিংয়ের মধ্য দিয়ে পড়ে যেতে হবে, তবুও এটি এনকোডারের উপর স্লিপ না করার জন্য যথেষ্ট চাপ প্রয়োগ করতে হবে। আমার জন্য যা কাজ করেছে তা হল শ্যাফটের জন্য স্লাইডকে 0.5 মিমি দ্বারা এনকোডার শ্যাফ্টের সাথে ওভারল্যাপ করার অনুমতি দেওয়া। স্লিংশট রাবার সেই পরিমাণ দ্বারা বিকৃত এবং ভাল ট্র্যাকশন সরবরাহ করার জন্য যথেষ্ট নরম।

ধাপ 3: তারের ডায়াগ্রাম

তারের ডায়াগ্রাম
তারের ডায়াগ্রাম

সার্কিট খুবই সহজ। অপটো-সেন্সরগুলির জন্য আইআর এমিটার ডায়োডের জন্য কিছু স্রোত, ফটো-ডায়োডের জন্য একটি স্থল এবং পুল-আপ প্রতিরোধক প্রয়োজন।

আমি ইন-সিরিজ এমিটার ডায়োডের জন্য 5mA সিদ্ধান্ত নিয়েছি, এই বিশেষ এনকোডারে ডায়োড জুড়ে ভোল্টেজ ড্রপ 3.65V। আমি Arduino থেকে একটি 5V সরবরাহ ব্যবহার করছি, যা প্রতিরোধকের জন্য 1.35V ছেড়ে দেয়, 5mA এ এটি 270 ওহম হতে পারে।

পুল-আপের জন্য 10k ওহম নির্বাচন করা হয়েছিল কারণ ফটো-ডায়োডগুলি কেবল একটি ছোট কারেন্ট ডুবিয়ে দিতে পারে, পুশ বোতামের জন্যও 10k ওহম ব্যবহার করা হয়েছিল। ইতিমধ্যে মাটির সাথে সংযুক্ত প্রোটোটাইপ বোর্ডে ব্যবহারের জন্য একটি বোতাম রয়েছে, এটি কেবল একটি পুল-আপ প্রতিরোধক সরবরাহ করুন এবং এটি পছন্দসই ইনপুট পিনে সংযুক্ত করুন।

ধাপ 4: Arduino কোড

Arduino কোড
Arduino কোড
Arduino কোড
Arduino কোড
Arduino কোড
Arduino কোড

কোডটির একটু ব্যাখ্যা প্রয়োজন কারণ এর অপারেশন অবিলম্বে সুস্পষ্ট নাও হতে পারে, তবুও দ্রুত 3 এনকোডার প্রক্রিয়া করতে সক্ষম হওয়ার জন্য এটিকে অপ্টিমাইজ করতে হয়েছিল।

প্রথমত আমরা কেবলমাত্র নির্দেশের তথ্য প্রক্রিয়া করতে চাই যদি এনকোডার অবস্থানে পরিবর্তন ঘটে।

পরিবর্তন = new_value ^ সংরক্ষিত মান;

আমার এনকোডার থেকে আরো রেজোলিউশন পেতে আমি উভয় উত্থান এবং পতন প্রান্ত প্রক্রিয়া ছিল।

আমার সেটআপে আমার রেজুলেশন হল প্রতি 1 সেমি 24 ক্লিক।

এটি আমাদের কয়েকটি দৃশ্যের সাথে ছেড়ে দেয়।

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। (অন্য চার্ট এই নয়)।

এখন কোডটি বোঝা সহজ।

// সমান্তরালে পোর্টে পড়ুন // মনে রাখবেন সংলগ্ন জোড়া একই এনকোডার স্টেট = PINB & 0x3f; // কোন diff = hold ^ state থাকলে কি পিন পরিবর্তন হয়েছে; // সত্য সারণী পেতে XOR সংলগ্ন S1 এবং S2 সংকেত // সবচেয়ে সহজ উপায় হল বর্তমান অবস্থার একটি অনুলিপি তৈরি করা // এবং এটি একটি বিট লুক = ডান দিকে স্থানান্তর = রাষ্ট্র >> 1; // এখন XOR dir = lookup ^ state এর জন্য বিটগুলিকে সারিবদ্ধ করা হয়েছে; // মনে রাখবেন, যদি একটি // ইনপুট স্থির থাকে তবে টেবিলটি উল্টানো দরকার, এর জন্য আমাদের একটি IF // বিবৃতির প্রয়োজন নেই। বর্তমানে কাঙ্ক্ষিত দিকনির্দেশনা বিট // 'dir' ভেরিয়েবলের প্রতিটি জোড়ার ডান হাতের বিট // বাম হাতের বিট অর্থহীন // 'ডিফ' ভেরিয়েবলের বিটটি 'সেট' পরিবর্তন করেছে // তাই আমাদের হয় '01' বা '10' // XOR এই 'dir' বাইটের সাথে হয় // উল্টো বা অর্থপূর্ণ বিট নয়। dir ^= diff; // এখন আপডেট হোল পরিবর্তনশীল hold = state; // যদি এই এনকোডারের জন্য বিট পরিবর্তিত হয় যদি (diff & 0x03) {// আপনার হ্যাডওয়্যার এবং তারের উপর ভিত্তি করে দিকনির্দেশ নির্ধারণ করে (dir & 0x01) {// ++ অথবা --z; } অন্যথায় {++ z; }} // বাকিদের জন্য ditto if (diff & 0x0c) {if (dir & 0x04) {++ y; } অন্য {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } অন্যথায় {++ x; }}

বোতাম টিপলে আমরা বর্তমান XYZ মান একটি টার্মিনাল প্রোগ্রামে পাঠাই।

সিরিয়াল ডেটা ধীর, কিন্তু স্বাভাবিক ক্রিয়াকলাপের সময় এনকোডারগুলির অবস্থান এই সময়ের মধ্যে যাই হোক না কেন পরিবর্তিত হবে না।

তথ্য কাঁচা গণনা হিসাবে পাঠানো হয়। আপনি গণিত করতে পারেন এবং মিমি বা ইঞ্চিতে ডেটা পাঠাতে পারেন।

ধাপ 5: প্রথম স্ক্যান

প্রথম স্ক্যান
প্রথম স্ক্যান
প্রথম স্ক্যান
প্রথম স্ক্যান
প্রথম স্ক্যান
প্রথম স্ক্যান
প্রথম স্ক্যান
প্রথম স্ক্যান

পয়েন্ট সংগ্রহ করা একটি ধীর প্রক্রিয়া, আমি উপরের বাম কোণে প্রোবটি ফ্লোর করি এবং আরডুইনো রিসেট করি।

এই শূন্য অবস্থান হিসাবে অবস্থান।

তারপর প্রোবটিকে টার্গেটের জায়গায় নিয়ে যান, এটিকে স্থির রাখুন এবং 'স্ন্যাপশট' বোতাম টিপুন।

এই বরং বড় নমুনা টুকরা জন্য আমি মাত্র ~ 140 পয়েন্ট গ্রহণ, তাই বিস্তারিত চূড়ান্ত পণ্য মহান নয়।

একটি. PCD ফাইলে ডেটা সংরক্ষণ করুন এবং হেডার যোগ করুন

#. PCD v.7 - পয়েন্ট ক্লাউড ডেটা ফাইল ফরম্যাট সংস্করণ.7 ফিল্ড x y z সাইজ 4 4 4 টাইপ F F F COUNT 1 1 1 WIDTH (আপনার পয়েন্ট কাউন্ট) HEIGHT 1 VIEWPOINT 0 0 0 1 0 0 POINTS (your point count)

হেডারে আপনার পয়েন্ট কাউন্ট রাখুন, এটি যে কোন এডিটরে সহজ যে আপনাকে লাইন নম্বর প্রদান করে।

বিন্দুগুলির উপরে ফ্রিক্যাডে দেখা যায়, সেগুলি ফ্রিক্যাড থেকে. PLY ফাইল হিসাবে রপ্তানি করা হয়।

MeshLab এ. PLY খুলুন এবং বস্তুটিকে সারফেস করুন। সম্পন্ন!!

প্রস্তাবিত: