Sadržaj:

Arduino robotska ruka: 5 koraka
Arduino robotska ruka: 5 koraka

Video: Arduino robotska ruka: 5 koraka

Video: Arduino robotska ruka: 5 koraka
Video: Didaktička robotska ruka sa 5 DOF (rotacijska struktura) 2024, Juli
Anonim
Image
Image
Arduino Robotski Arm
Arduino Robotski Arm
Arduino Robotski Arm
Arduino Robotski Arm

Budući da je to moj prvi projekt nakon 15 tutorijala mog početnog kompleta za Arduino, prava svrha je dobiti neke kritičare, savjete, prijedloge, ideje od svakoga tko zna više od mene.

Ovaj projekt govori o robotskoj ruci, sa 4 DOF -a i hvatom. Sa pristojno niskim budžetom: strukturu je izrezao prijatelj, 4 servo servera su bila 30 €, 2 džojstika 4 €, vijci itd. Za manje od 10 € i sve ostalo (Arduino, žice, servo držač itd.)) već je bio uključen u moj početni komplet. Za ukupno 40-45 €, što je oko 45-50 američkih dolara (ista cijena kompleta za rukovanje, ali hej, bilo je zabavno to sam morati napraviti (i s vremena na vrijeme nešto zabrljati) a ne slijedite upute kao stroj).

Budući da je ovo bio moj prvi projekt i Instructable, ušao sam u '' First Time Author '' i par drugih natječaja, pa ako vam se sviđa, glasajte:)

Korak 1: PROJEKTIRANJE I MONTAŽA:

Prvo mi je trebala struktura: ovo je definitivno bio najduži dio. Pošto nisam htio kopirati i zalijepiti projekt od nekoga drugog, uzeo sam projekt kao referencu i ja (i još par vještih kolega iz razreda koji su me zaista spasili) počeli ga mijenjati prema našim potrebama (različiti servomotori s različitim zakretnim momentom, težinom i dimenzijama itd.). Morao sam ga izgraditi nekoliko puta, svaki od njih je otkrio da nešto nije u redu, pa smo morali ponovo izrezati neke komade i pokušati ponovo. Priložio sam.dxf datoteku u slučaju da je želite koristiti. Zatim sam morao kupiti elektroniku: Većina dijelova je bila standardna, teži dio je bio odabrati servomotore. Izračunao sam potrebni okretni moment pomoću općeg pravila, kasnije sam pokušao precizniji izračun i otkrio sam da sam ga možda malo pretjerao. Očigledno bi 6 kg/cm bilo dovoljno za drugi servo (od baze), a moj daje 9-11 kg/cm. Pa, ovo mi daje određenu sigurnost i priliku da utovarim do 2 kg tereta (što je nemoguće, ali sviđa mi se što bih to tehnički mogao učiniti). Mogao sam kupiti i različite servomotore sa smanjenim zakretnim momentom dok se udaljavamo od baze, ali kupovina identičnih servo motora od istog dobavljača bila je daleko najjeftinija opcija. Napajanje: Arduino definitivno nije bio dovoljan za servo pogone jer svaki mg995 izvlači 350mA i mikroservo 9g troši 100mA, za ukupno 350*4 +100 = 1500mA. Pa sam spasio punjač (6V 1.5A) i na njega lemio dvije kratkospojne žice. (Ako nekima od vas budu trebala neka stvarna uputstva, samo pitajte u komentarima, a ja ću se potruditi stvoriti korak po korak vodič) Spisak materijala:- Konstrukcija- M5x7cm vijak x5, m5 vijci x15 (baza)- M3x16mm vijak x18*- M3x20mm vijak x13*- M3 vijak x40*- M3x8cm vijak x3- Stezaljka (inače će pasti)- 3 klina- Arduino (ili nešto drugo za upravljanje, mora imati najmanje 5 PWM)- Nešto za napajanje 5-6V i najmanje 1,5A- 3x džojstika nalik ps2- 4x TowerPro mg995 servo-1 1x TowerPro 9g mikroservo (za držanje) - Mnogo kratkospojnih žica - Oglasna ploča*(Koristio sam vijke i vijke za brzo sastavljanje i rastavljanje, inače biste ih gotovo sve mogli zamijeniti vijcima za stolariju)

Korak 2: KOD:

Ideja je kontrolirati svaki servo pogon s jednom od dvije osi džojstika nalik ps2. Činilo se da svaki džojstik ima različite "vrijednosti mirovanja" (vrijednost između 0-1023 kada je miran) za y i x os. To je bio problem, jer je razlika bila mala (jedna je imala nulu na y na 623) i htio sam koristiti funkciju karte za pretvaranje od 0-1023 u stupnjeve. Ali funkcija karte misli da je vrijednost mirovanja 1023/2. Što je dovelo do svakog servo pokreta čim uključim Arduino, nije dobro. Uspio sam to zaobići tako što sam ručno pronašao razliku između vrijednosti očitanja i svake različite vrijednosti odmora (koju sam izračunao zasebno za svaki joystick), a zatim na učinio kôd kraćim i pametnijim, natjerao sam ga da pročita ostale vrijednosti u funkciji postavljanja i sačuva ih u nekim varijablama. Novi algoritam oslanja se na pretvaranje prirasta u stupnjevima, ali želio sam vrlo nizak stupanj za svoj prirast Morao sam to podijeliti za konstantu: isprobao sam mnoge vrijednosti, dok nisam došao do posljednjih 200 (mogu dodati potenciometar da ručno promijenim ovu vrijednost na željenu). Ostatak koda je prilično standardan, pretpostavljam, iako bi moglo biti elegantnije staviti izračun prirasta unutar zasebne funkcije.

Korak 3: ELEKTRONIKA:

ELEKTRONIKA
ELEKTRONIKA

Ožičenje je isto kao što je prikazano na slici ili datoteci za prevrtanje: servosignalni signali na pinove: 5-6-9-10-11 i osa džojstika na analogne pinove: A0-A1-A2-A3-A4Veliki problem na koji sam naišao da je upravljačke palice MORAO nabaviti Arduino, a NE punjač koji koristim za servo pogone. Inače bi servo jednostavno poludio krećući se nasumično naprijed -natrag. Mislim da je to možda zato što, ako im isporučim punjač, Arduino neće moći precizno reći razliku potencijala kad ih premjestim, ali opet: Vrlo sam nov u elektronici pa je to samo nagađanje. Povezivanje uzemljenja Arduina i uzemljenja punjača kroz ploču pomoglo je u sprječavanju slučajnih i neočekivanih pomaka, iz sličnog razloga zbog isporuke joysticka.

Korak 4: TRENUTNO SE IDE NA POBOLJŠANJE:

TRENUTNO SE POLOŽAVA
TRENUTNO SE POLOŽAVA

Budući da svaki joystick može kontrolirati 2 servo -a (1 po osi), potrebna su mi 3 servo -a za kontrolu cijele ruke, ali nažalost imam samo 2 palca. Pa sam mislio da bih, umjesto kontrole svakog servo -a, mogao kontrolirati samo xyz položaj hvatanje i otvaranje-zatvaranje hvata, za ukupno 4 osi, 2 džojstika i 2 palca! Otkrio sam da je taj problem dobro poznat kao inverzna kinematika, također sam otkrio da je sve to jednostavno. Ideja je pisati (nelinearne) jednadžbe za pronalaženje stanja svakog efektora (kutovi za servomotore) s obzirom na konačni položaj. Učitao sam ručno napisan papir s jednačinama i trenutno radim na novom kodu za njihovu upotrebu. Ne bi trebalo biti previše teško, u osnovi moram čitati upravljačke palice, koristiti njihova očitanja za izmjenu xyz koordinata hvata, a zatim ih dati mojim jednadžbama, izračunati kutove servomotora i zapisati ih.

Korak 5: BUDUĆA POBOLJŠANJA:

Dakle, prilično sam zadovoljan ishodom i s obzirom na to da sam potpuno nov u elektronici koja nešto nije ispuhala ili sam sebe već je bio velika pobjeda. Kao što sam rekao na početku, svaka ideja za buduća poboljšanja, kako softvera, tako i hardver, više je nego dobrodošao! Do sada sam razmišljao o: 1. Potenciometar za promjenu “osjetljivosti” upravljačkih palica.2. Novi kôd koji će ga natjerati da "zabilježi" neke pokrete i izvede ih ponovo (možda brže i kraće od ljudskog unosa) 3. Neka vrsta vizualnog/udaljenog/glasovnog unosa i mogućnosti dobivanja objekata bez da netko koristi joystick4. Mogućnost crtanja geometrijskih figura Ima li još ideja? Slobodno komentirajte sve prijedloge. Hvala

Preporučuje se: