Isi kandungan:

Lengan Robot Terkawal Kawat: 31 Langkah
Lengan Robot Terkawal Kawat: 31 Langkah

Video: Lengan Robot Terkawal Kawat: 31 Langkah

Video: Lengan Robot Terkawal Kawat: 31 Langkah
Video: BICARA ETIKA SIBER:Terlajak Perahu Boleh Diundur, Terlajak Posting' .. Kawalan Kendiri Jadi Pegangan 2024, November
Anonim
Lengan Robot Dikawal Kawat
Lengan Robot Dikawal Kawat

Ini adalah tutorial bagaimana membuat lengan robot dikawal oleh wayar. Kelebihan menggunakan wayar adalah lengan anda lebih ringan dan anda boleh meletakkan semua motor anda di bahagian bawah lengan anda, menjadikan bangunan dan penyelenggaraan lebih mudah. Berikut adalah video lengan yang sedang beraksi. Saya merancang untuk menambah cakar pada masa akan datang supaya dapat mengambil barang dan bukan hanya mendorongnya.

Cetakan 3D:

Di sini dan di sini

Bekalan

6 Motor Servo (MG995)

Arduino Uno

Kira-kira 6 meter dawai keluli bersalut plastik (0.5mm)

Kotak 23x33x10 (mungkin lebih sempit, pastinya tidak lebih pendek)

Papan kayu 33x10

Mur dan Baut

Paip 14 cm (ini diperlukan untuk memandu tali)

4 L-Kurungan

Penyesuai 5 volt

2 blok terminal 7 hala

Kawat papan roti

Komponen Bercetak 3D (Tidak dirancang oleh saya, pautan ke elemen dalam keterangan):

3 "Selak"

2 "Elemen 1"

1 "Elemen 2"

2 "Elemen 3"

1 Penyambung Pangkalan

Langkah 1: Cetak Semua Komponen 3D

Anda mungkin memerlukan sokongan untuk lubang baut dan lengkungan tetapi pastikan untuk tidak menambahkan sokongan pada badan komponen anda; ini akan menutup lubang wayar kecil dan anda perlu membuat lubang baru

Langkah 2: (Pilihan) Pasang Papan Kayu ke Bahagian Bawah Kotak Anda untuk Menguatkannya

Kotak saya agak lemah, mungkin milik anda tidak

Langkah 3: Ukur dan Potong Papan Kayu agar Sesuai dengan Kotak

Langkah 4: Tandakan Kedudukan Motor

pastikan tidak ada lengan yang saling menyentuh

Langkah 5: Tandakan Kedudukan Kurungan dan Paip

Tandakan Kedudukan Kurungan dan Paip
Tandakan Kedudukan Kurungan dan Paip

Paip hendaklah diletakkan sekitar satu sentimeter di depan lubang

Langkah 6: Bor Lubang untuk Kabel yang Keluar dari Kotak Anda (USB dan Kuasa)

Lubang Lubang untuk Kabel yang Keluar dari Kotak Anda (USB dan Kuasa)
Lubang Lubang untuk Kabel yang Keluar dari Kotak Anda (USB dan Kuasa)

Langkah 7: Gerudi dan Lihat Semua Lubang yang Ditandai

Bor dan Lihat Semua Lubang yang Ditandai
Bor dan Lihat Semua Lubang yang Ditandai

Langkah 8: Pasang Motor dan Paip ke Papan

Langkah 9: Pasang Papan ke Kotak Dengan Kurungan L

Langkah 10: Ambil Blok Terminal Anda dan Padankan Kabel Bersama

Bawa Blok Terminal Anda dan Pateri Kabel Bersama
Bawa Blok Terminal Anda dan Pateri Kabel Bersama

Langkah 11: Potong Kabel Kuasa Adaptor dan Tanggalkan Wayar

Langkah 12: Kenal pasti dan Tandakan Kabel Plus dan Minus

Langkah 13: Pasang Wayar ke Blok Terminal Sehingga Semua + Kabel Servo dan Kawat + Dari Kabel Kuasa Dihubungkan, Sama Untuk Kawat -

Pasang Wayar ke Blok Terminal Sehingga Semua + Kawat Servo dan Kawat + Dari Kabel Kuasa Dihubungkan, Sama Untuk Kawat
Pasang Wayar ke Blok Terminal Sehingga Semua + Kawat Servo dan Kawat + Dari Kabel Kuasa Dihubungkan, Sama Untuk Kawat

Langkah 14: Potong Kepala Kawat Breadboard

Potong Kepala dari Kawat Papan Roti
Potong Kepala dari Kawat Papan Roti

Pasang hujung wayar papan roti yang dilucutkan ke blok terminal tolak dan hujung pin ke pin tanah di arduino anda. Sekiranya anda tidak melakukan ini, motor akan bergerak secara tidak menentu tanpa sebarang input.

Langkah 15: Gerudi Tiga Lubang di Bahagian Bawah Kotak untuk Kabel yang Keluar dari Lengan Anda

Lubang harus sesuai dengan lubang di penyambung asas.

Langkah 16: Pasang Penyambung Pangkalan ke Kotak

Pasang Penyambung Pangkalan ke Kotak
Pasang Penyambung Pangkalan ke Kotak

Langkah 17: Gunakan Fail Pisau atau Kuku untuk Menjadikan Alur Kawat Lebih Mendalam

Gunakan Pisau atau Fail Kuku untuk Membuat Kawat Grooves Lebih Mendalam
Gunakan Pisau atau Fail Kuku untuk Membuat Kawat Grooves Lebih Mendalam

Alur wayar untuk elemen 2 dan 3 terlalu cetek.

Langkah 18: Bentukkan Lengan

Bentukkan Lengan
Bentukkan Lengan

Bentukkan lengan mengikut arahan di sini, anda mungkin perlu memasukkan bahagiannya agar sesuai

Langkah 19: Pasang Pemprosesan dan Arduino

Pemprosesan dan Arduino

Langkah 20: Tampal Program Kod

Kodnya terdapat di bahagian bawah halaman ini

Langkah 21: Sambungkan Servo Control Pin ke Arduino

Sambungkan Servo Control Pin ke Arduino
Sambungkan Servo Control Pin ke Arduino

Saya menyambungkan motor pertama ke pin digital ketiga, motor kedua ke pin digital keempat dan seterusnya. Pastikan pin ground masih terhubung ke blok terminal.

Langkah 22: Tekan Butang Atur Semula dalam Pemprosesan, Ini Akan Menetapkan Semua Lengan hingga 90 Darjah

Langkah 23: Betulkan Servo Arms ke Motor secara Mendatar

Langkah 24: Jalurkan Kawat Melalui Senjata Sehingga Tidak Ada Kelemahan

Pastikan anda memasukkan wayar melalui lubang sebanyak yang anda boleh, ini akan menahannya buat sementara waktu dan mudah dilepaskan.

Langkah 25: Uji Lengan dan Ketatkan atau Longgarkan Kawat Seperti Yang Diperlukan

Langkah 26: Lekatkan Kabel Wayar ke Lengan Servo untuk Menjadikannya Kekal

Langkah 27: Catatan

Catatan
Catatan

Saya menggunakan wayar perhiasan 0.5mm tetapi 0.4mm mestilah baik-baik saja. Reka bentuk asalnya menggunakan wayar PVC tetapi terlalu mudah pecah dan sukar untuk digunakan.

Sekiranya anda akan menggerakkan lengan di dalam kereta atau basikal, bungkus sendi lengan dengan pita untuk memastikan mereka tidak keluar. Ini sangat penting untuk elemen 1.

Semasa saya memulakan projek ini, saya tertanya-tanya mengapa saya hanya dapat mencari satu tutorial bagaimana membuat lengan dikendalikan oleh wayar. Sekarang saya faham mengapa ini bukan kaedah yang paling biasa untuk membuat robot hobi. Kabel kadang-kadang jatuh dari alur mereka dan semuanya agak tipis. Saya tidak tahu apakah masalahnya kerana saya tidak mempunyai banyak pengalaman atau jika keseluruhan idea itu bermasalah walaupun saya yakin ia akan menjadi lebih kukuh sekiranya saya tahu apa yang saya lakukan.

Langkah 28: Penyelesaian masalah

Lubang wayar ditutup dalam elemen bercetak 3D:

Anda menambahkan sokongan untuk keseluruhan elemen dan bukannya hanya lubang bolt. Sama ada mencetak semula elemen atau membuka lubang dengan jarum yang sangat panas.

Port COM ditutup, anda tidak dapat berkomunikasi dengan arduino:

Arduino anda mungkin tidak menerima port USB 3 (saya tidak), anda boleh membeli kabel sambungan USB 2 atau menggunakan komputer yang mempunyai port USB 2

Kod tidak berfungsi:

Ikuti tutorial ini dan ubah suai untuk membuat kod anda sendiri

Bahagian lengan tidak bergerak:

Kabelnya mungkin kusut, untuk memeriksa ini melepaskan lengan servo dari servo dan cuba menarik wayar dengan tangan. Tanggalkan wayar dan jika masih sukar untuk menarik wayar, cuba gunakan beberapa WD-40 atau pelincir untuk memudahkan pergerakan

Langkah 29: Pautan

Lengan Bukan Robotik:

Arm 3D Printables:

Lengan Saya 3D Boleh Dicetak:

Arduino dan Pemprosesan:

Langkah 30: Kod

Diubah suai dari kod ini

Kod Arduino:

#include // Menyatakan motor Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; // Semua motor ditetapkan pada 90 darjah secara lalai int arus1 = 90; int semasa2 = 90; int semasa3 = 90; int semasa4 = 90; int semasa5 = 90; int semasa6 = 90; // Darjah Minimum dan Maksimum motor boleh mencapai 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; // Darjah yang akan ditambah atau dikurangkan dari kedudukan semasa int darjahFoward = 5; // Kelewatan sehingga dua fungsi tidak berlaku dalam urutan yang salah int delayBetweenSteps = 100; batal persediaan () {// Tetapkan pin kawalan untuk setiap motor myservo1.attach (3); myservo2.attach (4); myservo3.attach (5); myservo4.attach (6); myservo5.attach (7); myservo6.attach (8); // Tetapkan semua motor ke tetapan lalai myservo1.write (current1); myservo2.write (semasa2); myservo3.write (semasa3); myservo4.write (semasa4); myservo5.write (semasa5); myservo6.write (semasa6); // mulakan komunikasi bersiri @ 9600 bps Serial.begin (9600); } gelung void () {if (Serial.available ()) {// jika data tersedia untuk membaca char val = Serial.read (); // masukkan ke dalam char ini // Motor Controls jika (val == 'a' && current1 + degreesFoward mini1) {myservo1.write (current1 - degreesFoward); current1 = current1 - darjahFoward; kelewatan (delayBetweenSteps); } jika (val == 'c' && current2 mini2) {myservo2.write (current2 - degreesFoward); current2 = current2 - darjahFoward; kelewatan (delayBetweenSteps); } jika (val == 'e' && current3 mini3) {myservo3.write (current3 - degreesFoward); current3 = current3 - darjahFoward; kelewatan (delayBetweenSteps); } jika (val == 'g' && current4 mini4) {myservo4.write (current4 - degreesFoward); current4 = current4 - darjahFoward; kelewatan (delayBetweenSteps); } jika (val == 'i' && current5 mini5) {myservo5.write (current5 - degreesFoward); current5 = current5 - darjahFoward; kelewatan (delayBetweenSteps); } jika (val == 'k' && current6 mini6) {myservo6.write (current6 - degreesFoward); current6 = current6 - darjahFoward; kelewatan (delayBetweenSteps); } // Kawalan Kelajuan jika (val == 'w') {// Sekiranya butang kelajuan 1 ditekan darjahFoward = 1; kelewatan (delayBetweenSteps); } if (val == 'x') {// Sekiranya butang kelajuan 5 ditekan darjahFoward = 5; kelewatan (delayBetweenSteps); } if (val == 'y') {// Sekiranya butang kelajuan 10 ditekan darjahFoward = 10; kelewatan (delayBetweenSteps); } if (val == 'z') {// Sekiranya butang kelajuan 20 ditekan darjahFoward = 20; kelewatan (delayBetweenSteps); } if (val == 'r') {// Sekiranya butang kelajuan 20 ditekan myservo1.write (90); semasa1 = 90; myservo2.write (90); semasa2 = 90; myservo3.write (90); semasa3 = 90; myservo4.write (90); semasa4 = 90; myservo5.write (90); semasa5 = 90; myservo6.write (90); semasa6 = 90; kelewatan (delayBetweenSteps); }}}

Kod Pemprosesan:

pemprosesan import.serial. *; kawalan importP5. *; // import port Serial perpustakaan ControlP5; KawalP5 cp5; // buat fon PFont objek ControlP5; kekosongan persediaan () {// sama dengan ukuran program arduino (300, 700); // saiz tetingkap, (lebar, tinggi) printArray (Serial.list ()); // mencetak semua port bersiri yang tersedia // Sekiranya anda menghadapi masalah, ia mungkin berasal dari sini String portName = Serial.list () [0]; port = Serial baru (ini, portName, 9600); // saya telah menghubungkan arduino ke com3, ia akan berbeza di linux dan mac os // mari kita tambah buton ke tetingkap kosong cp5 = ControlP5 baru (ini); font = createFont ("Arial", 13); // fon khusus untuk butang dan tajuk // Butang Kawalan Kelajuan cp5.addButton ("One") // "Satu" adalah nama butang.setPosition (50, 50) // x dan y koordinat sudut kiri atas butang.setSize (55, 25) // (lebar, tinggi).setFont (fon); cp5.addButton ("Five").setPosition (110, 50).setSize (55, 25).setFont (font); cp5.addButton ("Sepuluh").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 (fon); // Tombol Kawalan 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 (fon); cp5.addButton ("Servo_2_Back").setPosition (50, 240).setSize (190, 40).setFont (fon); cp5.addButton ("Servo_3_Foward").setPosition (50, 290).setSize (190, 40).setFont (fon); cp5.addButton ("Servo_3_Back").setPosition (50, 340).setSize (190, 40) // (lebar, tinggi).setFont (fon); cp5.addButton ("Servo_4_Foward").setPosition (50, 390).setSize (190, 40).setFont (fon); cp5.addButton ("Servo_4_Back").setPosition (50, 440).setSize (190, 40) // (lebar, tinggi).setFont (fon); cp5.addButton ("Servo_5_Foward").setPosition (50, 490).setSize (190, 40).setFont (fon); cp5.addButton ("Servo_5_Back").setPosition (50, 540).setSize (190, 40).setFont (fon); cp5.addButton ("Servo_6_Foward").setPosition (50, 590).setSize (190, 40).setFont (fon); cp5.addButton ("Servo_6_Back").setPosition (50, 640).setSize (190, 40).setFont (fon); } undian tidak sah () {// sama dengan gelung di latar belakang arduino (192, 215, 249); // warna latar belakang tetingkap (r, g, b) atau (0 hingga 255) // Tambahkan teks yang mengatakan kawalan kelajuan adalah pengisian kelajuan (0, 10, 25); // warna teks (r, g, b) textFont (fon); teks ("Kawalan Kelajuan", 50, 40); // ("teks", koordinat x, koordinat y)} // mari kita tambahkan beberapa fungsi ke butang kita // jadi apabila anda menekan butang apa pun, ia akan menghantar char khas melalui port bersiri // Saya yakin mungkin untuk menghantar rentetan bukannya chars, dan itu akan lebih masuk akal tetapi saya tidak tahu bagaimana melakukannya // Perintah Kawalan Kelajuan batal Satu () {port.write ('w'); } batal Lima () {port.write ('x'); } batal Sepuluh () {port.write ('y'); } batal Dua Puluh () {port.write ('z'); } // Perintah Kawalan Motor membatalkan Servo_1_Foward () {port.write ('a'); } batal Servo_1_Back () {port.write ('b'); } batal Servo_2_Foward () {port.write ('c'); } batal Servo_2_Back () {port.write ('d'); } batal Servo_3_Foward () {port.write ('e'); } batal Servo_3_Back () {port.write ('f'); } batal Servo_4_Foward () {port.write ('g'); } batal Servo_4_Back () {port.write ('h'); } batal Servo_5_Foward () {port.write ('i'); } batal Servo_5_Back () {port.write ('j'); } batal Servo_6_Foward () {port.write ('k'); } batal Servo_6_Back () {port.write ('l'); } batal Tetapkan Semula () {port.write ('r'); }

Langkah 31: Lebih Banyak Gambar

Disyorkan: