সুচিপত্র:

ওয়্যার নিয়ন্ত্রিত রোবট আর্ম: 31 টি ধাপ
ওয়্যার নিয়ন্ত্রিত রোবট আর্ম: 31 টি ধাপ

ভিডিও: ওয়্যার নিয়ন্ত্রিত রোবট আর্ম: 31 টি ধাপ

ভিডিও: ওয়্যার নিয়ন্ত্রিত রোবট আর্ম: 31 টি ধাপ
ভিডিও: 2002 থেকে 2022 পর্যন্ত 50টি অস্বাভাবিক কিন্তু অবিশ্বাস্য যানবাহন 2024, নভেম্বর
Anonim
ওয়্যার নিয়ন্ত্রিত রোবট আর্ম
ওয়্যার নিয়ন্ত্রিত রোবট আর্ম

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

3D মুদ্রণযোগ্য:

এখানে এবং এখানে

সরবরাহ

6 Servo মোটর (MG995)

আরডুইনো উনো

প্রায় 6 মিটার প্লাস্টিকের লেপা স্টিলের তার (0.5 মিমি)

বক্স 23x33x10 (সংকীর্ণ হতে পারে, অবশ্যই ছোট হওয়া উচিত নয়)

কাঠের তক্তা 33x10

খুঁটিনাটি

পাইপ 14 সেমি (স্ট্রিংগুলি নির্দেশ করার জন্য এটি প্রয়োজন)

4 এল-বন্ধনী

5-ভোল্ট অ্যাডাপ্টার

2 7-উপায় টার্মিনাল ব্লক

ব্রেডবোর্ডের তার

3D মুদ্রিত উপাদান (আমার দ্বারা ডিজাইন করা হয়নি, বর্ণনার উপাদানগুলির লিঙ্ক):

3 "বোল্ট"

2 "এলিমেন্ট 1"

1 "এলিমেন্ট 2"

2 "উপাদান 3"

1 বেস সংযোগকারী

ধাপ 1: সমস্ত 3D উপাদান মুদ্রণ করুন

আপনি বোল্ট গর্ত এবং খিলান জন্য সমর্থন প্রয়োজন হতে পারে কিন্তু আপনার উপাদান শরীরের সমর্থন যোগ না নিশ্চিত করুন; এটি ছোট তারের গর্ত বন্ধ করবে এবং আপনাকে নতুন গর্ত করতে হবে

ধাপ 2: (alচ্ছিক) এটিকে শক্তিশালী করার জন্য আপনার বাক্সের নীচে কাঠের একটি তক্তা সংযুক্ত করুন

আমার বাক্সটি বেশ দুর্বল ছিল, আপনার নাও হতে পারে

ধাপ 3: বাক্সটি ফিট করার জন্য কাঠের একটি তক্তা পরিমাপ করুন এবং কাটুন

ধাপ 4: মোটরগুলির অবস্থান চিহ্নিত করুন

নিশ্চিত করুন যে কোন বাহু একে অপরকে স্পর্শ করে না

ধাপ 5: বন্ধনী এবং পাইপের অবস্থান চিহ্নিত করুন।

বন্ধনী এবং পাইপের অবস্থান চিহ্নিত করুন।
বন্ধনী এবং পাইপের অবস্থান চিহ্নিত করুন।

গর্তের সামনে পাইপটি প্রায় এক সেন্টিমিটার রাখতে হবে

ধাপ 6: আপনার বাক্স থেকে বেরিয়ে আসা তারের জন্য একটি হোল ড্রিল করুন (ইউএসবি এবং পাওয়ার)

আপনার বাক্স থেকে বেরিয়ে আসা তারের জন্য একটি হোল ড্রিল করুন (ইউএসবি এবং পাওয়ার)
আপনার বাক্স থেকে বেরিয়ে আসা তারের জন্য একটি হোল ড্রিল করুন (ইউএসবি এবং পাওয়ার)

ধাপ 7: ড্রিল এবং সমস্ত চিহ্নিত ছিদ্র দেখেছি

ড্রিল এবং সমস্ত চিহ্নিত ছিদ্র দেখেছি
ড্রিল এবং সমস্ত চিহ্নিত ছিদ্র দেখেছি

ধাপ 8: তক্তায় মোটর এবং পাইপ সংযুক্ত করুন

ধাপ 9: এল-বন্ধনী দিয়ে বাক্সে তক্তা সংযুক্ত করুন

ধাপ 10: আপনার টার্মিনাল ব্লক নিন এবং একসঙ্গে তারগুলি বিক্রি করুন

আপনার টার্মিনাল ব্লক নিন এবং একসঙ্গে তারগুলি বিক্রি করুন
আপনার টার্মিনাল ব্লক নিন এবং একসঙ্গে তারগুলি বিক্রি করুন

ধাপ 11: অ্যাডাপ্টার পাওয়ার কর্ডের শেষ অংশটি কেটে নিন এবং তারগুলি কেটে নিন

ধাপ 12: প্লাস এবং মাইনাস ওয়্যারগুলি চিহ্নিত করুন এবং চিহ্নিত করুন

ধাপ 13: টার্মিনাল ব্লকগুলিতে তারগুলি সংযুক্ত করুন যাতে পাওয়ার কর্ড থেকে সমস্ত + সার্ভো তার এবং + ওয়্যার সংযুক্ত থাকে, একইভাবে - তারের জন্য যায়।

টার্মিনাল ব্লকগুলিতে তারগুলি সংযুক্ত করুন যাতে সমস্ত + সার্ভো তার এবং পাওয়ার কর্ড থেকে + ওয়্যার সংযুক্ত থাকে, একই - তারের জন্য যায়।
টার্মিনাল ব্লকগুলিতে তারগুলি সংযুক্ত করুন যাতে সমস্ত + সার্ভো তার এবং পাওয়ার কর্ড থেকে + ওয়্যার সংযুক্ত থাকে, একই - তারের জন্য যায়।

ধাপ 14: একটি ব্রেডবোর্ড ওয়্যার থেকে মাথা কাটা

একটি ব্রেডবোর্ড ওয়্যার বন্ধ মাথা কাটা
একটি ব্রেডবোর্ড ওয়্যার বন্ধ মাথা কাটা

রুটিবোর্ডের তারের ছিঁড়ে যাওয়া প্রান্তটি মাইনাস টার্মিনাল ব্লকে সংযুক্ত করুন এবং পিনটি আপনার আরডুইনোতে গ্রাউন্ড পিনের সাথে সংযুক্ত করুন। আপনি যদি এটি না করেন তবে মোটরগুলি কোনও ইনপুট ছাড়াই ত্রুটিপূর্ণভাবে চলে যাবে।

ধাপ 15: আপনার বাহু থেকে বেরিয়ে আসা তারের জন্য বাক্সের নীচে তিনটি গর্ত ড্রিল করুন।

ছিদ্রগুলি বেস সংযোগকারীর গর্তের সাথে মিলিত হওয়া উচিত।

ধাপ 16: বাক্সে বেস সংযোগকারী সংযুক্ত করুন

বাক্সে বেস সংযোগকারী সংযুক্ত করুন
বাক্সে বেস সংযোগকারী সংযুক্ত করুন

ধাপ 17: তারের খাঁজগুলি আরও গভীর করতে একটি ছুরি বা পেরেক ফাইল ব্যবহার করুন

তারের খাঁজগুলি আরও গভীর করতে একটি ছুরি বা পেরেক ফাইল ব্যবহার করুন
তারের খাঁজগুলি আরও গভীর করতে একটি ছুরি বা পেরেক ফাইল ব্যবহার করুন

2 এবং 3 উপাদানগুলির জন্য তারের খাঁজগুলি খুব অগভীর।

ধাপ 18: বাহু গঠন করুন

বাহু গঠন করুন
বাহু গঠন করুন

এখানে নির্দেশাবলী অনুসারে বাহু গঠন করুন যাতে আপনি অংশগুলি ফাইল করতে পারেন যাতে সেগুলি উপযুক্ত হয়

ধাপ 19: প্রসেসিং এবং আরডুইনো ইনস্টল করুন

প্রক্রিয়াকরণ এবং Arduino

ধাপ 20: কোড প্রোগ্রামগুলি আটকান।

কোডটি এই পৃষ্ঠার নীচে রয়েছে

ধাপ 21: আরডুইনোতে সার্ভো কন্ট্রোল পিন সংযুক্ত করুন

আরডুইনোতে সার্ভো কন্ট্রোল পিন সংযুক্ত করুন
আরডুইনোতে সার্ভো কন্ট্রোল পিন সংযুক্ত করুন

আমি প্রথম মোটরটিকে তৃতীয় ডিজিটাল পিন, দ্বিতীয় মোটরকে চতুর্থ ডিজিটাল পিনের সাথে সংযুক্ত করেছি। নিশ্চিত করুন যে গ্রাউন্ড পিনটি এখনও - টার্মিনাল ব্লকের সাথে সংযুক্ত।

ধাপ 22: প্রক্রিয়াকরণে রিসেট বোতাম টিপুন, এটি সমস্ত অস্ত্র 90 ডিগ্রীতে সেট করবে

ধাপ 23: আনুভূমিকভাবে মোটরকে সারো অস্ত্রগুলি ঠিক করুন

ধাপ 24: অস্ত্রের মাধ্যমে তারগুলি থ্রেড করুন যাতে কোনও স্ল্যাক না থাকে

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

ধাপ 25: বাহু পরীক্ষা করুন এবং প্রয়োজন অনুযায়ী তারগুলি শক্ত বা আলগা করুন

ধাপ 26: এটিকে স্থায়ী করার জন্য সার্ভার আর্মসে তারের আঠালো আঠা

ধাপ 27: নোট

মন্তব্য
মন্তব্য

আমি 0.5 মিমি গয়না তার ব্যবহার করেছি কিন্তু 0.4 মিমি জরিমানা হওয়া উচিত। আসল নকশাটি পিভিসি তার ব্যবহার করেছিল কিন্তু এটি খুব সহজেই ভেঙে গিয়েছিল এবং এটির সাথে কাজ করা কঠিন ছিল।

আপনি যদি গাড়ি বা বাইকে হাত নাড়তে যাচ্ছেন তবে হাতের জয়েন্টগুলো টেপ দিয়ে মুড়ে নিন যাতে তারা পপ আউট না হয়। এটি উপাদান 1 এর জন্য বিশেষভাবে গুরুত্বপূর্ণ।

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

ধাপ 28: সমস্যা সমাধান

তারের ছিদ্রগুলি 3D মুদ্রিত উপাদানগুলিতে বন্ধ রয়েছে:

আপনি কেবল বোল্ট গর্তের পরিবর্তে পুরো উপাদানটির জন্য সমর্থন যোগ করেছেন। হয় উপাদানটি পুনরায় মুদ্রণ করুন বা সত্যিই গরম সুই দিয়ে গর্তগুলি খুলুন।

COM পোর্ট বন্ধ, আপনি arduino এর সাথে যোগাযোগ করতে পারবেন না:

আপনার arduino USB 3 পোর্ট গ্রহণ করতে পারে না (আমার হয়নি), আপনি একটি USB 2 এক্সটেনশন কেবল কিনতে পারেন অথবা একটি কম্পিউটার ব্যবহার করতে পারেন যার USB 2 পোর্ট আছে

কোড কাজ করছে না:

এই টিউটোরিয়ালটি অনুসরণ করুন এবং আপনার নিজের কোড তৈরি করতে এটি সংশোধন করুন

বাহুর একটি অংশ নড়ছে না:

তারগুলি জটলা হয়ে থাকতে পারে, এটি পরীক্ষা করার জন্য সার্ভো থেকে সার্ভো আর্মটি নিন এবং হাত দিয়ে তারগুলি টানার চেষ্টা করুন। তারগুলি খুলে ফেলুন এবং যদি তারগুলি টানতে এখনও অসুবিধা হয় তবে চলাচল সহজ করার জন্য কিছু WD-40 বা লুব্রিকেন্ট ব্যবহার করে দেখুন

ধাপ 29: লিঙ্ক

নন রোবোটিক আর্ম:

আর্ম 3D প্রিন্টেবলস:

আমার আর্ম 3D মুদ্রণযোগ্য:

Arduino এবং প্রক্রিয়াকরণ:

ধাপ 30: কোড

এই কোড থেকে পরিবর্তন করা হয়েছে

Arduino কোড:

#অন্তর্ভুক্ত // মোটর Servo myservo1 ঘোষণা; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // সমস্ত মোটর 90 ডিগ্রীতে ডিফল্টরূপে int current1 = 90; int current2 = 90; int current3 = 90; int current4 = 90; int current5 = 90; int current6 = 90; // সর্বনিম্ন এবং সর্বোচ্চ ডিগ্রী মোটর int mini1 = 0 পৌঁছাতে পারে; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; // বর্তমান অবস্থান থেকে ডিগ্রী যোগ বা বিয়োগ করা হবে int degreeFoward = 5; // বিলম্ব তাই দুটি ফাংশন ভুল ক্রমে ঘটবে না int delayBetweenSteps = 100; অকার্যকর সেটআপ () {// প্রতিটি মোটর myservo1.attach (3) এর জন্য নিয়ন্ত্রণ পিন সেট করুন; myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // সমস্ত মোটরগুলিকে ডিফল্ট সেটিং myservo1.write (current1) এ সেট করুন; myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // সিরিয়াল যোগাযোগ শুরু করুন @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// if data available to read char val = Serial.read (); // এটিকে এই চারে রাখুন // মোটর কন্ট্রোলগুলি যদি current1 = current1 - degreeFoward; বিলম্ব (বিলম্বের মধ্যে পদক্ষেপ); } যদি (val == 'c' && current2 mini2) {myservo2.write (current2 - degreeFoward); current2 = current2 - degreeFoward; বিলম্ব (delayBetweenSteps); } যদি (val == 'e' && current3 mini3) {myservo3.write (current3 - degreeFoward); current3 = current3 - degreeFoward; বিলম্ব (বিলম্বের মধ্যে পদক্ষেপ); } যদি (val == 'g' && current4 mini4) {myservo4.write (current4 - degreeFoward); current4 = current4 - degreeFoward; বিলম্ব (delayBetweenSteps); } যদি (val == 'i' && current5 mini5) {myservo5.write (current5 - degreeFoward); current5 = current5 - degreeFoward; বিলম্ব (delayBetweenSteps); } যদি (val == 'k' && current6 mini6) {myservo6.write (current6 - degreeFoward); current6 = current6 - degreeFoward; বিলম্ব (delayBetweenSteps); } // যদি স্পিড কন্ট্রোল হয় (val == 'w') {// যদি স্পীড 1 বাটন চাপলে ডিগ্রীফওয়ার্ড = 1; বিলম্ব (delayBetweenSteps); } যদি (val == 'x') {// যদি গতি 5 বোতাম টিপে ডিগ্রিফওয়ার্ড = 5; বিলম্ব (delayBetweenSteps); } যদি (val == 'y') {// যদি গতি 10 বোতাম টিপে ডিগ্রিফওয়ার্ড = 10; বিলম্ব (delayBetweenSteps); } যদি (val == 'z') {// যদি স্পিড 20 বোতাম টিপে ডিগ্রি ফওয়ার্ড = 20; বিলম্ব (বিলম্বের মধ্যে পদক্ষেপ); } if (val == 'r') {// if speed 20 button pressed myservo1.write (90); বর্তমান 1 = 90; myservo2.write (90); বর্তমান 2 = 90; myservo3.write (90); বর্তমান 3 = 90; myservo4.write (90); current4 = 90; myservo5.write (90); বর্তমান 5 = 90; myservo6.write (90); বর্তমান 6 = 90; বিলম্ব (delayBetweenSteps); }}}

প্রসেসিং কোড:

আমদানি প্রক্রিয়াকরণ সিরিয়াল।*; আমদানি নিয়ন্ত্রণ P5।*; // আমদানি ControlP5 লাইব্রেরি সিরিয়াল পোর্ট; ControlP5 cp5; // ControlP5 অবজেক্ট PFont ফন্ট তৈরি করুন; অকার্যকর সেটআপ () {// আরডুইনো প্রোগ্রামের আকারের মতো (300, 700); // জানালার আকার, (প্রস্থ, উচ্চতা) printArray (Serial.list ()); // সমস্ত উপলব্ধ সিরিয়াল পোর্টগুলি প্রিন্ট করে // যদি আপনার কোন সমস্যা হয় তবে এটি সম্ভবত এখান থেকে আসে String portName = Serial.list () [0]; পোর্ট = নতুন সিরিয়াল (এটি, পোর্ট নাম, 9600); // আমি আরডুইনোকে com3 এর সাথে সংযুক্ত করেছি, এটি লিনাক্স এবং ম্যাক ওএসে আলাদা হবে // খালি উইন্ডোতে বাটন যোগ করতে cp5 = নতুন ControlP5 (এই); font = createFont ("Arial", 13); // বোতাম এবং শিরোনামের জন্য কাস্টম ফন্ট // স্পিড কন্ট্রোল বোতাম cp5.addButton ("One") // "One" হল বোতামের নাম.setPosition (50, 50) // x এবং y সমন্বয়.setSize (55, 25) // (প্রস্থ, উচ্চতা).setFont (ফন্ট); cp5.addButton ("Five").setPosition (110, 50).setSize (55, 25).setFont (font); cp5.addButton ("Ten").setPosition (170, 50).setSize (55, 25).setFont (font); cp5.addButton ("কুড়ি").setPosition (230, 50).setSize (55, 25).setFont (font); cp5.addButton ("Reset").setPosition (110, 2).setSize (55, 25).setFont (font); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (font); // মোটর কন্ট্রোল বাটন cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (font); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (font); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (প্রস্থ, উচ্চতা).setFont (ফন্ট); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (font); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (প্রস্থ, উচ্চতা).setFont (ফন্ট); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (font); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (font); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (font); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (font); } অকার্যকর ড্র () {// আরডুইনো পটভূমিতে লুপের মতো (192, 215, 249); // জানালার ব্যাকগ্রাউন্ড কালার (r, g, b) অথবা (0 থেকে 255) // স্পিড কন্ট্রোল বলতে স্পীড কন্ট্রোল ফিল (0, 10, 25) লেখা যোগ করুন; // টেক্সট কালার (r, g, b) textFont (font); পাঠ্য ("গতি নিয়ন্ত্রণ", 50, 40); // ("টেক্সট", এক্স কোঅর্ডিনেট, ওয়াই কোঅর্ডিনেট)} // আমাদের বোতামগুলিতে কিছু ফাংশন যোগ করতে দেয় // তাই যখন আপনি কোন বোতাম টিপবেন, তখন এটি সিরিয়াল পোর্টের উপর বিশেষ চর পাঠায় // আমি নিশ্চিত যে স্ট্রিং পাঠানো সম্ভব অক্ষরের পরিবর্তে, এবং এটি আরও বোধগম্য হবে কিন্তু আমি জানি না কিভাবে এটি করতে হবে // গতি নিয়ন্ত্রণ কমান্ডগুলি অকার্যকর এক () {port.write ('w'); } অকার্যকর পাঁচ () {port.write ('x'); } অকার্যকর দশ () {port.write ('y'); } অকার্যকর বিশ () {port.write ('z'); } // মোটর কন্ট্রোল কমান্ড অকার্যকর Servo_1_Foward () {port.write ('a'); } অকার্যকর Servo_1_Back () {port.write ('b'); } অকার্যকর Servo_2_Foward () {port.write ('c'); } অকার্যকর Servo_2_Back () {port.write ('d'); } অকার্যকর Servo_3_Foward () {port.write ('e'); } অকার্যকর Servo_3_Back () {port.write ('f'); } অকার্যকর Servo_4_Foward () {port.write ('g'); } অকার্যকর Servo_4_Back () {port.write ('h'); } অকার্যকর Servo_5_Foward () {port.write ('i'); } অকার্যকর Servo_5_Back () {port.write ('j'); } অকার্যকর Servo_6_Foward () {port.write ('k'); } অকার্যকর Servo_6_Back () {port.write ('l'); } অকার্যকর রিসেট () {port.write ('r'); }

ধাপ 31: আরো ছবি

প্রস্তাবিত: