Sadržaj:

Robotska ruka s žičanom kontrolom: 31 korak
Robotska ruka s žičanom kontrolom: 31 korak

Video: Robotska ruka s žičanom kontrolom: 31 korak

Video: Robotska ruka s žičanom kontrolom: 31 korak
Video: Использование кнопки скорости шагового двигателя 28BYJ-48 с 8 проектами: Ultimate Video Tutorial, урок 107 2024, Studeni
Anonim
Robotska ruka s žičanom kontrolom
Robotska ruka s žičanom kontrolom

Ovo je vodič o tome kako napraviti robotsku ruku kontroliranu žicama. Prednost korištenja žica je u tome što vam je ruka lakša i možete imati sve svoje motore na dnu ruke, što olakšava izgradnju i održavanje. Evo video snimka ruke u akciji. U budućnosti planiram dodati kandžu kako bi mogla pokupiti stvari, a ne samo ih gurati.

3D ispisi:

Ovdje i Ovdje

Pribor

6 servo motora (MG995)

Arduino Uno

Oko 6 metara čelične žice obložene plastikom (0,5 mm)

Okvir 23x33x10 (može biti uži, definitivno ne smije biti kraći)

Drvena daska 33x10

Matice i vijci

Cijev 14 cm (ovo je potrebno za vođenje žica)

4 L-nosača

5-voltni adapter

2 7-smjerna priključna bloka

Žice za pločice

3D tiskane komponente (nisam ja dizajnirao, veze do elemenata u opisu):

3 "vijka"

2 "Element 1"

1 "Element 2"

2 "Element 3"

1 Osnovni priključak

Korak 1: Ispišite sve 3D komponente

Možda će vam trebati podrška za rupe i lukove za vijke, ali pazite da ne dodate potporu tijelu vaših komponenti; ovo će zatvoriti male rupe za žicu i morat ćete napraviti nove rupe

Korak 2: (Izborno) Pričvrstite drvenu dasku na dno kutije kako biste je ojačali

Moja je kutija bila prilično slaba, vaša možda nije

Korak 3: Izmjerite i izrežite drvenu dasku koja odgovara kutiji

Korak 4: Označite položaje motora

pazite da se niti jedna ruka ne dodiruje

Korak 5: Označite položaje nosača i cijevi

Označite položaje zagrada i cijevi
Označite položaje zagrada i cijevi

Cijev treba postaviti oko jedan centimetar ispred rupe

Korak 6: Izbušite rupu za kabele koji izlaze iz vaše kutije (USB i napajanje)

Izbušite rupu za kabele koji izlaze iz vaše kutije (USB i napajanje)
Izbušite rupu za kabele koji izlaze iz vaše kutije (USB i napajanje)

Korak 7: Izbušite i ispipajte sve označene rupe

Izbušite i ispipajte sve označene rupe
Izbušite i ispipajte sve označene rupe

Korak 8: Pričvrstite motore i cijev na dasku

Korak 9: Pričvrstite dasku na kutiju s L-zagradama

Korak 10: Uzmite svoje priključne blokove i zalemite žice zajedno

Uzmite svoje priključne blokove i zalemite žice zajedno
Uzmite svoje priključne blokove i zalemite žice zajedno

Korak 11: Odrežite kraj kabela za napajanje adaptera i skinite žice

Korak 12: Identificirajte i označite plus i minus žice

Korak 13: Priključite žice na priključne blokove tako da su sve + servo žice i + žice iz kabela za napajanje spojene, isto vrijedi i za - žice

Priključite žice na priključne blokove tako da su sve + servo žice i + žice iz kabela za napajanje spojene, isto vrijedi i za - žice
Priključite žice na priključne blokove tako da su sve + servo žice i + žice iz kabela za napajanje spojene, isto vrijedi i za - žice

Korak 14: Odrežite glavu s žice za umrežavanje

Odrežite glavu s žice za umrežavanje
Odrežite glavu s žice za umrežavanje

Pričvrstite ogoljeni kraj žice matične ploče na minus priključni blok, a kraj igle na uzemljenje na vašem arduinu. Ako to ne učinite, motori će se kretati nestalno bez ikakvog unosa.

Korak 15: Izbušite tri rupe na dnu kutije za žice koje vam izlaze iz ruke

Rupe bi se trebale podudarati s rupama u priključku za bazu.

Korak 16: Priključite bazni konektor na kutiju

Priključite priključak baze na kutiju
Priključite priključak baze na kutiju

Korak 17: Upotrijebite nož ili turpiju za nokte kako biste žljebove žice učinili dubljima

Da biste žljebove od žice učinili dubljima, upotrijebite nož ili turpiju za nokte
Da biste žljebove od žice učinili dubljima, upotrijebite nož ili turpiju za nokte

Žičani utori za elemente 2 i 3 su previše plitki.

Korak 18: Konstruirajte ruku

Konstruirajte ruku
Konstruirajte ruku

Konstruirajte ruku prema uputama ovdje. Možda ćete morati turpijati dijelove tako da odgovaraju

Korak 19: Instalirajte Processing i Arduino

Obrada i Arduino

Korak 20: Zalijepite programe programa Code

Kôd se nalazi pri dnu ove stranice

Korak 21: Spojite servo upravljačke pinove na Arduino

Spojite servo upravljačke pinove na Arduino
Spojite servo upravljačke pinove na Arduino

Spojio sam prvi motor na treći digitalni pin, drugi motor na četvrti digitalni pin i tako dalje. Uvjerite se da je pin za uzemljenje još uvijek spojen na - terminalni blok.

Korak 22: Pritisnite gumb Reset u obradi, ovo će postaviti sve ruke na 90 stupnjeva

Korak 23: Vodoravno postavite servo poluge na motor

Korak 24: Provucite žice kroz ruke tako da nema opuštanja

Provucite žicu kroz što više rupa jer će je privremeno zadržati i lako ukloniti.

Korak 25: Testirajte ruku i pritegnite ili otpustite žice prema potrebi

Korak 26: Vruće zalijepite žice na servo poluge kako bi bile trajne

Korak 27: Bilješke

Bilješke
Bilješke

Koristio sam žicu za nakit od 0,5 mm, ali 0,4 mm bi trebalo biti u redu. U izvornom dizajnu koristila se PVC žica, ali to se prelako slomilo i s njim je bilo teško raditi.

Ako ćete kretati ruku u automobilu ili na biciklu, omotajte zglobove ruku ljepljivom trakom kako biste bili sigurni da neće iskočiti. To je posebno važno za element 1.

Kad sam započeo ovaj projekt, pitao sam se zašto mogu pronaći samo jedan vodič o tome kako izraditi ruku kontroliranu žicama. Sada razumijem zašto ovo nije najčešći način izrade hobot robotske ruke. Žice ponekad ispadnu iz njihovih utora i cijela je stvar nekako slabašna. Ne znam jesu li problemi u tome što nemam puno iskustva ili je cijela ideja problematična iako sam siguran da bi bilo čvršće da znam što radim.

Korak 28: Rješavanje problema

Rupe za žice zatvorene su u 3D ispisanim elementima:

Dodali ste potporu cijelom elementu umjesto samo rupa za vijke. Ili ponovno ispišite element ili otvorite rupe jako vrućom iglom.

COM port je zatvoren, ne možete komunicirati s arduinom:

Vaš arduino možda ne prihvaća USB 3 priključke (moj nije), možete kupiti produžni kabel USB 2 ili koristiti računalo koje ima USB 2 priključke

Kôd ne radi:

Slijedite ovaj vodič i izmijenite ga kako biste napravili vlastiti kod

Dio ruke se ne miče:

Žice su se možda zapetljale, da biste to provjerili, skinite servo krak sa serva i pokušajte ručno povući žice. Raspletite žice i ako je žice još uvijek teško povući, pokušajte upotrijebiti neki WD-40 ili mazivo za lakše kretanje

Korak 29: Veze

Nerobotizirana ruka:

Arm 3D ispisi:

My Arm 3D Printable:

Arduino i obrada:

Korak 30: Kodirajte

Izmijenjeno iz ovog koda

Arduino kod:

#include // Deklarirajte motore Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Svi su motori prema zadanim postavkama postavljeni na 90 stupnjeva int current1 = 90; int struja2 = 90; int struja3 = 90; int struja4 = 90; int struja5 = 90; int struja6 = 90; // Minimalni i Maksimalni stupanj koji motori mogu doseći 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; // Stupnjevi koji se zbrajaju ili oduzimaju od trenutnog položaja int stupnjeviFoward = 5; // Odgoda tako da se dvije funkcije ne dogode pogrešnim redoslijedom int delayBetweenSteps = 100; void setup () {// Postavite kontrolne pinove za svaki motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Sve motore postavite na zadanu postavku myservo1.write (current1); myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // pokretanje serijske komunikacije @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// ako su podaci dostupni za čitanje char val = Serial.read (); // unesite u ovaj znak // Kontrole motora if (val == 'a' && current1 + stupnjevi naprijed mini1) {myservo1.write (current1 - stupnjevi naprijed); current1 = current1 - stupnjevi naprijed; delay (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - stupnjevi naprijed); current2 = current2 - stupnjevi naprijed; delay (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - stupnjevi naprijed); current3 = current3 - stupnjevi naprijed; delay (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - stupnjevi naprijed); current4 = current4 - stupnjevi naprijed; delay (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - stupnjevi naprijed); current5 = current5 - stupnjevi naprijed; delay (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - stupnjevi naprijed); current6 = current6 - stupnjevi naprijed; delay (delayBetweenSteps); } // Kontrola brzine if (val == 'w') {// Ako je pritisnuta tipka za brzinu 1 stupnjevaFoward = 1; delay (delayBetweenSteps); } if (val == 'x') {// Ako je pritisnuta tipka za brzinu 5 stupnjevaFoward = 5; delay (delayBetweenSteps); } if (val == 'y') {// Ako je pritisnuta tipka za brzinu 10 stupnjevaFoward = 10; delay (delayBetweenSteps); } if (val == 'z') {// Ako je pritisnuta tipka za brzinu 20 stupnjevaFoward = 20; delay (delayBetweenSteps); } if (val == 'r') {// Ako je pritisnuta tipka za brzinu 20 myservo1.write (90); struja1 = 90; myservo2.write (90); struja2 = 90; myservo3.write (90); struja3 = 90; myservo4.write (90); struja4 = 90; myservo5.write (90); struja5 = 90; myservo6.write (90); struja6 = 90; delay (delayBetweenSteps); }}}

Kod obrade:

uvoz obrada.serial.*; kontrola uvozaP5.*; // uvoz ControlP5 knjižnice Serijski port; ControlP5 cp5; // kreiramo font PFont objekta ControlP5; void setup () {// isto što i veličina arduino programa (300, 700); // veličina prozora, (širina, visina) printArray (Serial.list ()); // ispisuje sve dostupne serijske portove // Ako imate problem, vjerojatno dolazi odavde. String portName = Serial.list () [0]; port = novi serijski (ovaj, portName, 9600); // povezao sam arduino s com3, bilo bi drugačije u linuxu i mac os -u // dopuštamo dodavanje butona u prazan prozor cp5 = novi ControlP5 (ovo); font = createFont ("Arial", 13); // prilagođeni fontovi za gumbe i naslov // Gumbi za kontrolu brzine cp5.addButton ("One") // "One" je naziv gumba.setPosition (50, 50) // x i y koordinate gornjeg lijevog kuta gumba.setSize (55, 25) // (širina, visina).setFont (font); cp5.addButton ("Pet").setPosition (110, 50).setSize (55, 25).setFont (font); cp5.addButton ("Ten").setPosition (170, 50).setSize (55, 25).setFont (font); cp5.addButton ("Twenty").setPosition (230, 50).setSize (55, 25).setFont (font); cp5.addButton ("Reset").setPosition (110, 2).setSize (55, 25).setFont (font); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (font); // Gumbi za upravljanje motorom cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (font); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (font); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (font); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (širina, visina).setFont (font); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (font); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (širina, visina).setFont (font); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (font); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (font); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (font); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (font); } void draw () {// isto što i petlja u arduino pozadini (192, 215, 249); // boja pozadine prozora (r, g, b) ili (0 do 255) // Dodavanje teksta koji kaže da je kontrola brzine popunjavanje kontrole brzine (0, 10, 25); // boja teksta (r, g, b) textFont (font); tekst ("Kontrola brzine", 50, 40); // ("tekst", x koordinata, y koordinata)} // omogućuje dodavanje nekih funkcija našim gumbima // pa kad pritisnete bilo koji gumb, on šalje određeni znak preko serijskog porta // Siguran sam da je moguće poslati nizove umjesto znakova, i to bi imalo više smisla, ali ne znam kako to učiniti // Naredbe za kontrolu brzine void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Naredbe za upravljanje motorom void 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'); }

Korak 31: Više slika

Preporučeni: