Obsah:

Rameno ovládané robotem: 31 kroků
Rameno ovládané robotem: 31 kroků

Video: Rameno ovládané robotem: 31 kroků

Video: Rameno ovládané robotem: 31 kroků
Video: 6 letý chlapec se ztratil. Když ho našli, byli v šoku z toho, co leželo vedle něj... 2024, Listopad
Anonim
Rameno ovládané robotem
Rameno ovládané robotem

Toto je návod, jak vyrobit rameno robota ovládané pomocí drátů. Výhodou použití vodičů je, že je vaše paže lehčí a ve spodní části paže můžete mít všechny motory, což usnadňuje stavbu a údržbu. Zde je video paže v akci. V budoucnu plánuji přidat dráp, aby mohl věci sbírat a ne je jen tlačit.

3D tisk:

Tady a tady

Zásoby

6 servomotorů (MG995)

Arduino Uno

Asi 6 metrů ocelového drátu potaženého plastem (0,5 mm)

Box 23x33x10 (může být užší, rozhodně by neměl být kratší)

Prkno ze dřeva 33x10

Šrouby a matice

Trubka 14 cm (to je potřeba k vedení strun)

4 držáky L

5voltový adaptér

2 7směrné svorkovnice

Dráty na prkénko

3D tištěné komponenty (nenavrženo mnou, odkazy na prvky v popisu):

3 „šrouby“

2 „Prvek 1“

1 „Prvek 2“

2 „Prvek 3“

1 Základní konektor

Krok 1: Vytiskněte všechny 3D komponenty

Možná budete potřebovat podporu pro otvory pro šrouby a oblouky, ale ujistěte se, že nepřidáváte podporu k tělu vašich součástí; tím se uzavřou malé otvory pro drát a budete muset vytvořit nové otvory

Krok 2: (Volitelné) Připevněte dřevěnou desku ke spodní části krabice, abyste ji posílili

Moje schránka byla dost slabá, ta vaše možná ne

Krok 3: Změřte a vyřízněte prkno ze dřeva, aby se vešlo do krabice

Krok 4: Označte polohy motorů

ujistěte se, že se žádná z paží navzájem nedotýká

Krok 5: Označte polohy závorek a potrubí

Označte polohy závorek a potrubí
Označte polohy závorek a potrubí

Trubka by měla být umístěna přibližně jeden centimetr před otvorem

Krok 6: Vyvrtejte otvor pro kabely vycházející z krabice (USB a napájení)

Vyvrtejte otvor pro kabely vycházející z krabice (USB a napájení)
Vyvrtejte otvor pro kabely vycházející z krabice (USB a napájení)

Krok 7: Vyvrtejte a prohlédněte všechny označené otvory

Vyvrtejte a prohlédněte všechny označené otvory
Vyvrtejte a prohlédněte všechny označené otvory

Krok 8: Připevněte motory a potrubí k prknu

Krok 9: Připevněte prkno ke krabici pomocí L-držáků

Krok 10: Vezměte si koncové bloky a spojte dráty dohromady

Vezměte si koncové bloky a spojte dráty dohromady
Vezměte si koncové bloky a spojte dráty dohromady

Krok 11: Odřízněte konec napájecího kabelu adaptéru a odizolujte dráty

Krok 12: Identifikujte a označte kladné a záporné vodiče

Krok 13: Připojte vodiče ke koncovým blokům tak, aby byly připojeny všechny + servo vodiče a + vodič z napájecího kabelu, to samé platí pro - dráty

Připojte vodiče ke koncovým blokům tak, aby byly připojeny všechny + servo vodiče a + vodič z napájecího kabelu, to samé platí pro - dráty
Připojte vodiče ke koncovým blokům tak, aby byly připojeny všechny + servo vodiče a + vodič z napájecího kabelu, to samé platí pro - dráty

Krok 14: Odřízněte hlavu z drátěného prkénka

Odřízněte hlavu z drátěného prkénka
Odřízněte hlavu z drátěného prkénka

Připojte odizolovaný konec žhavicího drátu k mínusové svorkovnici a konec kolíku k uzemňovacímu kolíku ve vašem arduinu. Pokud to neuděláte, motory se budou pohybovat nepravidelně bez jakéhokoli vstupu.

Krok 15: Do spodní části krabice vyvrtejte tři otvory pro dráty vycházející z vaší paže

Otvory by měly odpovídat otvorům v základním konektoru.

Krok 16: Připojte základní konektor ke krabici

Připojte základní konektor k krabici
Připojte základní konektor k krabici

Krok 17: Pomocí nože nebo pilníku na nehty udělejte dráty hlubší

Pomocí nože nebo pilníku na nehty udělejte dráty hlubší
Pomocí nože nebo pilníku na nehty udělejte dráty hlubší

Drátěné drážky pro prvky 2 a 3 jsou příliš mělké.

Krok 18: Postavte paži

Postavte paži
Postavte paži

Sestrojte rameno podle zde uvedených pokynů, možná budete muset součásti zařadit tak, aby pasovaly

Krok 19: Nainstalujte si Processing a Arduino

Zpracování a Arduino

Krok 20: Vložte programové kódy

Kód je v dolní části této stránky

Krok 21: Připojte ovládací piny Servo k Arduinu

Připojte ovládací piny Servo k Arduinu
Připojte ovládací piny Servo k Arduinu

První motor jsem připojil ke třetímu digitálnímu pinu, druhý motor ke čtvrtému digitálnímu pinu a tak dále. Ujistěte se, že je zemnicí kolík stále připojen ke svorkovnici -.

Krok 22: Stiskněte tlačítko Reset při zpracování, tím se všechny paže nastaví na 90 stupňů

Krok 23: Upevněte servo ramena k motoru vodorovně

Krok 24: Provlékněte dráty pažemi, aby nedošlo k prověšení

Ujistěte se, že provléknete drát tolika otvory, kolik jen můžete, dočasně to udrží a bude snadné jej vyjmout.

Krok 25: Vyzkoušejte rameno a podle potřeby utáhněte nebo uvolněte dráty

Krok 26: Horké přilepte dráty k servo ramenům, aby byla trvalá

Krok 27: Poznámky

Poznámky
Poznámky

Použil jsem 0,5 mm šperkovací drát, ale 0,4 mm by mělo být v pořádku. Původní design používal PVC drát, ale ten se příliš snadno zlomil a těžko se s ním pracovalo.

Pokud se chystáte pohybovat paží v autě nebo na kole, omotejte klouby paží páskou, abyste se ujistili, že nevyskočí. To je zvláště důležité pro prvek 1.

Když jsem zahájil tento projekt, přemýšlel jsem, proč jsem našel pouze jeden návod, jak vyrobit rameno ovládané dráty. Nyní chápu, proč to není nejběžnější způsob výroby hobby robotického ramene. Dráty občas vypadnou z drážek a celé je to takové chatrné. Nevím, jestli jsou problémy proto, že nemám mnoho zkušeností, nebo je celá myšlenka problematická, i když jsem si jistý, že by bylo pevnější, kdybych věděl, co dělám.

Krok 28: Řešení potíží

Otvory pro drát jsou uzavřeny v 3D tištěných prvcích:

Místo otvorů pro šrouby jste přidali podporu pro celý prvek. Buď znovu vytiskněte prvek nebo otevřete otvory opravdu horkou jehlou.

Port COM je zavřený, nemůžete komunikovat s arduino:

Vaše arduino nemusí přijímat porty USB 3 (moje ne), můžete si koupit buď prodlužovací kabel USB 2, nebo použít počítač s porty USB 2

Kód nefunguje:

Postupujte podle tohoto tutoriálu a upravte jej, abyste si vytvořili vlastní kód

Část paže se nepohybuje:

Dráty se mohly zamotat, abyste to zkontrolovali, sejměte rameno serva ze serva a zkuste kabely vytáhnout ručně. Rozmotejte dráty a pokud je stále obtížné kabely natáhnout, zkuste použít nějaký WD-40 nebo mazivo, které vám usnadní pohyb

Krok 29: Odkazy

Non Robotic Arm:

Arm 3D Printable:

3D tisk mé paže:

Arduino a zpracování:

Krok 30: Kód

Upraveno z tohoto kódu

Arduino kód:

#include // Deklarace motorů Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Všechny motory jsou ve výchozím nastavení nastaveny na 90 stupňů int current1 = 90; int aktuální2 = 90; int aktuální3 = 90; int current4 = 90; int aktuální5 = 90; int aktuální6 = 90; // Minimální a Maximální stupně, kterých mohou motory dosáhnout int mini1 = 0; int maxi1 = 180; int mini2 = 0; int maxi2 = 180; int mini3 = 0; int maxi3 = 180; int mini4 = 0; int maxi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; // Stupně, které mají být přidány nebo odečteny od aktuální polohy int stupňůFoward = 5; // Zpoždění, aby nedošlo ke dvěma funkcím ve špatném pořadí int delayBetweenSteps = 100; void setup () {// Nastavit ovládací piny pro každý motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Nastavit všechny motory na výchozí nastavení myservo1.write (current1); myservo2.write (aktuální2); myservo3.write (aktuální3); myservo4.write (aktuální4); myservo5.write (aktuální5); myservo6.write (aktuální6); // zahájení sériové komunikace @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// pokud jsou k dispozici data ke čtení char val = Serial.read (); // vložte to do tohoto znaku // Motor Controls if (val == 'a' && current1 + stupňůFoward mini1) {myservo1.write (aktuální1 - stupněFoward); current1 = current1 - stupňůFoward; delay (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - stupňůFoward); current2 = current2 - stupňůFoward; delay (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - stupňůFoward); current3 = current3 - stupňůFoward; delay (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - stupňůFoward); current4 = current4 - stupňůFoward; delay (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - stupňůFoward); current5 = current5 - stupňůFoward; delay (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - stupňůFoward); current6 = current6 - stupňůFoward; delay (delayBetweenSteps); } // Ovládání rychlosti if (val == 'w') {// Pokud je stisknuto tlačítko rychlosti 1 stupňůFoward = 1; delay (delayBetweenSteps); } if (val == 'x') {// Pokud je stisknuto tlačítko rychlosti 5 stupňůFoward = 5; delay (delayBetweenSteps); } if (val == 'y') {// Pokud je stisknuto tlačítko rychlosti 10 stupňůFoward = 10; delay (delayBetweenSteps); } if (val == 'z') {// Pokud je stisknuto tlačítko rychlosti 20 stupňůFoward = 20; delay (delayBetweenSteps); } if (val == 'r') {// Pokud stisknete tlačítko rychlosti 20 myservo1.write (90); aktuální1 = 90; myservo2.write (90); aktuální2 = 90; myservo3.write (90); aktuální3 = 90; myservo4.write (90); current4 = 90; myservo5.write (90); aktuální5 = 90; myservo6.write (90); aktuální6 = 90; delay (delayBetweenSteps); }}}

Kód zpracování:

zpracování importu.sériové.*; kontrola importu P5.*; // import knihovny ControlP5 Sériový port; ControlP5 cp5; // vytvoření objektu ControlP5 písmo PFont; void setup () {// stejné jako velikost programu arduino (300, 700); // velikost okna, (šířka, výška) printArray (Serial.list ()); // vytiskne všechny dostupné sériové porty // Pokud máte problém, pravděpodobně pochází odtud Řetězec portName = Serial.list () [0]; port = new Serial (this, portName, 9600); // připojil jsem arduino na com3, v linuxu a mac os by to bylo jiné // umožňuje přidat tlačítko do prázdného okna cp5 = nový ControlP5 (toto); font = createFont ("Arial", 13); // vlastní písma pro tlačítka a nadpis // Tlačítka ovládání rychlosti cp5.addButton ("One") // "One" je název tlačítka.setPosition (50, 50) // souřadnice x a y v levém horním rohu tlačítka.setSize (55, 25) // (šířka, výška).setFont (písmo); cp5.addButton ("Pět").setPosition (110, 50).setSize (55, 25).setFont (písmo); cp5.addButton ("Ten").setPosition (170, 50).setSize (55, 25).setFont (písmo); cp5.addButton ("Dvacet").setPosition (230, 50).setSize (55, 25).setFont (písmo); cp5.addButton ("Reset").setPosition (110, 2).setSize (55, 25).setFont (písmo); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (písmo); // Tlačítka ovládání motoru cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (písmo); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (písmo); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (písmo); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (písmo); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (šířka, výška).setFont (písmo); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (písmo); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (šířka, výška).setFont (písmo); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (písmo); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (písmo); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (písmo); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (písmo); } void draw () {// stejné jako smyčka na pozadí arduina (192, 215, 249); // barva pozadí okna (r, g, b) nebo (0 až 255) // Přidejte text, který říká, že řízení rychlosti je vyplnění řízení rychlosti (0, 10, 25); // barva textu (r, g, b) textFont (písmo); text („Řízení rychlosti“, 50, 40); // ("text", souřadnice x, souřadnice y)} // umožňuje přidat do našich tlačítek některé funkce // takže při stisknutí libovolného tlačítka odešle konkrétní znak přes sériový port // Jsem si jistý, že je možné odesílat řetězce místo znaků by to dávalo větší smysl, ale nevím, jak to udělat // Příkazy řízení rychlosti void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Příkazy řízení motoru neplatné Servo_1_Foward () {port.write ('a'); } void Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } void Servo_2_Back () {port.write ('d'); } void Servo_3_Foward () {port.write ('e'); } void Servo_3_Back () {port.write ('f'); } void Servo_4_Foward () {port.write ('g'); } void Servo_4_Back () {port.write ('h'); } void Servo_5_Foward () {port.write ('i'); } void Servo_5_Back () {port.write ('j'); } void Servo_6_Foward () {port.write ('k'); } void Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }

Krok 31: Další obrázky

Doporučuje: