Sadržaj:

Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode: 5 koraka (sa slikama)
Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode: 5 koraka (sa slikama)

Video: Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode: 5 koraka (sa slikama)

Video: Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode: 5 koraka (sa slikama)
Video: Использование кнопки скорости шагового двигателя 28BYJ-48 с 8 проектами: Ultimate Video Tutorial, урок 107 2024, Srpanj
Anonim
Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode
Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode
Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode
Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode
Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode
Arduino kontrolirana robotska ruka W/ 6 stupnjeva slobode

Član sam grupe za robotiku i svake godine naša skupina sudjeluje na godišnjem sajmu mini proizvođača. Počevši od 2014. godine, odlučio sam izgraditi novi projekt za svake godine. U to sam vrijeme imao oko mjesec dana prije događaja da sastavim nešto i nisam imao pojma što želim učiniti.

Kolega član objavio je vezu na "zanimljivu konstrukciju robotske ruke otvorenog koda" koja je dosegla vrhunac mog interesa. Planovi su bili samo ruka bez kontrola ili kontrolera. S obzirom na moja vremenska ograničenja, činilo se da je to stvarno dobro polazište. Jedini je problem bio što zaista nisam imao alate za početak.

Uz pomoć nekih članova grupe, uspio sam izrezati akrilne dijelove i poslati mi ih, kao i dva dolje prikazana 3D ispisana dijela. U kombinaciji s nekim narudžbama hardvera preko noći i nekoliko odlazaka u lokalnu željezaru, završio sam radni projekt noć prije događaja!

Kako to obično biva, u priči ima još nekoliko inkarnacija, koje su sažete u ono što vidite u nastavku. Ako vas zanima zadnja priča, više informacija možete pronaći ovdje:

Korak 1: Što vam treba - hardver i elektronika

Što trebate - hardver i elektronika
Što trebate - hardver i elektronika
Što trebate - hardver i elektronika
Što trebate - hardver i elektronika

Prvotni dizajner projekta živio je u Europi i kasnije je koristio metrička mjerenja i tamo uobičajene materijale. Na primjer, daska za tisak koju je koristio za tijelo bila je standardna debljina 5 mm. Sličan materijal ovdje u SAD -u je 1/8 koji je debljine oko 3,7 mm. To je ostavilo prazninu u otvorima koji su prvobitno projektirani za prešanje. Umjesto ispravljanja crteža, jednostavno sam upotrijebio Gorilla ljepilo za pričvršćivanje ovih spojeva.

Također je koristio matice i vijke s navojem M3 koji nisu standardni u vašoj lokalnoj trgovini hardvera u SAD -u. Umjesto da ih pretvorim u lokalno dostupne opcije, jednostavno sam naručio hardver na mreži kao što je prikazano u donjem popisu mojih dijelova.

  • 22 - M3 x 0,5 x 23 mm Standovi
  • 15 - Odstojnici M3 x 15 mm
  • 40 - M3 vijci
  • M3 šesterokutne matice
  • M3 vijci 25 mm
  • 1 - Proljeće
  • 3/4 "dvostrana montažna traka
  • 5 - SG 5010 TowerPro servo
  • 1 - SG92R TowerPro mini servo
  • 1 - mini servo SG90 TowerPro
  • 2,54 mm jednoredni ravni zaglavlje sa iglom
  • 1 - Oglasna ploča pola veličine
  • 1 - Ženske/muške 'produžne' žice kratkospojnika - 40 x 6"
  • 1 - 12 "x 24" plavi akrilni lim ili laserski izrezani komadi od vašeg omiljenog davatelja usluga
  • 2 - 3 mm x 20 mm + 4 mm x 5 mm odstojnici za ležajeve zglobova 3D ispisani (vidi dolje)
  • 1 - Upravljačka ploča *Pogledajte napomenu u odjeljku ožičenje
  • 1 - Difuzna RGB (trobojna) 10 mm LED
  • 1 - Arduino Uno
  • 1 - Standardni LCD 16x2 + dodaci - bijela na plavoj boji
  • LCD ruksak s 1 - i2c / SPI znakom
  • 1-Adafruit 16-kanalni 12-bitni PWM/Servo upravljački program
  • 1 - MCP3008 - 8 -kanalni 10 -bitni ADC sa SPI sučeljem
  • 3 - Osjetnik JoyStick modula prekidanja *Pogledajte napomenu u odjeljku ožičenja
  • DC Barrel Jack
  • AC / DC adapter
  • Servo produžni kabeli - različite duljine

Gotovo svi dijelovi ove ruke izrezani su od akrila od 1/8 inča. Međutim, dva odstojnika za ležajeve zglobova ipak je potrebno otisnuti. Također, originalni dizajn zahtijeva da dvije baze odstojnih spojeva budu visoke 7 mm prema osovini ležaja. Kad sam započeo montažu nadlaktice, brzo je postalo jasno da su one previsoke zbog visine servo servera TowerPro. Morao sam izraditi nove zglobne ležajeve s podnožjem visokim samo 3 mm, koji je, usput rečeno, još uvijek bio malo previsok, ali upravljiv. Morat ćete uzeti u obzir relativnu visinu servo -a i uzeti u obzir udaljenost između dva donja kraka:

Servo visina + servo truba + zglobni ležaj + dvostrana traka = 47 mm +/- 3 mm.

Korak 2: Montaža ruke

Sklop ruke
Sklop ruke
Sklop ruke
Sklop ruke
Sklop ruke
Sklop ruke
Sklop ruke
Sklop ruke

Prije nego počnete, svakako centrirajte sve svoje servomotore! Ako u bilo kojem trenutku tijekom izgradnje, ako ručno pomaknete položaj servo pogona, morat ćete ga ponovno centrirati prije pričvršćivanja na okvir. To je osobito važno kod servo servera na ramenima koji se uvijek moraju kretati složno.

  1. Pričvrstite osnovni servo na gornju osnovnu ploču pomoću M3 25 mm vijaka i šesterokutnih matica. NAPOMENA: Možda ćete htjeti navoj pričvrstiti navojima kako biste smanjili olabavljenje matica tijekom uporabe.

  2. Ako koristite popis dijelova koji sam gore naveo, tada ćete htjeti sastaviti 5 odstojnika za podnožje tako što ćete svaki spojiti 2 poprečna stupa M3 x 0,5 x 23 mm, a zatim ih pričvrstiti na gornju osnovnu ploču pomoću šesterokutnih matica.
  3. Pričvrstite donju osnovnu ploču na držače pomoću 5 M3 vijaka.
  4. Pričvrstite ramenu ploču na dvije servo montažne ploče pomoću akrilnog ljepila. Ovdje sam koristila ljepilo Gorilla. NAPOMENA: Svaka od dvije servo ploče ima rupu na stražnjoj strani koja omogućuje umetanje odstojnika za pojačanje koji ih povezuje. Pobrinite se da se rupe poravnaju!* Dok vam je ljepilo pri ruci, nastavite i spojite ploču za pričvršćivanje ručnog zgloba s glavnom pločom hvataljke.* Po želji, također možete zalijepiti servo ploču za ručni zglob na dvije ploče zglobova. Nisam se odlučio za to, već sam ih spojio zajedno sa zastojima, kako je dolje opisano.
  5. Pričvrstite sada izliječeni sklop ramena na osnovni servo. Koristio sam najširu trubu koja je uključena u servo, a to je bila sirena za ugradnju sa šest stabljika.

  6. Dodavanje okvira donje ruke servo pogonima na ramenima može biti teško. Predlažem da prije nastavka pričvrstite rogove na okvire potkoljenice. NAPOMENA: Prije nego što ih pričvrstite na okvir, obavezno centrirajte servo za rameni sklop. Ova dva serva moraju se kretati složno, a ako nisu poravnati, uzrokovat će minimalno podrhtavanje servo -a, a ako su dovoljno neusklađeni, mogu oštetiti okvir ili servomotore. * Svaki od ramenih servomotora montiran je sa svojim nosačima na stražnjoj strani montažnih ploča umjesto da servo pogone prolazi kroz ploče - to će vam omogućiti da gurnete trubu na servo vratilo pod kutom i pričvrstite vijak. Još ne pričvršćujte servo na montažnu ploču. * Zatim dodajte unutarnji servo i montirajte ruku
  7. Sastavite okvir gornje ruke i servo pogone gurajući servomotore kroz prostore na rukama, a zatim umetnite odstojnike između obje ploče nadlaktice i učvrstite vijcima M3.
  8. Dodajte dvostranu ljepljivu traku na stražnju stranu odstojnika za lakatni zglob i odrežite višak.
  9. Pričvrstite odstojnik na dno serva koji će djelovati kao pokretač koljena.
  10. Gurnite gornji dio ruke u okvir sklopa donje ruke i pričvrstite vijke servo trube.
  11. Dodajte razmake ojačanja između dvije ploče donjih krakova. Koristio sam dvije umjesto sve četiri za smanjenje težine.
  12. Dodajte dvostranu ljepljivu traku na stražnju stranu gornjeg odstojnika zglobnog zgloba i odrežite višak.
  13. Pričvrstite odstojnik na dno serva koji će djelovati kao pokretač ručnog zgloba.
  14. Pričvrstite vanjsku ploču za zglob na servo trup ručnog zgloba i pričvrstite je vijkom za trubu.
  15. Sastavite servo ploču za ručni zglob s dvije ploče i zglobove zglobova.
  16. Učvrstite servo ručni zglob na servo ploču pločom servo stezaljki.
  17. Morat ćete pričvrstiti trubu ručnog zgloba na servo prije nego pričvrstite sklop hvataljke na tu trubu zbog otvora za vijak sirene.
  18. Labavo sastavite komade hvataljke kako biste ih prilagodili prije pričvršćivanja servo trube hvataljke na servo. To će vam omogućiti prostor za uvrtanje trube u prethodnom koraku.
  19. Pričvrstite trubu hvataljke na servo i dodatno pritegnite vijke koji drže spojeve hvataljke. NAPOMENA: nemojte do kraja pritezati ove matice i vijke jer moraju biti labavi kako bi se hvataljka mogla pomaknuti.

Korak 3: Ožičenje i upravljačka ploča

Ožičenje i upravljačka ploča
Ožičenje i upravljačka ploča
Ožičenje i upravljačka ploča
Ožičenje i upravljačka ploča
Ožičenje i upravljačka ploča
Ožičenje i upravljačka ploča

Ovaj sam projekt izgradio kao razvojnu platformu za neke ideje koje imam za kasniji obrazovni projekt. Dakle, većina mojih veza su jednostavni dupont konektori. Jedino lemljenje koje sam napravio bilo je za MCP3008. Ako možete pronaći probojnu ploču za ovu komponentu, tada biste trebali moći izraditi ovaj lem za ruke bez lemljenja.

Postoje 3 grupe komponenti:

  1. Ulazi - ove stavke primaju informacije od korisnika i sastoje se od joysticka i mcp3008 ADC -a.
  2. Izlazi - ove stavke prenose podatke u svijet bilo prikazivanjem statusa korisniku ili ažuriranjem servosistema s podacima o položaju. Ove stavke su LCD zaslon, LCD ruksak, RGB LED, ploča upravljačkog programa servoa i na kraju servomotori.
  3. Obrada - Arduino završava posljednju skupinu koja prima podatke s ulaza i gura podatke prema izlazima prema uputama koda.

Gornja shema Fritzinga prikazuje pin -veze za sve komponente.

Ulazi

Počet ćemo s ulazima. Džojstiki su analogni uređaji - što znači da predstavljaju promjenjivi napon kao ulaz za Arduino. Svaki od tri džojstika ima dva analogna izlaza za X i Y (gore, dolje, lijevo desno) što čini ukupno 6 ulaza za Arduino. Iako Arduino Uno ima na raspolaganju 6 analognih ulaza, moramo koristiti dva od ovih pinova za I2C komunikaciju s zaslonom i servo kontrolerom.

Zbog toga sam ugradio analogno -digitalni pretvarač (ADC) MCP3008. Ovaj čip prima do 8 analognih ulaza i pretvara ih u digitalni signal preko Arduinovih SPI komunikacijskih pinova na sljedeći način:

  • MCP pinovi 1-6> Promjenjivi izlazi palica
  • MCP pinovi 7 i 8> Nema veze
  • MCP pin 9 (DGND)> Uzemljenje
  • 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)> Uzemljenje
  • MCP pin 15 i 16> +5V

Spojevi upravljačke palice u shemi samo su prikazani kao primjer. Ovisno o tome koje joysticke kupujete i kako su postavljeni, vaše se veze mogu razlikovati od mojih. Različite marke džojstika mogu imati različit pinout i također mogu različito usmjeriti X i Y. Ono što je važno je razumjeti što svaki ulaz na ADC -u predstavlja. Svaki pin predstavlja sljedeće odnose u mom kodu:

  • Pin 1 - Baza - Analogni podaci na ovom pinu rotirat će najniži servo na robotu
  • Pin 2 - Rame - Analogni podaci na ovom pinu rotirat će dva serva iznad osnovnog serva
  • Pin 3 - Lakat - Analogni podaci na ovom pinu rotirat će sljedeći servo prema gore od servo servera
  • Pin 4 - UP/DN Zglob - Analogni podaci na ovom pinu rotirat će servo servo zgloba, podižući i spuštajući sklop hvataljke
  • Pin 5 - Hvataljka - Analogni podaci na ovoj iglici otvaraju i zatvaraju hvataljku
  • Pin 6 - Rotate Wrist - Analogni podaci na ovom pinu će rotirati hvataljku

NAPOMENA: Kada kupujete i montirate palice za palce navedene na popisu dijelova, imajte na umu da se orijentacija modula može razlikovati od moje, pa isprobajte izlaze x i y za ispravnu vezu s ADC -om. Također, ako koristite moju 3D tiskanu upravljačku ploču, rupe za montažu mogu biti pomaknute od moje.

Izlazi

Adafruit PWM/Servo kontroler čini ovaj projekt vrlo jednostavnim. Jednostavno spojite servosisteme na servo zaglavlja i obrađuju se svi priključci napajanja i signala. Osim ako ne pronađete servosisteme s iznimno dugim vodovima, htjet ćete nabaviti set produžetaka za servo kabele u različitim duljinama tako da svi vaši servo kabeli dopiru do vaše ploče upravljača.

Servo uređaji povezani su na sljedeći način:

  • Pozicija 0 - osnovni servo
  • Pozicija 1 - Servo ramena (kabel servo Y)
  • Pozicija 2 - Servo za lakat
  • Položaj 3 - Servo zglob 1
  • Pozicija 4 - Servo hvataljke
  • Položaj 5 - Servo za zglob 2

Dodatno, VCC i V + su spojeni na +5 volti, a GND je spojen na masu.

NAPOMENA 1: Ovdje jedna VELIKA napomena: Napon napajanja za cijeli projekt dolazi kroz priključni blok napajanja na servo upravljačkoj ploči. V+ pin na servo upravljaču zapravo opskrbljuje struju iz priključnog bloka do ostatka kruga. Ako trebate programirati svoj Uno, toplo preporučujem da odspojite V+ pin prije povezivanja Uno -a s računalom jer bi trenutno napajanje iz servomotora moglo oštetiti vaš USB priključak.

NAPOMENA 2: Za napajanje projekta koristim zidni adapter 6V AC / DC za napajanje. Preporučujem adapter koji može opskrbiti najmanje 4A struje, tako da kada se jedan ili više servo-a spoji, nagli skok struje ne istisne vaš sustav i resetira vaš Arduino.

16X2 LCD zaslon povezan je s Adafruit LCD ruksakom kako bi se iskoristilo sučelje I2C koje već koristi servo upravljač. SCL na servo upravljaču i CLK na ruksaku spajaju se na pin A5 na Uno -u. Slično, SDA na Servo kontroleru i DAT na ruksaku spajaju se na Pin A4 na Uno -u. Dodatno, 5V je spojeno na +5 Volti, a GND je spojen na masu. LAT na ruksaku nije povezan ni s čim.

Na kraju, RGB LED je spojen na pinove 7 (CRVENO), 6 (Zeleno) i 5 (Plavo) na Uno -u. Uzemljenje LED diode spojeno je na uzemljenje pomoću otpornika od 330 Ohma.

Obrada

Na kraju, ali ne i najmanje važno, preostali Arduino spojevi koji nisu gore navedeni su sljedeći: Pin 5V je spojen na +5 Volti, a GND je spojen na uzemljenje.

U svom postavljanju koristio sam bočne vodilice ploče za povezivanje svih vodova napajanja i uzemljenja, kao i I2C igle za sve uređaje.

Korak 4: Kodirajte

Kodirati
Kodirati

Kao što je ranije rečeno, ovaj sam projekt izvorno izgradio kao demonstraciju za svoj lokalni Maker Faire. Namjeravao sam da to bude nešto za igru s djecom i odraslima dok smo na našem štandu. Ispostavilo se da je bio mnogo popularniji nego što sam zamišljao - toliko da su se djeca svađala zbog toga. Dakle, kad je došlo vrijeme za ponovno pisanje, uključio sam "Demo način" koji implementira vremensko ograničenje.

Ruka sjedi tamo i čeka da netko pomakne joystick, a kad to učini, počinje mjerač vremena od 60 sekundi. Na kraju 60 sekundi, prestaje primati unos od korisnika i "odmara" 15 sekundi. Kratka pažnja obuhvaća ono što jest, ovo razdoblje odmora uvelike je smanjilo borbu za vrijeme štapa.

Osnovni rad

Kôd naveden u dolje navedenom referentnom odjeljku prilično je jednostavan. Niz prati 6 zglobova s min, max ekstenzijama, početni položaj i trenutni položaj. Kad je ruka uključena, funkcija pokretanja definira biblioteke potrebne za razgovor s MCP3008, LCD ruksak (a zatim i zaslon) te definira LED pinove. Odatle vrši osnovnu provjeru sustava i nastavlja do kuće. Početna funkcija počinje s hvataljkom i radi do samog podnožja tako da u normalnim uvjetima minimizira mogućnost vezivanja. Ako je ruka potpuno ispružena, možda bi bilo najbolje da ručno vratite ruku prije nego što je uključite. Budući da generički servo upravljači ne pružaju povratne informacije o njihovom položaju, moramo ih postaviti na unaprijed definiranu točku i pratiti koliko su svaki od njih pomaknuti.

Glavna petlja prvo započinje u načinu čekanja - tražeći da se upravljačke palice pomaknu od njihovog središnjeg položaja. Kad se to dogodi, glavna petlja mijenja stanje u stanje odbrojavanja. Kako korisnik pomiče svaki joystick, relativni položaj joysticka od središta će dodavati ili oduzimati od trenutnog poznatog položaja i ažurirati odgovarajući servo. Kad servo dosegne definiranu granicu u jednom smjeru, joystick se zaustavlja. Korisnik će morati pomaknuti joystick u drugom smjeru da bi ga ponovno pomaknuo. Ovo je softversko ograničenje nametnuto servo pogonima bez obzira na hardverske zastoje. Ova vam značajka omogućuje držanje pokreta ruke unutar određenog operativnog područja ako je potrebno. Ako se joystick pusti u središte, kretanje će se zaustaviti.

Ovaj je kôd samo opće polazište. Možete dodati vlastite načine rada po želji. Jedan primjer može biti način neprekidnog rada bez vremenskog ograničenja ili možda dodati gumbe na upravljačkoj tipki kao ulaze i napisati način snimanja/reprodukcije.

Korak 5: Veze i izvori

Reference o ruci

  • Post koji je inspirirao ovaj projekt
  • Objave na blogu izvornih dizajneraMoja vlastita robotska rukaMoji mini servo hvataljke i gotova robotska ruka Pomnožite robotsku ruku i elektroniku
  • Thingiverse Arm
  • Mini servo hvataljka Thingiverse

Biblioteke softvera

  • Resursi PWM/servo kontrolera Adafruit
  • Knjižnica MCP3008
  • Tehnički list MCP3008

Upravljačka ploča i kod

  • Tinkercad crtež ploče koju sam napravio
  • Trenutačno spremište koda

Preporučeni: