Հաղորդալարով կառավարվող ռոբոտի բազուկ ՝ 31 քայլ
Հաղորդալարով կառավարվող ռոբոտի բազուկ ՝ 31 քայլ

Բովանդակություն:

Anonim
Հաղորդալարով կառավարվող ռոբոտի բազուկ
Հաղորդալարով կառավարվող ռոբոտի բազուկ

Սա ձեռնարկ է, թե ինչպես պատրաստել ռոբոտի թև, որը կառավարվում է լարերով: Լարերի օգտագործման առավելությունն այն է, որ ձեր թևն ավելի թեթև է, և դուք կարող եք ունենալ ձեր բոլոր շարժիչները ձեր թևի ներքևում, ինչը հեշտացնում է շինարարությունն ու սպասարկումը: Ահա մի տեսահոլովակ, որը ներկայացնում է ձեռքի գործողությունը: Ես պլանավորում եմ հետագայում ճանկ ավելացնել, որպեսզի այն կարողանա իրերը վերցնել և ոչ միայն դրանք հետ շպրտել:

3D տպագրվող նյութեր.

Այստեղ և այստեղ

Պարագաներ

6 Servo Motors (MG995)

Արդուինո Ունո

Մոտ 6 մետր պլաստմասե պողպատե մետաղալար (0.5 մմ)

Տուփ 23x33x10 (կարող է լինել ավելի նեղ, միանշանակ չպետք է լինի ավելի կարճ)

Փայտե տախտակ 33x10

Ընկույզ և պտուտակներ

Խողովակ 14 սմ (սա անհրաժեշտ է լարերը ուղղորդելու համար)

4 L- փակագծեր

5 վոլտ ադապտեր

2 7-ճանապարհ տերմինալային բլոկ

Հացաթղթերի լարեր

3D տպագիր բաղադրիչներ (Իմ կողմից նախագծված չեն, նկարագրության տարրերի հղումներ).

3 «Հեղույսներ»

2 «Տարր 1»

1 «Տարր 2»

2 «Տարր 3»

1 բազային միակցիչ

Քայլ 1: Տպեք բոլոր 3D բաղադրիչները

Հնարավոր է, որ պտուտակների անցքերի և կամարների համար աջակցություն պահանջվի, բայց համոզվեք, որ ձեր բաղադրիչների մարմնին աջակցություն չավելացնեք. սա կփակի մետաղալարերի փոքր անցքերը, և ձեզ հարկավոր կլինի նոր անցքեր անել

Քայլ 2. (Ըստ ցանկության) Ամրացրեք փայտե տախտակը ձեր տուփի ներքևում `այն ամրացնելու համար

Իմ տուփը բավականին թույլ էր, քոնը կարող է չլինել

Քայլ 3. Չափեք և կտրեք մի տախտակ, որը հարմար է տուփին

Քայլ 4. Նշեք շարժիչների դիրքերը

համոզվեք, որ ձեռքերից ոչ մեկը չի դիպչում միմյանց

Քայլ 5. Նշեք փակագծերի և խողովակների դիրքերը:

Նշեք փակագծերի և խողովակների դիրքերը
Նշեք փակագծերի և խողովակների դիրքերը

Խողովակը պետք է տեղադրվի փոսի դիմաց մոտ մեկ սանտիմետր

Քայլ 6. Հորատեք անցք ձեր տուփից դուրս եկող մալուխների համար (USB և հոսանք)

Հորատեք անցք ձեր տուփից դուրս եկող մալուխների համար (USB և հոսանք)
Հորատեք անցք ձեր տուփից դուրս եկող մալուխների համար (USB և հոսանք)

Քայլ 7: Հորատեք և տեսեք բոլոր նշված անցքերը

Հորատեք և տեսեք բոլոր նշված անցքերը
Հորատեք և տեսեք բոլոր նշված անցքերը

Քայլ 8. Կցեք շարժիչներն ու խողովակը տախտակին

Քայլ 9. Կցեք տախտակը L- փակագծերով տուփին

Քայլ 10. Վերցրեք ձեր տերմինալային բլոկները և միասին կպցրեք լարերը

Վերցրեք ձեր տերմինալային բլոկները և միասին կպցրեք լարերը
Վերցրեք ձեր տերմինալային բլոկները և միասին կպցրեք լարերը

Քայլ 11. Կտրեք ադապտերների հոսանքի լարի ծայրը և կպցրեք լարերը

Քայլ 12: Բացահայտեք և նշեք Plus և Minus լարերը

Քայլ 13: Լարերը ամրացրեք տերմինալային բլոկներին, որպեսզի բոլոր + servo լարերը և հոսանքի լարից + լարերը միացված լինեն, նույնը `լարերի դեպքում:

Կցեք լարերը տերմինալային բլոկներին այնպես, որ բոլոր + servo լարերը և հոսանքի լարից + լարերը միացված լինեն, նույնը `լարերի դեպքում
Կցեք լարերը տերմինալային բլոկներին այնպես, որ բոլոր + servo լարերը և հոսանքի լարից + լարերը միացված լինեն, նույնը `լարերի դեպքում

Քայլ 14. Գլուխը կտրեք տախտակի մետաղալարից

Գլուխը կտրեք տախտակի մետաղալարից
Գլուխը կտրեք տախտակի մետաղալարից

Կցեք տախտակի մետաղալարի պոկված ծայրը մինուս տերմինալային բլոկին, իսկ քորոցի ծայրը ՝ ձեր արդուինոյում հիմնավորված քորոցին: Եթե դա չանեք, շարժիչները կշարժվեն անկանոն ՝ առանց որևէ մուտքի:

Քայլ 15. Երեք անցք արկղի ներքևում ՝ ձեր թևից դուրս եկող լարերի համար:

Անցքերը պետք է համապատասխանեն հիմքի միակցիչի անցքերին:

Քայլ 16. Կցեք բազայի միակցիչը տուփին

Կցեք բազայի միակցիչը տուփին
Կցեք բազայի միակցիչը տուփին

Քայլ 17. Օգտագործեք դանակ կամ եղունգների ֆայլ ՝ մետաղալարերը ավելի խորը դարձնելու համար

Օգտագործեք դանակ կամ եղունգների ֆայլ ՝ մետաղալար ակոսներն ավելի խորացնելու համար
Օգտագործեք դանակ կամ եղունգների ֆայլ ՝ մետաղալար ակոսներն ավելի խորացնելու համար

2 -րդ և 3 -րդ տարրերի համար մետաղալարերի ակոսները չափազանց մակերեսային են:

Քայլ 18. Կառուցեք թևը

Կառուցեք թևը
Կառուցեք թևը

Կառուցեք թևը ՝ այստեղ տրված հրահանգների համաձայն, գուցե անհրաժեշտ լինի մասերը լղոզել այնպես, որ դրանք տեղավորվեն

Քայլ 19: Տեղադրեք Processing և Arduino

Մշակում և Arduino

Քայլ 20: Տեղադրեք ծածկագրի ծրագրերը:

Այս ծածկագիրը գտնվում է այս էջի ներքևում

Քայլ 21. Միացրեք Servo Control Pins- ը Arduino- ին

Միացրեք Servo Control Pins- ը Arduino- ին
Միացրեք Servo Control Pins- ը Arduino- ին

Առաջին շարժիչը միացրեցի երրորդ թվային կապին, երկրորդ շարժիչը ՝ չորրորդ թվային կապին և այլն: Համոզվեք, որ գրունտի քորոցը դեռ միացված է տերմինալային բլոկին:

Քայլ 22. Մշակման ընթացքում սեղմեք Վերակայման կոճակը: Սա բոլոր զենքերը կդնի 90 աստիճանի

Քայլ 23. Հորիզոնական ուղղեք Servo Arms- ը շարժիչին

Քայլ 24. Անցեք լարերը թևերի միջով, որպեսզի թուլություն չլինի

Համոզվեք, որ մետաղալարն անցկացնում եք որքան հնարավոր է շատ անցքերով, դա ժամանակավորապես կպահի այն և հեշտությամբ կհեռացվի:

Քայլ 25. Փորձարկեք թևը և լարված կամ թուլացրեք լարերը ըստ անհրաժեշտության

Քայլ 26. Թեժ սոսնձեք լարերը Servo Arms- ին ՝ այն մշտական դարձնելու համար

Քայլ 27. Նշումներ

Նշումներ
Նշումներ

Ես օգտագործել եմ 0.5 մմ զարդերի մետաղալար, բայց 0.4 մմ -ը պետք է լավ լինի: Օրիգինալ դիզայնում օգտագործվում էր PVC մետաղալար, սակայն այն շատ հեշտությամբ էր կոտրվում և դրա հետ աշխատելը դժվար էր:

Եթե դուք պատրաստվում եք ձեռքը շարժել մեքենայով կամ հեծանիվով, փաթեթավորեք ձեռքի հոդերը ժապավենով, որպեսզի համոզվեք, որ դրանք դուրս չեն թռչի: Սա հատկապես կարևոր է 1 -ին տարրի համար:

Երբ ես սկսեցի այս նախագիծը, ես մտածում էի, թե ինչու կարող եմ գտնել միայն մեկ ձեռնարկ, թե ինչպես պատրաստել մետաղալարերով կառավարվող թև: Հիմա ես հասկանում եմ, թե ինչու սա ռոբոտի հոբբի թև պատրաստելու ամենատարածված ձևը չէ: Հաղորդալարերը երբեմն ընկնում են նրանց ակոսներից, և ամբողջը մի տեսակ անշուք է: Չգիտեմ, արդյոք խնդիրներն այն են, որ ես մեծ փորձ չունե՞մ, թե՞ ամբողջ գաղափարը խնդրահարույց է, չնայած վստահ եմ, որ այն ավելի հիմնավոր կլիներ, եթե իմանայի, թե ինչ եմ անում:

Քայլ 28. Խնդիրների վերացում

Մետաղալարերի անցքերը փակված են 3D տպված տարրերի մեջ.

Դուք ավելացրել եք աջակցություն ամբողջ տարրի համար ՝ միայն պտուտակների անցքերի փոխարեն: Կամ նորից տպեք տարրը, կամ բացեք անցքերը իսկապես տաք ասեղով:

COM նավահանգիստը փակ է, դուք չեք կարող շփվել arduino- ի հետ.

Ձեր arduino- ն կարող է չընդունել USB 3 պորտերը (իմը չի ընդունել), կարող եք կամ գնել USB 2 երկարացման մալուխ, կամ օգտագործել համակարգիչ, որն ունի USB 2 պորտ

Կոդը չի գործում.

Հետևեք այս ձեռնարկին և փոփոխեք այն ՝ ձեր սեփական ծածկագիրը կազմելու համար

Թևի մի մասը չի շարժվում.

Հնարավոր է, որ լարերը խճճվել են, դա ստուգելու համար հեռացրեք սերվոյի թևը սերվոյից և փորձեք լարերը ձեռքով քաշել: Անջատեք լարերը, և եթե դեռ դժվար է լարերը քաշելը, փորձեք օգտագործել WD-40 կամ քսանյութ ՝ շարժումն ավելի հեշտացնելու համար:

Քայլ 29: Հղումներ

Ոչ ռոբոտային թև ՝

Arm 3D տպագրվող սարքեր ՝

Իմ ձեռքը 3D տպագրելի ՝

Arduino և մշակում ՝

Քայլ 30: Կոդ

Փոփոխվել է այս ծածկագրից

Arduino կոդ:

#ներառել // Հայտարարել շարժիչները Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Բոլոր շարժիչները լռելյայնորեն սահմանվում են 90 աստիճանի սահմաններում int ընթացիկ 1 = 90; int ընթացիկ 2 = 90; int ընթացիկ 3 = 90; int ընթացիկ 4 = 90; int ընթացիկ 5 = 90; int ընթացիկ 6 = 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 աստիճաններՈւղղություն = 5; // Հետաձգել այնպես, որ երկու գործառույթներ տեղի չունենան սխալ հերթականությամբ int delayBetweenSteps = 100; void setup () {// Սահմանել յուրաքանչյուր շարժիչի myservo1.attach (3) կառավարման կապում; myservo2.attach (4); myservo3. կցել (5); myservo4. կցել (6); myservo5. կցել (7); myservo6. կցել (8); // Բոլոր շարժիչները դարձրեք myservo1.write (current1) լռելյայն պարամետրին; myservo2.write (ընթացիկ 2); myservo3. գրել (ընթացիկ 3); myservo4. գրել (ընթացիկ 4); myservo5. գրել (ընթացիկ 5); myservo6. գրել (ընթացիկ 6); // սկսել սերիական հաղորդակցություն @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// եթե տվյալները հասանելի են կարդալ val val = Serial.read (); // տեղադրել այն այս նշանի մեջ // Motor Controls if (val == 'a' && current1 + gradFoward mini1) {myservo1.write (current1 - gradFoward); ընթացիկ 1 = ընթացիկ 1 - աստիճան դեպի առաջ; ուշացում (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - gradFoward); ընթացիկ 2 = ընթացիկ 2 - աստիճան դեպի առաջ; ուշացում (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - gradFoward); ընթացիկ 3 = ընթացիկ 3 - աստիճան դեպի առաջ; ուշացում (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - gradFoward); ընթացիկ 4 = ընթացիկ 4 - աստիճան դեպի առաջ; ուշացում (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - gradFoward); ընթացիկ 5 = ընթացիկ 5 - աստիճան դեպի առաջ; ուշացում (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - gradFoward); ընթացիկ 6 = ընթացիկ 6 - աստիճան դեպի առաջ; ուշացում (delayBetweenSteps); } // Speed Controls if (val == 'w') {// Եթե արագության 1 կոճակը սեղմված է աստիճաններFoward = 1; ուշացում (delayBetweenSteps); } if (val == 'x') {// Եթե արագության 5 կոճակը սեղմված է աստիճաններFoward = 5; ուշացում (delayBetweenSteps); } if (val == 'y') {// Եթե արագության 10 կոճակը սեղմված է աստիճաններFoward = 10; ուշացում (delayBetweenSteps); } if (val == 'z') {// Եթե արագության 20 կոճակը սեղմված է աստիճաններՀարց = 20; ուշացում (delayBetweenSteps); } if (val == 'r') {// Եթե արագության 20 կոճակը սեղմել է myservo1.write (90); ընթացիկ 1 = 90; myservo2.write (90); ընթացիկ 2 = 90; myservo3. գրել (90); ընթացիկ 3 = 90; myservo4. գրել (90); ընթացիկ 4 = 90; myservo5. գրել (90); ընթացիկ 5 = 90; myservo6. գրել (90); ընթացիկ 6 = 90; ուշացում (delayBetweenSteps); }}}

Մշակման կոդ:

ներմուծման մշակում. սերիա:*; ներմուծման հսկողություն P5.*; // ներմուծել ControlP5 գրադարան Սերիական նավահանգիստ; ControlP5 cp5; // ստեղծել ControlP5 օբյեկտի PFont տառատեսակ; void setup () {// նույնը, ինչ arduino ծրագրի չափը (300, 700); // պատուհանի չափը, (լայնությունը, բարձրությունը) printArray (Serial.list ()); // տպում է առկա բոլոր սերիական նավահանգիստները // Եթե խնդիր ունեք, հավանաբար այստեղից է գալիս String portName = Serial.list () [0]; նավահանգիստ = նոր Սերիա (սա, portName, 9600); // ես arduino- ն միացրել եմ com3- ին, linux- ում և mac os- ում դա այլ կերպ կլիներ // թույլ է տալիս բութոն ավելացնել դատարկ պատուհանին cp5 = նոր ControlP5 (սա); font = createFont ("Arial", 13); // կոճակների և վերնագրի հարմարեցված տառատեսակներ // Արագության կառավարման կոճակներ cp5.addButton ("One") // "One" - ը կոճակի.setPosition (50, 50) // կոճակի վերին ձախ անկյունի x և y կոորդինատներն են:.setSize (55, 25) // (լայնություն, բարձրություն).setFont (տառատեսակ); cp5.addButton («Հինգ»).setPosition (110, 50).setSize (55, 25).setFont (տառատեսակ); cp5.addButton («Տասը»).setPosition (170, 50).setSize (55, 25).setFont (տառատեսակ); cp5.addButton («Քսան»).setPosition (230, 50).setSize (55, 25).setFont (տառատեսակ); cp5.addButton («Վերականգնել»).setPosition (110, 2).setSize (55, 25).setFont (տառատեսակ); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (տառատեսակ); // Motor Control Buttons cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (տառատեսակ); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (տառատեսակ); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (տառատեսակ); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (տառատեսակ); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (լայնություն, բարձրություն).setFont (տառատեսակ); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (տառատեսակ); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (լայնություն, բարձրություն).setFont (տառատեսակ); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (տառատեսակ); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (տառատեսակ); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (տառատեսակ); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (տառատեսակ); } void draw () {// նույնը, ինչ arduino ֆոնի օղակը (192, 215, 249); // պատուհանի ֆոնի գույնը (r, g, b) կամ (0 -ից 255) // Ավելացնել տեքստ, որն ասում է, որ արագության կառավարումը արագության վերահսկման լրացում է (0, 10, 25); // տեքստի գույնը (r, g, b) textFont (տառատեսակ); տեքստ («Արագության վերահսկում», 50, 40); // («տեքստ», x կոորդինատ, y կոորդինատ)} // թույլ է տալիս որոշ գործառույթներ ավելացնել մեր կոճակներին // այնպես որ, երբ որևէ կոճակ սեղմելիս, այն հատուկ նշան է ուղարկում սերիական պորտին // վստահ եմ, որ հնարավոր է տողեր ուղարկել տառերի փոխարեն, և դա ավելի իմաստալից կլիներ, բայց ես չգիտեմ, թե ինչպես դա անել // Speed Control Commands void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Քսան () {port.write ('z'); } // Motor Control Commands void Servo_1_Foward () {port.write ('a'); } void Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } void Servo_2_Back () {port.write ('d'); } void Servo_3_Foward () {port.write ('e'); } void Servo_3_Back () {port.write ('f'); } void Servo_4_Foward () {port.write ('g'); } void Servo_4_Back () {port.write ('h'); } void Servo_5_Foward () {port.write ('i'); } void Servo_5_Back () {port.write ('j'); } void Servo_6_Foward () {port.write ('k'); } void Servo_6_Back () {port.write ('l'); } void Վերագործարկեք () {port.write ('r'); }

Քայլ 31. Ավելի շատ նկարներ

Խորհուրդ ենք տալիս: