Obsah:

Rameno robota riadené robotom: 31 krokov
Rameno robota riadené robotom: 31 krokov

Video: Rameno robota riadené robotom: 31 krokov

Video: Rameno robota riadené robotom: 31 krokov
Video: Грант Амато убил свою семью из-за веб-модели 2024, November
Anonim
Rameno ovládané robotom
Rameno ovládané robotom

Toto je návod, ako vyrobiť rameno robota ovládané drôtmi. Výhodou použitia drôtov je, že vaša ruka je ľahšia a v spodnej časti ramena môžete mať všetky motory, čo uľahčuje stavbu a údržbu. Tu je video ruky v akcii. V budúcnosti plánujem pridať pazúr, aby mohol veci zdvihnúť a nie ich len tlačiť.

3D tlač:

Tu a Tu

Zásoby

6 servomotorov (MG995)

Arduino Uno

Asi 6 metrov oceľového drôtu potiahnutého plastom (0,5 mm)

Box 23x33x10 (môže byť užší, rozhodne by nemal byť kratší)

Doska z dreva 33x10

Skrutky a matice

Rúra 14 cm (to je potrebné na vedenie strún)

4 držiaky L.

5-voltový adaptér

2 7-cestné svorkovnice

Drôty na chlieb

3D tlačené komponenty (nenavrhnuté mnou, odkazy na prvky v popise):

3 „skrutky“

2 „Prvok 1“

1 „Prvok 2“

2 „Prvok 3“

1 Základný konektor

Krok 1: Vytlačte všetky 3D komponenty

Možno budete potrebovať podporu pre otvory a oblúky pre skrutky, ale uistite sa, že nepridáte podperu k telu vašich komponentov; tým sa zatvoria malé otvory pre drôt a budete musieť vytvoriť nové otvory

Krok 2: (Voliteľné) Na spodnej strane škatule pripevnite drevenú dosku, aby ste ju posilnili

Moja schránka bola dosť slabá, tvoja možno nie

Krok 3: Zmerajte a vyrežte drevenú dosku, aby sa zmestila do škatule

Krok 4: Označte polohy motorov

uistite sa, že sa žiadne z ramien navzájom nedotýkajú

Krok 5: Označte polohy zátvoriek a potrubia

Označte polohy zátvoriek a potrubia
Označte polohy zátvoriek a potrubia

Rúra by mala byť umiestnená asi jeden centimeter pred otvorom

Krok 6: Vyvŕtajte otvor pre káble vychádzajúce z krabice (USB a napájanie)

Vyvŕtajte otvor pre káble vychádzajúce z krabice (USB a napájanie)
Vyvŕtajte otvor pre káble vychádzajúce z krabice (USB a napájanie)

Krok 7: Vŕtajte a pílte všetky označené otvory

Vŕtajte a pílte všetky označené otvory
Vŕtajte a pílte všetky označené otvory

Krok 8: Pripojte motory a potrubie k doske

Krok 9: Pripevnite dosku k škatuľke pomocou držiakov L

Krok 10: Vezmite si koncové bloky a spájkujte drôty dohromady

Vezmite si koncové bloky a spájajte káble dohromady
Vezmite si koncové bloky a spájajte káble dohromady

Krok 11: Odstrihnite koniec napájacieho kábla adaptéra a odizolujte drôty

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

Krok 13: Pripojte vodiče k koncovým blokom tak, aby boli zapojené všetky + servo vodiče a + vodič z napájacieho kábla, to isté platí pre - drôty

Pripojte vodiče k koncovým blokom tak, aby boli zapojené všetky + servo vodiče a + vodič z napájacieho kábla, to isté platí pre - drôty
Pripojte vodiče k koncovým blokom tak, aby boli zapojené všetky + servo vodiče a + vodič z napájacieho kábla, to isté platí pre - drôty

Krok 14: Odrežte hlavu z drôtu na doske

Odrežte hlavu z drôtu na doske
Odrežte hlavu z drôtu na doske

Odizolovaný koniec drôtu na nepájivom poli pripevnite k mínusovej svorkovnici a koniec kolíka na uzemňovací kolík vo svojom arduine. Ak to neurobíte, motory sa budú bez akéhokoľvek pohybu pohybovať nepravidelne.

Krok 15: V spodnej časti škatule vyvŕtajte tri otvory pre drôty vychádzajúce z vašej ruky

Otvory by sa mali zhodovať s otvormi v základňovom konektore.

Krok 16: Pripojte konektor základne k krabici

Pripojte základňový konektor k krabici
Pripojte základňový konektor k krabici

Krok 17: Nôž alebo pilník na nechty urobte drážky drôtu hlbšie

Pomocou noža alebo pilníka na nechty urobte drážky drôtu hlbšie
Pomocou noža alebo pilníka na nechty urobte drážky drôtu hlbšie

Drátené drážky pre prvky 2 a 3 sú príliš plytké.

Krok 18: Zostrojte ruku

Zostrojte rameno
Zostrojte rameno

Zostrojte rameno podľa pokynov tu, možno budete musieť diely opilovať tak, aby sedeli

Krok 19: Nainštalujte Processing a Arduino

Spracovanie a Arduino

Krok 20: Prilepte programy kódu

Kód je v spodnej časti tejto stránky

Krok 21: Pripojte riadiace piny serva k Arduinu

Pripojte riadiace piny serva k Arduinu
Pripojte riadiace piny serva k Arduinu

Pripojil som prvý motor k tretiemu digitálnemu kolíku, druhý motor k štvrtému digitálnemu kolíku a tak ďalej. Uistite sa, že uzemňovací kolík je stále pripojený k - svorkovnici.

Krok 22: Pri spracovaní stlačte tlačidlo Reset, čím sa všetky ramená nastavia na 90 stupňov

Krok 23: Horizontálne zafixujte servo ramená k motoru

Krok 24: Prevlečte drôty cez ruky tak, aby nedošlo k uvoľneniu

Uistite sa, že prevlečiete drôt toľkými otvormi, koľko len môžete, dočasne to udrží drôt a dá sa ľahko odstrániť.

Krok 25: Otestujte rameno a podľa potreby dotiahnite alebo uvoľnite drôty

Krok 26: Horúce prilepte drôty k servo ramenám, aby boli trvalé

Krok 27: Poznámky

Poznámky
Poznámky

Použil som 0,5 mm šperkový drôt, ale 0,4 mm by mal byť v poriadku. Pôvodný dizajn používal drôt z PVC, ktorý sa však príliš ľahko zlomil a ťažko sa s ním pracovalo.

Ak sa chystáte pohybovať ramenom v aute alebo na bicykli, zabaľte kĺby ruky páskou, aby ste sa presvedčili, že nevyskočia. Toto je obzvlášť dôležité pre prvok 1.

Keď som začínal s týmto projektom, zaujímalo ma, prečo som našiel iba jeden návod, ako vytvoriť rameno ovládané drôtmi. Teraz chápem, prečo to nie je najbežnejší spôsob výroby ručného robotického ramena. Drôty občas vypadnú z drážok a celé je to akési chatrné. Neviem, či sú problémy preto, že nemám veľa skúseností, alebo je celá myšlienka problematická, aj keď som si istý, že by bolo pevnejšie, keby som vedel, čo robím.

Krok 28: Riešenie problémov

Otvory pre drôty sú uzavreté v 3D tlačených prvkoch:

Pridali ste podporu pre celý prvok, nielen pre otvory pre skrutky. Buď prvok znova vytlačte, alebo otvorte otvory skutočne horúcou ihlou.

Port COM je zatvorený, nemôžete komunikovať s arduino:

Vaše arduino nemusí akceptovať porty USB 3 (moje nie), môžete si kúpiť predlžovací kábel USB 2 alebo použiť počítač, ktorý má porty USB 2

Kód nefunguje:

Nasledujte tento návod a upravte ho, aby ste si vytvorili vlastný kód

Časť ramena sa nepohybuje:

Káble sa mohli zamotať, aby ste to skontrolovali, zložte rameno serva zo serva a skúste ťahať drôty ručne. Rozmotajte drôty a ak je stále ťažké ťahať drôty, skúste použiť nejaký WD-40 alebo mazivo, aby ste uľahčili pohyb

Krok 29: Odkazy

Nerobotické rameno:

Arm 3D Printable:

3D tlač mojej ruky:

Arduino a spracovanie:

Krok 30: Kód

Upravené z tohto kódu

Arduino kód:

#include // Deklarujte motory Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Všetky motory sú predvolene nastavené na 90 stupňov int current1 = 90; int current2 = 90; int current3 = 90; int current4 = 90; int current5 = 90; int current6 = 90; // Minimálne a maximálne stupne, ktoré môžu motory dosiahnuť 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; // Stupne, ktoré sa majú sčítať alebo odčítať z aktuálnej polohy v stupňochFoward = 5; // Oneskorenie, aby sa dve funkcie nestali v zlom poradí int delayBetweenSteps = 100; void setup () {// Nastavenie ovládacích pinov pre každý motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Nastav všetky motory na predvolené nastavenie myservo1.write (current1); myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // spustenie sériovej komunikácie @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// ak sú k dispozícii údaje na čítanie char val = Serial.read (); // vložte to do tohto znaku // Ovládacie prvky motora if (val == 'a' && current1 + stupneFoward mini1) {myservo1.write (current1 - stupneFoward); current1 = current1 - stupneFoward; oneskorenie (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - stupňůFoward); current2 = current2 - stupňovFoward; oneskorenie (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - stupňůFoward); current3 = current3 - stupňovFoward; oneskorenie (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - stupňůFoward); current4 = current4 - stupneFoward; oneskorenie (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - stupňůFoward); current5 = current5 - stupneFoward; oneskorenie (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - stupňůFoward); current6 = current6 - stupneFoward; oneskorenie (delayBetweenSteps); } // Ovládanie rýchlosti if (val == 'w') {// Ak je stlačené tlačidlo rýchlosti 1 stupneFoward = 1; oneskorenie (delayBetweenSteps); } if (val == 'x') {// Ak je stlačené tlačidlo rýchlosti 5 stupňovFoward = 5; oneskorenie (delayBetweenSteps); } if (val == 'y') {// Ak je stlačené tlačidlo rýchlosti 10 stupňov Foward = 10; oneskorenie (delayBetweenSteps); } if (val == 'z') {// Ak je stlačené tlačidlo rýchlosti 20 stupňov Foward = 20; oneskorenie (delayBetweenSteps); } if (val == 'r') {// Ak stlačíte tlačidlo rýchlosti 20 myservo1.write (90); prúd1 = 90; myservo2.write (90); prúd2 = 90; myservo3.write (90); prúd3 = 90; myservo4.write (90); prúd4 = 90; myservo5.write (90); prúd5 = 90; myservo6.write (90); prúd6 = 90; oneskorenie (delayBetweenSteps); }}}

Kód spracovania:

spracovanie importu.sériové.*; kontrola dovozuP5.*; // import knižnice ControlP5 Sériový port; ControlP5 cp5; // vytvorenie objektu ControlP5 PFont font; neplatné nastavenie () {// rovnaké ako veľkosť programu arduino (300, 700); // veľkosť okna, (šírka, výška) printArray (Serial.list ()); // vytlačí všetky dostupné sériové porty // Ak máte problém, pravdepodobne pochádza odtiaľto. String portName = Serial.list () [0]; port = new Serial (this, portName, 9600); // arduino som pripojil na com3, v linuxe a mac os by to bolo ine // dovoli pridat buton do prazdneho okna cp5 = new ControlP5 (this); font = createFont ("Arial", 13); // vlastné písma pre tlačidlá a názov // Tlačidlá ovládania rýchlosti cp5.addButton ("One") // "One" je názov tlačidla.setPosition (50, 50) // súradnice x a y v ľavom hornom rohu tlačidla.setSize (55, 25) // (šírka, výška).setFont (písmo); cp5.addButton ("Five").setPosition (110, 50).setSize (55, 25).setFont (písmo); cp5.addButton ("Ten").setPosition (170, 50).setSize (55, 25).setFont (písmo); cp5.addButton ("Dvadsať").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čidlá ovládania motora 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) // (šírka, 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) // (šírka, 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 () {// to isté ako slučka na pozadí arduina (192, 215, 249); // farba pozadia okna (r, g, b) alebo (0 až 255) // Pridajte text, ktorý hovorí, že ovládanie rýchlosti je vyplnenie riadenia rýchlosti (0, 10, 25); // farba textu (r, g, b) textFont (font); text („Ovládanie rýchlosti“, 50, 40); // ("text", súradnica x, súradnica y)} // umožňuje pridať do našich tlačidiel niektoré funkcie // takže po stlačení ľubovoľného tlačidla odošle konkrétny znak na sériový port // Som si istý, že je možné odosielať reťazce namiesto znakov a dávalo by to väčší zmysel, ale neviem, ako to urobiť // Príkazy na ovládanie rýchlosti void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Príkazy riadenia motora neplatné Servo_1_Foward () {port.write ('a'); } neplatné Servo_1_Back () {port.write ('b'); } neplatné Servo_2_Foward () {port.write ('c'); } neplatné Servo_2_Back () {port.write ('d'); } neplatné Servo_3_Foward () {port.write ('e'); } neplatné Servo_3_Back () {port.write ('f'); } neplatné Servo_4_Foward () {port.write ('g'); } neplatné Servo_4_Back () {port.write ('h'); } neplatné Servo_5_Foward () {port.write ('i'); } neplatné Servo_5_Back () {port.write ('j'); } neplatné Servo_6_Foward () {port.write ('k'); } neplatné Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }

Krok 31: Ďalšie obrázky

Odporúča: