Innholdsfortegnelse:

Arduino robotarm: 5 trinn
Arduino robotarm: 5 trinn

Video: Arduino robotarm: 5 trinn

Video: Arduino robotarm: 5 trinn
Video: Makeblock Untimate Robot Kit Part 1 : Step by Step Assembly Robot of Aram Tank 2024, November
Anonim
Image
Image
Arduino robotarm
Arduino robotarm
Arduino robotarm
Arduino robotarm

Siden det er mitt første prosjekt etter de 15 opplæringsprogrammene i mitt Arduino startpakke, er det egentlige formålet med det å få noen kritikere, tips, forslag, ideer fra alle som vet mer enn meg.

Dette prosjektet handler om en robotarm, med 4 doffer og et grep. Med et anstendig lavt budsjett: strukturen har blitt kuttet av en venn, de 4 servoene var 30 €, de 2 joystickene 4 €, skruene skruer etc. for mindre enn 10 € og alt annet (Arduino, ledninger, grepservo etc.) var allerede inkludert i startpakken min. For totalt 40-45 € som er omtrent 45-50 amerikanske dollar (samme pris på et me-arm kit, men hei, det var morsomt å måtte bygge det selv (og rote noe av og til) og ikke følge instruksjonene som en maskin).

Siden dette var mitt første prosjekt og instruerbart, deltok jeg i '' First Time Author '' og et par andre konkurranser, så hvis du liker det, stem det:)

Trinn 1: DESIGN OG MONTERING:

Først trengte jeg en struktur: Dette var definitivt den lengste delen. Siden jeg ikke ønsket å kopiere og lime inn prosjektet fra noen andre, tok jeg et prosjekt som referanse, og jeg (og et par flere dyktige klassekamerater som virkelig reddet meg) begynte å endre den i henhold til våre behov (forskjellige servoer med forskjellig dreiemoment, vekt og dimensjoner, etc.). Jeg måtte bygge den et par ganger, hver av dem fant jeg noe galt, og vi måtte kutte noen stykker på nytt og prøve på nytt. Jeg har vedlagt.dxf -filen i tilfelle du vil bruke den. Så måtte jeg kjøpe elektronikken: De fleste delene var standard, den vanskelige delen var å velge servoer. Jeg beregnet det nødvendige dreiemomentet med tommelfingerregelen, senere prøvde jeg en mer nøyaktig beregning, og jeg fant ut at jeg kan ha overkillet det litt. Tilsynelatende ville 6 kg/cm vært nok for den andre servoen (fra basen), og min gir 9-11 kg/cm. Vel, dette gir meg litt sikkerhet og sjansen til å laste opptil 2 kg last (noe som er umulig, men jeg liker at jeg teknisk sett kan gjøre det). Jeg kunne også ha kjøpt forskjellige servoer, med redusert dreiemoment mens jeg flyttet bort fra basen, men å kjøpe identiske servoer fra samme leverandør var det desidert billigste alternativet. Strømforsyning: Arduino var definitivt ikke nok for servoene, siden hver mg995 trekker 350mA og microservo 9g trekker 100mA, totalt 350*4 +100 = 1500mA. Så jeg berget en lader (6V 1.5A) og loddet to hoppetråder til den. (Hvis noen av dere kanskje trenger noen virkelige instruksjoner, bare spør i kommentarene, så skal jeg gjøre mitt beste for å lage en trinnvis trinn guide) Materialliste:- Struktur- M5x7cm skrue x5, m5 bolter x15 (base)- M3x16mm skrue x18*- M3x20mm skrue x13*- M3 bolter x40*- M3x8cm skrue x3- Klemme (ellers faller den)- 3 plugger- Arduino (eller noe annet for å kontrollere den, den må ha minst 5 PWM)- Noe å levere 5-6V og minst 1,5A- 3x ps2-lignende joysticks- 4x TowerPro mg995 servoer- 1x TowerPro 9g microservo (for grepet) - Mange hoppetråder - Brødbrett*(jeg brukte bolter og skruer for å kunne montere og demontere raskt, ellers kan du bytte ut nesten alle med treverkskruer)

Trinn 2: KODE:

Tanken er å kontrollere hver servo med en av de to aksene til en ps2-lignende joystick. Hver joystick så ut til å ha forskjellige "hvileverdier" (verdien mellom 0-1023 når den er stille) for både y- og x-aksen. var et problem, siden forskjellen var nesten liten (en hadde null på y på 623) og jeg ønsket å bruke kartfunksjonen til å konvertere fra 0-1023 til grader. Men kartfunksjonen tror restverdien er 1023/2. Som førte til at hver servo beveget seg så snart jeg slår på Arduino, ikke bra. Jeg klarte å komme rundt dette ved å finne manuelt forskjellen mellom leseverdien og hver annen hvileverdi (som jeg beregnet separat for hver joystick), deretter for å Gjør koden kortere og smartere, jeg fikk ham til å lese resten av verdiene i oppsettfunksjonen og lagre dem i noen variabler. Den nye algoritmen er avhengig av å konvertere økningen i grader, men jeg ønsket en veldig lav grad av grader for min økning, så Jeg måtte dele den for en konstant: Jeg prøvde mange verdier, til jeg kom med de siste 200 (jeg kan legge til et potensiometer for å manuelt endre denne verdien til den ønskede). Resten av koden er ganske standard antar jeg, selv om det kan være mer elegant å sette beregningen av økningen i en egen funksjon.

Trinn 3: ELEKTRONIKK:

ELEKTRONIKK
ELEKTRONIKK

Kablingene er de samme som vist på bildet eller fritzing-filen: servosignal til pinner: 5-6-9-10-11 og joystick-akse til analoge pinner: A0-A1-A2-A3-A4 Det store problemet jeg løp inn i var at joystickene MÅ leveres av Arduino, IKKE av laderen jeg bruker til servoene. Ellers ville servoen bare bli gal og bevege seg tilfeldig frem og tilbake. Jeg tror det kan være fordi Arduino ikke vil kunne fortelle potensialforskjellen når jeg flytter dem, men igjen: Jeg er veldig ny på elektronikk, så det er bare en gjetning. Å koble til Arduino -bakken og laderen gjennom brødbrettet bidro til å forhindre tilfeldige og uventede bevegelser, av en lignende årsak til joysticks -forsyningen antar jeg.

Trinn 4: GÅR FOR DET FORBEDRINGEN I GANG:

GÅR GÅENDE FORBEDRING
GÅR GÅENDE FORBEDRING

Siden hver joystick kan styre 2 servoer (1 per akse), trenger jeg 3 servoer for å kontrollere hele armen, men heldigvis har jeg bare to tommelen. Så jeg tenkte at i stedet for å kontrollere hver servo, kunne jeg bare kontrollere xyz -posisjonen til grip og åpne-lukk grepet, for totalt 4 akser, 2 joysticks og 2 tommel! Jeg fant ut at det problemet er godt kjent som Inverse Kinematics, jeg fant også ut at det er alt annet enn enkelt. Ideen er å skrive (ikke-lineære) ligninger for å finne tilstanden til hver effektor (vinkler for servoene) gitt den endelige posisjonen. Jeg har lastet opp et håndskrevet papir med ligningene, og jeg jobber for tiden med en ny kode for å bruke dem. Det skal ikke være for vanskelig, jeg må i utgangspunktet lese styrespakene, bruke avlesningene deres til å endre xyz -koordinatene til grepet, og deretter gi dem til ligningene mine, beregne servovinklene og skrive dem.

Trinn 5: FREMTIDIGE FORBEDRINGER:

Så jeg er ganske fornøyd med utfallet av det, og med tanke på at jeg er helt ny på elektronikk, ikke å blåse noe eller meg selv, var det allerede en stor seier. maskinvare, er mer enn velkommen! Så langt tenkte jeg på: 1. Potensiometeret for å endre "følsomheten" til styrespakene. Ny kode for å få ham til å "registrere" noen bevegelser og gjøre dem igjen (kanskje raskere og kortere enn menneskelig innspill) 3. En slags visuell/avstand/taleinngang og det å kunne få objekter uten at noen bruker styrespakene4. Å kunne tegne geometriske figurer Noen andre ideer? Kom gjerne med kommentarer med forslag. Takk

Anbefalt: