Innehållsförteckning:

Arduino robotarm: 5 steg
Arduino robotarm: 5 steg

Video: Arduino robotarm: 5 steg

Video: Arduino robotarm: 5 steg
Video: Assembling Poppy Ergo Jr 2024, November
Anonim
Image
Image
Arduino robotarm
Arduino robotarm
Arduino robotarm
Arduino robotarm

Eftersom det är mitt första projekt efter de 15 självstudierna i mitt Arduino -startpaket, är det egentliga syftet med det att få några kritiker, tips, förslag, idéer från alla som vet mer än jag.

Detta projekt handlar om en robotarm, med 4 dofs och ett grepp. Med en hyfsat låg budget: strukturen har klippts av en vän, de 4 servon kostade 30 €, de 2 joystickarna 4 €, skruvarna skruvar etc. för mindre än 10 € och resten (Arduino, trådar, greppservo etc.) fanns redan med i mitt startpaket. För totalt 40-45 € som är cirka 45-50 amerikanska dollar (samma pris på en me-arm kit, men hej, det var roligt att behöva bygga det själv (och röra något då och då)) och inte följa instruktioner som en maskin).

Eftersom detta var mitt första projekt och instruerbart gick jag med i '' First Time Author '' och ett par andra tävlingar, så om du gillar det, rösta det:)

Steg 1: DESIGN OCH MONTERING:

Först behövde jag en struktur: Detta var definitivt den längsta delen. Eftersom jag inte ville kopiera och klistra in projektet från någon annan tog jag ett projekt som referens och jag (och ett par mer skickliga klasskamrater som verkligen räddade mig) började modifiera det efter våra behov (olika servon med olika vridmoment, vikt och dimensioner, etc.). Jag var tvungen att bygga den några gånger, var och en av dem hittade jag något fel, och vi var tvungna att göra om några bitar och försöka igen. Jag har bifogat.dxf -filen om du vill använda den. Sedan var jag tvungen att köpa elektroniken: De flesta delarna var standard, det svåra var att välja servon. Jag beräknade det erforderliga vridmomentet med tumregeln, senare försökte jag en mer exakt beräkning och jag fick reda på att jag kanske hade överkyld det lite. Tydligen skulle 6 kg/cm ha varit tillräckligt för den andra servon (från basen), och min ger 9-11 kg/cm. Tja, det här ger mig lite säkerhet och chansen att ladda upp till 2 kg last (vilket är omöjligt, men jag gillar att jag tekniskt sett skulle kunna göra det). Jag kunde också ha köpt olika servon, med minskande vridmoment när jag flyttade bort från basen, men att köpa identiska servon från samma leverantör var det överlägset billigaste alternativet. Strömförsörjning: Arduino var definitivt inte tillräckligt för servon, eftersom varje mg995 drar 350mA och mikroservo 9g drar 100mA, totalt 350*4 +100 = 1500mA. Så jag bärgade en laddare (6V 1.5A) och lödde två bygelkablar till den. (Om några av er kanske behöver några riktiga instruktioner, fråga bara i kommentarerna, så ska jag göra mitt bästa för att skapa en steg-för-steg guide) Materiallista:- Struktur- M5x7cm skruv x5, m5 bultar x15 (bas)- M3x16mm skruv x18*- M3x20mm skruv x13*- M3 bultar x40*- M3x8cm skruv x3- Klämma (annars faller den)- 3 pluggar- Arduino (eller något annat för att styra det, det måste ha minst 5 PWM)- Något att leverera 5-6V och minst 1.5A- 3x ps2-liknande joysticks- 4x TowerPro mg995 servos- 1x TowerPro 9g microservo (för greppet) - Massor av bygeltrådar - Brödbräda*(jag använde bultar och skruvar för att kunna montera och demontera snabbt, annars kan du byta ut nästan alla med träskruvar)

Steg 2: KOD:

Tanken är att styra varje servo med en av de två axlarna på en ps2-liknande joystick. Varje joystick verkade ha olika "vilovärden" (värdet mellan 0-1023 när det är stilla) för både y- och x-axeln. var ett problem, eftersom skillnaden var nästan liten (en hade nollan på y vid 623) och jag ville använda kartfunktionen för att konvertera från 0-1023 till grader. Men kartfunktionen tror att restvärdet är 1023/2. Vilket fick varje servo att röra sig så snart jag startade Arduino, inte bra. Jag lyckades komma runt detta genom att manuellt hitta skillnaden mellan läsvärdet och varje olika vilovärde (som jag beräknade separat för varje joystick), sedan för att gör koden kortare och smartare, jag fick honom att läsa resten av värdena i installationsfunktionen och spara dem i några variabler. Jag var tvungen att dela det för en konstant: Jag försökte många värden tills jag kom fram till de sista 200 (jag kan lägga till en potentiometer för att manuellt ändra detta värde till det önskade). Resten av koden är ganska standard antar jag, även om det kan vara mer elegant att lägga beräkningen av ökningen inuti en separat funktion.

Steg 3: ELEKTRONIK:

ELEKTRONIK
ELEKTRONIK

Ledningarna är desamma som visas på bilden eller fritz-filen: servosignal till stift: 5-6-9-10-11 och joystickaxel till analoga stift: A0-A1-A2-A3-A4 Det stora problemet jag stötte på var att joystickarna MÅSTE levereras av Arduino, INTE av laddaren jag använder för servon. Annars skulle servon bara bli galen och röra sig slumpmässigt fram och tillbaka. Jag tror att det kan bero på att om jag förser dem med laddaren, kommer Arduino inte att kunna exakt berätta potentialskillnaden när jag flyttar dem, men sedan igen: Jag är väldigt ny på elektronik så det är bara en gissning. Att ansluta Arduino -marken och laddarjorden genom brödbrädan hjälpte till att förhindra slumpmässiga och oväntade rörelser, av en liknande anledning av joysticksförsörjningen antar jag.

Steg 4: GÅR FÖRBÄTTRINGEN FÖR NU

GÅR FÖRBÄTTRINGEN FÖR NU
GÅR FÖRBÄTTRINGEN FÖR NU

Eftersom varje joystick kan styra 2 servon (1 per axel) behöver jag 3 servon för att styra hela armen, men jag har tyvärr bara 2 tummar. Så jag tänkte att istället för att styra varje servo kunde jag bara styra xyz -positionen på grepp och öppna-stäng handtaget, för totalt 4 axlar, 2 joysticks och 2 tummar! Jag fick reda på att det problemet är väl känt som Inverse Kinematics, jag fick också reda på att det är nästan enkelt. Tanken är att skriva (icke-linjära) ekvationer för att hitta tillståndet för varje effektor (vinklar för servon) med tanke på den slutliga positionen. Jag har laddat upp ett handskrivet papper med ekvationerna och jag arbetar för närvarande med en ny kod för att använda dem. Det ska inte vara för svårt, jag måste i princip läsa joystickarna, använda deras avläsningar för att ändra xyz -koordinaterna för greppet och sedan ge dem till mina ekvationer, beräkna servovinklarna och skriva dem.

Steg 5: FRAMTIDA FÖRBÄTTRINGAR:

Så jag är ganska nöjd med resultatet av det och med tanke på att jag är helt ny på elektronik som inte sprängde något eller mig själv var redan en enorm seger. Som jag sa i början var alla idéer om framtida förbättringar, både programvara och hårdvara, är mer än välkommen! Hittills tänkte jag på: 1. Potentiometern för att ändra joystickarnas”känslighet”.2. Ny kod för att få honom att "spela in" några rörelser och göra dem igen (kanske snabbare och kortare än den mänskliga inmatningen) 3. Någon form av visuell/distans/röstinmatning och att kunna få objekt utan att någon använder joysticks4. Att kunna rita geometriska figurer Någon annan idé? Kommentera gärna med förslag. Tack

Rekommenderad: