Turinys:

„Arduino“valdoma robotų ranka su 6 laisvės laipsniais: 5 žingsniai (su nuotraukomis)
„Arduino“valdoma robotų ranka su 6 laisvės laipsniais: 5 žingsniai (su nuotraukomis)

Video: „Arduino“valdoma robotų ranka su 6 laisvės laipsniais: 5 žingsniai (su nuotraukomis)

Video: „Arduino“valdoma robotų ranka su 6 laisvės laipsniais: 5 žingsniai (su nuotraukomis)
Video: Часы на Arduino. TM1637, DS3231 и платы от jlcpcb.com 2024, Lapkritis
Anonim
„Arduino“valdoma robotų ranka W/ 6 laisvės laipsniai
„Arduino“valdoma robotų ranka W/ 6 laisvės laipsniai
„Arduino“valdoma robotų ranka W/ 6 laisvės laipsniai
„Arduino“valdoma robotų ranka W/ 6 laisvės laipsniai
„Arduino“valdoma robotų ranka W/ 6 laisvės laipsniai
„Arduino“valdoma robotų ranka W/ 6 laisvės laipsniai

Aš esu robotikos grupės narys ir kiekvienais metais mūsų grupė dalyvauja kasmetiniame „Mini-Maker Faire“renginyje. Nuo 2014 m. Nusprendžiau kiekvienais metais rengti naują projektą. Tuo metu turėjau maždaug prieš mėnesį iki renginio kažką sudėti ir neįsivaizdavau, ką noriu veikti.

Kolegos narys paskelbė nuorodą į „įdomų atviro kodo robotų rankos konstrukciją“, kuri mane sudomino. Planai buvo tik ranka be valdiklių ar valdiklio. Atsižvelgiant į mano laiko apribojimus, tai atrodė tikrai geras atspirties taškas. Vienintelė problema buvo ta, kad aš tikrai neturėjau įrankių pradėti.

Padedant kai kuriems grupės nariams, man pavyko nupjauti ir atsiųsti man akrilo dalis ir dvi toliau pateiktas 3D spausdintas dalis. Kartu su kai kuriais nakvynės įrangos užsakymais ir keliomis kelionėmis į vietinę techninės įrangos parduotuvę, naktį prieš renginį baigiau darbo projektą!

Kaip įprasta, istorijoje yra daugiau ir keletas kūrinio įsikūnijimų, sutrauktų į tai, ką matote žemiau. Jei jus domina istorija, daugiau rasite čia:

1 žingsnis: ko jums reikia - aparatūra ir elektronika

Ko jums reikia - aparatūra ir elektronika
Ko jums reikia - aparatūra ir elektronika
Ko jums reikia - aparatūra ir elektronika
Ko jums reikia - aparatūra ir elektronika

Pradinis projekto dizaineris gyveno Europoje, o vėliau naudojo metrinius matavimus ir ten įprastas medžiagas. Pavyzdžiui, spaudos plokštė, kurią jis naudojo kūnui, buvo 5 mm storio. Panaši medžiaga čia JAV yra 1/8 colio, kuri yra apie 3,7 mm storio. Tai paliko tarpą angose, kurios iš pradžių buvo suprojektuotos prispausti. Užuot taisius brėžinius, aš tiesiog naudoju „Gorilla“klijus šioms jungtims pritvirtinti.

Jis taip pat naudojo M3 sriegines veržles ir varžtus, kurie nėra standartiniai jūsų vietinėje techninės įrangos parduotuvėje JAV. Užuot konvertavęs juos į vietoje prieinamas parinktis, aš tiesiog užsisakiau aparatinę įrangą internete, kaip parodyta žemiau esančiame dalių sąraše.

  • 22 - M3 x 0,5 x 23 mm pertraukos
  • 15 - M3 x 15 mm tarpinės
  • 40 - M3 varžtai
  • M3 šešiabriauniai veržlės
  • M3 25 mm varžtai
  • 1 - Pavasaris
  • 3/4 "dvipusė tvirtinimo juosta
  • 5 - SG 5010 „TowerPro Servo“
  • 1 - SG92R „TowerPro“mini servo
  • 1 - „SG90 TowerPro“mini servo
  • 2,54 mm vienos eilės tiesios kaiščio antraštė
  • 1 - pusės dydžio duonos lenta
  • 1 - Moterų/vyrų „prailginimo“jungiamieji laidai - 40 x 6 colių
  • 1–12 colių x 24 colių mėlynos spalvos akrilo lakštas arba lazeriu supjaustytos dalys iš jūsų mėgstamo paslaugų teikėjo
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm jungčių guolių tarpikliai 3D atspausdinti (žr. Žemiau)
  • 1 - Valdymo skydas *Žr. Pastabą laidų skyriuje
  • 1 - išsklaidytas RGB (trispalvis) 10 mm šviesos diodas
  • 1 - „Arduino Uno“
  • 1 - Standartinis skystųjų kristalų ekranas 16x2 + priedai - balta ir mėlyna
  • 1 - i2c / SPI simbolių LCD kuprinė
  • 1-„Adafruit“16 kanalų 12 bitų PWM/servo tvarkyklė
  • 1 - MCP3008 - 8 kanalų 10 bitų ADC su SPI sąsaja
  • 3 - „JoyStick Breakout Module Sensor“*Žr. Pastabą laidų skyriuje
  • „DC Barrel Jack“
  • Kintamosios srovės į nuolatinės srovės adapteris
  • Servo prailginimo kabeliai - įvairių ilgių

Beveik visos šios rankos dalys buvo nukirptos iš 1/8 colio akrilo. Tačiau du jungiamųjų guolių tarpiklius reikia atspausdinti. Be to, suprojektuotas originalas reikalavo, kad abi jungčių tarpiklių pagrindai būtų 7 mm aukščio prie guolio veleno. Kai pradėjau montuoti viršutinę ranką, greitai paaiškėjo, kad jie yra per aukšti dėl „TowerPro“servo aukščio. Turėjau turėti naujus guolius, kurių pagrindas būtų tik 3 mm aukščio, kuris, beje, vis dar buvo šiek tiek per aukštas, bet valdomas. Norėsite atkreipti dėmesį į santykinį jūsų servo aukštį ir atsižvelgti į atstumą tarp dviejų apatinių rankų:

Servo aukštis + servo ragas + jungties guolis + dvipusė juosta = 47 mm +/- 3 mm.

2 žingsnis: rankos surinkimas

Rankų surinkimas
Rankų surinkimas
Rankų surinkimas
Rankų surinkimas
Rankų surinkimas
Rankų surinkimas
Rankų surinkimas
Rankų surinkimas

Prieš pradėdami, būtinai sutelkite visus savo servus! Jei bet kuriuo statybos metu rankiniu būdu perkeliate servo padėtį, prieš pritvirtindami ją prie rėmo, turėsite ją atnaujinti. Tai ypač svarbu dirbant su pečiais, kurie visada turi judėti vienu metu.

  1. Pritvirtinkite pagrindinį servo prie viršutinės pagrindo plokštės, naudodami M3 25 mm varžtus ir šešiakampes veržles. PERSPĖJIMAS: Jei norite, kad veržlės neatsiliktų naudojimo metu, sriegius galite užsukti sandariai.

  2. Jei naudojate aukščiau pateiktą dalių sąrašą, toliau norėsite surinkti 5 pagrindinius tarpiklius, sriegiuojant po 2 M3 x 0,5 x 23 mm atramas ir tada pritvirtinkite juos prie viršutinės pagrindo plokštės šešiakampėmis veržlėmis.
  3. Pritvirtinkite apatinę pagrindo plokštę prie atramų 5 M3 varžtais.
  4. Pritvirtinkite pečių plokštę prie dviejų servo tvirtinimo plokščių, naudodami saugius akrilo klijus. Čia naudojau „Gorilla“klijus. PASTABA: kiekvienos iš dviejų servo plokščių gale yra skylė, leidžianti įterpti armatūros tarpiklį, jungiantį jas. Įsitikinkite, kad skylės sutampa!* Turėdami po ranka klijų, eikite į priekį ir prijunkite riešo tvirtinimo plokštę prie griebtuvo pagrindinės plokštės.* Pasirinktinai taip pat galite priklijuoti riešo servo plokštę prie dviejų riešo sąnarių plokščių. Rinkdamasis aš to nepadariau, norėdamas juos sujungti su išjungimais, kaip aprašyta toliau.
  5. Pritvirtinkite dabar sukietėjusį pečių mazgą prie pagrindinio servo. Aš naudoju plačiausią ragą, pridėtą prie servo, kuris buvo šešių stiebų tvirtinimo ragas.

  6. Apatinės rankos rėmo pridėjimas prie pečių servo gali būti sudėtingas. Prieš tęsdamas siūlau ragus pritvirtinti prie apatinių rankos rėmų. PASTABA: prieš pritvirtindami juos prie rėmo, būtinai sucentruokite servo pečius. Šie du servovarikliai turi judėti vienu metu ir, jei jie yra netinkamai sulygiuoti, sukels servo drebėjimą ir, jei jie bus pakankamai nesuderinti, gali sugadinti rėmą ar servo sistemas. * Kiekvienas pečių servo mechanizmas yra sumontuotas su laikikliais tvirtinimo plokščių galinėje pusėje, o ne per servo servetėles per plokštes - tai leis kampą paspausti ant servo veleno kampu ir pritvirtinti varžtą. Dar neužfiksuokite servo prie tvirtinimo plokštės. * Tada pridėkite vidinį servo ir pritvirtinkite ranką
  7. Surinkite viršutinės rankos rėmą ir servo servus, stumdami servus per rankų tarpus, tada įkišdami tarpiklius tarp abiejų viršutinių rankos plokščių ir pritvirtinkite M3 varžtais.
  8. Pridėkite dvipusę lipnią juostą prie alkūnės sąnario tarpiklio užpakalinės dalies ir nupjaukite perteklių.
  9. Pritvirtinkite tarpiklį prie servo apačios, kuri veiks kaip alkūninė pavara.
  10. Įstumkite viršutinę svirtį į apatinės rankos mazgo rėmą ir pritvirtinkite servo rago varžtus.
  11. Pridėkite sutvirtinimo atramas tarp dviejų apatinių svirties plokščių. Svoriui sumažinti naudojau du, o ne visus keturis.
  12. Pridėkite dvipusę lipnią juostą prie viršutinės riešo sąnario tarpiklio nugarėlės ir nupjaukite perteklių.
  13. Pritvirtinkite tarpiklį prie servo apačios, kuri veiks kaip riešo pavara.
  14. Pritvirtinkite išorinę riešo plokštelę prie riešo servo rago ir užfiksuokite rago varžtu.
  15. Surinkite riešo servo plokštę su dviem riešo sąnarių plokštėmis ir atramomis.
  16. Pritvirtinkite riešo servo servo plokštę servo spaustuko plokštele.
  17. Prieš pritvirtindami griebtuvo mazgą prie rago, turėsite pritvirtinti riešo ragą prie servo, nes rago varžto anga yra užblokuota.
  18. Prieš tvirtindami griebtuvo servo ragą prie servo, laisvai surinkite griebtuvo dalis. Tai suteiks jums vietos prisukti ragą ankstesniame žingsnyje.
  19. Pritvirtinkite griebtuvo ragą prie savo servo ir dar priveržkite varžtus, laikančius griebtuvo jungtis. PASTABA: neužveržkite šių veržlių ir varžtų iki galo, nes jie turi būti laisvi, kad griebtuvas galėtų judėti.

3 žingsnis: laidai ir valdymo skydas

Laidai ir valdymo skydas
Laidai ir valdymo skydas
Laidai ir valdymo skydas
Laidai ir valdymo skydas
Laidai ir valdymo skydas
Laidai ir valdymo skydas

Sukūriau šį projektą kaip kai kurių idėjų, skirtų vėlesniam edukaciniam projektui, kūrimo platformą. Taigi, dauguma mano jungčių yra paprastos „dupont“jungtys. Vienintelis litavimas, kurį aš padariau, buvo skirtas MCP3008. Jei galite rasti šiai sudedamajai daliai skirtą plokštę, turėtumėte turėti galimybę be rankenos sukonstruoti.

Yra 3 komponentų grupės:

  1. Įvestys - šie elementai perima informaciją iš vartotojo ir susideda iš vairasvirtių ir „mcp3008 ADC“.
  2. Išėjimai - šie elementai perduoda duomenis pasauliui, rodydami naudotojui būseną arba atnaujindami servo duomenis su padėties duomenimis. Tai yra LCD ekranas, LCD kuprinė, RGB šviesos diodas, „Servo“tvarkyklės plokštė ir galiausiai servo.
  3. Apdorojimas - „Arduino“surenka paskutinę grupę, kuri priima duomenis iš įvesties ir išstumia duomenis į išvestis pagal kodo instrukcijas.

Aukščiau pateiktoje „Fritzing“schemoje išsamiai aprašytos visų komponentų kaiščių jungtys.

Įėjimai

Pradėsime nuo įėjimų. Vairasvirtės yra analoginiai įrenginiai - tai reiškia, kad jie pateikia kintamą įtampą kaip „Arduino“įvestį. Kiekviename iš trijų vairasvirtių yra du analoginiai išėjimai X ir Y (aukštyn, žemyn, kairėn dešinėn), iš viso 6 įėjimai į „Arduino“. Nors „Arduino Uno“turi 6 analoginius įėjimus, I2C ryšiui su ekranu ir servo valdikliu turime naudoti du iš šių kaiščių.

Dėl šios priežasties aš įtraukiau MCP3008 analoginį į skaitmeninį keitiklį (ADC). Šis lustas priima iki 8 analoginių įėjimų ir konvertuoja juos į skaitmeninį signalą per „Arduino“SPI ryšio kaiščius taip:

  • MCP kaiščiai 1-6> Kintamos nykščio vairasvirtės išvestys
  • MCP smeigtukai 7 ir 8> Nėra ryšio
  • MCP kaištis 9 (DGND)> Žemė
  • MCP kaištis 10 (CS/SHDN)> Atšaukti kaištį 12
  • MCP kaištis 11 (DIN)> Atlaisvinti 11 kaištį
  • MCP kaištis 12 (DOUT)> Atšaukti 10 kaištį
  • MCP kaištis 13 (CLK)> Atlaisvinti kaištį 9
  • MCP kaištis 14 (AGND)> Žemė
  • MCP kaiščiai 15 ir 16> +5V

Schemoje esančios vairasvirtės jungtys parodytos tik kaip pavyzdys. Priklausomai nuo to, kokias vairasvirtes perkate ir kaip jos sumontuotos, jūsų jungtys gali skirtis nuo mano. Skirtingi vairasvirtės ženklai gali turėti skirtingą kištuką, taip pat gali skirtingai nukreipti X ir Y. Svarbu suprasti, ką reiškia kiekvienas įvestis ADC. Kiekvienas smeigtukas reiškia šiuos mano kodo ryšius:

  • 1 kaištis - bazė - Analoginiai šio kaiščio duomenys pasuks žemiausią roboto servo sistemą
  • 2 smeigtukas - petys - Analoginiai šio kaiščio duomenys suks du servo įrenginius virš pagrindinio servo
  • 3 smeigtukas - alkūnė - Analoginiai šio kaiščio duomenys pasuks kitą servo sistemą nuo pečių
  • 4 smeigtukas - AUKŠTYN/DNR riešas - Analoginiai šio kaiščio duomenys suks riešo servo, pakels ir nuleis griebtuvo mazgą
  • 5 smeigtukas - griebtuvas - Analoginiai šio kaiščio duomenys atidarys ir uždaro griebtuvą
  • Smeigtukas 6 - pasukti riešą - Analoginiai šio kaiščio duomenys suks griebtuvą

PASTABA: perkant ir montuojant dalių sąraše nurodytas nykščio vairasvirtes, atminkite, kad modulių orientacija gali skirtis nuo mano, todėl patikrinkite, ar x ir y išvestys tinkamai prijungtos prie ADC. Be to, jei naudojate mano 3D spausdintą valdymo skydelį, montavimo angos gali būti atskirtos nuo mano.

Išėjimai

„Adafruit PWM/Servo Controller“daro šį projektą itin paprastą. Tiesiog prijunkite „Servos“prie servo antraščių ir visos maitinimo ir signalo jungtys yra tvarkomos. Jei nerasite servo su ypač ilgais laidais, norėsite įsigyti įvairaus ilgio servo kabelių ilgintuvų rinkinį, kad visi jūsų servo kabeliai pasiektų jūsų valdiklio plokštę.

Servos prijungiamos taip:

  • 0 padėtis - bazinis servo
  • 1 padėtis - pečių servo (servo Y kabelis)
  • 2 padėtis - alkūnės servo
  • 3 padėtis - riešo 1 servo
  • 4 padėtis - Gripper Servo
  • 5 padėtis - riešo 2 servo

Be to, VCC ir V + yra prijungti prie +5 voltų, o GND yra prijungtas prie žemės.

1 PASTABA: viena didelė pastaba: viso projekto maitinimo įtampa ateina per maitinimo gnybtų bloką, esantį servo valdymo plokštėje. Servo valdiklio V+ kaištis iš tikrųjų tiekia maitinimą iš gnybtų bloko į likusią grandinės dalį. Jei jums reikia užprogramuoti „Uno“, labai rekomenduoju atjungti „V+“kaištį prieš prijungdami „Uno“prie kompiuterio, nes srovė iš servo gali sugadinti jūsų USB prievadą.

2 PASTABA: Projektui maitinti naudoju 6V kintamosios srovės ir nuolatinės srovės adapterį. Aš rekomenduoju adapterį, galintį tiekti bent 4 A srovę, kad, kai vienas ar daugiau servo prijungtų, staigus srovės šuolis neužtemdytų jūsų sistemos ir iš naujo nustatytų „Arduino“.

16X2 LCD ekranas prijungtas prie „Adafruit“LCD kuprinės, kad būtų galima pasinaudoti „I2C“sąsaja, kuria jau naudojasi „Servo Controller“. Tiek servo valdiklio SCL, tiek kuprinės CLK jungiasi prie „Uno“kaiščio A5. Panašiai ir servo valdiklio SDA, ir kuprinės DAT jungiasi prie „A4“kaiščio „Uno“. Be to, 5V yra prijungtas prie +5 voltų, o GND yra prijungtas prie žemės. LAT ant kuprinės nėra prijungtas prie nieko.

Galiausiai RGB šviesos diodas yra prijungtas prie „Uno“kaiščių 7 (RAUDONA), 6 (žalia) ir 5 (mėlyna). Šviesos diodo įžeminimo kojelė yra prijungta prie žemės per 330 omų rezistorių.

Apdorojimas

Paskutinis, bet ne mažiau svarbus dalykas: likusios „Arduino“jungtys, kurios nėra išvardytos aukščiau, yra tokios: 5V kaištis prijungtas prie +5 voltų, o GND prijungtas prie žemės.

Savo sąrankoje naudoju šoninius duonos lentos bėgius, kad sujungčiau visas maitinimo ir įžeminimo linijas, taip pat visų įrenginių I2C kaiščius.

4 žingsnis: kodas

Kodas
Kodas

Kaip minėta anksčiau, aš iš pradžių kūriau šį projektą kaip demonstraciją savo vietinei „Maker Faire“. Aš norėjau, kad tai būtų kažkas vaikams ir suaugusiems žaisti mūsų stende. Kaip paaiškėja, jis buvo daug populiaresnis, nei aš įsivaizdavau - tiek, kad vaikai dėl to kovojo. Taigi, kai atėjo laikas perrašyti, įtraukiau „Demo Mode“, kuris įgyvendina laiko limitą.

Ranka sėdi ten ir laukia, kol kas nors pajudins vairasvirtę, o kai tai padarys, įsijungs 60 sekundžių laikmatis. Pasibaigus 60 sekundžių, jis nustoja imti informaciją iš vartotojo ir 15 sekundžių „ilsisi“. Trumpas dėmesys yra toks, koks yra, šis poilsio laikotarpis labai sumažino ginčą dėl laikymosi laiko.

Pagrindinė operacija

Žemiau esančiame nuorodų skyriuje išvardytas kodas yra gana paprastas. Masyvas stebi 6 sąnarius su minimaliomis, maksimaliomis ribomis, pradine padėtimi ir dabartine padėtimi. Kai ranka įjungta, paleidimo funkcija apibrėžia bibliotekas, reikalingas kalbėtis su MCP3008, LCD kuprinę (ir vėliau ekraną), ir nustato LED kaiščius. Iš ten jis tikrina pagrindines sistemas ir grįžta namo. Namų funkcija prasideda nuo griebtuvo ir nusileidžia žemyn iki pagrindo, kad sumažintų įrišimo galimybę normaliomis sąlygomis. Jei ranka yra visiškai ištiesta, gali būti geriausia rankiniu būdu paleisti ranką prieš ją įjungiant. Kadangi bendrieji servai nepateikia grįžtamojo ryšio apie jo padėtį, turime kiekvieną iš jų pastatyti iš anksto nustatytame taške ir sekti, kiek toli jie buvo perkelti.

Pagrindinė kilpa pirmiausia prasideda laukimo režimu - ieškant vairasvirtės, kad būtų galima nutolti nuo savo centrinės padėties. Kai tai atsitiks, pagrindinė kilpa keičia būsenas į atgalinės atskaitos būseną. Kai vartotojas perkelia kiekvieną vairasvirtę, santykinė kreiptuko padėtis iš centro pridės arba atims iš esamos žinomos padėties ir atnaujins atitinkamą servo sistemą. Kai servo sistema pasiekia nustatytą ribą viena kryptimi, vairasvirtė sustoja. Vartotojas turės perkelti vairasvirtę kita kryptimi, kad ją vėl perkeltų. Tai yra programinės įrangos apribojimas, taikomas servo sistemoms, neatsižvelgiant į jų techninės įrangos sustojimus. Ši funkcija leidžia prireikus išlaikyti rankos judesius tam tikroje operacinėje zonoje. Jei vairasvirtę atleisite į centrą, judėjimas sustos.

Šis kodas yra tik bendras pradžios taškas. Galite pridėti savo režimus, kaip norite. Vienas iš pavyzdžių gali būti nepertraukiamo veikimo režimas be laikmačio, o gal įvestis į kreiptuko mygtukus ir įrašyti įrašymo/atkūrimo režimą.

5 žingsnis: nuorodos ir ištekliai

Nuorodos į rankas

  • Įrašas, įkvėpęs šį projektą
  • Originalūs dizainerių tinklaraščio įrašai Mano nuosava robotinė ranka Mano mini servo griebtuvai ir užbaigta robotinė ranka Padauginkite robotinę ranką ir elektroniką
  • „Thingiverse Arm“
  • „Thingiverse Mini Servo Gripper“

Programinės įrangos bibliotekos

  • „Adafruit“PWM/servo valdiklio ištekliai
  • MCP3008 biblioteka
  • MCP3008 duomenų lapas

Valdymo skydas ir kodas

  • Tinkercad mano sukurtos plokštės brėžinys
  • Dabartinė kodų saugykla

Rekomenduojamas: