Obsah:

Robotické rameno Arduino: 5 kroků
Robotické rameno Arduino: 5 kroků

Video: Robotické rameno Arduino: 5 kroků

Video: Robotické rameno Arduino: 5 kroků
Video: 5. Arduino program 2024, Červenec
Anonim
Image
Image
Robotické rameno Arduino
Robotické rameno Arduino
Robotické rameno Arduino
Robotické rameno Arduino

Vzhledem k tomu, že je to můj první projekt po 15 tutoriálech mé startovací sady Arduino, skutečným účelem je získat kritiky, tipy, návrhy a nápady od kohokoli, kdo ví víc než já.

Tento projekt je o robotické paži se 4 dofs a gripem. Se slušně nízkým rozpočtem: strukturu přerušil přítel, 4 serva byla 30 €, 2 joysticky 4 €, šrouby šroubů atd. Za méně než 10 € a všechno ostatní (Arduino, dráty, servo gripu atd.)) již byl součástí mé startovací sady. Za celkem 40-45 €, což je asi 45-50 amerických dolarů (stejná cena me-arm soupravy, ale hej, bylo zábavné to postavit sám (a jednou za čas něco pokazit) a nedodržování pokynů jako stroj).

Protože to byl můj první projekt a Instructable, přihlásil jsem se do '' First Time Author '' a několika dalších soutěží, takže pokud se vám líbí, hlasujte:)

Krok 1: NÁVRH A MONTÁŽ:

Nejprve jsem potřeboval strukturu: Toto byla rozhodně nejdelší část. Protože jsem nechtěl kopírovat a vkládat projekt od někoho jiného, vzal jsem projekt jako referenci a já (a pár šikovnějších spolužáků, kteří mě opravdu zachránili) začal jej upravovat podle našich potřeb (různá serva s různým točivým momentem, hmotností a rozměry atd.). Musel jsem to několikrát postavit, u každého z nich jsem našel něco špatného a museli jsme některé kusy přeřezat a zkusit to znovu. Připojil jsem soubor.dxf pro případ, že ho chcete použít. Pak jsem musel koupit elektroniku: Většina dílů byla standardní, nejtěžší bylo vybrat serva. Požadovaný točivý moment jsem vypočítal s pravidlem, později jsem zkusil přesnější výpočet a zjistil jsem, že jsem to možná trochu přehnal. Na 2. servo (ze základny) by zřejmě stačilo 6 kg/cm a moje poskytuje 9-11 kg/cm. To mi dává jistotu a šanci naložit až 2 kg zátěže (což je nemožné, ale líbí se mi, že bych to technicky zvládl). Mohl jsem také koupit různá serva s klesajícím krouticím momentem, když se vzdaluji od základny, ale nákup identických serv od stejného dodavatele byl zdaleka nejlevnější možností. Napájení: Arduino rozhodně na serva nestačilo, protože každé mg995 čerpá 350mA a mikroslužba 9g čerpá 100mA, celkem tedy 350*4 +100 = 1500mA. Zachránil jsem tedy nabíječku (6 V 1,5 A) a připájel k ní dva propojovací vodiče. (Pokud by někdo z vás potřeboval nějaké skutečné pokyny, zeptejte se v komentářích a já se budu snažit vytvořit krok za krokem průvodce) Seznam materiálů:- Struktura- Šroub M5x7cm x5, šrouby m5 x15 (základna)- Šroub M3x16mm x18*- Šroub M3x20mm x13*- Šrouby M3 x40*- Šroub M3x8cm x3- Svorka (jinak spadne)- 3 hmoždinky- Arduino (nebo něco jiného k ovládání, musí mít alespoň 5 PWM)- Něco pro napájení 5-6 V a alespoň 1,5 A- 3x joysticky podobné ps2- 4x serva TowerPro mg995- 1x mikro servo TowerPro 9g (pro grip)) - Spousta propojovacích vodičů - Breadboard*(Použil jsem šrouby a šrouby, abych je mohl rychle sestavit a rozebrat, jinak byste mohli téměř všechny nahradit šrouby ze dřeva)

Krok 2: KÓD:

Cílem je ovládat každé servo jednou ze dvou os joysticku podobného ps2. Zdálo se, že každý joystick má různé „klidové hodnoty“(hodnota mezi 0–1023, když je stále) pro osu y i x. byl problém, protože rozdíl byl téměř malý (jeden měl nulu na y na 623) a chtěl jsem použít funkci mapy pro převod z 0-1023 na stupně. Funkce mapy si ale myslí, že zbytek je 1023/2. Což přineslo každé servo v pohybu, jakmile zapnu Arduino, není to dobré. Dokázal jsem to obejít ručním vyhledáním rozdílu mezi hodnotou čtení a každou jinou klidovou hodnotou (kterou jsem vypočítal samostatně pro každý joystick), poté aby byl kód kratší a chytřejší, přiměl jsem ho, aby přečetl ostatní hodnoty ve funkci nastavení a uložil je do některých proměnných. Nový algoritmus spoléhá na převod přírůstku ve stupních, ale pro svůj přírůstek jsem chtěl velmi nízké množství stupňů, takže Musel jsem to rozdělit na konstantu: Zkoušel jsem mnoho hodnot, dokud jsem nepřišel na konečných 200 (mohu přidat potenciometr pro manuální změnu této hodnoty na požadovanou). Zbytek kódu je myslím docela standardní, i když by mohlo být elegantnější dát výpočet přírůstku do samostatné funkce.

Krok 3: ELEKTRONIKA:

ELEKTRONIKA
ELEKTRONIKA

Zapojení je stejné jako na obrázku nebo ve fritzovacím souboru: signál serva k pinům: 5-6-9-10-11 a osa joysticku k analogovým pinům: A0-A1-A2-A3-A4 Hlavní problém, na který jsem narazil bylo, že joysticky MUSÍ BÝT dodávány Arduino, NE nabíječkou, kterou používám pro serva. Jinak by se servo zbláznilo a náhodně se pohybovalo tam a zpět. Myslím si, že to může být proto, že když jim dodám nabíječku, Arduino nebude schopen přesně určit potenciální rozdíl, když je přesunu, ale pak znovu: V elektronice jsem úplně nový, takže je to jen odhad. Připojení uzemnění Arduino a uzemnění nabíječky skrz prkénko pomohlo zabránit náhodným a neočekávaným pohybům, předpokládám, že z podobného důvodu je dodávka joysticků.

Krok 4: V SOUČASNÉ DOBĚ ZLEPŠOVÁNÍ:

V SOUČASNÉM PROSTŘEDÍ ZLEPŠOVÁNÍ
V SOUČASNÉM PROSTŘEDÍ ZLEPŠOVÁNÍ

Protože každý joystick může ovládat 2 serva (1 na osu), potřebuji 3 serva k ovládání celé paže, ale naštěstí mám jen 2 palce. Takže jsem si myslel, že místo ovládání každého serva mohu ovládat pouze xyz polohu uchopte a otevřete a zavřete rukojeť, celkem 4 osy, 2 joysticky a 2 palce! Zjistil jsem, že tento problém je dobře známý jako Inverse Kinematics, také jsem zjistil, že je to všechno, ale snadné. Myšlenka je napsat (nelineární) rovnice pro zjištění stavu každého efektoru (úhly pro serva) vzhledem k konečné poloze. Vložil jsem ručně psaný papír s rovnicemi a v současné době pracuji na novém kódu, který je použije. Nemělo by to být příliš těžké, v zásadě musím přečíst joysticky, použít jejich hodnoty k úpravě xyz souřadnic úchopu a poté je dát do mých rovnic, vypočítat úhly serva a zapsat je.

Krok 5: BUDOUCÍ VYLEPŠENÍ:

Takže jsem docela spokojený s výsledkem a vzhledem k tomu, že jsem v elektronice úplně nový, nevyhodit něco nebo sebe, to už bylo obrovské vítězství. Jak jsem řekl na začátku, jakýkoli nápad na budoucí vylepšení, jak software, tak hardware, je více než vítán! Zatím jsem přemýšlel o: 1. Potenciometr pro úpravu „citlivosti“joysticků. Nový kód, který ho přiměje „zaznamenat“některé pohyby a provést je znovu (možná rychleji a kratší než lidský vstup) 3. Nějaký druh vizuálního/distančního/hlasového vstupu a schopnost získat předměty, aniž by někdo používal joysticky4. Umět kreslit geometrické obrazce Nějaký další nápad? Neváhejte se vyjádřit k jakýmkoli návrhům. Děkuji

Doporučuje: