Talaan ng mga Nilalaman:

Kinokontrol ng Wire na Robot Arm: 31 Mga Hakbang
Kinokontrol ng Wire na Robot Arm: 31 Mga Hakbang

Video: Kinokontrol ng Wire na Robot Arm: 31 Mga Hakbang

Video: Kinokontrol ng Wire na Robot Arm: 31 Mga Hakbang
Video: A Brief History of the Nissan Z 2024, Mayo
Anonim
Kinokontrol ng Wire na Robot Arm
Kinokontrol ng Wire na Robot Arm

Ito ay isang tutorial sa kung paano gumawa ng isang braso ng robot na kinokontrol ng mga wire. Ang bentahe ng paggamit ng mga wire ay ang iyong braso ay mas magaan at maaari mong magkaroon ng lahat ng iyong mga motor sa ilalim ng iyong braso, ginagawang mas madali ang pagbuo at pagpapanatili. Narito ang isang video ng braso sa pagkilos. Plano kong magdagdag ng isang kuko sa hinaharap upang maaari itong pumili ng mga bagay at hindi lamang itulak ang mga ito sa paligid.

Mga Napi-print na 3D:

Dito at Dito

Mga gamit

6 Servo Motors (MG995)

Arduino Uno

Mga 6 metro ng plastik na pinahiran na bakal na wire (0.5mm)

Box 23x33x10 (maaaring mas makitid, tiyak na hindi dapat maging mas maikli)

Plank ng kahoy na 33x10

Mga Nuts at Bolts

Pipe 14 cm (kinakailangan ito upang gabayan ang mga string)

4 L-Bracket

5-volt adapter

2 7-way na mga bloke ng terminal

Mga wire ng Breadboard

Mga Naka-print na Component ng 3D (Hindi ko dinisenyo, mga link sa mga elemento sa paglalarawan):

3 "Bolts"

2 "Element 1"

1 "Element 2"

2 "Element 3"

1 Base Connector

Hakbang 1: I-print ang Lahat ng mga 3D Component

Maaaring kailanganin mo ng suporta para sa mga butas ng bolt at arko ngunit tiyakin na hindi magdagdag ng suporta sa katawan ng iyong mga bahagi; isasara nito ang maliliit na butas ng kawad at kakailanganin mong gumawa ng mga bagong butas

Hakbang 2: (Opsyonal) Maglakip ng isang Plank ng Kahoy sa Ibaba ng Iyong Kahon upang Palakasin Ito

Medyo mahina ang aking kahon, maaaring wala ang sa iyo

Hakbang 3: Sukatin at Gupitin ang isang Plank of Wood upang magkasya ang Kahon

Hakbang 4: Markahan ang Mga Posisyon ng mga Motors

tiyaking wala sa mga bisig ang magkadikit

Hakbang 5: Markahan ang Mga Posisyon ng mga Bracket at ang Pipe

Markahan ang Mga Posisyon ng mga Bracket at ang Pipe
Markahan ang Mga Posisyon ng mga Bracket at ang Pipe

Ang tubo ay dapat na mailagay sa paligid ng isang sentimetro sa harap ng butas

Hakbang 6: Mag-drill ng isang Hole para sa Mga Cables na Lumalabas sa Iyong Kahon (USB at Lakas)

Mag-drill ng isang Hole para sa Mga Cables na Lumalabas sa Iyong Kahon (USB at Lakas)
Mag-drill ng isang Hole para sa Mga Cables na Lumalabas sa Iyong Kahon (USB at Lakas)

Hakbang 7: Mag-drill at Nakita ang Lahat ng Minarkahang Butas

I-drill at Nakita ang Lahat ng Minarkahang Butas
I-drill at Nakita ang Lahat ng Minarkahang Butas

Hakbang 8: Ikabit ang Mga Motors at Pipe sa Plank

Hakbang 9: Ikabit ang Plank sa Box Sa Mga L-Bracket

Hakbang 10: Dalhin ang Iyong Mga Terminal Bloke at Mag-solder ng Mga Wires na Magkasama

Dalhin ang Iyong Mga Terminal Block at Mag-sama ng Pag-wire ng Mga Wires
Dalhin ang Iyong Mga Terminal Block at Mag-sama ng Pag-wire ng Mga Wires

Hakbang 11: Gupitin ang Wakas ng Adapter Power Cord at i-strip ang mga Wires

Hakbang 12: Kilalanin at Markahan ang Plus at Minus Wires

Hakbang 13: Ikabit ang mga Wires sa mga Block ng Terminal Upang Lahat ng mga + Servo Wires at ang + Wire Mula sa Power Cord ay Nakakonekta, Parehong Pupunta para sa - Mga Wires

Ikabit ang mga Wires sa mga Block ng Terminal Upang Lahat ng mga + Servo Wires at ang + Wire Mula sa Power Cord ay Nakakonekta, Parehong Pupunta para sa - Mga Wires
Ikabit ang mga Wires sa mga Block ng Terminal Upang Lahat ng mga + Servo Wires at ang + Wire Mula sa Power Cord ay Nakakonekta, Parehong Pupunta para sa - Mga Wires

Hakbang 14: Gupitin ang Head ng isang Breadboard Wire

Gupitin ang Ulo ng isang Breadboard Wire
Gupitin ang Ulo ng isang Breadboard Wire

Ikabit ang hinubad na dulo ng wire ng tinapay sa minus terminal block at ang dulo ng pin sa ground pin sa iyong arduino. Kung hindi mo ito gagawin ang mga motor ay galaw ng galaw nang walang anumang input.

Hakbang 15: Mag-drill ng Tatlong Butas sa Ibaba ng Kahon para sa Mga Wires na Lumalabas sa Iyong Arm

Ang mga butas ay dapat na tumutugma hanggang sa mga butas sa base konektor.

Hakbang 16: Ikabit ang Base Connector sa Kahon

Ikabit ang Base Connector sa Kahon
Ikabit ang Base Connector sa Kahon

Hakbang 17: Gumamit ng isang Knife o Nail File upang Gawing mas Malalim ang Wire Grouces

Gumamit ng isang Knife o Nail File upang Gawing Mas Malalim ang Wire Grouces
Gumamit ng isang Knife o Nail File upang Gawing Mas Malalim ang Wire Grouces

Ang mga wire groove para sa mga elemento 2 at 3 ay masyadong mababaw.

Hakbang 18: Buuin ang Arm

Buuin ang Arm
Buuin ang Arm

Buuin ang braso alinsunod sa mga tagubilin dito na maaaring kailanganin mong i-file ang mga bahagi upang magkasya ang mga ito

Hakbang 19: I-install ang Pagproseso at Arduino

Pagproseso at Arduino

Hakbang 20: I-paste ang Mga Program sa Code

Ang code ay nasa ilalim ng pahinang ito

Hakbang 21: Ikonekta ang Mga Servo Control Pins sa Arduino

Ikonekta ang Mga Servo Control Pins sa Arduino
Ikonekta ang Mga Servo Control Pins sa Arduino

Ikinonekta ko ang unang motor sa pangatlong digital pin, ang pangalawang motor sa ika-apat na digital pin at iba pa. Tiyaking ang ground pin ay konektado pa rin sa - terminal block.

Hakbang 22: Pindutin ang I-reset ang Button sa Pagproseso, Itatakda nito ang Lahat ng Armas sa 90 Degree

Hakbang 23: Ayusin ang Servo Arms sa Motor Pahalang

Hakbang 24: I-Thread ang Mga Wires Sa pamamagitan ng Arms Upang Walang Mabagal

Tiyaking sinulid mo ang kawad sa maraming mga butas hangga't maaari, pansamantalang hahawak ito at madaling alisin.

Hakbang 25: Subukan ang braso at higpitan o paluwagin ang mga wires na kinakailangan

Hakbang 26: Mainit na Pandikit ang mga Wires sa Servo Arms upang Gawin itong Permanenteng

Hakbang 27: Mga Tala

Mga tala
Mga tala

Gumamit ako ng 0.5mm wire na alahas ngunit ang 0.4mm ay dapat na maging maayos. Ang orihinal na disenyo ay gumamit ng PVC wire ngunit napakadali nitong nasira at mahirap itong gumana.

Kung ililipat mo ang braso sa isang kotse o bisikleta ang mga kasukasuan ng braso sa tape upang matiyak na hindi sila lumalabas. Ito ay lalong mahalaga para sa elemento 1.

Nang sinimulan ko ang proyektong ito nagtataka ako kung bakit isang tutorial lamang ang nakikita ko sa kung paano gumawa ng braso na kinokontrol ng mga wire. Ngayon naiintindihan ko kung bakit hindi ito ang pinakakaraniwang paraan upang makagawa ng isang hobby na braso ng robot. Minsan mahuhulog ang mga wire sa kanilang mga groove at ang buong bagay ay uri ng malambot. Hindi ko alam kung ang mga problema ay dahil wala akong maraming karanasan o kung ang buong ideya ay may problema bagaman sigurado ako na magiging mas matatag ito kung alam ko ang aking ginagawa.

Hakbang 28: Pag-troubleshoot

Ang mga butas ng kawad ay nakasara sa mga naka-print na elemento ng 3D:

Nagdagdag ka ng suporta para sa buong elemento sa halip na ang mga bolt hole lamang. Alinman sa muling pag-print ng elemento o buksan ang mga butas gamit ang isang talagang mainit na karayom.

Sarado ang port ng COM, hindi ka makikipag-usap sa arduino:

Maaaring hindi tanggapin ng iyong arduino ang mga USB 3 port (hindi sa akin), maaari kang bumili ng isang USB 2 extension cable o gumamit ng isang computer na mayroong mga USB 2 port

Hindi gumagana ang code:

Sundin ang tutorial na ito at baguhin ito upang makagawa ng iyong sariling code

Ang isang bahagi ng braso ay hindi gumagalaw:

Ang mga wires ay maaaring gusot, upang suriin ito kunin ang servo arm mula sa servo at subukang hilahin ang mga wire sa pamamagitan ng kamay. Alisin ang mga wire at kung mahirap pa ring hilahin ang mga wire subukang gumamit ng ilang WD-40 o isang pampadulas upang gawing mas madali ang paggalaw

Hakbang 29: Mga Link

Non Robotic Arm:

Mga Printable ng Arm 3D:

Maaaring i-print ang Aking Arm 3D:

Arduino at Pagproseso:

Hakbang 30: Code

Binago mula sa code na ito

Arduino Code:

#include // Ideklara ang mga motor Servo MyServo1; Servo MyServo2; Servo MyServo3; Servo MyServo4; Servo MyServo5; Servo MyServo6; // Ang lahat ng mga motor ay nakatakda sa 90 degree sa pamamagitan ng default int kasalukuyang1 = 90; int kasalukuyang2 = 90; int kasalukuyang3 = 90; int kasalukuyang4 = 90; int kasalukuyang5 = 90; int kasalukuyang6 = 90; // Minimum at Maximum Degree ang mga motor ay maaaring maabot ang 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; // Degree na idaragdag o ibabawas mula sa kasalukuyang posisyon int degreeFoward = 5; // Delay kaya't ang dalawang pag-andar ay hindi nangyayari sa maling pagkakasunud-sunod int delayBet AntaraSteps = 100; void setup () {// Itakda ang mga control pin para sa bawat motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Itakda ang lahat ng mga motor sa default na setting ng myservo1.write (kasalukuyang1); myservo2.write (kasalukuyang2); myservo3.write (kasalukuyang3); myservo4.write (kasalukuyang4); myservo5.write (kasalukuyang5); myservo6.write (kasalukuyang6); // simulan ang serial komunikasyon @ 9600 bps Serial.begin (9600); } void loop () {if (Serial.available ()) {// kung magagamit ang data upang mabasa ang char val = Serial.read (); // ilagay ito sa char // Mga Kontrol sa Motor kung (val == 'a' && current1 + degreesFoward mini1) {myservo1.write (current1 - degreesFoward); kasalukuyang1 = kasalukuyang1 - degreeFoward; antala (antalaMga Hakbang); } kung (val == 'c' && kasalukuyang2 mini2) {myservo2.write (kasalukuyang2 - degreesFoward); kasalukuyang2 = kasalukuyang2 - degreeFoward; antala (antalaMga Hakbang); } kung (val == 'e' && kasalukuyang3 mini3) {myservo3.write (kasalukuyang3 - degreesFoward); kasalukuyang3 = kasalukuyang3 - degreeFoward; antala (antalaMga Hakbang); } kung (val == 'g' && kasalukuyang4 mini4) {myservo4.write (current4 - degreesFoward); kasalukuyang4 = kasalukuyang4 - degreeFoward; antala (antalaMga Hakbang); } kung (val == 'i' && kasalukuyang5 mini5) {myservo5.write (current5 - degreesFoward); kasalukuyang5 = kasalukuyang5 - degreesFoward; antala (antalaMga Hakbang); } kung (val == 'k' && kasalukuyang6 mini6) {myservo6.write (current6 - degreesFoward); kasalukuyang6 = kasalukuyang6 - degreeFoward; antala (antalaMga Hakbang); } // Mga Kontrol ng Bilis kung (val == 'w') {// Kung ang bilis ng pindutan na 1 ay pinindot ang degreeFoward = 1; antala (antalaMga Hakbang); } kung (val == 'x') {// Kung ang bilis ng 5 pindutan ay pinindot ang degreeFoward = 5; antala (antalaMga Hakbang); } kung (val == 'y') {// Kung ang bilis ng 10 pindutan ay pinindot ang degreeFoward = 10; antala (antalaMga Hakbang); } if (val == 'z') {// Kung ang bilis ng 20 button ay pinindot ang degreesFoward = 20; antala (antalaMga Hakbang); } kung (val == 'r') {// Kung ang pindutan ng bilis 20 ay pinindot ang myservo1.write (90); kasalukuyang1 = 90; myservo2.write (90); kasalukuyang2 = 90; myservo3.write (90); kasalukuyang3 = 90; myservo4.write (90); kasalukuyang4 = 90; myservo5.write (90); kasalukuyang5 = 90; myservo6.write (90); kasalukuyang6 = 90; antala (antalaMga Hakbang); }}}

Code sa pagpoproseso:

pagproseso ng pag-import.serial. *; import controlP5. *; // import ControlP5 library Serial port; ControlP5 cp5; // create ControlP5 object PFont font; walang bisa ang pag-setup () {// kapareho ng laki ng programa ng arduino (300, 700); // laki ng window, (lapad, taas) printArray (Serial.list ()); // print lahat ng magagamit na serial port // Kung nagkakaproblema ka marahil ay nagmula dito String portName = Serial.list () [0]; port = bagong Serial (ito, portName, 9600); // nakakonekta ko ang arduino sa com3, magkakaiba ito sa linux at mac os // hinahayaan na magdagdag ng buton sa walang laman na window ng cp5 = bagong ControlP5 (ito); font = createFont ("Arial", 13); // pasadyang mga font para sa mga pindutan at pamagat // Mga Pindutan sa Bilis ng Pagkontrol cp5.add Button ("Isa") // "Isa" ang pangalan ng pindutan.setPosition (50, 50) // x at y mga coordinate ng itaas na kaliwang sulok ng pindutan.setSize (55, 25) // (lapad, taas).setFont (font); cp5.addButton ("Limang").setPosition (110, 50).setSize (55, 25).setFont (font); cp5.addButton ("Ten").setPosition (170, 50).setSize (55, 25).setFont (font); cp5.addButton ("Dalawampu").setPosition (230, 50).setSize (55, 25).setFont (font); cp5.addButton ("I-reset").setPosition (110, 2).setSize (55, 25).setFont (font); cp5.add Button ("Servo_1_Foward").setPosition (50, 90).setSize (190, 40).setFont (font); // Motor Control Buttons cp5.add Button ("Servo_1_Back").setPosition (50, 140).setSize (190, 40).setFont (font); cp5.add Button ("Servo_2_Foward").setPosition (50, 190).setSize (190, 40).setFont (font); cp5.add Button ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (font); cp5.add Button ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (font); cp5.add Button ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (lapad, taas).setFont (font); cp5.add Button ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (font); cp5.add Button ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (lapad, taas).setFont (font); cp5.add Button ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (font); cp5.add Button ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (font); cp5.add Button ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (font); cp5.add Button ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (font); } void draw () {// pareho sa loop sa background ng arduino (192, 215, 249); // background color ng window (r, g, b) o (0 hanggang 255) // Magdagdag ng teksto na nagsasabing ang kontrol sa bilis ay ang pagpuno ng bilis na punan (0, 10, 25); // color text (r, g, b) textFont (font); teksto ("Control ng Bilis", 50, 40); // ("text", x coordinate, y coordinat)} // hinahayaan na magdagdag ng ilang mga pag-andar sa aming mga pindutan // kaya kapag pinindot mo ang anumang pindutan, nagpapadala ito ng partikular na char sa serial port // Sigurado akong posible na magpadala ng mga string sa halip na mga chars, at magkakaroon ng mas katuturan ngunit hindi ko alam kung paano ito gawin // Speed Control Commands void One () {port.write ('w'); } walang bisa Lima () {port.write ('x'); } walang bisa Ten () {port.write ('y'); } walang bisa Dalawampung () {port.write ('z'); } // Nag-utos ang Pagkontrol ng Motor ng Servo_1_Foward () {port.write ('a'); } i-void ang Servo_1_Back () {port.write ('b'); } void Servo_2_Foward () {port.write ('c'); } i-void ang 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'); } i-void ang Servo_4_Back () {port.write ('h'); } i-void ang Servo_5_Foward () {port.write ('i'); } i-void ang Servo_5_Back () {port.write ('j'); } void Servo_6_Foward () {port.write ('k'); } i-void ang Servo_6_Back () {port.write ('l'); } walang bisa ang I-reset () {port.write ('r'); }

Hakbang 31: Higit pang Mga Larawan

Inirerekumendang: