Turinys:

Laidu valdoma roboto svirtis: 31 žingsnis
Laidu valdoma roboto svirtis: 31 žingsnis

Video: Laidu valdoma roboto svirtis: 31 žingsnis

Video: Laidu valdoma roboto svirtis: 31 žingsnis
Video: High Density 2022 2025, Sausis
Anonim
Laidu valdoma roboto svirtis
Laidu valdoma roboto svirtis

Tai pamoka, kaip padaryti roboto ranką, valdomą laidais. Laidų naudojimo pranašumas yra tas, kad jūsų ranka yra lengvesnė, o visus variklius galite laikyti rankos apačioje, todėl lengviau statyti ir prižiūrėti. Čia yra vaizdo įrašas apie ranką veikiant. Ateityje planuoju pridėti nagą, kad jis galėtų pasiimti daiktus, o ne tik juos stumdyti.

3D spausdintuvai:

Čia ir čia

Prekės

6 servo varikliai (MG995)

Arduino Uno

Apie 6 metrus plastikinės plieno vielos (0,5 mm)

23 x 33 x 10 langelis (gali būti siauresnis, tikrai neturėtų būti trumpesnis)

Medžio lenta 33x10

Veržlės ir varžtai

Vamzdis 14 cm (to reikia stygoms nukreipti)

4 L formos skliausteliuose

5 voltų adapteris

2 7 krypčių gnybtų blokai

Duonos lentos laidai

3D spausdinti komponentai (ne mano sukurta, nuorodos į aprašymo elementus):

3 „varžtai“

2 „1 elementas“

1 „2 elementas“

2 „3 elementas“

1 bazinė jungtis

1 žingsnis: išspausdinkite visus 3D komponentus

Jums gali prireikti varžtų skylių ir arkų atramos, tačiau įsitikinkite, kad nepridedate atramos prie savo komponentų korpuso; tai uždarys mažas vielos skyles ir turėsite padaryti naujas skyles

2 žingsnis: (neprivaloma) pritvirtinkite medžio lentą prie dėžutės apačios, kad ją sustiprintumėte

Mano dėžutė buvo gana silpna, jūsų gali būti ne

3 žingsnis: išmatuokite ir supjaustykite medžio lentą, kad tilptų dėžutė

4 žingsnis: pažymėkite variklių pozicijas

įsitikinkite, kad nė viena ranka neliečia viena kitos

5 žingsnis: pažymėkite laikiklių ir vamzdžio vietas

Pažymėkite skliaustų ir vamzdžio vietas
Pažymėkite skliaustų ir vamzdžio vietas

Vamzdis turi būti dedamas maždaug per centimetrą prieš skylę

6 veiksmas: gręžkite skylę kabeliams, išeinantiems iš dėžutės (USB ir maitinimas)

Išgręžkite skylę kabeliams, išeinantiems iš dėžutės (USB ir maitinimas)
Išgręžkite skylę kabeliams, išeinantiems iš dėžutės (USB ir maitinimas)

7 žingsnis: gręžkite ir pjaukite visas pažymėtas skyles

Gręžkite ir pjaukite visas pažymėtas skyles
Gręžkite ir pjaukite visas pažymėtas skyles

8 žingsnis: pritvirtinkite variklius ir vamzdžius prie lentos

9 veiksmas: pritvirtinkite lentą prie dėžutės su L formos skliaustais

10 veiksmas: paimkite gnybtų blokus ir lituokite laidus kartu

Paimkite terminalų blokus ir lituokite laidus kartu
Paimkite terminalų blokus ir lituokite laidus kartu

11 veiksmas: nukirpkite adapterio maitinimo laido galą ir nuimkite laidus

12 veiksmas: nustatykite ir pažymėkite pliuso ir minuso laidus

13 veiksmas: prijunkite laidus prie gnybtų blokų, kad visi + servo laidai ir + laidas iš maitinimo laido būtų prijungti, tas pats bus ir su - laidais

Prijunkite laidus prie gnybtų blokų, kad būtų prijungti visi + servo laidai ir + laidas iš maitinimo laido, taip pat ir laidai
Prijunkite laidus prie gnybtų blokų, kad būtų prijungti visi + servo laidai ir + laidas iš maitinimo laido, taip pat ir laidai

14 žingsnis: nukirpkite galvutę nuo duonos lentos

Nupjaukite galvą nuo duonos lentos
Nupjaukite galvą nuo duonos lentos

Pritvirtinkite duonos lentos laido galą prie minuso gnybtų bloko, o kaiščio galą prie įžeminimo kaiščio savo „arduino“. Jei to nepadarysite, varikliai judės netolygiai be jokių įėjimų.

15 veiksmas: gręžkite tris skyles dėžutės apačioje, kad laidai išeitų iš rankos

Skylės turi sutapti su skylėmis pagrindinėje jungtyje.

16 veiksmas: pritvirtinkite pagrindinę jungtį prie dėžutės

Pritvirtinkite pagrindo jungtį prie dėžutės
Pritvirtinkite pagrindo jungtį prie dėžutės

17 veiksmas: naudokite peilį arba nagų dildę, kad vielos grioveliai būtų gilesni

Naudokite peilį arba nagų dildę, kad vielos grioveliai būtų gilesni
Naudokite peilį arba nagų dildę, kad vielos grioveliai būtų gilesni

2 ir 3 elementų vielos grioveliai yra per seklūs.

18 žingsnis: sukurkite ranką

Sukurkite ranką
Sukurkite ranką

Sukurkite ranką pagal čia pateiktas instrukcijas, todėl gali prireikti paduoti dalis, kad jos tilptų

19 veiksmas: įdiekite „Processing“ir „Arduino“

Apdorojimas ir „Arduino“

20 veiksmas: įklijuokite kodo programas

Kodas yra šio puslapio apačioje

21 veiksmas: prijunkite servo valdymo kaiščius prie „Arduino“

Prijunkite servo valdymo kaiščius prie „Arduino“
Prijunkite servo valdymo kaiščius prie „Arduino“

Pirmąjį variklį prijungiau prie trečio skaitmeninio kaiščio, antrąjį - prie ketvirto skaitmeninio kaiščio ir pan. Įsitikinkite, kad įžeminimo kaištis vis dar prijungtas prie gnybtų bloko.

22 veiksmas: apdorojimo metu paspauskite atstatymo mygtuką, todėl visos rankos bus nustatytos į 90 laipsnių

23 veiksmas: pritvirtinkite servo svirtis prie variklio horizontaliai

24 veiksmas: perkiškite laidus per ginklus taip, kad nesusilpnėtų

Įsitikinkite, kad perveriate vielą per tiek skylių, kiek galite, tai laikys ją laikinai ir bus lengvai pašalinama.

25 žingsnis: išbandykite ranką ir priveržkite arba atlaisvinkite laidus, kaip reikia

26 žingsnis: Karštai klijuokite laidus prie servo ginklų, kad jie taptų nuolatiniai

27 žingsnis: pastabos

Pastabos
Pastabos

Aš naudoju 0,5 mm juvelyrinę vielą, bet 0,4 mm turėtų būti gerai. Pradiniame dizaine buvo naudojama PVC viela, tačiau ji per lengvai lūžo ir buvo sunku dirbti.

Jei ketinate judinti ranką automobilyje ar dviračiu, apvyniokite rankų sąnarius juostele, kad įsitikintumėte, jog jie neišlenda. Tai ypač svarbu 1 elementui.

Kai pradėjau šį projektą, man buvo įdomu, kodėl aš galiu rasti tik vieną pamoką, kaip padaryti ranką, valdomą laidais. Dabar aš suprantu, kodėl tai nėra labiausiai paplitęs būdas padaryti hobio roboto ranką. Laidai kartais iškrenta iš griovelių ir visa tai yra šiek tiek silpna. Nežinau, ar problemos kyla dėl to, kad neturiu daug patirties, ar visa idėja yra problemiška, nors esu tikras, kad būtų tvirtiau, jei žinotų, ką darau.

28 žingsnis: trikčių šalinimas

Vielos skylės uždaromos 3D spausdinimo elementuose:

Jūs pridėjote viso elemento palaikymą, o ne tik varžtų skyles. Iš naujo atspausdinkite elementą arba atidarykite skyles tikrai karšta adata.

COM prievadas uždarytas, negalite bendrauti su arduino:

Jūsų „arduino“gali nepriimti USB 3 prievadų (mano ne), galite nusipirkti USB 2 prailginimo kabelį arba naudoti kompiuterį, kuriame yra USB 2 prievadai

Kodas neveikia:

Sekite šią pamoką ir pakeiskite ją, kad sukurtumėte savo kodą

Dalis rankos nejuda:

Laidai galėjo susipainioti, norėdami tai patikrinti, nuimkite servo rankeną nuo servo ir pabandykite ištraukti laidus ranka. Išskleiskite laidus ir, jei vis tiek sunku ištraukti laidus, pabandykite naudoti WD-40 arba tepalą, kad būtų lengviau judėti

29 žingsnis: nuorodos

Ne robotų ranka:

Rankų 3D spausdintuvai:

Mano rankos 3D spausdinimas:

„Arduino“ir apdorojimas:

30 žingsnis: kodas

Pakeistas iš šio kodo

„Arduino“kodas:

#include // Deklaruoti variklius Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Pagal numatytuosius nustatymus visi varikliai yra nustatyti 90 laipsnių kampu int current1 = 90; int srovė2 = 90; int srovė3 = 90; int srovė4 = 90; int srovė5 = 90; int srovė6 = 90; // Minimalus ir maksimalus laipsniai, kuriuos varikliai gali pasiekti 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; // Laipsniai, kuriuos reikia pridėti arba atimti iš dabartinės padėties int laipsniųFoward = 5; // Delsimas, kad dvi funkcijos neatsitiktų netinkama tvarka int delayBetweenSteps = 100; void setup () {// Nustatykite kiekvieno variklio valdymo kaiščius myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Nustatykite visus variklius į numatytąjį nustatymą myservo1.write (current1); myservo2.write (dabartinis2); myservo3.write (dabartinis3); myservo4.write (dabartinis4); myservo5.write (dabartinis5); myservo6.write (dabartinis6); // pradėti serijinį ryšį @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// jei yra duomenų, kuriuos galima perskaityti char val = Serial.read (); // įdėkite jį į šį simbolį // Motor Controls if (val == 'a' &&1 srovė1 = srovė1 - laipsniai uždelsimas (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - laipsniųFoward); srovė2 = srovė2 - laipsniai uždelsimas (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - laipsniųFoward); srovė3 = srovė3 - laipsniai uždelsimas (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - laipsniųFoward); srovė4 = srovė4 - laipsniai uždelsimas (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - laipsniųFoward); srovė5 = srovė5 - laipsniai uždelsimas (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - laipsniųFoward); srovė6 = srovė6 - laipsniai uždelsimas (delayBetweenSteps); } // Greitis Kontroliuoja, jei (val == 'w') {// Jei 1 greičio mygtukas paspaudžia laipsniusFoward = 1; uždelsimas (delayBetweenSteps); } if (val == 'x') {// Jei 5 greičio mygtukas paspaustas laipsniųFoward = 5; uždelsimas (delayBetweenSteps); } if (val == 'y') {// Jei 10 greičio mygtukas paspaustas laipsniųFoward = 10; uždelsimas (delayBetweenSteps); } if (val == 'z') {// Jei 20 greičio mygtukas paspaustas laipsniųFoward = 20; uždelsimas (delayBetweenSteps); } if (val == 'r') {// Jei paspaustas 20 greičio mygtukas myservo1.write (90); srovė1 = 90; myservo2.write (90); srovė2 = 90; myservo3.write (90); srovė3 = 90; myservo4.write (90); srovė4 = 90; myservo5.write (90); srovė5 = 90; myservo6.write (90); srovė6 = 90; uždelsimas (delayBetweenSteps); }}}

Apdorojimo kodas:

importo apdorojimas.serijinis.*; importo kontrolėP5.*; // importuoti „ControlP5“bibliotekos nuoseklųjį prievadą; „ControlP5 cp5“; // sukurti ControlP5 objekto PFont šriftą; void setup () {// toks pat kaip arduino programos dydis (300, 700); // lango dydis, (plotis, aukštis) printArray (Serial.list ()); // spausdina visus galimus nuoseklius prievadus // Jei turite problemų, tai tikriausiai iš čia String portName = Serial.list () [0]; uostas = naujas serijinis (šis, prievado pavadinimas, 9600); // aš prijungiau arduino prie com3, linux ir mac os būtų kitaip // leidžiame pridėti butoną prie tuščio lango cp5 = new ControlP5 (this); šriftas = createFont ("Arial", 13); // pasirinktiniai mygtukų ir pavadinimų šriftai // Greičio valdymo mygtukai cp5.addButton ("Vienas") // "Vienas" yra mygtuko.setPosition (50, 50) // x ir y koordinatės viršutiniame kairiajame mygtuko kampe.setSize (55, 25) // (plotis, aukštis).setFont (šriftas); cp5.addButton ("Penki").setPosition (110, 50).setSize (55, 25).setFont (šriftas); cp5.addButton ("Dešimt").setPosition (170, 50).setSize (55, 25).setFont (šriftas); cp5.addButton ("Dvidešimt").setPosition (230, 50).setSize (55, 25).setFont (šriftas); cp5.addButton ("Atstatyti").setPosition (110, 2).setSize (55, 25).setFont (šriftas); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (šriftas); // Variklio valdymo mygtukai cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (šriftas); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (šriftas); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (šriftas); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (šriftas); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (plotis, aukštis).setFont (šriftas); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (šriftas); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (plotis, aukštis).setFont (šriftas); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (šriftas); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (šriftas); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (šriftas); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (šriftas); } void draw () {// tas pats kaip kilpa arduino fone (192, 215, 249); // lango fono spalva (r, g, b) arba (nuo 0 iki 255) // Pridėti tekstą, kuriame sakoma, kad greičio valdymas yra greičio kontrolės užpildymas (0, 10, 25); // teksto spalva (r, g, b) textFont (šriftas); tekstas („Greičio kontrolė“, 50, 40); // ("tekstas", x koordinatė, y koordinatė)} // leidžia pridėti kai kurias funkcijas prie mūsų mygtukų // taigi, kai paspaudžiate bet kurį mygtuką, jis siunčia tam tikrą simbolį per nuoseklųjį prievadą // Esu tikras, kad galima siųsti eilutes vietoj simbolių, ir tai būtų prasmingiau, bet aš nežinau, kaip tai padaryti // Greičio kontrolės komandos void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Variklio valdymo komandos 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'); }

31 žingsnis: daugiau nuotraukų