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

Robotic Arm Controlled by Arduino and PC: 10 Steps
Robotic Arm Controlled by Arduino and PC: 10 Steps

Video: Robotic Arm Controlled by Arduino and PC: 10 Steps

Video: Robotic Arm Controlled by Arduino and PC: 10 Steps
Video: DIY Arduino Robot Arm - Controlled by Hand Gestures | Full Tutorial 2024, Հուլիսի
Anonim
Image
Image
Տեսություն նախագծի հետևում
Տեսություն նախագծի հետևում

Ռոբոտային զենքը լայնորեն օգտագործվում է արդյունաբերության մեջ: Անկախ նրանից, թե դա հավաքման աշխատանքների համար է, Եռակցումը կամ նույնիսկ մեկը օգտագործվում է ISS (Միջազգային տիեզերակայան) միանալու համար, դրանք օգնում են մարդկանց աշխատանքում կամ դրանք ամբողջությամբ փոխարինում են մարդուն: Իմ կառուցած ձեռքը ռոբոտային թևի ավելի փոքր ներկայացում է, որը ենթադրաբար պետք է օգտագործվի շարժվող օբյեկտների համար: Այն կառավարվում է arduino pro mini- ի միջոցով, որն արդեն ներկառուցված գրադարան ունի սերվերի վերահսկման համար: Servos- ը վերահսկվում է PWM- ի կողմից (Pulse Width Modulation), որը դժվար չէ ծրագրավորել, բայց այս գրադարանը հեշտացնում է այն: Օգտվողը կարող է վերահսկել այդ սերվերը պոտենցիոմետրերով, որոնք նախատեսված են հանդես գալու որպես լարման բաժանարարներ կամ համակարգչի ծրագրից, որն օգտագործում է 4 սահնակ սերվո շարժիչների կառավարման համար:

Այս նախագծի համար ես պետք է նախագծեի իմ անհատական PCB- ն և պատրաստեի այն, ստեղծեի ձեռքի 3D մոդելներ և գրեի այն կոդը, որը վերահսկում է այդ ամենը: Դրա վերևում ես ծածկագրեցի լրացուցիչ ծրագիր python- ում, որն ազդանշաններ է ուղարկում arduino- ին, որը կարողանում է վերծանել այդ ազդանշանը և սերվոները տեղափոխել այն օգտագործողի դրած դիրքը:

Քայլ 1. oryրագրի հետևում գտնվող տեսություն

Տեսություն նախագծի հետևում
Տեսություն նախագծի հետևում

Arduino- ն հիանալի է այն առումով, որ առաջարկում է աշխատելու անվճար գրադարան: Այս նախագծի համար ես օգտագործեցի Servo.h գրադարանը, որն ավելի հեշտացնում է սերվերի սպասարկումը:

Servo շարժիչը վերահսկվում է PWM- ի կողմից `Pulse Width Modulation- ը, ինչը նշանակում է, որ servo- ն վերահսկելու համար անհրաժեշտ է կատարել կարճ լարման իմպուլսներ: Servo- ն կարող է վերծանել այս ազդանշանի երկարությունը և պտտվել տվյալ դիրքի: Եվ այստեղ ես օգտագործեցի արդեն նշված գրադարանը: Ես ստիպված չէի ինքնուրույն հաշվարկել ազդանշանի երկարությունը, բայց ես օգտագործել եմ գրադարանի գործառույթները, որոնց պարամետրը փոխանցում եմ աստիճաններով և ազդանշան է տալիս:

Սերվերի կառավարման համար ես օգտագործել եմ պոտենցիոմետրեր, որոնք գործում են որպես լարման բաժանարարներ: Arduino- ի տախտակները ունեն մի քանի անալոգային/թվային կերպափոխիչներ, որոնք ես օգտագործել եմ նախագծի համար: Հիմնականում arduino- ն վերահսկում է պոտենցիոմետրի միջին քորոցի լարումը և եթե այն պտտվում է մի կողմի լարման վրա, այն 0 վոլտ է (արժեք = 0), իսկ մյուս կողմից `5 վոլտ (արժեքը = 1023): Այս արժեքը այնուհետև սանդղակվում է 0 - 1023 - ից 0 - 180 միջակայքում, այնուհետև անցնում է արդեն նշված գործառույթին:

Մեկ այլ թեմա է arduino- ի հետ սերիական հաղորդակցությունը, որը ես կարճ կանդրադառնամ: Հիմնականում համակարգչի վրա գրված ծրագիրը ուղարկում է օգտագործողի կողմից ընտրված արժեք, arduino- ն կարող է այն վերծանել և սերվոն տեղափոխել տվյալ դիրքը

Քայլ 2: PCB- ի նախագծում

PCB- ի նախագծում
PCB- ի նախագծում
PCB- ի նախագծում
PCB- ի նախագծում
PCB- ի նախագծում
PCB- ի նախագծում

Ես նախագծել եմ 2 հատ PCB, մեկը `հիմնական կառավարման համար, որտեղ գտնվում է arduino- ն և սերվերի համար նախատեսված կապում, իսկ երկրորդը` պոտենցիոմետրեր: 2 PCB- ի պատճառն այն է, որ ես ցանկանում էի ռոբոտացված ձեռքը վերահսկել անվտանգ հեռավորությունից: Երկու սխեմաներն էլ միացված են տվյալ երկարության մալուխով `իմ դեպքում 80 սմ:

Էլեկտրաէներգիայի աղբյուրի համար ես ընտրել եմ արտաքին ադապտեր, քանի որ իմ օգտագործած սերվերը շատ ավելի մեծ էներգիա են սպառում, քան arduino- ն կարող է ապահովել: Ինչպես տեսնում եք, կան մի քանի կոնդենսատորներ, որոնց մասին ես դեռ չեմ նշել: Նրանք կոնդենսատորներ են, որոնք օգտագործվում են ֆիլտրման համար: Ինչպես գիտեք այժմ, servo շարժիչը կառավարվում է կարճ իմպուլսներով: Այդ ազդակները կարող են ստիպել մատակարարման լարման անկումներին և պոտենցիոմետրերին, որոնք նախկինում 0-5 վոլտ էին, այժմ ունեն ավելի փոքր տիրույթ: Դա նշանակում է, որ միջին քորոցի լարումը փոխվում է, և arduino- ն ստանում է այս արժեքը և փոխում է servo շարժիչի դիրքը: Սա կարող է շարունակվել հավերժ և առաջացնել անցանկալի տատանումներ, որոնք կարող են վերացվել մատակարարմանը զուգահեռ որոշ կոնդենսատորների կողմից:

Քայլ 3: PCB- ի պատրաստում

PCB- ի պատրաստում
PCB- ի պատրաստում
PCB- ի պատրաստում
PCB- ի պատրաստում
PCB- ի պատրաստում
PCB- ի պատրաստում

PCB պատրաստելու համար ես առաջարկում եմ ձեզ կարդալ սա:

Ես օգտագործեցի Iron on Glossy թղթի մեթոդը և այն հիանալի ստացվեց:

Հետո ես մասեր կպցրեցի PCB- ի վրա: Դուք կարող եք տեսնել, որ ես օգտագործել եմ arduino վարդակից այն դեպքում, երբ ապագայում դրա կարիքը կունենամ:

Քայլ 4. Ձեռքի նախագծում

Ձևավորում թևը
Ձևավորում թևը
Ձևավորում թևը
Ձևավորում թևը
Ձևավորում թևը
Ձևավորում թևը

Սա ամենևին էլ այս նախագիծը պատրաստելու ամենադժվար մասը չէր:

Ամբողջական տեղադրումը կազմված է 8 մասից, որտեղ 4 -ը շարժական մասեր չեն `տուփ պոտենցիոմետրերի համար և հիմք, որտեղ գտնվում է arduino- ն, իսկ մյուս չորսը ձեռքն են: Ես շատ մանրամասների չեմ անդրադառնա, բացառությամբ, որ դիզայնը բավականին ինտուիտիվ է և ինչ -որ կերպ պարզ: Այն նախատեսված է իմ անհատական PCB- ի և servos- ի համար, որոնք ես ներառելու եմ մասերի ցանկում:

Քայլ 5: Մասերի տպում

Մասերի տպագրություն
Մասերի տպագրություն
Մասերի տպագրություն
Մասերի տպագրություն
Մասերի տպագրություն
Մասերի տպագրություն

Մասերը տպագրվել են Prusa տպիչով: Որոշ երեսերի համար անհրաժեշտ էր մի փոքր մանրացնել, իսկ անցքերն անցքերով անցնել: Նաև անհրաժեշտ էր հանել սյուները:

Քայլ 6: Ամեն ինչ միասին դնել

Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը
Այդ ամենը միասին դնելը

Այս քայլում, ինչպես ասում է վերնագիրը, ես ամեն ինչ հավաքեցի:

Սկզբում ես լարեր կպցրեցի պոտենցիոմետրերի վրա, իսկ հետո այդ լարերը ՝ PCB- ի վրա: Պոտենցիոմետրերը լավ տեղավորվում են անցքերի մեջ, և ես տաք սոսնձեցի PCB- ն այն սյուների վրա, որոնք տպված էին տուփի ներքևում: Դուք կարող եք անցքեր բացել տախտակի և տուփի մեջ, բայց ես պարզեցի, որ այն սոսնձելը ավելի քան բավարար է: Հետո ես փակեցի արկղի երկու մասերը և ամրացրեցի դրանք 4 պտուտակներով, որոնք տեղավորվում էին իմ նախագծած անցքերի մեջ:

Որպես հաջորդ քայլ, ես պատրաստեցի հարթ ժապավենային մալուխ `երկու տախտակները միացնելու համար:

Հիմնական տուփում ես լարեր եմ միացրել VCC միակցիչից միացման համար, այնուհետև տախտակի Vcc- ից, իսկ տախտակից GND- ից միակցիչի GND- ին: Հետո ես տաք սոսնձեցի միակցիչը տեղում և խորհուրդը սյուների վրա: Միակցիչը տեղավորվում է անմիջապես անցքի մեջ, այնպես որ տաք սոսինձ անհրաժեշտ չէ:

Հետո, պտուտակներ օգտագործելով, ես կցեցի ներքևի սերվերը տուփի ներքևին:

Դրանից հետո տուփի վերին հատվածը դրեցի ներքևի մասի վրա և նույնը, ինչ պոտենցիոմետրերի արկղով, ամրացրեցի այն 4 պտուտակով:

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

Եվ որպես վերջին քայլ ես տուփերի ներքևի մասում ժապավեն դրեցի, քանի որ հակառակ դեպքում դրանք սահելու էին:

Քայլ 7: Arduino- ի ծրագրավորում

Arduino ծրագրավորում
Arduino ծրագրավորում
Arduino ծրագրավորում
Arduino ծրագրավորում
Arduino ծրագրավորում
Arduino ծրագրավորում

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

Այսպիսով, սկզբում մենք պետք է որոշ փոփոխականներ սահմանենք: Հիմնականում այն 4 անգամ պատճենվում է, քանի որ մենք ունենք 4 սերվո, և իմ կարծիքով ավելորդ տրամաբանություն ստեղծելը պարզապես ծրագիրը մի փոքր կարճացնելու համար ավելորդ է:

Հաջորդը դատարկ տեղադրում է, որտեղ սահմանվում են սերվերի կապերը:

Հետո կա դատարկ շրջան - ծրագրի մի մաս, որը անվերջ պտտվում է: Այս մասում ծրագիրը վերցնում է պոտենցիոմետրի սանդղակի արժեքը և դնում ելքը: Բայց կա մի խնդիր, որ պոտենցիոմետրից ստացված արժեքը բավականին ցատկում է, ուստի ես պետք է ավելացնեի զտիչ, որը միջինից կազմում է վերջին 5 արժեքները, այնուհետև այն թողնում է ելքը: Սա կանխում է անցանկալի տատանումները:

Lastրագրի վերջին մասը կարդում է սերիական նավահանգստի տվյալները և որոշում, թե ինչ անել `ուղարկված տվյալների հիման վրա:

Կոդն ամբողջությամբ հասկանալու համար առաջարկում եմ այցելել arduino- ի պաշտոնական կայքեր:

Քայլ 8: mingրագրավորում Python- ում

Programրագրավորում Python- ում
Programրագրավորում Python- ում
Programրագրավորում Python- ում
Programրագրավորում Python- ում
Programրագրավորում Python- ում
Programրագրավորում Python- ում

Այս նախագծի այս մասն անհրաժեշտ չէ, բայց ես կարծում եմ, որ այն միայն ավելի մեծ արժեք է տալիս այս նախագծին:

Python- ն առաջարկում է բազմաթիվ գրադարաններ, որոնք անվճար են, բայց այս նախագծում ես օգտագործում եմ միայն tkinter և սերիալներ: Tkinter- ը օգտագործվում է GUI- ի համար (Graphical User Interface), իսկ սերիալն, ինչպես ասում է իր անունը, օգտագործվում է սերիական հաղորդակցության համար:

Այս ծածկագիրը ստեղծում է GUI ՝ 4 սահիկներով, որոնք ունեն նվազագույն 0 և առավելագույն 180 արժեքներ: Ձեզ համար կարող է ակնարկ լինել, որ այն աստիճանների է, և յուրաքանչյուր սահող ծրագրված է վերահսկելու մեկ սերվո: Այս ծրագիրը բավականին պարզ է. Այն վերցնում է արժեքը և ուղարկում այն arduino- ին: Բայց այն ուղարկելու եղանակը հետաքրքիր է: Եթե որոշեք փոխել առաջին սերվոյի արժեքը 123 աստիճանի, այն ուղարկում է arduino արժեքին 1123: Յուրաքանչյուր ուղարկված համարի առաջին համարը ցույց է տալիս, թե որ սերվոն է վերահսկվելու: Arduino- ն ունի կոդ, որը կարող է վերծանել սա և տեղափոխել ճիշտ սերվոն:

Քայլ 9: Մասերի ցանկ

Մասերի ցանկ
Մասերի ցանկ
  • Arduino Pro Mini 1 հատ
  • Servo FS5106B 1 հատ
  • Servo Futaba S3003 2 հատ
  • Պին գլխագիր 2x5 1 հատ
  • Պին գլխագիր 1x3 6 հատ
  • Կոնդենսատոր 220uF 3 հատ
  • Micro Servo FS90 1 հատ
  • Միակցիչ AWP-10 2 հատ
  • Միակցիչ FC681492 1 հատ
  • Անջատիչ P-B100G1 1 հատ
  • Վարդակից 2x14 1 հատ
  • TTL-232R-5v-փոխարկիչ 1 հատ
  • Պոտենցիոմետր B200K 4 հատ
  • և շատ այլ պտուտակներ, բարձիկներ և ընկույզներ

Քայլ 10: Վերջնական մտքեր

Շնորհակալ եմ սա կարդալու համար և հույս ունեմ, որ ես գոնե մոտիվացրել եմ ձեզ: Սա իմ առաջին ավելի մեծ նախագիծն է, որը ես արել եմ միայնակ ՝ առանց ինտերնետից նյութեր պատճենելու և առաջին հրահանգվող գրառմանը: Ես գիտեմ, որ թևը կարող է արդիականացվել, բայց առայժմ գոհ եմ դրանից: Բոլոր մասերն ու սկզբնաղբյուրներն անվճար են, դուք ողջունում եք օգտագործել այն և փոխել այն ձեր ցանկացած ձևով: Եթե ունեք որևէ հարց, խնդրում ենք դրանք ուղղել մեկնաբանությունների բաժնում: Կարող եք նաև դիտել տեսանյութերը, դրանք մեծ որակով չեն, բայց ցույց են տալիս նախագծի ֆունկցիոնալությունը:

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