INHOUDSOPGAWE:

Draadbeheerde robotarm: 31 stappe
Draadbeheerde robotarm: 31 stappe

Video: Draadbeheerde robotarm: 31 stappe

Video: Draadbeheerde robotarm: 31 stappe
Video: ДОБАВЬТЕ ЭТО В ГРУНТ ПЕРЕД ПОСЕВОМ СЕМЯН. Результат будет потрясающий! 2024, November
Anonim
Draadbeheerde robotarm
Draadbeheerde robotarm

Dit is 'n handleiding oor hoe om 'n robotarm te maak wat deur drade beheer word. Die voordeel van die gebruik van drade is dat u arm ligter is en dat u al u motors onder in u arm kan hê, wat die bou en onderhoud makliker maak. Hier is 'n video van die arm in aksie. Ek is van plan om in die toekoms 'n klou by te voeg, sodat dit dinge kan optel en dit nie net kan rondstoot nie.

3D Printables:

Hier en hier

Voorrade

6 Servomotors (MG995)

Arduino Uno

Ongeveer 6 meter plastiek bedekte staaldraad (0,5 mm)

Box 23x33x10 (kan nouer wees, moet beslis nie korter wees nie)

Plank van hout 33x10

Boute en moere

Pyp 14 cm (dit is nodig om die snare te lei)

4 L-hakies

5 volt adapter

2 7-rigting terminale

Broodbord drade

3D -gedrukte komponente (nie deur my ontwerp nie, skakels na elemente in die beskrywing):

3 “boute”

2 "Element 1"

1 "Element 2"

2 "Element 3"

1 basisaansluiting

Stap 1: Druk al die 3D -komponente uit

Miskien het u ondersteuning nodig vir die boutgate en boë, maar moenie ondersteuning aan die liggaam van u komponente toevoeg nie; dit maak die klein draadgate toe en jy sal nuwe gate moet maak

Stap 2: (opsioneel) Heg 'n houtplank aan die onderkant van u boks vas om dit te versterk

My boks was redelik swak, die uwe is dit miskien nie

Stap 3: Meet en sny 'n houtbord om by die boks te pas

Stap 4: Merk die posisies van die motors

maak seker dat nie een van die arms aan mekaar raak nie

Stap 5: Merk die posisies van die hakies en die pyp

Merk die posisies van die hakies en die pyp
Merk die posisies van die hakies en die pyp

Die pyp moet ongeveer een sentimeter voor die gat geplaas word

Stap 6: Boor 'n gat vir die kabels wat uit u boks kom (USB en krag)

Boor 'n gat vir die kabels wat uit u boks kom (USB en krag)
Boor 'n gat vir die kabels wat uit u boks kom (USB en krag)

Stap 7: Boor en sien al die gemerkte gate

Boor en sien al die gemerkte gate
Boor en sien al die gemerkte gate

Stap 8: Heg die motors en pype aan die plank vas

Stap 9: Bevestig die plank aan die boks met die L-hakies

Stap 10: Neem u eindblokke en soldeer die drade saam

Neem u eindblokke en soldeer die drade saam
Neem u eindblokke en soldeer die drade saam

Stap 11: Sny die einde van die adapterkabel en trek die drade af

Stap 12: Identifiseer en merk die plus- en minusdrade

Stap 13: Bevestig die drade aan die terminale blokke sodat al die + servodrade en die + draad van die netsnoer verbind is, dieselfde geld vir die - drade

Koppel die drade aan die terminale blokke sodat al die + servodrade en die + draad van die netsnoer verbind is, dieselfde geld vir die - drade
Koppel die drade aan die terminale blokke sodat al die + servodrade en die + draad van die netsnoer verbind is, dieselfde geld vir die - drade

Stap 14: Sny die kop van 'n broodborddraad af

Sny die kop van 'n broodborddraad af
Sny die kop van 'n broodborddraad af

Heg die gestroopte kant van die broodborddraad aan die minus -aansluitblok en die penpunt aan die grondpen in u arduino. As u dit nie doen nie, beweeg die motors onreëlmatig sonder enige insette.

Stap 15: Boor drie gate in die onderkant van die boks vir die drade wat uit u arm kom

Die gate moet ooreenstem met die gate in die basisaansluiting.

Stap 16: Koppel die basisaansluiting aan die boks

Heg die basisaansluiting aan die boks
Heg die basisaansluiting aan die boks

Stap 17: Gebruik 'n mes of spykerlêer om die draadgroewe dieper te maak

Gebruik 'n mes of spykerlêer om die draadgroewe dieper te maak
Gebruik 'n mes of spykerlêer om die draadgroewe dieper te maak

Die draadgroewe vir elemente 2 en 3 is te vlak.

Stap 18: Bou die arm

Bou die arm
Bou die arm

Konstrueer die arm volgens die instruksies hier, wat u moontlik nodig het om die dele in te dien sodat hulle pas

Stap 19: Installeer verwerking en Arduino

Verwerking en Arduino

Stap 20: Plak die kodeprogramme

Die kode is onderaan hierdie bladsy

Stap 21: Koppel die Servo Control Pins aan die Arduino

Koppel die Servo Control Pins aan die Arduino
Koppel die Servo Control Pins aan die Arduino

Ek het die eerste motor aan die derde digitale pen gekoppel, die tweede motor aan die vierde digitale pen, ensovoorts. Maak seker dat die grondpen nog steeds aan die - klemmenblok gekoppel is.

Stap 22: Druk die reset -knoppie in die verwerking, dit stel alle arms op 90 grade

Stap 23: Bevestig die servo -arms horisontaal aan die motor

Stap 24: Ryg die drade deur die arms sodat daar geen speling is nie

Maak seker dat u die draad deur soveel gate as moontlik trek, dit hou dit tydelik vas en kan maklik verwyder word.

Stap 25: Toets die arm en trek die drade vas of maak dit los soos benodig

Stap 26: Plak die drade warm op die servowapen om dit permanent te maak

Stap 27: Notas

Notas
Notas

Ek het 0.5mm juweliersdraad gebruik, maar 0.4mm behoort goed te wees. Die oorspronklike ontwerp het PVC -draad gebruik, maar dit het te maklik gebreek en was moeilik om mee te werk.

As u die arm in 'n motor of fiets gaan beweeg, draai die armverbindings in band om seker te maak dat dit nie uitkom nie. Dit is veral belangrik vir element 1.

Toe ek met hierdie projek begin, het ek gewonder hoekom ek net een handleiding kan vind oor hoe om 'n arm te maak wat deur drade beheer word. Nou verstaan ek waarom dit nie die algemeenste manier is om 'n stokperdjie -robotarm te maak nie. Die drade val soms uit hul groewe en die hele ding is effens dun. Ek weet nie of die probleme is nie, omdat ek nie baie ervaring het nie of dat die hele idee problematies is, hoewel ek seker is dat dit meer solied sou wees as ek weet wat ek doen.

Stap 28: Probleemoplossing

Die draadgate is toegemaak in die 3D -gedrukte elemente:

U het ondersteuning vir die hele element bygevoeg in plaas van net die boutgate. Druk die element herdruk of maak die gate oop met 'n warm naald.

Die COM -poort is gesluit, u kan nie met die arduino kommunikeer nie:

U arduino aanvaar moontlik nie USB 3 -poorte nie (myne het dit nie gedoen nie); u kan 'n USB 2 -verlengkabel koop of 'n rekenaar met USB 2 -poorte gebruik

Die kode werk nie:

Volg hierdie tutoriaal en verander dit om u eie kode te maak

'N Gedeelte van die arm beweeg nie:

Die drade het moontlik verstrengel geraak om die servo -arm van die servo af te trek en probeer om die drade met die hand te trek. Ontkoppel die drade en as dit nog steeds moeilik is om aan die drade te trek, probeer 'n bietjie WD-40 of 'n smeermiddel om die beweging makliker te maak

Stap 29: Skakels

Nie-robotiese arm:

Bewapen 3D Printables:

My arm 3D drukbaar:

Arduino en verwerking:

Stap 30: Kode

Uit hierdie kode gewysig

Arduino -kode:

#include // Verklaar die motors Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Al die motors is standaard ingestel op 90 grade int current1 = 90; int stroom2 = 90; int stroom3 = 90; int stroom4 = 90; int stroom5 = 90; int stroom6 = 90; // Minimum en maksimum grade wat die motors kan bereik 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; // Grade wat bygevoeg of afgetrek moet word van die huidige posisie int degreesFoward = 5; // Vertraag sodat twee funksies nie in die verkeerde volgorde int delayBetweenSteps = 100 gebeur nie; leemte -opstelling () {// Stel stuurpenne vir elke motor myservo1.attach (3); myservo2.aanheg (4); myservo3.aanheg (5); myservo4.aanheg (6); myservo5.aanheg (7); myservo6.aanheg (8); // Stel alle motors op die standaardinstelling myservo1.write (current1); myservo2.write (huidige2); myservo3.write (huidige3); myservo4.write (huidige4); myservo5. skryf (huidige5); myservo6.write (huidige6); // begin seriële kommunikasie @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// as data beskikbaar is om char val = Serial.read () te lees; // sit dit in hierdie teken // Motorbeheer as (val == 'a' && current1 + degreesFoward mini1) {myservo1.write (current1 - degreesFoward); stroom1 = stroom1 - grade vorentoe; vertraging (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - degreesFoward); stroom2 = stroom2 - grade vorentoe; vertraging (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - degreesFoward); stroom3 = stroom3 - grade vorentoe; vertraging (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - degreesFoward); stroom4 = stroom4 - grade vorentoe; vertraging (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - degreesFoward); stroom5 = stroom5 - grade vorentoe; vertraging (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - degreesFoward); stroom6 = stroom6 - gradeFoward; vertraging (delayBetweenSteps); } // Spoedbeheer as (val == 'w') {// As spoed 1 -knoppie gradeFoward = 1; vertraging (delayBetweenSteps); } if (val == 'x') {// As spoed 5 knoppie ingedruk gradeFoward = 5; vertraging (delayBetweenSteps); } if (val == 'y') {// As spoed 10 -knoppie gradeFoward = 10; vertraging (delayBetweenSteps); } if (val == 'z') {// As spoed 20 knoppie ingedruk gradeFoward = 20; vertraging (delayBetweenSteps); } if (val == 'r') {// As spoed 20 -knoppie myservo1.write (90) ingedruk het; stroom1 = 90; myservo2.write (90); stroom2 = 90; myservo3.write (90); stroom3 = 90; myservo4.write (90); stroom4 = 90; myservo5.write (90); stroom5 = 90; myservo6.write (90); stroom6 = 90; vertraging (delayBetweenSteps); }}}

Verwerkingskode:

invoerverwerking.reeks.*; invoerbeheerP5.*; // invoer ControlP5 biblioteek Seriële poort; ControlP5 cp5; // skep ControlP5 -voorwerp PFont -lettertipe; ongeldige opstelling () {// dieselfde as die grootte van die arduino -program (300, 700); // venster grootte, (breedte, hoogte) printArray (Serial.list ()); // druk alle beskikbare seriële poorte af // As u 'n probleem ondervind, kom dit waarskynlik van hier af String portName = Serial.list () [0]; poort = nuwe reeks (hierdie, poortnaam, 9600); // ek het arduino aan com3 gekoppel, dit sou anders wees in linux en mac os // laat buton by leë venster voeg cp5 = nuwe ControlP5 (hierdie); font = createFont ("Arial", 13); // pasgemaakte lettertipes vir knoppies en titel // Snelheidsknoppies knoppies cp5.addButton ("One") // "One" is die naam van die knoppie.setPosition (50, 50) // x en y koördinate in die linker boonste hoek van die knoppie.setSize (55, 25) // (breedte, hoogte).setFont (lettertipe); cp5.addButton ("Five").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); // Motorbeheer -knoppies 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) // (breedte, hoogte).setFont (lettertipe); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (font); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (breedte, hoogte).setFont (lettertipe); 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 () {// dieselfde as lus in arduino -agtergrond (192, 215, 249); // agtergrondkleur van venster (r, g, b) of (0 tot 255) // Voeg teks by wat sê dat spoedbeheer spoedbeheer is (0, 10, 25); // tekskleur (r, g, b) textFont (lettertipe); teks ("Spoedbeheer", 50, 40); // ("teks", x koördinaat, y koördinaat)} // kan 'n paar funksies by ons knoppies voeg // dus as u op 'n knoppie druk, stuur dit 'n spesifieke teken oor die seriële poort // Ek is seker dat dit moontlik is om snare te stuur in plaas van tekens, en dit sou meer sin maak, maar ek weet nie hoe om dit te doen nie // Speed Control Commands void One () {port.write ('w'); } nietig Five () {port.write ('x'); } ongeldig Ten () {port.write ('y'); } nietig Twenty () {port.write ('z'); } // Motorbeheeropdragte ongeldig Servo_1_Foward () {port.write ('a'); } ongeldig Servo_1_Back () {port.write ('b'); } ongeldig Servo_2_Foward () {port.write ('c'); } ongeldig Servo_2_Back () {port.write ('d'); } ongeldig Servo_3_Foward () {port.write ('e'); } ongeldig Servo_3_Back () {port.write ('f'); } ongeldig Servo_4_Foward () {port.write ('g'); } ongeldig Servo_4_Back () {port.write ('h'); } ongeldig Servo_5_Foward () {port.write ('i'); } ongeldig Servo_5_Back () {port.write ('j'); } ongeldig Servo_6_Foward () {port.write ('k'); } ongeldig Servo_6_Back () {port.write ('l'); } void Reset () {port.write ('r'); }

Stap 31: Meer foto's

Aanbeveel: