Turinys:

Robotinė ranka, valdoma „Arduino“ir kompiuterio: 10 žingsnių
Robotinė ranka, valdoma „Arduino“ir kompiuterio: 10 žingsnių

Video: Robotinė ranka, valdoma „Arduino“ir kompiuterio: 10 žingsnių

Video: Robotinė ranka, valdoma „Arduino“ir kompiuterio: 10 žingsnių
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Liepa
Anonim
Image
Image
Teorija už projekto
Teorija už projekto

Robotų ginklai yra plačiai naudojami pramonėje. Nesvarbu, ar tai skirta surinkimo operacijoms, suvirinimas ar net vienas yra naudojamas prijungti prie ISS (Tarptautinė kosminė stotis), jie padeda žmonėms dirbti arba visiškai pakeičia žmogų. Mano sukurta ranka yra mažesnė robotų rankos, kuri turėtų būti naudojama judantiems objektams, atvaizdas. Jį valdo „arduino pro mini“, kuris jau turi įmontuotą servo valdymo biblioteką. Servos valdomos PWM (impulso pločio moduliacija), kurią nėra sunku užprogramuoti, tačiau ši biblioteka palengvina. Vartotojas gali valdyti tuos servos potenciometrus, kurie yra skirti veikti kaip įtampos skirstytuvai, arba iš kompiuterio programos, kuri naudoja 4 slankiklius servo varikliams valdyti.

Šiam projektui turėjau sukurti savo pasirinktinę PCB ir ją sukurti, sukurti 3D rankos modelius ir parašyti kodą, kuris visa tai valdo. Be to, aš užkodavau papildomą programą „python“, kuri siunčia signalus „arduino“, kuris sugeba iššifruoti tą signalą ir perkelti servo į vartotojo nustatytą padėtį.

1 žingsnis: projekto teorija

Teorija už projekto
Teorija už projekto

„Arduino“yra puikus tuo, kad siūlo nemokamą biblioteką, su kuria galima dirbti. Šiam projektui naudojau „Servo.h“biblioteką, kuri labai palengvina servo valdymą.

Servo variklį valdo PWM - impulso pločio moduliacija - tai reiškia, kad norint valdyti servo, reikia atlikti trumpos įtampos impulsus. Servo gali iššifruoti šio signalo ilgį ir pasukti į nurodytą padėtį. Ir čia aš panaudojau jau minėtą biblioteką. Aš neturėjau savarankiškai apskaičiuoti signalo ilgio, bet aš naudoju bibliotekos funkcijas, kurioms tiesiog perduodu parametrus laipsniais ir jis signalizuoja.

Servo valdymui naudojau potenciometrus, kurie veikia kaip įtampos dalikliai. „Arduino“plokštėse yra keli analoginiai/skaitmeniniai keitikliai, kuriuos naudojau projektui. Iš esmės „arduino“stebi įtampą potenciometro viduriniame kaištyje, o jei jis sukasi į vieną pusę, įtampa yra 0 voltų (vertė = 0), o kitoje pusėje - 5 voltai (vertė = 1023). Tada ši vertė keičiama nuo 0 iki 1023 iki 0 - 180 ir tada perduodama jau minėtai funkcijai.

Kita tema yra serijinis bendravimas su arduino, kurį trumpai aptarsiu. Iš esmės programa, parašyta asmeniniame kompiuteryje, siunčia vartotojo pasirinktą vertę, arduino gali ją iššifruoti ir perkelti servo į nurodytą padėtį

2 žingsnis: PCB projektavimas

PCB projektavimas
PCB projektavimas
PCB projektavimas
PCB projektavimas
PCB projektavimas
PCB projektavimas

Aš sukūriau 2 PCB - vieną pagrindiniam valdymui, kur yra arduino ir kaiščiai servams, o antrasis yra potenciometrai. 2 PCB priežastis yra ta, kad norėjau valdyti roboto ranką iš saugaus atstumo. Abi grandinės yra sujungtos nurodyto ilgio kabeliu - mano atveju 80 cm.

Maitinimo šaltiniui pasirinkau išorinį adapterį, nes mano naudojami servai sunaudoja daug daugiau energijos nei gali tiekti arduino. Kaip matote, yra keletas kondensatorių, kurių dar nepaminėjau. Jie yra kondensatoriai, naudojami filtravimui. Kaip dabar žinote, servo variklį valdo trumpi impulsai. Šie impulsai gali sumažinti maitinimo įtampos kritimus ir potenciometrus, kurie anksčiau buvo 0–5 voltų diapazone. Tai reiškia, kad keičiasi vidutinio kaiščio įtampa ir „arduino“gauna šią vertę ir pakeičia servovariklio padėtį. Tai gali tęstis amžinai ir sukelia nepageidaujamą virpesį, kurį gali pašalinti kai kurie kondensatoriai lygiagrečiai tiekimui.

3 žingsnis: PCB gamyba

PCB gamyba
PCB gamyba
PCB gamyba
PCB gamyba
PCB gamyba
PCB gamyba

Norėdami pagaminti PCB, siūlau perskaityti tai.

Aš naudojau „Iron on Glossy Paper“metodą ir tai puikiai pavyko.

Tada aš lituodavau dalis ant PCB. Matote, kad naudojau arduino lizdą, jei to prireiks ateityje.

4 žingsnis: rankos projektavimas

Rankenos projektavimas
Rankenos projektavimas
Rankenos projektavimas
Rankenos projektavimas
Rankenos projektavimas
Rankenos projektavimas

Tai nebuvo sunkiausia įgyvendinant šį projektą.

Visa sąranka sudaryta iš 8 dalių, iš kurių 4 nėra judančios dalys - potenciometrų dėžutė ir bazė, kurioje yra arduino, o kitos keturios yra pati ranka. Aš nesileisiu į daug smulkmenų, išskyrus tai, kad dizainas yra gana intuityvus ir tam tikra prasme paprastas. Jis suprojektuotas taip, kad atitiktų mano pasirinktą PCB ir servo, kuriuos įtraukiu į dalių sąrašą.

5 veiksmas: dalių spausdinimas

Dalių spausdinimas
Dalių spausdinimas
Dalių spausdinimas
Dalių spausdinimas
Dalių spausdinimas
Dalių spausdinimas

Dalys buvo atspausdintos „Prusa“spausdintuvu. Kai kuriuos veidus reikėjo šiek tiek šlifuoti ir išgręžti skyles. Taip pat reikėjo pašalinti atraminius stulpus.

6 žingsnis: sudėkite viską kartu

Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti

Šiame etape, kaip sako pavadinimas, aš viską sujungiau.

Iš pradžių litavau laidus ant potenciometrų, o paskui tuos laidus ant PCB. Potenciometrai gražiai priglunda prie skylių, o aš karštai priklijavau PCB ant kolonų, kurios buvo atspausdintos dėžutės apačioje. Galite išgręžti skyles lentoje ir į dėžę, bet aš sužinojau, kad jos klijavimo yra daugiau nei pakankamai. Tada aš uždariau abi dėžutės dalis ir pritvirtinau jas 4 varžtais, kurie tilpo į mano suprojektuotas skyles.

Kitas žingsnis - aš padariau plokščią juostinį kabelį, kuris sujungtų abi plokštes.

Pagrindinėje dėžutėje aš lituodavau laidus iš jungties VCC kaiščio, kad perjungčiau, tada į plokštės Vcc ir iš plokštės GND į jungties GND. Tada aš karštai priklijavau jungtį ir lentą ant kolonų. Jungtis tinka tiesiai į skylę, todėl nereikia karštų klijų.

Tada, naudodami varžtus, aš pritvirtinau apatinį servo prie dėžutės apačios.

Po to viršutinę dėžutės dalį uždėjau ant apatinės dalies ir tą patį, kaip ir su potenciometro dėžute, pritvirtinau 4 varžtais.

Kita dalis buvo šiek tiek sudėtinga, bet man pavyko sujungti likusį ranką su įvairiomis veržlėmis ir trinkelėmis, ir ji nebuvo tokia įtempta, kaip tikėjausi, nes sukūriau tam tikrus nuokrypius tarp dalių, todėl lengviau su jais dirbti.

Paskutiniame etape aš uždėjau juostą ant dėžių apačios, nes kitaip jos slystų.

7 žingsnis: „Arduino“programavimas

Arduino programavimas
Arduino programavimas
Arduino programavimas
Arduino programavimas
Arduino programavimas
Arduino programavimas

Aš jau minėjau, kaip programa teoriškai veikia už projekto, tačiau ketinu ją dar labiau sugriauti.

Taigi pradžioje turime apibrėžti kai kuriuos kintamuosius. Dažniausiai jis nukopijuojamas 4 kartus, nes turime 4 servo sistemas ir, mano nuomone, nebūtina kurti sudėtingesnės logikos, kad tik programa būtų šiek tiek trumpesnė.

Kitas yra tuštumos nustatymas, kuriame yra apibrėžti servo kaiščiai.

Tada yra tuštumos kilpa - programos dalis, kuri veikia be galo. Šioje dalyje programa paima vertę iš potenciometro skalių ir įtraukia į išvestį. Tačiau yra viena problema, kad potenciometro vertė šokinėja gana šiek tiek, todėl turėjau pridėti filtrą, kuris sudaro paskutinių 5 verčių vidurkį, ir tada jis išleidžia. Tai apsaugo nuo nepageidaujamo svyravimo.

Paskutinė programos dalis skaito duomenis iš nuoseklaus prievado ir, remdamasi išsiųstais duomenimis, nusprendžia, ką daryti.

Norėdami visiškai suprasti kodą, siūlau apsilankyti oficialiose arduino svetainėse.

8 žingsnis: programavimas „Python“

Programavimas „Python“
Programavimas „Python“
Programavimas „Python“
Programavimas „Python“
Programavimas „Python“
Programavimas „Python“

Ši projekto dalis nėra būtina, bet manau, kad ji tik suteikia daugiau vertės šiam projektui.

„Python“siūlo daugybę bibliotekų, kuriomis galima laisvai naudotis, tačiau šiame projekte aš naudoju tik „tkinter“ir serijines. „Tkinter“naudojama GUI (grafinei vartotojo sąsajai) ir serijinei, kaip nurodo pavadinimas, naudojama serijiniam ryšiui.

Šis kodas sukuria GUI su 4 slankikliais, kurių minimali vertė yra 0 ir didžiausia 180. Jums gali būti užuomina, kad ji yra laipsniais ir kiekvienas slankiklis yra užprogramuotas valdyti vieną servo. Ši programa yra gana paprasta - ji paima vertę ir siunčia ją į arduino. Bet tai, kaip jis siunčiamas, yra įdomus. Jei nuspręsite pakeisti pirmojo servo vertę į 123 laipsnius, ji siunčiama į arduino reikšmę 1123. Pirmasis kiekvieno išsiųsto skaičiaus numeris nurodo, kuris servo bus valdomas. „Arduino“turi kodą, kuris gali tai iššifruoti ir perkelti tinkamą servo.

9 žingsnis: dalių sąrašas

Dalių sąrašas
Dalių sąrašas
  • „Arduino Pro Mini“1 vnt
  • Servo FS5106B 1 vnt
  • Servo Futaba S3003 2 vnt
  • Smeigtuko antgalis 2x5 1 vnt
  • Smeigtuko antraštė 1x3 6 vnt
  • Kondensatorius 220uF 3 vnt
  • „Micro Servo FS90“1 vnt
  • Jungtis AWP-10 2 vnt
  • Jungtis FC681492 1 vnt
  • Jungiklis P-B100G1 1 vnt
  • Lizdas 2x14 1 vnt
  • TTL-232R-5v-keitiklis 1 vnt
  • Potenciometras B200K 4 vnt
  • ir dar daug varžtų, trinkelių ir veržlių

10 žingsnis: paskutinės mintys

Dėkoju, kad perskaitėte šį tekstą ir tikiuosi, kad bent jau jus paskatinau. Tai yra mano pirmasis didesnis projektas, kurį sukūriau pats, nekopijuodamas daiktų iš interneto ir pirmojo instrukcijų įrašo. Žinau, kad ranką būtų galima patobulinti, bet kol kas esu patenkinta. Visos dalys ir šaltinio kodai yra nemokami, galite juos naudoti ir keisti bet kokiu norimu būdu. Jei turite klausimų, nedvejodami užduokite juos komentarų skiltyje. Taip pat galite žiūrėti vaizdo įrašus, jie nėra aukštos kokybės, tačiau parodo projekto funkcionalumą.

Rekomenduojamas: