Turinys:

„Arduino“robotinė ranka: 5 žingsniai
„Arduino“robotinė ranka: 5 žingsniai

Video: „Arduino“robotinė ranka: 5 žingsniai

Video: „Arduino“robotinė ranka: 5 žingsniai
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Liepa
Anonim
Image
Image
„Arduino“robotinė ranka
„Arduino“robotinė ranka
„Arduino“robotinė ranka
„Arduino“robotinė ranka

Kadangi tai yra mano pirmasis projektas po 15 „Arduino“pradinio rinkinio vadovėlių, tikrasis jo tikslas yra gauti kritikų, patarimų, pasiūlymų ir idėjų iš visų, žinančių daugiau nei aš.

Šis projektas yra apie robotų ranką, su 4 dofais ir rankena. Turint pakankamai mažą biudžetą: konstrukciją nukirpo draugas, 4 servo servizai kainavo 30 €, 2 vairasvirtės - 4 €, varžtai ir tt - mažiau nei 10 €, o visa kita („Arduino“, laidai, rankenos servo ir kt.)) jau buvo įtrauktas į mano pradinį rinkinį. Iš viso už 40–45 €, kurie yra apie 45–50 JAV dolerių (ta pati „me-arm“komplekto kaina, bet, ei, buvo smagu, kad turėjau jį pasigaminti pats (ir kartais kažką sujaukti) ir nesilaiko nurodymų kaip mašina).

Kadangi tai buvo mano pirmasis projektas ir „Instructable“, aš dalyvavau „Pirmojo autoriaus“konkurse ir dar keliuose konkursuose, taigi, jei jums tai patinka, balsuokite:)

1 veiksmas: projektavimas ir surinkimas:

Pirmiausia man reikėjo struktūros: tai neabejotinai buvo ilgiausia dalis. Kadangi nenorėjau kopijuoti ir įklijuoti projekto iš kažko kito, aš pasiėmiau projektą kaip nuorodą ir aš (ir dar keli kvalifikuoti klasės draugai, kurie mane tikrai išgelbėjo) pradėjo jį keisti pagal mūsų poreikius (skirtingi servo įtaisai, turintys skirtingą sukimo momentą, svorį ir matmenis ir kt.). Aš turėjau jį sukurti keletą kartų, kiekvienas iš jų radau kažką negerai, ir mes turėjome pakartoti kai kuriuos gabalus ir bandyti dar kartą. Pridėjau.dxf failą, jei norite jį naudoti. Tada turėjau nusipirkti elektroniką: Dauguma dalių buvo standartinės, sunkiausia buvo pasirinkti servus. Reikiamą sukimo momentą apskaičiavau pagal nykščio taisyklę, vėliau bandžiau tiksliau apskaičiuoti ir sužinojau, kad galbūt šiek tiek permušiau. Matyt, 6 kg/cm būtų užtekę 2-ajam servui (nuo pagrindo), o mano-9-11 kg/cm. Na, tai suteikia man tam tikrą saugumą ir galimybę pakrauti iki 2 kg krovinio (tai neįmanoma, bet man patinka, kad galėčiau tai padaryti techniškai). Aš taip pat galėjau nusipirkti įvairių servo, mažindamas sukimo momentą tolstant nuo pagrindo, tačiau to paties pardavėjo vienodų servo pirkimas buvo pats pigiausias pasirinkimas. Maitinimo šaltinis: „Arduino“tikrai nepakako servams, nes kiekvienas mg995 traukia 350mA, o mikroservo 9g traukia 100mA, iš viso 350*4 +100 = 1500mA. Taigi aš išgelbėjau įkroviklį (6V 1.5A) ir prie jo prilitau du trumpiklius. (Jei kai kuriems iš jūsų gali prireikti tikrų instrukcijų, tiesiog paklauskite komentarų ir aš padarysiu viską, kad sukurtų žingsnis po žingsnio Medžiagų sąrašas:- Struktūra- M5x7cm varžtas x5, m5 varžtai x15 (pagrindas)- M3x16mm varžtas x18*- M3x20mm varžtas x13*- M3 varžtai x40*- M3x8cm varžtas x3- spaustukas (kitaip nukris)- 3 kaiščiai- „Arduino“(ar kažkas kitas, norint jį valdyti, jis turi turėti bent 5 PWM)- Kažkas tiekti 5-6 V ir ne mažiau kaip 1,5 A- 3x į ps2 panašūs vairasvirtės- 4x „TowerPro“mg995 servos- 1x „TowerPro 9g“mikroservo (skirtas sukibimui)) - Daug jungiamųjų laidų - „Breadboard“*(aš naudoju varžtus ir varžtus, kad galėčiau greitai surinkti ir išardyti, kitaip beveik visus galėtumėte pakeisti medžio varžtais)

2 veiksmas: KODAS:

Idėja yra valdyti kiekvieną servo vieną iš dviejų ps2 tipo vairasvirtės ašių. Atrodė, kad kiekviena vairasvirtė turi skirtingas „poilsio vertes“(vertė nuo 0 iki 1023, kai ji yra) tiek y, tiek x ašims. buvo problema, nes skirtumas buvo nedidelis (vienas turėjo nulį ties y ties 623) ir norėjau pasinaudoti žemėlapio funkcija, kad perskaičiuotumėte nuo 0 iki 1023 laipsnių. Tačiau žemėlapio funkcija mano, kad likusi vertė yra 1023/2. Tai sukėlė kiekvieną servo judėjimą, kai tik įjungiu „Arduino“. kad kodas būtų trumpesnis ir protingesnis, privertiau jį perskaityti likusias sąrankos funkcijos vertes ir išsaugoti jas kai kuriuose kintamuosiuose. Naujasis algoritmas priklauso nuo žingsnio padidinimo konvertavimo laipsniais, bet aš norėjau, kad mano žingsnis būtų labai mažas Turėjau jį padalyti pastoviai: išbandžiau daugybę verčių, kol sugalvojau galutinį 200 (galiu pridėti potenciometrą, kad rankiniu būdu pakeistumėte šią vertę į norimą). Likusi kodo dalis, manau, yra gana standartinė, nors gali būti elegantiškiau apskaičiuoti prieaugį atskiroje funkcijoje.

3 žingsnis: ELEKTRONIKA:

ELEKTRONIKA
ELEKTRONIKA

Laidai yra tokie patys, kaip parodyta paveikslėlyje arba frizavimo faile: servo signalas į kaiščius: 5-6-9-10-11 ir vairasvirtės ašis į analoginius kaiščius: A0-A1-A2-A3-A4 Pagrindinė problema, su kuria susidūriau buvo tai, kad vairasvirtes turėjo tiekti „Arduino“, o ne įkroviklis, kurį naudoju servo sistemoms. Priešingu atveju servo tiesiog išprotėtų, judėdamas atsitiktinai pirmyn ir atgal. Manau, kad taip gali būti todėl, kad jei aš juos aprūpinsiu įkrovikliu, „Arduino“negalės tiksliai pasakyti galimo skirtumo, kai juos perkeliu, bet tada vėl: Aš esu labai naujokas elektronikoje, todėl tai tik spėjimas. „Arduino“žemės ir įkroviklio prijungimas per duonos lentą padėjo išvengti atsitiktinių ir netikėtų judesių, manau, kad dėl panašios vairasvirtės tiekimo priežasties.

4 veiksmas: šiuo metu tęsiamas tobulinimas:

DABAR TYRIMAS
DABAR TYRIMAS

Kadangi kiekviena vairasvirtė gali valdyti 2 servo (po 1 ašiai), man reikia 3 servo, kad galėčiau valdyti visą ranką, bet, deja, turiu tik 2 nykščius. Taigi aš maniau, kad užuot valdęs kiekvieną servo, galėčiau valdyti tik xyz padėtį suimkite ir atidarykite-uždarykite rankeną, iš viso 4 ašis, 2 vairasvirtes ir 2 nykščius! Sužinojau, kad ta problema yra gerai žinoma kaip atvirkštinė kinematika, taip pat sužinojau, kad tai viskas paprasta. Idėja yra parašyti (netiesinės) lygtys, leidžiančios rasti kiekvieno efektoriaus būseną (servo kampai), atsižvelgiant į galutinę padėtį. Įkėliau ranka rašytą popierių su lygtimis ir šiuo metu dirbu prie naujo kodo, kad galėčiau jas naudoti. Tai neturėtų būti per sunku, aš iš esmės turiu perskaityti vairasvirtes, panaudoti jų rodmenis, kad pakeistų sukibimo xyz koordinates, o tada pateikti jas mano lygtims, apskaičiuoti servo kampus ir juos parašyti.

5 žingsnis: BŪSIMIEJI TEMPERIAI:

Taigi, esu gana patenkinta jo rezultatu ir turėdamas omenyje, kad esu visiškai naujokas elektronikos srityje, kuri nepučia kažko ar nesusitvarkau, jau buvo didžiulė pergalė. Kaip sakiau pradžioje, bet kokia idėja dėl tolesnių patobulinimų, tiek programinės įrangos, tiek aparatūra, yra daugiau nei sveikintina! Iki šiol galvojau apie: 1. Potenciometras, skirtas pakeisti vairasvirtių „jautrumą“. Naujas kodas, kad jis „įrašytų“kai kuriuos judesius ir juos dar kartą atliktų (galbūt greičiau ir trumpiau nei žmogaus įvestis) 3. Tam tikras vizualinis/atstumo/balso įvestis ir galimybė gauti objektus niekam nesinaudojant vairasvirtėmis4. Galimybė piešti geometrines figūras Bet kokia kita idėja? Prašome nedvejodami komentuoti bet kokius pasiūlymus. Ačiū

Rekomenduojamas: