Kazalo:
- Zaloge
- 1. korak: Natisnite vse komponente 3D
- 2. korak: (neobvezno) na dno škatle pritrdite leseno desko, da jo okrepite
- 3. korak: Izmerite in izrežite leseno desko, da se prilega škatli
- 4. korak: Označite položaje motorjev
- 5. korak: Označite položaje nosilcev in cevi
- 6. korak: Izvrtite luknjo za kable, ki prihajajo iz vaše škatle (USB in napajanje)
- 7. korak: Izvrtajte in žagajte vse označene luknje
- 8. korak: motorje in cev pritrdite na desko
- 9. korak: Ploščo pritrdite na škatlo z L-oklepaji
- 10. korak: Vzemite priključne bloke in spajkajte žice skupaj
- 11. korak: Odrežite konec napajalnega kabla adapterja in odstranite žice
- 12. korak: Prepoznajte in označite plus in minus žice
- Korak: Pritrdite žice na priključne bloke, tako da so vse + servo žice in + žica iz napajalnega kabla povezane, enako velja za - žice
- Korak 14: Odrežite glavo z žice
- Korak 15: Na dnu škatle izvrtajte tri luknje za žice, ki vam prihajajo iz rok
- Korak 16: Pritrdite osnovni priključek na škatlo
- 17. korak: Uporabite nož ali pilico za nohte, da žlebove žice poglobite
- 18. korak: Konstruirajte roko
- Korak 19: Namestite Processing in Arduino
- 20. korak: prilepite kodne programe
- Korak 21: Povežite servo krmilne zatiče z Arduinom
- Korak 22: Pritisnite gumb za ponastavitev pri obdelavi, tako boste vse roke postavili na 90 stopinj
- Korak 23: Servo ročice vodoravno pritrdite na motor
- Korak 24: Žice napeljite skozi roke, tako da ni popuščanja
- Korak 25: Preizkusite roko in po potrebi privijte ali sprostite žice
- Korak 26: Vroče prilepite žice na servo ročice, da bodo trajne
- Korak 27: Opombe
- 28. korak: Odpravljanje težav
- 29. korak: Povezave
- 30. korak: Koda
- 31. korak: Več slik
Video: Ročna roka z žično krmiljenjem: 31 korakov
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
To je vadnica o tem, kako narediti robotsko roko z žicami. Prednost uporabe žic je v tem, da je vaša roka lažja in da imate vse svoje motorje na dnu roke, kar olajša gradnjo in vzdrževanje. Tukaj je videoposnetek roke v akciji. V prihodnosti nameravam dodati kremplje, da bo lahko pobral stvari in jih ne samo potisnil.
3D tiskanje:
Tukaj in tukaj
Zaloge
6 servo motorjev (MG995)
Arduino Uno
Približno 6 metrov jeklene žice s plastično prevleko (0,5 mm)
Škatla 23x33x10 (morda ožja, vsekakor ne sme biti krajša)
Lesena deska 33x10
Matice in vijaki
Cev 14 cm (to je potrebno za vodenje strun)
4 L-nosilci
5-voltni adapter
2 7-smerna priključna bloka
Žice za ploščice
3D natisnjene komponente (Nisem oblikoval jaz, povezave do elementov v opisu):
3 "vijaki"
2 "Element 1"
1 "Element 2"
2 "Element 3"
1 Osnovni priključek
1. korak: Natisnite vse komponente 3D
Morda boste potrebovali podporo za luknje in loke za vijake, vendar pazite, da ne dodate podpore telesu svojih komponent; s tem boste zaprli majhne žične luknje in morali boste narediti nove luknje
2. korak: (neobvezno) na dno škatle pritrdite leseno desko, da jo okrepite
Moja škatla je bila precej šibka, tvoja morda ne
3. korak: Izmerite in izrežite leseno desko, da se prilega škatli
4. korak: Označite položaje motorjev
pazite, da se nobena roka ne dotika drug drugega
5. korak: Označite položaje nosilcev in cevi
Cev je treba postaviti približno en centimeter pred luknjo
6. korak: Izvrtite luknjo za kable, ki prihajajo iz vaše škatle (USB in napajanje)
7. korak: Izvrtajte in žagajte vse označene luknje
8. korak: motorje in cev pritrdite na desko
9. korak: Ploščo pritrdite na škatlo z L-oklepaji
10. korak: Vzemite priključne bloke in spajkajte žice skupaj
11. korak: Odrežite konec napajalnega kabla adapterja in odstranite žice
12. korak: Prepoznajte in označite plus in minus žice
Korak: Pritrdite žice na priključne bloke, tako da so vse + servo žice in + žica iz napajalnega kabla povezane, enako velja za - žice
Korak 14: Odrežite glavo z žice
Odstranljeni konec žice ohišja pritrdite na minus priključni blok, konec zatiča pa na ozemljitveni zatič v vašem arduinu. Če tega ne storite, se bodo motorji premikali neredno, brez vnosa.
Korak 15: Na dnu škatle izvrtajte tri luknje za žice, ki vam prihajajo iz rok
Luknje se morajo ujemati z luknjami v osnovnem priključku.
Korak 16: Pritrdite osnovni priključek na škatlo
17. korak: Uporabite nož ali pilico za nohte, da žlebove žice poglobite
Žični utori za elemente 2 in 3 so premajhni.
18. korak: Konstruirajte roko
Konstruirajte roko v skladu z navodili tukaj, ki jih boste morda morali vložiti, tako da se prilegajo
Korak 19: Namestite Processing in Arduino
Predelava in Arduino
20. korak: prilepite kodne programe
Koda je na dnu te strani
Korak 21: Povežite servo krmilne zatiče z Arduinom
Prvi motor sem priključil na tretji digitalni zatič, drugi motor na četrti digitalni zatič in tako naprej. Prepričajte se, da je ozemljitveni zatič še vedno priključen na - sponko.
Korak 22: Pritisnite gumb za ponastavitev pri obdelavi, tako boste vse roke postavili na 90 stopinj
Korak 23: Servo ročice vodoravno pritrdite na motor
Korak 24: Žice napeljite skozi roke, tako da ni popuščanja
Prepričajte se, da napeljete žico skozi čim več lukenj, saj jo boste začasno držali in jo boste zlahka odstranili.
Korak 25: Preizkusite roko in po potrebi privijte ali sprostite žice
Korak 26: Vroče prilepite žice na servo ročice, da bodo trajne
Korak 27: Opombe
Uporabil sem 0,5 mm žico za nakit, vendar mora biti 0,4 mm v redu. Prvotna zasnova je uporabila PVC žico, ki pa se je preveč zlahka zlomila in je bilo težko delati.
Če boste roko premikali v avtomobilu ali kolesu, zavijte sklepe rok s trakom, da se prepričate, da ne izskočijo. To je še posebej pomembno za element 1.
Ko sem začel s tem projektom, sem se spraševal, zakaj sem lahko našel le eno vadnico o tem, kako narediti roko z žicami. Zdaj razumem, zakaj to ni najpogostejši način za izdelavo roke hobija. Žice včasih padejo iz žlebov in vse skupaj je nekako šibko. Ne vem, ali so težave, ker nimam veliko izkušenj ali je celotna ideja problematična, čeprav sem prepričan, da bi bilo trdnejše, če bi vedel, kaj počnem.
28. korak: Odpravljanje težav
Luknje za žice so zaprte v 3D tiskanih elementih:
Dodali ste podporo za celoten element namesto samo za luknje za vijake. Element ponovno natisnite ali odprite luknje z zelo vročo iglo.
Vrata COM so zaprta, z arduinom ne morete komunicirati:
Vaš arduino morda ne sprejema vrat USB 3 (moja ne), lahko kupite podaljšek USB 2 ali uporabite računalnik, ki ima vrata USB 2
Koda ne deluje:
Sledite tej vadnici in jo spremenite, da naredite svojo kodo
Del roke se ne premika:
Morda so se žice zapletle, da to preverite, odstranite servo ročico s servo in poskusite ročno potegniti žice. Odpnite žice in če je še vedno težko potegniti žice, poskusite uporabiti nekaj WD-40 ali mazivo za lažje gibanje
29. korak: Povezave
Nerobotizirana roka:
Arm 3D tiskalniki:
Moja roka 3D tiskanje:
Arduino in obdelava:
30. korak: Koda
Spremenjeno iz te kode
Koda Arduino:
#include // Razglasite motorje Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Vsi motorji so privzeto nastavljeni na 90 stopinj int current1 = 90; int tok 2 = 90; int tok 3 = 90; int tok 4 = 90; int tok 5 = 90; int tok 6 = 90; // Najmanjše in največje stopinje, ki jih motorji lahko dosežejo 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; // Stopnje, ki jih je treba dodati ali odšteti od trenutnega položaja int stopinjFoward = 5; // Zakasnitev, da se dve funkciji ne zgodita v napačnem vrstnem redu int delayBetweenSteps = 100; void setup () {// Nastavite kontrolne zatiče za vsak motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Vse motorje nastavimo na privzeto nastavitev myservo1.write (current1); myservo2.write (current2); myservo3.write (current3); myservo4.write (current4); myservo5.write (current5); myservo6.write (current6); // začni serijsko komunikacijo @9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// če so na voljo podatki za branje char val = Serial.read (); // vnesemo ga v ta znak // Nadzor motorja if (val == 'a' && current1 +greesFoward mini1) {myservo1.write (current1 --greesFoward); tok1 = tok1 - stopinje naprej; zakasnitev (delayBetweenSteps); } if (val == 'c' && current2 mini2) {myservo2.write (current2 - stopinjeFoward); tok2 = tok2 - stopinje naprej; zakasnitev (delayBetweenSteps); } if (val == 'e' && current3 mini3) {myservo3.write (current3 - stopinjeFoward); tok3 = tok3 - stopinje naprej; zakasnitev (delayBetweenSteps); } if (val == 'g' && current4 mini4) {myservo4.write (current4 - stopinjeFoward); tok4 = tok4 - stopinje naprej; zakasnitev (delayBetweenSteps); } if (val == 'i' && current5 mini5) {myservo5.write (current5 - stopinjeFoward); tok5 = tok5 - stopinje naprej; zakasnitev (delayBetweenSteps); } if (val == 'k' && current6 mini6) {myservo6.write (current6 - stopinjeFoward); tok6 = tok6 - stopinje naprej; zakasnitev (delayBetweenSteps); } // Nadzor hitrosti if (val == 'w') {// Če pritisnete gumb za hitrost 1 stopinjFoward = 1; zakasnitev (delayBetweenSteps); } if (val == 'x') {// Če pritisnete gumb za hitrost 5 stopinjFoward = 5; zakasnitev (delayBetweenSteps); } if (val == 'y') {// Če pritisnete tipko za hitrost 10 stopinjFoward = 10; zakasnitev (delayBetweenSteps); } if (val == 'z') {// Če pritisnete gumb za hitrost 20 stopinjFoward = 20; zakasnitev (delayBetweenSteps); } if (val == 'r') {// Če je pritisnjen gumb hitrosti 20 myservo1.write (90); tok1 = 90; myservo2.write (90); tok2 = 90; myservo3.write (90); tok3 = 90; myservo4.write (90); tok4 = 90; myservo5.write (90); tok5 = 90; myservo6.write (90); tok6 = 90; zakasnitev (delayBetweenSteps); }}}
Koda obdelave:
uvozna obdelava.serial.*; nadzor uvozaP5.*; // uvoz serijskih vrat knjižnice ControlP5; ControlP5 cp5; // ustvarite pisavo PFont objekta ControlP5; void setup () {// enako kot velikost programa arduino (300, 700); // velikost okna, (širina, višina) printArray (Serial.list ()); // natisne vsa razpoložljiva serijska vrata // Če imate težave, verjetno prihaja od tu String portName = Serial.list () [0]; port = nov zaporedni (to, portName, 9600); // priključil sem arduino na com3, drugače bi bilo v linuxu in mac osu // omogoča, da v prazno okno dodamo buton cp5 = nov ControlP5 (to); font = createFont ("Arial", 13); // pisave po meri za gumbe in naslov // Gumbi za nadzor hitrosti cp5.addButton ("One") // "One" je ime gumba.setPosition (50, 50) // x in y koordinate zgornjega levega kota gumba.setSize (55, 25) // (širina, višina).setFont (pisava); cp5.addButton ("Pet").setPosition (110, 50).setSize (55, 25).setFont (pisava); cp5.addButton ("Ten").setPosition (170, 50).setSize (55, 25).setFont (pisava); cp5.addButton ("Twenty").setPosition (230, 50).setSize (55, 25).setFont (pisava); cp5.addButton ("Ponastavi").setPosition (110, 2).setSize (55, 25).setFont (pisava); cp5.addButton ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (pisava); // Gumbi za upravljanje motorja cp5.addButton ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (pisava); cp5.addButton ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (pisava); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (pisava); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (pisava); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (širina, višina).setFont (pisava); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (pisava); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (širina, višina).setFont (pisava); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (pisava); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (pisava); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (pisava); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (pisava); } void draw () {// enako kot zanka v ozadju arduina (192, 215, 249); // barva ozadja okna (r, g, b) ali (0 do 255) // Dodaj besedilo, ki pravi, da je nadzor hitrosti polnilo za nadzor hitrosti (0, 10, 25); // barva besedila (r, g, b) textFont (pisava); besedilo ("Nadzor hitrosti", 50, 40); // ("besedilo", x koordinata, y koordinata)} // omogoča, da našim gumbom dodamo nekatere funkcije // zato, ko pritisnete kateri koli gumb, pošlje poseben znak preko serijskih vrat // Prepričan sem, da je mogoče poslati niz namesto znakov bi bilo bolj smiselno, vendar ne vem, kako to storiti // Ukazi za nadzor hitrosti void One () {port.write ('w'); } void Five () {port.write ('x'); } void Ten () {port.write ('y'); } void Twenty () {port.write ('z'); } // Ukazi za nadzor motorja 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'); }