সুচিপত্র:

Arduino এবং PC দ্বারা নিয়ন্ত্রিত রোবোটিক আর্ম: 10 টি ধাপ
Arduino এবং PC দ্বারা নিয়ন্ত্রিত রোবোটিক আর্ম: 10 টি ধাপ

ভিডিও: Arduino এবং PC দ্বারা নিয়ন্ত্রিত রোবোটিক আর্ম: 10 টি ধাপ

ভিডিও: Arduino এবং PC দ্বারা নিয়ন্ত্রিত রোবোটিক আর্ম: 10 টি ধাপ
ভিডিও: Joint configuration systems of Robot 2024, জুলাই
Anonim
Image
Image
প্রকল্পের পিছনে তত্ত্ব
প্রকল্পের পিছনে তত্ত্ব

রোবটিক অস্ত্র ব্যাপকভাবে শিল্পে ব্যবহৃত হয়। এটা সমাবেশ অপারেশন জন্য কিনা, আইএসএস (ইন্টারন্যাশনাল স্পেস স্টেশন) এ ডকিংয়ের জন্য ওয়েল্ডিং বা এমনকি একটি ব্যবহার করা হয়, তারা মানুষকে কাজে সাহায্য করে অথবা তারা মানুষের সম্পূর্ণরূপে প্রতিস্থাপন করে। আমি যে বাহু তৈরি করেছি তা হল রোবটিক বাহুর ছোট উপস্থাপনা যা বস্তুগুলিকে সরানোর জন্য ব্যবহার করা হয়। এটি আরডুইনো প্রো মিনি দ্বারা নিয়ন্ত্রিত হয় যা ইতিমধ্যে সার্ভিস নিয়ন্ত্রণের জন্য অন্তর্নির্মিত লাইব্রেরি রয়েছে। সার্ভিস PWM (পালস প্রস্থ মডুলেশন) দ্বারা নিয়ন্ত্রিত হয় যা প্রোগ্রাম করা কঠিন নয় কিন্তু এই লাইব্রেরি এটি সহজ করে তোলে। ব্যবহারকারী সেই সার্ভোসগুলিকে পোটেন্টিওমিটার দ্বারা নিয়ন্ত্রণ করতে পারে যা ভোল্টেজ ডিভাইডার হিসাবে কাজ করার জন্য বা পিসিতে প্রোগ্রাম থেকে ডিজাইন করা হয় যা সার্ভো মোটর নিয়ন্ত্রণের জন্য 4 টি স্লাইডার ব্যবহার করে।

এই প্রকল্পের জন্য আমাকে আমার কাস্টম পিসিবি ডিজাইন করতে হয়েছিল এবং এটি তৈরি করতে হয়েছিল, আর্মের 3D মডেল তৈরি করতে হয়েছিল এবং কোড লিখতে হয়েছিল যা এটিকে নিয়ন্ত্রণ করে। তার উপরে আমি পাইথনে অতিরিক্ত প্রোগ্রাম কোড করেছি যা arduino তে সিগন্যাল পাঠায় যা সেই সিগন্যালকে ডিকোড করতে এবং সার্ভারগুলিকে সেই ব্যবহারকারীর সেট করা অবস্থানে নিয়ে যেতে পরিচালিত করে।

ধাপ 1: প্রকল্পের পিছনে তত্ত্ব

প্রকল্পের পিছনে তত্ত্ব
প্রকল্পের পিছনে তত্ত্ব

Arduino এই ভাবে মহান যে এটি বিনামূল্যে লাইব্রেরি দিয়ে কাজ করে। এই প্রকল্পের জন্য আমি লাইব্রেরি Servo.h ব্যবহার করেছি যা সার্ভিস নিয়ন্ত্রণ করাকে অনেক সহজ করে তোলে।

Servo মোটর PWM -Pulse Width Modulation- দ্বারা নিয়ন্ত্রিত হয়- যার মানে হল যে servo নিয়ন্ত্রণ করার জন্য আপনাকে স্বল্প ভোল্টেজের ডাল তৈরি করতে হবে। Servo এই সিগন্যালের দৈর্ঘ্য ডিকোড করতে পারে এবং প্রদত্ত অবস্থানে ঘুরাতে পারে। এবং এখানেই আমি ইতিমধ্যে উল্লেখিত লাইব্রেরি ব্যবহার করেছি। আমাকে নিজের সিগন্যালের দৈর্ঘ্য গণনা করতে হয়নি কিন্তু আমি লাইব্রেরির ফাংশন ব্যবহার করেছি যেখানে আমি মাত্র ডিগ্রিতে প্যারামিটার পাস করি এবং এটি সংকেত দেয়।

সার্ভস নিয়ন্ত্রণের জন্য আমি পোটেন্টিওমিটার ব্যবহার করেছি যা ভোল্টেজ ডিভাইডার হিসাবে কাজ করে। Arduino বোর্ডগুলিতে বেশ কয়েকটি এনালগ/ডিজিটাল রূপান্তরকারী আছে যা আমি প্রকল্পের জন্য ব্যবহার করেছি। মূলত আরডুইনো পটেন্টিওমিটারের মাঝের পিনে ভোল্টেজ পর্যবেক্ষণ করছে এবং যদি এটি একপাশে ভোল্টেজের দিকে ঘোরে তবে এটি 0 ভোল্ট (মান = 0) এবং অন্য দিকে এটি 5 ভোল্ট (মান = 1023)। এই মানটি তারপর 0 - 1023 থেকে 0 - 180 পরিসরে স্কেল করা হয় এবং তারপর এটি ইতিমধ্যে উল্লিখিত ফাংশনে প্রেরণ করা হয়।

আরেকটি বিষয় হল arduino এর সাথে সিরিয়াল যোগাযোগ যা আমি সংক্ষেপে কভার করব। মূলত পিসিতে লেখা প্রোগ্রাম ব্যবহারকারীর দ্বারা নির্বাচিত মান পাঠায়, আরডুইনো এটি ডিকোড করতে পারে এবং সার্ভোকে নির্দিষ্ট অবস্থানে নিয়ে যেতে পারে

ধাপ 2: পিসিবি ডিজাইন করা

পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা

আমি 2 টি পিসিবি ডিজাইন করেছি - একটি প্রধান নিয়ন্ত্রণের জন্য যেখানে আরডুইনো এবং সার্ভিসের জন্য পিন এবং দ্বিতীয়টি হল পোটেন্টিওমিটার। 2 টি PCB- এর কারণ হল আমি নিরাপদ দূরত্ব থেকে রোবটিক বাহু নিয়ন্ত্রণ করতে চেয়েছিলাম। উভয় সার্কিট প্রদত্ত দৈর্ঘ্যের তারের দ্বারা সংযুক্ত - আমার ক্ষেত্রে 80 সেমি।

শক্তির উৎসের জন্য আমি বহিরাগত অ্যাডাপ্টার বেছে নিয়েছি কারণ আমি যেসব সার্ভিস ব্যবহার করেছি তা আরডুইনো সরবরাহের চেয়ে অনেক বেশি শক্তি খরচ করে। আপনি দেখতে পাচ্ছেন এমন কিছু ক্যাপাসিটার আছে যা আমি এখনো উল্লেখ করিনি। এগুলি হল পরিস্রাবণের জন্য ব্যবহৃত ক্যাপাসিটার। আপনি এখন জানেন, servo মোটর সংক্ষিপ্ত impulses দ্বারা নিয়ন্ত্রিত হয়। সেই আবেগগুলি সরবরাহ করতে পারে যে সরবরাহের ভোল্টেজ ড্রপ এবং পটেন্টিওমিটার যা পূর্বে 0-5 ভোল্টের পরিসীমা ছিল এখন ছোট পরিসীমা। এর মানে হল যে মধ্য পিনের ভোল্টেজ পরিবর্তিত হয় এবং আরডুইনো এই মান পায় এবং সার্ভো মোটর এর অবস্থান পরিবর্তন করে। এটি চিরকাল চলতে পারে এবং এটি অবাঞ্ছিত দোলন সৃষ্টি করে যা সরবরাহের সমান্তরাল কিছু ক্যাপাসিটার দ্বারা নির্মূল করা যায়।

ধাপ 3: পিসিবি তৈরি করা

পিসিবি তৈরি করা
পিসিবি তৈরি করা
পিসিবি তৈরি করা
পিসিবি তৈরি করা
পিসিবি তৈরি করা
পিসিবি তৈরি করা

পিসিবি তৈরির জন্য আমি আপনাকে এটি পড়ার পরামর্শ দিচ্ছি।

আমি গ্লসি পেপার পদ্ধতিতে আয়রন ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করেছে।

তারপর আমি PCB তে অংশগুলি বিক্রি করেছি। আপনি দেখতে পাচ্ছেন যে ভবিষ্যতে আমার প্রয়োজন হলে আমি আরডুইনো সকেট ব্যবহার করেছি।

ধাপ 4: আর্ম ডিজাইন করা

আর্ম ডিজাইন করা
আর্ম ডিজাইন করা
আর্ম ডিজাইন করা
আর্ম ডিজাইন করা
আর্ম ডিজাইন করা
আর্ম ডিজাইন করা

এটি কোনভাবেই এই প্রকল্প তৈরির সবচেয়ে কঠিন অংশ ছিল না।

পুরো সেটআপটি 8 টি অংশ থেকে তৈরি করা হয়েছে যেখানে 4 টি চলন্ত অংশ নয় - পোটেন্টিওমিটার এবং বেস যেখানে আরডুইনো অবস্থিত - এর জন্য বাক্স - এবং অন্য চারটি বাহু নিজেই। নকশাটি বেশ স্বজ্ঞাত এবং কিছুভাবে সহজ ব্যতীত আমি খুব বেশি বিশদে যাব না। এটা আমার কাস্টম PCB এবং servos যা আমি অংশ তালিকায় অন্তর্ভুক্ত করা হবে উপযুক্ত করার জন্য ডিজাইন করা হয়েছে।

ধাপ 5: যন্ত্রাংশ মুদ্রণ

যন্ত্রাংশ মুদ্রণ
যন্ত্রাংশ মুদ্রণ
যন্ত্রাংশ মুদ্রণ
যন্ত্রাংশ মুদ্রণ
যন্ত্রাংশ মুদ্রণ
যন্ত্রাংশ মুদ্রণ

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

ধাপ 6: সবকিছু একসাথে রাখা

সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ
সবগুলোকে একত্রে রাখ

এই ধাপে শিরোনাম বলছে আমি সব একসাথে রেখেছি।

প্রথমে আমি পোটেন্টিওমিটারে তারের সোল্ডার করেছি এবং তারপর পিসিবিতে সেই তারগুলি। Potentiometers সুন্দরভাবে ছিদ্রের সাথে মানানসই এবং আমি PCB- কে বক্সের নীচে মুদ্রিত পিলারের উপর গরম আঠালো করেছিলাম। আপনি বোর্ড এবং বাক্সে গর্ত ড্রিল করতে পারেন কিন্তু আমি খুঁজে পেয়েছি যে এটি gluing যথেষ্ট বেশী। তারপরে আমি বাক্সের উভয় অংশ বন্ধ করেছিলাম এবং সেগুলি 4 টি স্ক্রু দিয়ে সুরক্ষিত করেছিলাম যা আমার ডিজাইন করা গর্তে ফিট করে।

পরবর্তী ধাপ হিসাবে আমি উভয় বোর্ড সংযোগ করার জন্য সমতল পটি তার তৈরি করেছি।

প্রধান বাক্সে আমি সংযোগকারীর VCC পিন থেকে সুইচ করার জন্য তারের সোল্ডার করেছি এবং তারপর Vcc of board এবং GND of board থেকে GND থেকে connector এর GND। তারপর আমি গরম এবং পিলারগুলিতে বোর্ডে সংযোগকারীকে আঠালো করেছি। সংযোগকারীটি ঠিক গর্তে ফিট করে যাতে কোন গরম আঠার প্রয়োজন হয় না।

তারপর, স্ক্রু ব্যবহার করে আমি বাক্সের নীচে নীচের সারো সংযুক্ত করেছি।

তারপরে আমি বাক্সের উপরের অংশটি নীচের অংশে রাখি এবং পোটেন্টিওমিটার বাক্সের মতোই আমি এটি 4 টি স্ক্রু দিয়ে সুরক্ষিত করেছি।

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

এবং চূড়ান্ত পদক্ষেপ হিসাবে আমি বাক্সের নীচে কিছু টেপ রাখলাম কারণ অন্যথায় তারা স্লাইড হবে।

ধাপ 7: Arduino প্রোগ্রামিং

Arduino প্রোগ্রামিং
Arduino প্রোগ্রামিং
Arduino প্রোগ্রামিং
Arduino প্রোগ্রামিং
Arduino প্রোগ্রামিং
Arduino প্রোগ্রামিং

আমি ইতিমধ্যেই উল্লেখ করেছি কিভাবে প্রকল্পের পিছনে তত্ত্ব অনুসারে প্রোগ্রাম কাজ করে, কিন্তু আমি এটাকে আরও ভেঙে ফেলতে যাচ্ছি।

তাই শুরুতে আমাদের কিছু ভেরিয়েবল সংজ্ঞায়িত করতে হবে। বেশিরভাগ ক্ষেত্রে এটি 4 বার অনুলিপি করা হয় কারণ আমাদের 4 টি সার্ভোস আছে এবং আমার মতে প্রোগ্রামটিকে একটু ছোট করার জন্য আরো জটিল যুক্তি তৈরি করা অপ্রয়োজনীয়।

পরবর্তীতে অকার্যকর সেটআপ আছে যেখানে servos এর পিন সংজ্ঞায়িত করা হয়।

তারপর অকার্যকর লুপ রয়েছে - প্রোগ্রামের অংশ যা অসীমভাবে লুপ করে। এই অংশে প্রোগ্রামটি পোটেন্টিওমিটার স্কেল থেকে মান নেয় এবং আউটপুট দেয়। কিন্তু একটি সমস্যা আছে যে পটেন্টিওমিটার থেকে মানটি কিছুটা লাফিয়ে উঠেছে তাই আমাকে ফিল্টার যুক্ত করতে হবে যা শেষ 5 টি মান গড় করে এবং তারপর এটি আউটপুট দেয়। এটি অবাঞ্ছিত ঝাঁকুনি রোধ করে।

প্রোগ্রামের শেষ অংশ সিরিয়াল পোর্ট থেকে ডেটা পড়ে এবং প্রেরিত ডেটার উপর ভিত্তি করে কি করতে হবে তা নির্ধারণ করে।

কোডটি পুরোপুরি বোঝার জন্য, আমি আপনাকে অফিসিয়াল আরডুইনো ওয়েবসাইট দেখার পরামর্শ দিচ্ছি।

ধাপ 8: পাইথনে প্রোগ্রামিং

পাইথনে প্রোগ্রামিং
পাইথনে প্রোগ্রামিং
পাইথনে প্রোগ্রামিং
পাইথনে প্রোগ্রামিং
পাইথনে প্রোগ্রামিং
পাইথনে প্রোগ্রামিং

এই প্রকল্পের এই অংশটি প্রয়োজনীয় নয় কিন্তু আমি মনে করি এটি শুধুমাত্র এই প্রকল্পটিকে আরো মূল্য দেয়।

পাইথন প্রচুর লাইব্রেরি অফার করে যা ব্যবহার করার জন্য বিনামূল্যে কিন্তু এই প্রকল্পে আমি শুধুমাত্র tkinter এবং সিরিয়াল ব্যবহার করছি। টিকিন্টার জিইউআই (গ্রাফিকাল ইউজার ইন্টারফেস) এবং সিরিয়ালের জন্য ব্যবহৃত হয় যেমন নামটি সিরিয়াল যোগাযোগের জন্য ব্যবহৃত হয়।

এই কোডটি 4 টি স্লাইডারের সাথে GUI তৈরি করে যার সর্বনিম্ন মান 0 এবং সর্বাধিক 180। এটি আপনার জন্য ইঙ্গিত হতে পারে যে এটি ডিগ্রিতে এবং প্রতিটি স্লাইডার একটি সার্ভো নিয়ন্ত্রণ করার জন্য প্রোগ্রাম করা হয়েছে। এই প্রোগ্রামটি বরং সহজ - এটি মান নেয় এবং এটি arduino এ পাঠায়। কিন্তু যেভাবে এটি পাঠায় তা আকর্ষণীয়। আপনি যদি প্রথম সার্ভোর মান 123 ডিগ্রিতে পরিবর্তন করতে চান তবে এটি arduino ভ্যালু 1123 তে পাঠায়। পাঠানো প্রতিটি সংখ্যার প্রথম সংখ্যাটি বলছে কোন সার্ভো নিয়ন্ত্রিত হতে চলেছে। Arduino এর কোড আছে যা এটি ডিকোড করতে পারে এবং ডান সার্ভো সরিয়ে দিতে পারে।

ধাপ 9: অংশগুলির তালিকা

অংশগুলির তালিকা
অংশগুলির তালিকা
  • আরডুইনো প্রো মিনি 1 পিস
  • Servo FS5106B 1 টুকরা
  • Servo Futaba S3003 2 টুকরা
  • পিন হেডার 2x5 1 পিস
  • পিন হেডার 1x3 6 টুকরা
  • ক্যাপাসিটর 220uF 3 টুকরা
  • মাইক্রো সার্ভো FS90 1 পিস
  • সংযোগকারী AWP-10 2 টুকরা
  • সংযোগকারী FC681492 1 টুকরা
  • P-B100G1 1 টুকরা সুইচ করুন
  • সকেট 2x14 1 টুকরা
  • TTL-232R-5v-কনভার্টার 1 পিস
  • Potentiometer B200K 4 টুকরা
  • এবং আরো অনেক স্ক্রু, প্যাড এবং বাদাম

ধাপ 10: চূড়ান্ত চিন্তা

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

প্রস্তাবিত: