Sadržaj:

Arduino kontrolisana robotska ruka W/ 6 stepeni slobode: 5 koraka (sa slikama)
Arduino kontrolisana robotska ruka W/ 6 stepeni slobode: 5 koraka (sa slikama)

Video: Arduino kontrolisana robotska ruka W/ 6 stepeni slobode: 5 koraka (sa slikama)

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

Član sam grupe za robotiku i svake godine naša grupa učestvuje 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 vrijeme, imao sam oko mjesec dana prije događaja da sastavim nešto i nisam imao pojma šta želim raditi.

Kolega član je postavio vezu do "interesantne konstrukcije robotske ruke otvorenog koda" koja je dosegla vrhunac mog interesovanja. Planovi su bili samo ruka bez kontrola ili kontrolera. S obzirom na moja vremenska ograničenja, činilo se da je to zaista dobra polazna tačka. Jedini problem je bio što zaista nisam imao alate za početak.

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

Kako to obično biva, priča ima više i nekoliko inkarnacija u izgradnji 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: Šta vam treba - hardver i elektronika

Šta vam treba - hardver i elektronika
Šta vam treba - hardver i elektronika
Šta vam treba - hardver i elektronika
Šta vam treba - hardver i elektronika

Originalni dizajner projekta živio je u Europi i kasnije je koristio metrička mjerenja i tamo uobičajene materijale. Na primjer, daska za prešanje 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 bili dizajnirani 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 mojem popisu dijelova ispod.

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

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 odštampati. Također, originalni dizajn zahtijeva da dvije baze odstojnih odstojnika budu visoke 7 mm prema osovini ležaja. Kada sam započeo montažu nadlaktice, brzo je postalo jasno da su previsoke zbog visine servo servera TowerPro. Morao sam napraviti nove zglobne ležajeve sa 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 dvije donje ruke:

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

Korak 2: Sklop ruke

Arm Assembly
Arm Assembly
Arm Assembly
Arm Assembly
Arm Assembly
Arm Assembly
Arm Assembly
Arm Assembly

Prije nego počnete, obavezno centrirajte sve svoje servomotore! Ako u bilo kojem trenutku tijekom izgradnje, ako ručno pomaknete položaj servo pogona, morat ćete ga ponovo centrirati prije pričvršćivanja na okvir. Ovo je posebno 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 vijaka od 25 mm i šesterokutnih matica. NAPOMENA: Možda ćete htjeti navoj pričvrstiti navojima kako biste smanjili olabavljenje matica tijekom upotrebe.

  2. Ako koristite gornji popis dijelova, tada ćete htjeti sastaviti 5 odstojnika za podnožje tako što ćete svaki spojiti po 2 od nosača 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 koristio gorivo ljepilo. NAPOMENA: Svaka od dvije servo ploče ima rupu na stražnjoj strani koja omogućuje umetanje odstojnika za ojačanje koji ih povezuje. Pazite da se rupe poravnaju!* Dok vam ljepilo bude 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 to izabrao umjesto toga da bih ih spojio zajedno sa suprotnostima, 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 montažna truba 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 se moraju kretati složno, a ako nisu poravnati, uzrokovat će minimalno podrhtavanje servoa, a ako se ne usklade dovoljno, 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 prođe servosisteme 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 unutrašnji servo i montirajte ruku
  7. Sastavite okvir nadlaktice i servo pogone tako što ćete servo pogone gurnuti kroz prostore na rukama, a zatim umetnuti odstojnike između obje ploče nadlaktice i učvrstiti 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 servo koji će djelovati kao pokretač koljena.
  10. Gurnite gornji dio ruke u okvir sklopa donje ruke i pričvrstite vijke servo trube.
  11. Dodajte odstojanja armature 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 servo uređaja koji će djelovati kao pokretač ručnog zgloba.
  14. Spojite vanjsku ploču za ručni 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 zglobova i nosačima.
  16. Pričvrstite servo ručni zglob na servo ploču pomoću ploče servo stezaljke.
  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. Ovo će vam omogućiti prostor da u prethodnom koraku zavijte trubu.
  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 kontrolna ploča

Ožičenje i kontrolna ploča
Ožičenje i kontrolna ploča
Ožičenje i kontrolna ploča
Ožičenje i kontrolna ploča
Ožičenje i kontrolna ploča
Ožičenje i kontrolna ploča

Ovaj projekt sam izgradio kao razvojnu platformu za neke ideje koje imam za kasnije obrazovne projekte. Dakle, većina mojih veza su jednostavni dupont konektori. Jedino lemljenje koje sam uradio bilo je za MCP3008. Ako možete pronaći probojnu ploču za ovu komponentu, trebali biste moći konstruirati ovaj lem za ruke.

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 servo pogona sa podacima o položaju. Ove stavke su LCD ekran, LCD ruksak, RGB LED, ploča upravljačkog programa servoa i na kraju servo upravljači.
  3. Obrada - Arduino završava posljednju grupu 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žojstici 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 sa ekranom 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

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

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

NAPOMENA: Kada kupujete i montirate palice za palce navedene u 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 kontrolnu 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 za napajanje i signal. Osim ako ne pronađete servosisteme s izuzetno dugim vodovima, poželjet ćete nabaviti set produžetaka servo kabela u različitim duljinama tako da svi vaši servo kabeli dopiru do vaše ploče upravljača.

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

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

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

NAPOMENA 1: Jedna VELIKA napomena ovdje: Napon napajanja za cijeli projekt dolazi kroz priključni blok napajanja na servo upravljačkoj ploči. V+ pin na servo upravljaču zapravo napaja 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 port.

NAPOMENA 2: Koristim 6V AC / DC zidni adapter za napajanje projekta. 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 zamrači vaš sistem i resetira vaš Arduino.

16X2 LCD ekran je povezan sa Adafruit LCD ruksakom kako bi se iskoristilo prednosti I2C interfejsa koji već koristi Servo kontroler. SCL na Servo kontroleru i CLK na ruksaku povezuju 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 uzemljenje. LAT na ruksaku nije povezan ni sa čim.

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

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 ograde matične ploče za povezivanje svih vodova napajanja i uzemljenja, kao i I2C pinove za sve uređaje.

Korak 4: Kodirajte

Kod
Kod

Kao što je ranije rečeno, prvobitno sam ovaj projekat izgradio kao demonstraciju za svoj lokalni Maker Faire. Nameravao sam da to bude nešto za igru sa decom 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 Mode" 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 jesu, ovaj period odmora uvelike je smanjio borbu za vrijeme štapa.

Osnovne operacije

Kod naveden u donjem referentnom odjeljku prilično je jednostavan. Niz prati 6 zglobova sa min, max ekstenzijama, početnim položajem i trenutnim položajem. Kada je ruka uključena, funkcija pokretanja definira biblioteke potrebne za razgovor s MCP3008, LCD ruksak (a zatim i ekran) i definira LED pinove. Odatle vrši osnovnu proveru sistema i nastavlja do kuće. Home 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 postaviti svaki na unaprijed definiranu točku i pratiti koliko su svaki od njih pomaknuti.

Glavna petlja prvo počinje u režimu čekanja - tražeći džojstike da se odmaknu od svog središnjeg položaja. Kada se to dogodi, glavna petlja mijenja stanje u stanje odbrojavanja. Kako korisnik pomiče svaki džojstik, relativni položaj džojstika od centra ć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 ga ponovo pomakne. Ovo je softversko ograničenje nametnuto servo pogonima bez obzira na hardversko zaustavljanje. Ova funkcija vam omogućava da zadržite pokrete ruke unutar određenog operativnog područja ako je potrebno. Ako se džojstik pusti u centar, kretanje će se zaustaviti.

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

Korak 5: Veze i resursi

Arm Reference

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

Biblioteke softvera

  • Resursi Adafruit PWM/servo kontrolera
  • Biblioteka MCP3008
  • Tehnički list MCP3008

Upravljačka ploča i kod

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

Preporučuje se: