Cuprins:

Braț robot controlat cu sârmă: 31 de pași
Braț robot controlat cu sârmă: 31 de pași

Video: Braț robot controlat cu sârmă: 31 de pași

Video: Braț robot controlat cu sârmă: 31 de pași
Video: Valeriu Coadă te învață cum să scapi într-o SITUAȚIE EXTREMĂ!! 😱😅 #tiktokromania #valeriucoada 2024, Noiembrie
Anonim
Braț robot controlat cu sârmă
Braț robot controlat cu sârmă

Acesta este un tutorial despre cum să faci un braț robot controlat de fire. Avantajul utilizării firelor este că brațul dvs. este mai ușor și puteți avea toate motoarele în partea inferioară a brațului, facilitând construcția și întreținerea. Iată un videoclip cu brațul în acțiune. Plănuiesc să adaug o gheară în viitor, astfel încât să poată ridica lucrurile și nu doar să le împingă.

Imprimabile 3D:

Aici și Aici

Provizii

6 servomotoare (MG995)

Arduino Uno

Aproximativ 6 metri de sârmă de oțel acoperită cu plastic (0,5 mm)

Caseta 23x33x10 (poate fi mai îngustă, cu siguranță nu ar trebui să fie mai scurtă)

Scândură de lemn 33x10

Nuci și șuruburi

Țeavă de 14 cm (este necesară pentru a ghida corzile)

4 suporturi L

Adaptor de 5 volți

2 blocuri terminale cu 7 căi

Sârme de panouri

Componente imprimate 3D (Nu sunt concepute de mine, linkuri către elemente din descriere):

3 „șuruburi”

2 „Elementul 1”

1 „Element 2”

2 „Elementul 3”

1 conector de bază

Pasul 1: Imprimați toate componentele 3D

Este posibil să aveți nevoie de suport pentru găurile și arcurile șuruburilor, dar asigurați-vă că nu adăugați suport corpului componentelor; aceasta va închide găurile mici de sârmă și va trebui să faceți noi găuri

Pasul 2: (Opțional) Atașați o scândură de lemn în partea inferioară a cutiei pentru a o întări

Cutia mea era destul de slabă, s-ar putea să nu fie a ta

Pasul 3: Măsurați și tăiați o scândură de lemn pentru a se potrivi cutiei

Pasul 4: Marcați pozițiile motoarelor

asigurați-vă că niciunul dintre brațe nu se ating

Pasul 5: Marcați pozițiile parantezelor și ale conductei

Marcați pozițiile parantezelor și ale conductei
Marcați pozițiile parantezelor și ale conductei

Țeava trebuie așezată în jur de un centimetru în fața găurii

Pasul 6: găuriți o gaură pentru cablurile care ies din cutie (USB și alimentare)

Găuriți o gaură pentru cablurile care ies din cutie (USB și alimentare)
Găuriți o gaură pentru cablurile care ies din cutie (USB și alimentare)

Pasul 7: Găsește și găsește toate găurile marcate

Găuri și ferăstrău toate găurile marcate
Găuri și ferăstrău toate găurile marcate

Pasul 8: Atașați motoarele și conducta la scândură

Pasul 9: Atașați scândura la cutie cu suporturile în L

Pasul 10: Luați bornele și lipiți firele împreună

Luați blocurile de borne și lipiți firele împreună
Luați blocurile de borne și lipiți firele împreună

Pasul 11: Tăiați capătul cablului de alimentare al adaptorului și curățați firele

Pasul 12: Identificați și marcați firele Plus și Minus

Pasul 13: Atașați firele la blocurile de borne, astfel încât să fie conectate toate + firele servo și firul + de la cablul de alimentare, la fel și pentru - fire

Atașați firele la blocurile de borne, astfel încât să conectați toate + firele servo și + firul de la cablul de alimentare, la fel și pentru - fire
Atașați firele la blocurile de borne, astfel încât să conectați toate + firele servo și + firul de la cablul de alimentare, la fel și pentru - fire

Pasul 14: Tăiați capul de un fir de panou

Tăiați capul de un fir de panou
Tăiați capul de un fir de panou

Atașați capătul dezbrăcat al firului de panou la blocul de borne minus și capătul pinului la pinul de masă din arduino. Dacă nu faceți acest lucru, motoarele se vor mișca neregulat fără nicio intrare.

Pasul 15: găuriți trei găuri în partea inferioară a cutiei pentru firele care ies din braț

Găurile ar trebui să se potrivească cu găurile din conectorul de bază.

Pasul 16: Atașați conectorul de bază la cutie

Atașați conectorul de bază la cutie
Atașați conectorul de bază la cutie

Pasul 17: Utilizați un cuțit sau un fișier de unghii pentru a face șanțurile de sârmă mai adânci

Utilizați un cuțit sau un cui de unghii pentru a face șanțurile de sârmă mai adânci
Utilizați un cuțit sau un cui de unghii pentru a face șanțurile de sârmă mai adânci

Șanțurile de sârmă pentru elementele 2 și 3 sunt prea puțin adânci.

Pasul 18: Construiește brațul

Construiește brațul
Construiește brațul

Construiți brațul în conformitate cu instrucțiunile de aici. Este posibil să fie necesar să înregistrați piesele astfel încât să se potrivească

Pasul 19: Instalați Procesare și Arduino

Procesare și Arduino

Pasul 20: lipiți programele de cod

Codul se află în partea de jos a acestei pagini

Pasul 21: Conectați pinii Servo Control la Arduino

Conectați pinii Servo Control la Arduino
Conectați pinii Servo Control la Arduino

Am conectat primul motor la al treilea pin digital, al doilea motor la al patrulea pin digital și așa mai departe. Asigurați-vă că știftul de masă este încă conectat la blocul de borne.

Pasul 22: Apăsați butonul Resetare în procesare, aceasta va seta toate brațele la 90 de grade

Pasul 23: Fixează brațele servo la motor pe orizontală

Pasul 24: Infilați firele prin brațe, astfel încât să nu existe nicio slăbiciune

Asigurați-vă că ați introdus firul prin cât mai multe găuri posibil, acesta îl va ține temporar și va fi ușor de îndepărtat.

Pasul 25: Testați brațul și strângeți sau slăbiți firele după cum este necesar

Pasul 26: Lipiți fierbinte firele pe brațele servo pentru a-l face permanent

Pasul 27: Note

Note
Note

Am folosit sârmă de bijuterii de 0,5 mm, dar 0,4 mm ar trebui să fie bine. Designul original folosea sârmă din PVC, dar care s-a rupt prea ușor și a fost greu de lucrat.

Dacă aveți de gând să deplasați brațul într-o mașină sau bicicletă, înfășurați articulațiile brațului în bandă pentru a vă asigura că nu apar. Acest lucru este deosebit de important pentru elementul 1.

Când am început acest proiect, mă întrebam de ce nu puteam găsi decât un tutorial despre cum să fac un braț controlat de fire. Acum înțeleg de ce acesta nu este cel mai comun mod de a crea un braț robot hobby. Sârmele cad uneori din canelurile lor și totul este cam slab. Nu știu dacă problemele sunt pentru că nu am multă experiență sau dacă întreaga idee este problematică, deși sunt sigură că ar fi mai solidă dacă aș ști ce fac.

Pasul 28: Depanare

Găurile de sârmă sunt închise în elementele tipărite 3D:

Ați adăugat suport pentru întregul element în loc doar de găurile de șuruburi. Fie re-tipăriți elementul, fie deschideți găurile cu un ac foarte fierbinte.

Portul COM este închis, nu puteți comunica cu arduino:

Este posibil ca arduino dvs. să nu accepte porturile USB 3 (ale mele nu), puteți cumpăra un cablu prelungitor USB 2 sau puteți utiliza un computer care are porturi USB 2

Codul nu funcționează:

Urmați acest tutorial și modificați-l pentru a vă crea propriul cod

O parte a brațului nu se mișcă:

Este posibil ca firele să se fi încurcat, pentru a verifica acest lucru, luați brațul servo de pe servo și încercați să trageți firele cu mâna. Desfaceți firele și, dacă este încă dificil să trageți firele, încercați să folosiți niște WD-40 sau un lubrifiant pentru a face mișcarea mai ușoară

Pasul 29: Link-uri

Braț non-robotic:

Armare imprimabile 3D:

My Arm 3D Printable:

Arduino și procesare:

Pasul 30: Cod

Modificat din acest cod

Cod Arduino:

#include // Declarați motoarele Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Toate motoarele sunt setate la 90 de grade implicit int current1 = 90; int curent2 = 90; int curent3 = 90; int curent4 = 90; int curent5 = 90; int curent6 = 90; // Gradele minime și maxime pe care motoarele le pot atinge 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; // Gradele care trebuie adăugate sau scăzute din poziția curentă în grade Foward = 5; // Întârziere, astfel încât două funcții să nu se întâmple în ordinea greșită int delayBetweenSteps = 100; void setup () {// Setați pinii de control pentru fiecare motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Setați toate motoarele la setarea implicită myservo1.write (current1); myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // porniți comunicarea în serie @ 9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// if are data available to read char val = Serial.read (); // pune-l în acest caracter // Motor Controls if (val == 'a' && current1 + degreesFoward mini1) {myservo1.write (current1 - degreesFoward); current1 = current1 - gradeFoward; delay (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - gradeFoward); current2 = current2 - gradeFoward; delay (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - gradeFoward); curent3 = curent3 - gradeFoward; delay (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - gradeFoward); current4 = current4 - gradeFoward; delay (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - gradeFoward); current5 = current5 - gradeFoward; delay (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - gradeFoward); current6 = current6 - gradeFoward; delay (delayBetweenSteps); } // Controlul vitezei dacă (val == 'w') {// Dacă butonul viteză 1 a apăsat gradeFoward = 1; delay (delayBetweenSteps); } if (val == 'x') {// Dacă butonul viteză 5 a apăsat gradeFoward = 5; delay (delayBetweenSteps); } if (val == 'y') {// Dacă butonul viteză 10 a apăsat gradeFoward = 10; delay (delayBetweenSteps); } if (val == 'z') {// Dacă butonul viteză 20 a apăsat gradeFoward = 20; delay (delayBetweenSteps); } if (val == 'r') {// Dacă butonul viteză 20 a fost apăsat pe myservo1.write (90); curent1 = 90; myservo2.write (90); curent2 = 90; myservo3.write (90); curent3 = 90; myservo4.write (90); curent4 = 90; myservo5.write (90); curent5 = 90; myservo6.write (90); curent6 = 90; delay (delayBetweenSteps); }}}

Cod de procesare:

procesare import.serial. *; control import P5. *; // import portul serial al bibliotecii ControlP5; ControlP5 cp5; // creați obiectul ControlP5 font PFont; void setup () {// la fel ca dimensiunea programului arduino (300, 700); // dimensiunea ferestrei, (lățime, înălțime) printArray (Serial.list ()); // tipărește toate porturile seriale disponibile // Dacă aveți o problemă, probabil vine de aici String portName = Serial.list () [0]; port = new Serial (this, portName, 9600); // Am conectat arduino la com3, ar fi diferit în Linux și Mac OS // permite să adăugăm buton în fereastra goală cp5 = nou ControlP5 (acesta); font = createFont ("Arial", 13); // fonturi personalizate pentru butoane și titlu // Butoane de control al vitezei cp5.addButton („One”) // „One” este numele butonului.setPosition (50, 50) // coordonatele x și y ale colțului din stânga sus al butonului.setSize (55, 25) // (lățime, înălțime).setFont (font); cp5.addButton ("Five").setPosition (110, 50).setSize (55, 25).setFont (font); cp5.addButton ("Zece").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); // Butoane de control motor 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) // (lățime, înălțime).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) // (lățime, înălțime).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 () {// la fel ca bucla în fundal arduino (192, 215, 249); // culoarea de fundal a ferestrei (r, g, b) sau (0 la 255) // Adăugați text spunând că controlul vitezei este umplerea controlului vitezei (0, 10, 25); // culoarea textului (r, g, b) textFont (font); text („Control viteză”, 50, 40); // („text”, coordonată x, coordonată y)} // permite adăugarea unor funcții la butoanele noastre // așa că atunci când apăsați orice buton, acesta trimite un caracter special prin portul serial // Sunt sigur că este posibil să trimiteți șiruri în loc de caractere și ar avea mai mult sens, dar nu știu cum să o fac // Comenzi de control al vitezei void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Comenzile de control al motorului anulează 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'); }

Pasul 31: Mai multe imagini

Recomandat: