Kazalo:

Arduino krmiljena robotska roka W/ 6 stopinj svobode: 5 korakov (s slikami)
Arduino krmiljena robotska roka W/ 6 stopinj svobode: 5 korakov (s slikami)

Video: Arduino krmiljena robotska roka W/ 6 stopinj svobode: 5 korakov (s slikami)

Video: Arduino krmiljena robotska roka W/ 6 stopinj svobode: 5 korakov (s slikami)
Video: ESP32 Tutorial 17 - Controlling Servo Motor using ESP32 and Potentiometer -ESP32 IoT Learnig kit 2024, Julij
Anonim
Arduino krmiljena robotska roka W/ 6 stopinj svobode
Arduino krmiljena robotska roka W/ 6 stopinj svobode
Arduino krmiljena robotska roka W/ 6 stopinj svobode
Arduino krmiljena robotska roka W/ 6 stopinj svobode
Arduino krmiljena robotska roka W/ 6 stopinj svobode
Arduino krmiljena robotska roka W/ 6 stopinj svobode

Sem član skupine za robotiko in vsako leto se naša skupina udeleži letnega sejma Mini-Maker. Od leta 2014 sem se odločil zgraditi nov projekt za vsakoletno prireditev. Takrat sem imel približno mesec dni pred dogodkom nekaj sestaviti in nisem imel pojma, kaj želim početi.

Neki član je objavil povezavo do "zanimive odprtokodne robotske roke", ki je dosegla vrhunec mojega zanimanja. Načrti so bili le roka brez kontrol ali krmilnika. Glede na mojo časovno stisko se mi je zdelo res dobro izhodišče. Edina težava je bila, da za začetek res nisem imel orodij.

S pomočjo nekaterih članov skupine sem lahko izrezal in poslal akrilne dele ter mi poslal dva spodaj prikazana 3D dela. V kombinaciji z nekaterimi naročili strojne opreme čez noč in več izleti v lokalno trgovino s strojno opremo sem večer pred dogodkom zaključil delovni projekt!

Kot je običajno, je zgodba in več inkarnacij zgradbe še nekaj zgoščenega na tisto, kar vidite spodaj. Če vas zanima zadnja zgodba, lahko več najdete tukaj:

1. korak: Kaj potrebujete - strojna oprema in elektronika

Kaj potrebujete - strojna oprema in elektronika
Kaj potrebujete - strojna oprema in elektronika
Kaj potrebujete - strojna oprema in elektronika
Kaj potrebujete - strojna oprema in elektronika

Prvotni oblikovalec projektov je živel v Evropi in nato uporabil metrične meritve in tam običajne materiale. Na primer, deska za stiskanje, ki jo je uporabil za telo, je bila standardna debelina 5 mm. Podoben material tukaj v ZDA je 1/8 , ki je debel približno 3,7 mm. To je pustilo vrzel v odprtinah, ki so bile prvotno zasnovane za vpenjanje. Namesto popravljanja risb sem za pritrditev teh spojev preprosto uporabil lepilo Gorilla.

Uporabil je tudi navojne matice in vijake M3, ki niso standardni v vaši lokalni trgovini s strojno opremo v ZDA. Namesto da bi jih pretvoril v lokalno razpoložljive možnosti, sem preprosto naročil strojno opremo na spletu, kot je prikazano na mojem seznamu delov spodaj.

  • 22 - Stojala M3 x 0,5 x 23 mm
  • 15 - Distančniki M3 x 15 mm
  • 40 - Vijaki M3
  • M3 šestkotni matice
  • M3 25 mm vijaki
  • 1 - Pomlad
  • 3/4 "dvostranski montažni trak
  • 5 - Servo SG 5010 TowerPro
  • 1 - Mini servo SG92R TowerPro
  • 1 - mini servo SG90 TowerPro
  • 2,54 mm enovrstična ravna čepna glava
  • 1 - Okrogla deska polovice velikosti
  • 1 - Ženske/moške moške 'podaljški' žice - 40 x 6"
  • 1 - 12 "x 24" modra akrilna folija ali lasersko rezani kosi vašega najljubšega ponudnika storitev
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm distančniki za skupne ležaje 3D natisnjeni (glejte spodaj)
  • 1 - Nadzorna plošča *Glejte opombo v razdelku Ožičenje
  • 1 - Razpršena RGB (tribarvna) 10 mm LED
  • 1 - Arduino Uno
  • 1 - Standardni LCD 16x2 + dodatki - bela na modri
  • 1 - nahrbtnik LCD z napisom i2c / SPI
  • 1-16-kanalni 12-bitni PWM/servo gonilnik Adafruit
  • 1 - MCP3008 - 8 -kanalni 10 -bitni ADC z vmesnikom SPI
  • 3 - Senzor modula za izklop JoyStick *Glej opombo v razdelku ožičenja
  • DC Barrel Jack
  • AC / DC adapter
  • Servo podaljševalni kabli - različne dolžine

Skoraj vsi deli te roke so bili izrezani iz 1/8 palčnega akrila. Dva distančnika za skupne ležaje pa je treba natisniti. Prav tako je prvotna zasnova zahtevala, da sta obe spojni distančni osnovi visoki 7 mm do ležajne gredi. Ko sem začel z montažo nadlakti, je bilo hitro jasno, da so te previsoke zaradi višine servomotorjev TowerPro. Moral sem narediti nove skupne ležaje s samo 3 mm visoko podlago, ki je bila mimogrede še vedno nekoliko previsoka, a obvladljiva. Zapomniti si morate relativno višino servomotorjev in upoštevati razdaljo med dvema spodnjima rokama:

Servo višina + servo rog + spojni ležaj + dvostranski trak = 47 mm +/- 3 mm.

2. korak: Montaža ročice

Sklop roke
Sklop roke
Sklop roke
Sklop roke
Sklop roke
Sklop roke
Sklop roke
Sklop roke

Preden začnete, vse svoje servomotorje centrirajte! Če boste kadar koli med gradnjo, če boste ročno premaknili položaj servomotorja, ga morali znova pritrditi, preden ga pritrdite na okvir. To je še posebej pomembno pri ramenskih servomotorjih, ki se morajo vedno gibati usklajeno.

  1. S pomočjo 25 -milimetrskih vijakov M3 in šestrobih matic pritrdite osnovni servo na zgornjo osnovno ploščo. OPOMBA: Morda boste želeli pritrditi navoje, da zmanjšate popuščanje matic med uporabo.

  2. Če uporabljate zgornji seznam delov, ki ga imam zgoraj, boste nato želeli sestaviti 5 distančnikov tako, da po 2 položite medstavke M3 x 0,5 x 23 mm in jih nato pritrdite na zgornjo osnovno ploščo s šestrobimi maticami.
  3. Spodnjo osnovno ploščo pritrdite na stojala s 5 vijaki M3.
  4. Pritrdite ramensko ploščo na dve servo montažni plošči z uporabo akrilnega lepila. Tu sem uporabil lepilo Gorilla. OPOMBA: Vsaka od dveh servo plošč ima zadaj luknjo, ki omogoča vstavljanje armaturnega distančnika, ki ju povezuje. Prepričajte se, da so luknje poravnane!* Medtem ko imate lepilo pri roki, se pridružite montažni plošči zapestja z glavno ploščo prijemala.* Po želji lahko servo ploščo za zapestje prilepite tudi na dve plošči zapestnih spojev. Te izbire nisem naredil namesto tega, da bi jih prilepil skupaj s nasprotji, kot je opisano spodaj.
  5. Zdaj ozdravljen ramenski sklop pritrdite na osnovni servo. Uporabil sem najširši rog, priložen servomotorju, ki je bil šestih stebel.

  6. Dodajanje okvirja spodnje roke ramenskim servomotorjem je lahko težavno. Predlagam, da rogove pritrdite na okvirje spodnjega dela roke, preden nadaljujete. OPOMBA: Preden jih pritrdite na okvir, servomotorje namestite na ramenski sklop. Ta dva servomotorja se morata gibati soglasno in če nista pravilno nameščena, bosta najmanj povzročila trepetanje servomotorja in, če sta dovolj neusklajena, lahko poškodujeta okvir ali servomotorje. * Vsak od ramenskih servomotorjev je nameščen s svojimi nosilci na hrbtni strani pritrdilnih plošč, namesto da bi servomotorje speljali skozi plošče - tako boste lahko pod kotom potisnili rog na servo gred in pritrdili vijak. Servo še ne pritrdite na montažno ploščo. * Nato dodajte notranji servo in namestite roko
  7. Okvir in servomotorje sestavite tako, da potisnete servomotorje skozi prostore v rokah, nato pa vstavite distančnike med obe plošči nadlahti in jih pritrdite z vijaki M3.
  8. Na zadnjo stran distančnika za komolce dodajte dvostranski lepilni trak in odrežite presežek.
  9. Na spodnji del servomotorja pritrdite distančnik, ki bo deloval kot komolčni pogon.
  10. Zgornji del roke vstavite v okvir sklopa spodnjega dela roke in pritrdite vijake servo roga.
  11. Med dvema spodnjima ročajema dodajte ojačitve. Za znižanje teže sem uporabil dva namesto vseh štirih.
  12. Na zadnjo stran distančnika zgornjega zapestnega sklepa dodajte dvostranski lepilni trak in odrežite presežek.
  13. Na spodnji del servomotorja pritrdite distančnik, ki bo deloval kot zapestni pogon.
  14. Zunanjo zapestno ploščo pritrdite na servo rog zapestja in jo pritrdite z vijakom za rog.
  15. Servo ploščo za zapestje sestavite z dvema ploščama zapestnih spojev in stojaloma.
  16. Servo zapestja pritrdite na servo ploščo s servo ploščo.
  17. Zapestni rog boste morali pritrditi na servo, preden pritrdite sklop prijemala na ta rog, ker je odprtina za vijak roga blokirana.
  18. Ohlapno sestavite dele prijemala, preden jih pritrdite na servo. To vam bo omogočilo prostor za privijanje trube v prejšnjem koraku.
  19. Rog prijemala pritrdite na njegov servo in dodatno privijte vijake, ki držijo spojke prijemala. OPOMBA: teh matic in vijakov ne privijte do konca, ker morajo biti zrahljani, da se lahko prijemalo premakne.

3. korak: Ožičenje in nadzorna plošča

Ožičenje in nadzorna plošča
Ožičenje in nadzorna plošča
Ožičenje in nadzorna plošča
Ožičenje in nadzorna plošča
Ožičenje in nadzorna plošča
Ožičenje in nadzorna plošča

Ta projekt sem zgradil kot razvojno platformo za nekaj idej, ki jih imam za kasnejši izobraževalni projekt. Torej je večina mojih povezav preprostih dupont priključkov. Edino spajkanje sem naredil za MCP3008. Če najdete to prelomno ploščo za to komponento, potem bi morali imeti to roko brez spajkanja.

Obstajajo 3 skupine komponent:

  1. Vhodi - Ti elementi sprejemajo informacije od uporabnika in so sestavljeni iz igralnih palic in ADC mcp3008.
  2. Izhodi - ti elementi pošiljajo podatke v svet tako, da uporabniku prikažejo stanje ali posodobijo servomotorje s podatki o položaju. Ti elementi so LCD zaslon, LCD nahrbtnik, LED RGB, gonilna plošča servo in nazadnje servomotorji.
  3. Obdelava - Arduino zaključi zadnjo skupino, ki sprejme podatke iz vhodov in potisne podatke na izhode v skladu s kodnimi navodili.

Zgornja shema Fritzing podrobno opisuje pin povezave za vse komponente.

Vhodi

Začeli bomo z vložki. Krmilne palice so analogne naprave - kar pomeni, da predstavljajo spremenljivo napetost kot vhod za Arduino. Vsak od treh krmilnih palic ima dva analogna izhoda za X in Y (gor, dol, levo desno), ki skupaj predstavljata 6 vhodov za Arduino. Čeprav ima Arduino Uno na voljo 6 analognih vhodov, moramo uporabiti dva od teh zatičev za komunikacijo I2C z zaslonom in servo krmilnikom.

Zaradi tega sem vključil analogno -digitalni pretvornik (ADC) MCP3008. Ta čip sprejema do 8 analognih vhodov in jih pretvori v digitalni signal preko komunikacijskih zatičev Arduino SPI na naslednji način:

  • Zatiči MCP 1-6> Spremenljivi izhodi palic za palec
  • Pina 7 in 8 MCP> Brez povezave
  • MCP Pin 9 (DGND)> Ozemljitev
  • MCP Pin 10 (CS/SHDN)> Uno Pin 12
  • MCP Pin 11 (DIN)> Uno Pin 11
  • MCP Pin 12 (DOUT)> Uno Pin 10
  • MCP Pin 13 (CLK)> Uno Pin 9
  • MCP Pin 14 (AGND)> Ozemljitev
  • MCP Pin 15 in 16> +5V

Povezave krmilne palice v shemi so prikazane le za primer. Odvisno od tega, katere igralne palice kupite in kako so nameščene, se lahko vaše povezave razlikujejo od mojih. Različne blagovne znamke igralne palice imajo lahko drugačen pinout in lahko tudi različno orientirajo X in Y. Pomembno je razumeti, kaj predstavlja vsak vhod na ADC -ju. Vsak pin predstavlja naslednja razmerja v moji kodi:

  • Pin 1 - Base - Analogni podatki na tem pinu bodo zavrteli najnižji servo na robotu
  • Pin 2 - Rame - Analogni podatki na tem zatiču vrtijo dva servomotorja nad osnovnim servo
  • Pin 3 - Komolec - Analogni podatki na tem zatiču bodo naslednji servo zasukali navzgor od ramenskih servomotorjev
  • Pin 4 - UP/DN Wrist - Analogni podatki na tem zatiču bodo zavrteli servo zapestja, dvignili in spustili sklop prijemala
  • Pin 5 - Gripper - Analogni podatki na tem zatiču bodo odprli in zaprli prijemalo
  • Pin 6 - Rotate Wrist - Analogni podatki na tem zatiču bodo zasukali prijemalo

OPOMBA: Ko kupujete in montirate palice za palec, navedene na seznamu delov, ne pozabite, da se lahko usmerjenost modulov razlikuje od moje, zato preizkusite izhode x in y za pravilno povezavo z ADC. Če uporabljate mojo 3D tiskano nadzorno ploščo, so lahko montažne luknje odmaknjene od moje.

Izhodi

Adafruit PWM/servo krmilnik naredi ta projekt zelo preprost. Samo priključite servomotorje na servo glave in vse napajalne in signalne povezave so obdelane. Če ne najdete servomotorjev z zelo dolgimi vodi, boste želeli dobiti komplet servo kablov v različnih dolžinah, tako da bodo vsi servo kabli dosegli vašo krmilno ploščo.

Servomotorji so povezani na naslednji način:

  • Položaj 0 - osnovni servo
  • Položaj 1 - Servo ramena (kabel servo Y)
  • Položaj 2 - Servo za komolce
  • Položaj 3 - Servo zapestja 1
  • Položaj 4 - Servo prijemala
  • Položaj 5 - Servo zapestja 2

Poleg tega sta VCC in V + priključena na +5 voltov, GND pa na ozemljitev.

OPOMBA 1: Ena velika opomba tukaj: Napajalna napetost za celoten projekt prihaja skozi napajalni priključni blok na servo krmilni plošči. V+ pin na servo krmilniku dejansko napaja iz priključnega bloka do preostalega tokokroga. Če morate programirati svoj Uno, toplo priporočam, da odklopite pin V+, preden povežete Uno z računalnikom, saj lahko trenutni izhod iz servomotorjev poškoduje vrata USB.

OPOMBA 2: Za napajanje projekta uporabljam stenski adapter 6V AC do DC. Priporočam adapter, ki lahko napaja vsaj 4A toka, tako da ob povezavi enega ali več servomotorjev nenaden skok toka ne porumeni vašega sistema in ponastavi vašega Arduina.

Zaslon LCD velikosti 16X2 je povezan z nahrbtnikom Adafruit LCD, da izkoristijo vmesnik I2C, ki ga že uporablja krmilnik servo. SCL na servo krmilniku in CLK na nahrbtniku se povežeta s Pin A5 na Uno. Podobno se SDA na servo krmilniku in DAT na nahrbtniku povežeta s Pin A4 na Uno. Poleg tega je 5V priključeno na +5 voltov, GND pa na ozemljitev. LAT na nahrbtniku ni povezan z ničemer.

Nazadnje je LED RGB priključena na nožice 7 (RDEČA), 6 (Zelena) in 5 (Modra) na Uno. Ozemljitvena noga LED je povezana z maso preko upora 330Ohm.

Obravnavati

Nenazadnje so preostali priključki Arduino, ki niso navedeni zgoraj, naslednji: Pin 5V je priključen na +5 voltov, GND pa na ozemljitev.

V svoji nastavitvi sem uporabil stranske tirnice na plošči za povezavo vseh električnih in ozemljitvenih vodov ter zatičev I2C za vse naprave.

4. korak: Koda

Koda
Koda

Kot smo že omenili, sem ta projekt prvotno zgradil kot demonstracijo za svoj lokalni Maker Faire. Nameraval sem si, da bi se otroci in odrasli z njimi igrali na naši stojnici. Izkazalo se je, da je bil bolj priljubljen, kot sem si predstavljal - tako zelo, da so se otroci zaradi tega prepirali. Torej, ko je prišel čas za ponovno pisanje, sem vključil "Demo način", ki uvaja časovno omejitev.

Roka sedi tam in čaka, da nekdo premakne krmilno palčko, in ko to stori, začne števec časa 60 sekund. Ob koncu 60 sekund preneha vnesti vnos od uporabnika in "počiva" 15 sekund. Kratka pozornost obsega to, kar je, to obdobje počitka je močno zmanjšalo spopad glede časa palice.

Osnovno delovanje

Koda, navedena v spodnjem referenčnem razdelku, je precej preprosta. Niz spremlja 6 spojev z min, max ekstenzijami, domačim položajem in trenutnim položajem. Ko je roka vklopljena, zagonska funkcija določi knjižnice, potrebne za pogovor z MCP3008, nahrbtnik LCD (in nato zaslon) ter definira LED zatiče. Od tam opravi osnovni pregled sistemov in nadaljuje z roko. Domača funkcija se začne z prijemalom in deluje vse do podlage, tako da v normalnih pogojih zmanjša možnost vezave. Če je roka popolnoma iztegnjena, je morda najbolje, da roko ročno položite domov, preden jo vklopite. Ker splošni servomotorji ne zagotavljajo povratnih informacij o svojem položaju, moramo vsakega postaviti na vnaprej določeno točko in spremljati, kako daleč se je vsak premaknil.

Glavna zanka se najprej zažene v čakalnem načinu - iščejo igralne palice, da se odmaknejo od svojega osrednjega položaja. Ko se to zgodi, glavna zanka spremeni stanje v stanje odštevanja. Ko uporabnik premakne vsako krmilno palčko, se bo relativna lega igralne palice od sredine dodala ali odštela od trenutnega znanega položaja in posodobila ustrezen servo. Ko servo doseže določeno mejo v eno smer, se krmilna palica ustavi. Uporabnik bo moral za ponovno premikanje krmilne palice v drugo smer. To je omejitev programske opreme za servomotorje, ne glede na zaustavitev strojne opreme. Ta funkcija vam omogoča, da po potrebi ohranite premike roke znotraj določenega operacijskega območja. Če krmilno palčko spustite v sredino, se premikanje ustavi.

Ta koda je le splošno izhodišče. Po želji lahko dodate svoje načine. En primer je lahko način neprekinjenega delovanja brez časovnika ali pa lahko kot vhodne tipke dodate gumbe krmilne ročice in napišete način snemanja/predvajanja.

5. korak: Povezave in viri

Reference rok

  • Objava, ki je navdihnila ta projekt
  • Izvirni prispevki oblikovalcev na blogu Moja lastna robotska roka Moji mini servo prijemali in dokončana robotska roka Pomnožite robotsko roko in elektroniko
  • Thingiverse Arm
  • Mini servo prijemalo Thingiverse

Knjižnice programske opreme

  • Viri krmilnika PWM/servo krmilnika Adafruit
  • Knjižnica MCP3008
  • Tehnični list MCP3008

Nadzorna plošča in koda

  • Risba plošče Tinkercad, ki sem jo naredil
  • Trenutno skladišče kod

Priporočena: