Indholdsfortegnelse:

Arduino robotarm: 5 trin
Arduino robotarm: 5 trin

Video: Arduino robotarm: 5 trin

Video: Arduino robotarm: 5 trin
Video: Arduino controlled Stepper driven 5 DoF Robotic Arm- Demonstration 2024, Juli
Anonim
Image
Image
Arduino robotarm
Arduino robotarm
Arduino robotarm
Arduino robotarm

Da det er mit første projekt efter de 15 tutorials i mit Arduino -startsæt, er det egentlige formål med det at få nogle kritikere, tips, forslag, ideer fra alle, der ved mere end mig.

Dette projekt handler om en robotarm, med 4 dofs og et greb. Med et anstændigt lavt budget: strukturen er blevet skåret af en ven, de 4 servoer var 30 €, de 2 joysticks 4 €, bolte skrue osv. For mindre end 10 € og alt det andet (Arduino, ledninger, grebservo osv.) var allerede inkluderet i mit startsæt. For i alt 40-45 €, som er omkring 45-50 amerikanske dollars (samme pris på et me-arm kit, men hey, det var sjovt at skulle bygge det selv (og rode noget ind imellem) og ikke følge instruktioner som en maskine).

Da dette var mit første projekt og instruerbart, deltog jeg i '' First Time Author '' og et par andre konkurrencer, så hvis du kan lide det, så stem det:)

Trin 1: DESIGN OG SAMLING:

Først havde jeg brug for en struktur: Dette var bestemt den længste del. Da jeg ikke ville kopiere og indsætte projektet fra en anden, tog jeg et projekt som reference, og jeg (og et par flere dygtige klassekammerater, der virkelig reddede mig) begyndte at ændre det efter vores behov (forskellige servoer med forskellige drejningsmomenter, vægt og dimensioner osv.). Jeg var nødt til at bygge det et par gange, hver af dem fandt jeg noget galt, og vi var nødt til at genstyre nogle stykker og prøve igen. Jeg har vedhæftet.dxf -filen, hvis du vil bruge den. Så måtte jeg købe elektronikken: De fleste dele var standard, den svære del var at vælge servoer. Jeg beregnede det krævede drejningsmoment med tommelfingerreglen, senere forsøgte jeg en mere præcis beregning, og jeg fandt ud af, at jeg måske havde overkillet det lidt. Tilsyneladende ville 6 kg/cm have været nok til 2. servo (fra basen), og min giver 9-11 kg/cm. Nå, det giver mig en vis sikkerhed og chancen for at laste op til 2 kg belastning (hvilket er umuligt, men jeg kan godt lide, at jeg teknisk set kunne gøre det). Jeg kunne også have købt forskellige servoer med faldende drejningsmoment, mens jeg flyttede væk fra basen, men at købe identiske servoer fra samme sælger var langt den billigste løsning. Strømforsyning: Arduino var bestemt ikke nok til servoerne, da hver mg995 trækker 350mA og microservo 9g trækker 100mA, i alt 350*4 +100 = 1500mA. Så jeg bjærgede en oplader (6V 1.5A) og lodde to jumper-ledninger til den. (Hvis nogle af jer måske har brug for nogle rigtige instruktioner, så spørg bare i kommentarerne, og jeg vil gøre mit bedste for at oprette et trin-for-trin guide) Materialeliste:- Struktur- M5x7cm skrue x5, m5 bolte x15 (bund)- M3x16mm skrue x18*- M3x20mm skrue x13*- M3 bolte x40*- M3x8cm skrue x3- Klemme (ellers falder den)- 3 dyvler- Arduino (eller noget andet for at styre det, det skal have mindst 5 PWM)- Noget at levere 5-6V og mindst 1,5A- 3x ps2-lignende joysticks- 4x TowerPro mg995 servoer- 1x TowerPro 9g microservo (til grebet) - Masser af jumperwires - Breadboard*(jeg brugte bolte og skruer for hurtigt at kunne samles og adskilles, ellers kunne du næsten udskifte dem alle med træværksskruer)

Trin 2: KODE:

Ideen er at styre hver servo med en af de to akser i et ps2-lignende joystick. Hvert joystick syntes at have forskellige “hvileværdier” (værdien mellem 0-1023, når det stadig er) for både y- og x-aksen. var et problem, da forskellen næsten var lille (den ene havde nul på y ved 623), og jeg ville bruge kortfunktionen til at konvertere fra 0-1023 til grader. Men kortfunktionen mener, at restværdien er 1023/2. Hvilket bragte hver servo i bevægelse, så snart jeg tænder for Arduino, ikke godt. Jeg formåede at komme uden om dette ved manuelt at finde forskellen mellem aflæsningsværdien og hver anden hvileværdi (som jeg beregnede separat for hvert joystick), derefter til gør koden kortere og smartere, jeg fik ham til at læse restværdierne i opsætningsfunktionen og gemme dem i nogle variabler. Den nye algoritme er afhængig af at konvertere stigningen i grader, men jeg ville have en meget lav grad af grader til mit trin, så Jeg var nødt til at opdele det for en konstant: Jeg prøvede mange værdier, indtil jeg kom frem til de sidste 200 (jeg kan tilføje et potentiometer for manuelt at ændre denne værdi til den ønskede). Resten af koden er temmelig standard, formoder jeg, selvom det måske er mere elegant at sætte beregningen af stigningen inde i en separat funktion.

Trin 3: ELEKTRONIK:

ELEKTRONIK
ELEKTRONIK

Ledningerne er de samme som vist på billedet eller fritzing-filen: servosignal til stifter: 5-6-9-10-11 og joystickakse til analoge stifter: A0-A1-A2-A3-A4 Det største problem, jeg løb ind i var at joystickene SKAL LEVERES af Arduino, IKKE af den oplader jeg bruger til servoerne. Ellers ville servoen bare gå amok og bevæge sig tilfældigt frem og tilbage. Jeg tror, det kan skyldes, at hvis jeg forsyner dem med opladeren, vil Arduino ikke være i stand til præcist at fortælle den potentielle forskel, når jeg flytter dem, men igen: Jeg er meget ny inden for elektronik, så det er bare et gæt. At forbinde Arduino -jorden og opladerjorden gennem brødbrættet hjalp med at forhindre tilfældige og uventede bevægelser, af en lignende årsag til joysticks -forsyningen, formoder jeg.

Trin 4: GÅR FOR tiden FORBEDRING:

I øjeblikket FORBEDRES VED FORBEDRING
I øjeblikket FORBEDRES VED FORBEDRING

Da hvert joystick kan styre 2 servoer (1 pr. Akse), har jeg brug for 3 servoer til at styre hele armen, men heldigvis har jeg kun 2 tommelfingre. Så jeg tænkte, at i stedet for at kontrollere hver servo kunne jeg kun styre xyz -positionen af greb og åbn-luk grebet, for i alt 4 akser, 2 joysticks og 2 tommelfingre! Jeg fandt ud af, at det problem er kendt som Inverse Kinematics, jeg fandt også ud af, at det næsten er let. Ideen er at skrive (ikke-lineære) ligninger for at finde tilstanden for hver effektor (vinkler for servoerne) givet den endelige position. Jeg har uploadet et håndskrevet papir med ligningerne, og jeg arbejder i øjeblikket på en ny kode for at bruge dem. Det burde ikke være for hårdt, jeg er dybest set nødt til at læse joysticks, bruge deres aflæsninger til at ændre xyz -koordinaterne for grebet og derefter give dem til mine ligninger, beregne servosvinklerne og skrive dem.

Trin 5: FREMTIDIGE FORBEDRINGER:

Så jeg er ret tilfreds med resultatet af det, og i betragtning af at jeg er helt ny inden for elektronik, ikke at sprænge noget eller mig selv i luften, var det allerede en kæmpe sejr. Som jeg sagde i begyndelsen, var enhver idé om fremtidige forbedringer, både software og hardware, er mere end velkommen! Hidtil tænkte jeg på: 1. Potentiometeret til at ændre joysticks 'følsomhed'.2. Ny kode for at få ham til at "registrere" nogle bevægelser og gøre dem igen (måske hurtigere og kortere end det menneskelige input) 3. En eller anden form for visuel/afstand/stemmeinput og at kunne få objekter uden at nogen bruger joysticks4. At kunne tegne geometriske figurer En anden idé? Du er velkommen til at kommentere med eventuelle forslag. Tak

Anbefalede: