विषयसूची:

वायर नियंत्रित रोबोट शाखा: 31 कदम
वायर नियंत्रित रोबोट शाखा: 31 कदम

वीडियो: वायर नियंत्रित रोबोट शाखा: 31 कदम

वीडियो: वायर नियंत्रित रोबोट शाखा: 31 कदम
वीडियो: Line following Robot 2024, नवंबर
Anonim
तार नियंत्रित रोबोट शाखा
तार नियंत्रित रोबोट शाखा

यह एक ट्यूटोरियल है कि कैसे तारों द्वारा नियंत्रित रोबोट आर्म बनाया जाए। तारों का उपयोग करने का लाभ यह है कि आपकी भुजा हल्की होती है और आपके हाथ के निचले भाग में आपकी सभी मोटरें हो सकती हैं, जिससे भवन और रखरखाव आसान हो जाता है। यहाँ कार्रवाई में हाथ का एक वीडियो है। मैं भविष्य में एक पंजा जोड़ने की योजना बना रहा हूं ताकि यह चीजों को उठा सके और न केवल उन्हें चारों ओर धकेल सके।

3डी प्रिंट करने योग्य:

यहाँ और यहाँ

आपूर्ति

6 सर्वो मोटर्स (MG995)

Arduino Uno

लगभग 6 मीटर प्लास्टिक लेपित स्टील वायर (0.5 मिमी)

बॉक्स 23x33x10 (संकरा हो सकता है, निश्चित रूप से छोटा नहीं होना चाहिए)

लकड़ी का तख्ता 33x10

नट और बोल्ट

पाइप 14 सेमी (तारों को निर्देशित करने के लिए यह आवश्यक है)

4 एल-कोष्ठक

5-वोल्ट एडाप्टर

2 7-वे टर्मिनल ब्लॉक

ब्रेडबोर्ड तार

3D मुद्रित घटक (मेरे द्वारा डिज़ाइन नहीं किया गया, विवरण में तत्वों के लिंक):

3 "बोल्ट"

2 "तत्व 1"

1 "तत्व 2"

2 "तत्व 3"

1 बेस कनेक्टर

चरण 1: सभी 3D घटकों को प्रिंट करें

आपको बोल्ट छेद और मेहराब के लिए समर्थन की आवश्यकता हो सकती है लेकिन सुनिश्चित करें कि आपके घटकों के शरीर में समर्थन नहीं जोड़ना है; इससे तार के छोटे छेद बंद हो जाएंगे और आपको नए छेद बनाने होंगे

चरण 2: (वैकल्पिक) इसे मजबूत करने के लिए अपने बॉक्स के नीचे लकड़ी की एक तख्ती संलग्न करें

मेरा बक्सा बहुत कमजोर था, हो सकता है कि तुम्हारा न हो

चरण 3: बॉक्स को फिट करने के लिए लकड़ी की एक तख्ती को मापें और काटें

चरण 4: मोटर्स की स्थिति को चिह्नित करें

सुनिश्चित करें कि कोई भी हाथ एक दूसरे को स्पर्श न करें

चरण 5: कोष्ठक और पाइप की स्थिति को चिह्नित करें।

कोष्ठक और पाइप की स्थिति को चिह्नित करें।
कोष्ठक और पाइप की स्थिति को चिह्नित करें।

पाइप को छेद के सामने लगभग एक सेंटीमीटर रखा जाना चाहिए

चरण 6: आपके बॉक्स से बाहर आने वाले केबल्स के लिए एक छेद ड्रिल करें (यूएसबी और पावर)

आपके बॉक्स से बाहर आने वाले केबल्स के लिए एक छेद ड्रिल करें (यूएसबी और पावर)
आपके बॉक्स से बाहर आने वाले केबल्स के लिए एक छेद ड्रिल करें (यूएसबी और पावर)

चरण 7: सभी चिह्नित छिद्रों को ड्रिल और देखा

सभी चिह्नित छेदों को ड्रिल और देखा
सभी चिह्नित छेदों को ड्रिल और देखा

चरण 8: मोटर्स और पाइप को प्लैंक से जोड़ दें

चरण 9: प्लांक को एल-ब्रैकेट्स के साथ बॉक्स में संलग्न करें

चरण 10: अपने टर्मिनल ब्लॉक लें और तारों को एक साथ मिलाएं

अपने टर्मिनल ब्लॉक लें और तारों को एक साथ मिलाएं
अपने टर्मिनल ब्लॉक लें और तारों को एक साथ मिलाएं

चरण 11: एडेप्टर पावर कॉर्ड के अंत को काटें और तारों को पट्टी करें

चरण 12: प्लस और माइनस तारों को पहचानें और चिह्नित करें

चरण 13: तारों को टर्मिनल ब्लॉकों में संलग्न करें ताकि सभी + सर्वो तार और पावर कॉर्ड से + तार जुड़े हों, वही - तारों के लिए जाता है।

तारों को टर्मिनल ब्लॉकों में संलग्न करें ताकि सभी + सर्वो तार और पावर कॉर्ड से + तार जुड़े हों, वही - तारों के लिए जाता है।
तारों को टर्मिनल ब्लॉकों में संलग्न करें ताकि सभी + सर्वो तार और पावर कॉर्ड से + तार जुड़े हों, वही - तारों के लिए जाता है।

चरण 14: ब्रेडबोर्ड तार से सिर काट लें

ब्रेडबोर्ड वायर से सिर काट लें
ब्रेडबोर्ड वायर से सिर काट लें

ब्रेडबोर्ड वायर के स्ट्रिप्ड एंड को माइनस टर्मिनल ब्लॉक से और पिन एंड को अपने आर्डिनो में ग्राउंड पिन से अटैच करें। यदि आप ऐसा नहीं करते हैं तो मोटर बिना किसी इनपुट के गलत तरीके से आगे बढ़ेंगे।

चरण 15: आपके हाथ से निकलने वाले तारों के लिए बॉक्स के निचले भाग में तीन छेद ड्रिल करें।

छेद आधार कनेक्टर में छेद से मेल खाना चाहिए।

चरण 16: बेस कनेक्टर को बॉक्स में संलग्न करें

बेस कनेक्टर को बॉक्स में अटैच करें
बेस कनेक्टर को बॉक्स में अटैच करें

चरण 17: तार के खांचे को गहरा बनाने के लिए चाकू या कील फ़ाइल का उपयोग करें

तार के खांचे को गहरा बनाने के लिए चाकू या कील फ़ाइल का उपयोग करें
तार के खांचे को गहरा बनाने के लिए चाकू या कील फ़ाइल का उपयोग करें

तत्वों 2 और 3 के लिए तार खांचे बहुत उथले हैं।

चरण 18: आर्म का निर्माण करें

आर्म का निर्माण करें
आर्म का निर्माण करें

यहां दिए गए निर्देशों के अनुसार बांह का निर्माण करें आपको भागों को फाइल करने की आवश्यकता हो सकती है ताकि वे फिट हों

चरण 19: प्रसंस्करण और Arduino स्थापित करें

प्रसंस्करण और Arduino

चरण 20: कोड प्रोग्राम पेस्ट करें।

कोड इस पृष्ठ के नीचे है

चरण 21: सर्वो कंट्रोल पिन को Arduino से कनेक्ट करें

सर्वो कंट्रोल पिन को Arduino से कनेक्ट करें
सर्वो कंट्रोल पिन को Arduino से कनेक्ट करें

मैंने पहली मोटर को तीसरे डिजिटल पिन से, दूसरी मोटर को चौथे डिजिटल पिन से जोड़ा और इसी तरह। सुनिश्चित करें कि ग्राउंड पिन अभी भी - टर्मिनल ब्लॉक से जुड़ा है।

चरण 22: प्रसंस्करण में रीसेट बटन दबाएं, यह सभी हथियारों को 90 डिग्री पर सेट कर देगा

चरण 23: सर्वो आर्म्स को मोटर से क्षैतिज रूप से ठीक करें

चरण 24: तारों को भुजाओं के माध्यम से थ्रेड करें ताकि कोई ढीलापन न हो

सुनिश्चित करें कि आप तार को जितना हो सके उतने छेदों में पिरोएं, इससे यह अस्थायी रूप से पकड़ में आ जाएगा और निकालना आसान हो जाएगा।

चरण 25: हाथ का परीक्षण करें और आवश्यकतानुसार तारों को कसें या ढीला करें

चरण 26: इसे स्थायी बनाने के लिए तारों को सर्वो आर्म्स से गर्म करें

चरण 27: नोट्स

टिप्पणियाँ
टिप्पणियाँ

मैंने 0.5 मिमी के गहने तार का इस्तेमाल किया लेकिन 0.4 मिमी ठीक होना चाहिए। मूल डिजाइन में पीवीसी तार का इस्तेमाल किया गया था लेकिन वह बहुत आसानी से टूट गया और उसके साथ काम करना मुश्किल था।

यदि आप कार या बाइक में हाथ घुमाने जा रहे हैं, तो यह सुनिश्चित करने के लिए हाथ के जोड़ों को टेप में लपेटें कि वे बाहर न निकलें। यह तत्व 1 के लिए विशेष रूप से महत्वपूर्ण है।

जब मैंने इस परियोजना को शुरू किया तो मैं सोच रहा था कि तारों द्वारा नियंत्रित हाथ बनाने के तरीके पर मुझे केवल एक ट्यूटोरियल क्यों मिल सकता है। अब मैं समझता हूं कि हॉबी रोबोट आर्म बनाने का यह सबसे आम तरीका क्यों नहीं है। तार कभी-कभी उनके खांचे से गिर जाते हैं और पूरी चीज एक तरह की फीकी होती है। मुझे नहीं पता कि समस्याएँ इसलिए हैं क्योंकि मेरे पास बहुत अधिक अनुभव नहीं है या यदि पूरा विचार समस्याग्रस्त है, हालांकि मुझे यकीन है कि यह और अधिक ठोस होगा यदि मुझे पता है कि मैं क्या कर रहा था।

चरण 28: समस्या निवारण

तार के छेद 3डी प्रिंटेड तत्वों में बंद होते हैं:

आपने केवल बोल्ट के छेद के बजाय पूरे तत्व के लिए समर्थन जोड़ा। या तो तत्व को फिर से प्रिंट करें या वास्तव में गर्म सुई के साथ छेद खोलें।

COM पोर्ट बंद है, आप arduino के साथ संवाद नहीं कर सकते:

आपका arduino USB 3 पोर्ट को स्वीकार नहीं कर सकता (मेरा नहीं था), आप या तो USB 2 एक्सटेंशन केबल खरीद सकते हैं या USB 2 पोर्ट वाले कंप्यूटर का उपयोग कर सकते हैं

कोड काम नहीं कर रहा है:

इस ट्यूटोरियल का अनुसरण करें और अपना कोड बनाने के लिए इसे संशोधित करें

हाथ का एक हिस्सा हिल नहीं रहा है:

हो सकता है कि तार उलझ गए हों, इसे जांचने के लिए सर्वो आर्म को सर्वो से हटा दें और तारों को हाथ से खींचने का प्रयास करें। तारों को खोलना और अगर तारों को खींचना अभी भी मुश्किल है, तो आंदोलन को आसान बनाने के लिए कुछ WD-40 या स्नेहक का उपयोग करने का प्रयास करें

चरण 29: लिंक

नॉन रोबोटिक आर्म:

आर्म 3डी प्रिंटेबल्स:

माई आर्म 3डी प्रिंट करने योग्य:

Arduino और प्रसंस्करण:

चरण 30: कोड

इस कोड से संशोधित

Arduino कोड:

#include // मोटर्स सर्वो myservo1 घोषित करें; सर्वो myservo2; सर्वो myservo3; सर्वो myservo4; सर्वो myservo5; सर्वो myservo6; // सभी मोटर्स डिफ़ॉल्ट रूप से ९० डिग्री पर सेट हैं int current1 = ९०; इंट करंट2 = ९०; इंट करंट३ = ९०; इंट करंट4 = ९०; इंट करंट5 = 90; इंट करंट6 = ९०; // न्यूनतम और अधिकतम डिग्री मोटर्स int mini1 = 0 तक पहुंच सकती हैं; इंट मैक्सी१ = १८०; इंट मिनी2 = 0; इंट मैक्सी२ = १८०; इंट मिनी3 = 0; इंट मैक्सी३ = १८०; इंट मिनी4 = 0; इंट मैक्सी४ = १८०; इंट मिनी5 = 0; इंट मैक्सी५ = १८०; इंट मिनी6 = 0; इंट मैक्सी ६ = १८०; // वर्तमान स्थिति से जोड़ी या घटाई जाने वाली डिग्री int DegreeFoward = 5; // देरी इसलिए दो कार्य गलत क्रम में नहीं होते हैं int देरी के बीच कदम = 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.लिखें (वर्तमान ३); myservo4.लिखें (वर्तमान 4); myservo5.write(current5); myservo6.लिखें (वर्तमान 6); // सीरियल संचार शुरू @ 9600 बीपीएस Serial.begin (9600); } शून्य लूप () { अगर (सीरियल उपलब्ध ()) {// यदि डेटा चार वैल पढ़ने के लिए उपलब्ध है = सीरियल.रीड (); // इसे इस चार में डाल दें करंट1 = करंट1 - डिग्रीफॉरवर्ड; देरी (देरी के बीच कदम); } if(val == 'c' && current2 mini2){ myservo2.write(current2 - DegreeFward); current2 = current2 - डिग्री आगे; देरी (देरी के बीच कदम); } if(val == 'e' && current3 mini3){ myservo3.write(current3 - DegreeFoward); current3 = current3 - डिग्री आगे; देरी (देरी के बीच कदम); } if(val == 'g' && current4 mini4){ myservo4.write(current4 - DegreeFward); करंट4 = करंट4 - डिग्रीफॉरवर्ड; देरी (देरी के बीच कदम); } if(val == 'i' && current5 mini5){ myservo5.write(current5 - DegreeFward); करंट5 = करंट5 - डिग्रीफॉरवर्ड; देरी (देरी के बीच कदम); } if(val == 'k' && current6 mini6){ myservo6.write(current6 - DegreeFward); करंट6 = करंट6 - डिग्रीफॉरवर्ड; देरी (देरी के बीच कदम); } // गति नियंत्रण अगर (वैल == 'डब्ल्यू') {// यदि गति 1 बटन दबाया गया डिग्री फ़ॉवर्ड = 1; देरी (देरी के बीच कदम); } अगर (वैल == 'एक्स') {// अगर स्पीड 5 बटन दबाया गया डिग्रीफॉवर्ड = 5; देरी (देरी के बीच कदम); } अगर (वैल == 'y') {// यदि गति 10 बटन दबाया गया डिग्री फॉवर्ड = 10; देरी (देरी के बीच कदम); } अगर (वैल == 'जेड') {// यदि गति २० बटन दबाया गया डिग्री फॉवर्ड = २०; देरी (देरी के बीच कदम); } अगर (वैल == 'आर') {// यदि गति 20 बटन दबाया myservo1.write(90); वर्तमान1 = ९०; myservo2.लिखें (९०); वर्तमान २ = ९०; myservo3.लिखें (९०); वर्तमान ३ = ९०; myservo4.लिखें (९०); वर्तमान ४ = ९०; myservo5.लिखें (९०); वर्तमान ५ = ९०; myservo6.लिखें (९०); वर्तमान ६ = ९०; देरी (देरी के बीच कदम); } } }

प्रसंस्करण कोड:

आयात प्रसंस्करण। धारावाहिक। *; आयात नियंत्रणP5.*; // आयात ControlP5 पुस्तकालय सीरियल पोर्ट; कंट्रोलपी5 सीपी5; // ControlP5 ऑब्जेक्ट PFont फ़ॉन्ट बनाएं; शून्य सेटअप () {// arduino प्रोग्राम आकार (300, 700) के समान; // खिड़की का आकार, (चौड़ाई, ऊंचाई) प्रिंटअरे (सीरियल। सूची ()); // सभी उपलब्ध सीरियल पोर्ट को प्रिंट करता है // यदि आपको कोई समस्या हो रही है तो यह शायद यहां से आता है स्ट्रिंग पोर्टनाम = सीरियल.लिस्ट () [0]; पोर्ट = नया सीरियल (यह, पोर्टनाम, 9600); // मैंने arduino को com3 से जोड़ा है, यह linux और mac os में अलग होगा // खाली विंडो में बटन जोड़ने देता है cp5 = new ControlP5 (यह); फ़ॉन्ट = createFont ("एरियल", 13); // बटन और शीर्षक के लिए कस्टम फोंट // स्पीड कंट्रोल बटन cp5.addButton ("वन") // "वन" बटन का नाम है। सेटपोजिशन (50, 50) // बटन के ऊपरी बाएं कोने के x और y निर्देशांक.setSize(55, 25) //(चौड़ाई, ऊंचाई).setFont(font); 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(font); 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(font); 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); } शून्य ड्रा () {// arduino पृष्ठभूमि में लूप के समान (192, 215, 249); // विंडो का बैकग्राउंड कलर (r, g, b) या (0 से 255) // टेक्स्ट जोड़ें जिसमें स्पीड कंट्रोल स्पीड कंट्रोल फिल है (0, 10, 25); // पाठ का रंग (आर, जी, बी) टेक्स्टफ़ॉन्ट (फ़ॉन्ट); पाठ ("गति नियंत्रण", 50, 40); // ("पाठ", x समन्वय, y समन्वय) } // हमारे बटन में कुछ फ़ंक्शन जोड़ने देता है // इसलिए जब आप कोई बटन दबाते हैं, तो यह सीरियल पोर्ट पर विशेष चार भेजता है // मुझे यकीन है कि स्ट्रिंग भेजना संभव है वर्णों के बजाय, और यह अधिक समझ में आता है लेकिन मुझे नहीं पता कि यह कैसे करना है // स्पीड कंट्रोल कमांड शून्य एक() {port.write ('w'); } शून्य पांच () { port.write ('x'); } शून्य दस () { port.write ('y'); } शून्य बीस () { port.write ('z'); }//मोटर नियंत्रण आदेश शून्य Servo_1_Foward(){ port.write('a'); } शून्य सर्वो_1_बैक () { port.write ('बी'); } शून्य सर्वो_2_फॉवर्ड (){ port.write('c'); } शून्य सर्वो_2_बैक () { port.write ('डी'); } शून्य सर्वो_3_फॉवर्ड () {port.write ('ई'); } शून्य सर्वो_3_बैक () { port.write ('f'); } शून्य सर्वो_4_फॉवर्ड () { port.write ('g'); } शून्य Servo_4_Back(){ port.write('h'); } शून्य सर्वो_5_फॉवर्ड () { port.write ('i'); } शून्य Servo_5_Back(){ port.write('j'); } शून्य सर्वो_6_फॉवर्ड () { port.write ('k'); } शून्य Servo_6_Back(){ port.write('l'); } शून्य रीसेट () { port.write ('आर'); }

चरण 31: अधिक चित्र

सिफारिश की: