Daftar Isi:
- Perlengkapan
- Langkah 1: Cetak Semua Komponen 3D
- Langkah 2: (Opsional) Pasang Papan Kayu ke Bagian Bawah Kotak Anda untuk Memperkuatnya
- Langkah 3: Ukur dan Potong Papan Kayu agar Sesuai dengan Kotak
- Langkah 4: Tandai Posisi Motor
- Langkah 5: Tandai Posisi Kurung dan Pipa
- Langkah 6: Bor Lubang untuk Kabel yang Keluar dari Kotak Anda (USB dan Daya)
- Langkah 7: Bor dan Melihat Semua Lubang yang Ditandai
- Langkah 8: Pasang Motor dan Pipa ke Papan
- Langkah 9: Pasang Papan ke Kotak Dengan L-Brackets
- Langkah 10: Ambil Blok Terminal Anda dan Solder Kabel Bersama-sama
- Langkah 11: Potong Ujung Kabel Daya Adaptor dan Lepaskan Kabelnya
- Langkah 12: Identifikasi dan Tandai Kabel Plus dan Minus
- Langkah 13: Pasang Kabel ke Blok Terminal Sehingga Semua + Kabel Servo dan + Kawat Dari Kabel Listrik Terhubung, Begitu Juga untuk - Kabel
- Langkah 14: Potong Kepala dari Kawat Papan Tempat memotong roti
- Langkah 15: Bor Tiga Lubang di Bagian Bawah Kotak untuk Kabel yang Keluar dari Lengan Anda
- Langkah 16: Pasang Konektor Basis ke Kotak
- Langkah 17: Gunakan Knife atau Nail File untuk Membuat Alur Kawat Lebih Dalam
- Langkah 18: Bangun Lengan
- Langkah 19: Instal Pemrosesan dan Arduino
- Langkah 20: Tempel Program Kode
- Langkah 21: Hubungkan Pin Kontrol Servo ke Arduino
- Langkah 22: Tekan Tombol Reset dalam Pemrosesan, Ini Akan Mengatur Semua Lengan ke 90 Derajat
- Langkah 23: Perbaiki Lengan Servo ke Motor Secara Horizontal
- Langkah 24: Masukkan Kabel Melalui Lengan Sehingga Tidak Ada Kelonggaran
- Langkah 25: Uji Lengan dan Kencangkan atau Longgarkan Kabel Sesuai Kebutuhan
- Langkah 26: Rekatkan Kabel ke Lengan Servo untuk Membuatnya Permanen
- Langkah 27: Catatan
- Langkah 28: Pemecahan Masalah
- Langkah 29: Tautan
- Langkah 30: Kode
- Langkah 31: Lebih Banyak Gambar
Video: Lengan Robot Kawat Terkendali: 31 Langkah
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Ini adalah tutorial tentang cara membuat lengan robot yang dikendalikan oleh kabel. Keuntungan menggunakan kabel adalah lengan Anda lebih ringan dan Anda dapat menempatkan semua motor Anda di bagian bawah lengan Anda, membuat pembangunan dan perawatan lebih mudah. Berikut adalah video aksi lengan tersebut. Saya berencana untuk menambahkan cakar di masa depan sehingga dapat mengambil sesuatu dan tidak hanya mendorong mereka.
Hasil Cetak 3D:
Disini dan Disini
Perlengkapan
6 Motor Servo (MG995)
Arduino Uno
Sekitar 6 meter kawat baja berlapis plastik (0,5mm)
Kotak 23x33x10 (mungkin lebih sempit, pasti tidak boleh lebih pendek)
Papan kayu 33x10
Mur dan Baut
Pipa 14 cm (ini diperlukan untuk memandu senar)
4 L-Bracket
Adaptor 5 volt
2 blok terminal 7 arah
Kabel papan tempat memotong roti
Komponen Cetak 3D (Tidak dirancang oleh saya, tautan ke elemen dalam deskripsi):
3 "baut"
2 "Elemen 1"
1 “Elemen 2”
2 "Elemen 3"
1 Konektor Dasar
Langkah 1: Cetak Semua Komponen 3D
Anda mungkin memerlukan dukungan untuk lubang baut dan lengkungan tetapi pastikan untuk tidak menambahkan dukungan ke badan komponen Anda; ini akan menutup lubang kawat kecil dan Anda perlu membuat lubang baru
Langkah 2: (Opsional) Pasang Papan Kayu ke Bagian Bawah Kotak Anda untuk Memperkuatnya
Kotak saya cukup lemah, milik Anda mungkin tidak
Langkah 3: Ukur dan Potong Papan Kayu agar Sesuai dengan Kotak
Langkah 4: Tandai Posisi Motor
pastikan tidak ada lengan yang saling bersentuhan
Langkah 5: Tandai Posisi Kurung dan Pipa
Pipa harus ditempatkan sekitar satu sentimeter di depan lubang
Langkah 6: Bor Lubang untuk Kabel yang Keluar dari Kotak Anda (USB dan Daya)
Langkah 7: Bor dan Melihat Semua Lubang yang Ditandai
Langkah 8: Pasang Motor dan Pipa ke Papan
Langkah 9: Pasang Papan ke Kotak Dengan L-Brackets
Langkah 10: Ambil Blok Terminal Anda dan Solder Kabel Bersama-sama
Langkah 11: Potong Ujung Kabel Daya Adaptor dan Lepaskan Kabelnya
Langkah 12: Identifikasi dan Tandai Kabel Plus dan Minus
Langkah 13: Pasang Kabel ke Blok Terminal Sehingga Semua + Kabel Servo dan + Kawat Dari Kabel Listrik Terhubung, Begitu Juga untuk - Kabel
Langkah 14: Potong Kepala dari Kawat Papan Tempat memotong roti
Pasang ujung kabel papan tempat memotong roti yang dilucuti ke blok terminal minus dan ujung pin ke pin ground di arduino Anda. Jika Anda tidak melakukan ini, motor akan bergerak tidak menentu tanpa masukan apa pun.
Langkah 15: Bor Tiga Lubang di Bagian Bawah Kotak untuk Kabel yang Keluar dari Lengan Anda
Lubang harus sesuai dengan lubang di konektor dasar.
Langkah 16: Pasang Konektor Basis ke Kotak
Langkah 17: Gunakan Knife atau Nail File untuk Membuat Alur Kawat Lebih Dalam
Alur kawat untuk elemen 2 dan 3 terlalu dangkal.
Langkah 18: Bangun Lengan
Buat lengan sesuai dengan instruksi di sini Anda mungkin perlu mengarsipkan bagian-bagiannya agar pas
Langkah 19: Instal Pemrosesan dan Arduino
Pemrosesan dan Arduino
Langkah 20: Tempel Program Kode
Kode ada di bagian bawah halaman ini
Langkah 21: Hubungkan Pin Kontrol Servo ke Arduino
Saya menghubungkan 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 Tombol Reset dalam Pemrosesan, Ini Akan Mengatur Semua Lengan ke 90 Derajat
Langkah 23: Perbaiki Lengan Servo ke Motor Secara Horizontal
Langkah 24: Masukkan Kabel Melalui Lengan Sehingga Tidak Ada Kelonggaran
Pastikan Anda memasukkan kawat melalui lubang sebanyak mungkin, ini akan menahannya sementara dan mudah dilepas.
Langkah 25: Uji Lengan dan Kencangkan atau Longgarkan Kabel Sesuai Kebutuhan
Langkah 26: Rekatkan Kabel ke Lengan Servo untuk Membuatnya Permanen
Langkah 27: Catatan
Saya menggunakan kawat perhiasan 0,5 mm tetapi 0,4 mm seharusnya baik-baik saja. Desain aslinya menggunakan kawat PVC tapi itu terlalu mudah putus dan sulit untuk dikerjakan.
Jika Anda akan menggerakkan lengan di dalam mobil atau sepeda, bungkus sendi lengan dengan selotip untuk memastikan tidak keluar. Ini sangat penting untuk elemen 1.
Ketika saya memulai proyek ini, saya bertanya-tanya mengapa saya hanya dapat menemukan satu tutorial tentang cara membuat lengan yang dikendalikan oleh kabel. Sekarang saya mengerti mengapa ini bukan cara paling umum untuk membuat lengan robot hobi. Kabel terkadang terlepas dari alurnya dan semuanya agak tipis. Saya tidak tahu apakah masalahnya karena saya tidak memiliki banyak pengalaman atau jika seluruh ide bermasalah meskipun saya yakin akan lebih solid jika saya tahu apa yang saya lakukan.
Langkah 28: Pemecahan Masalah
Lubang kawat ditutup dalam elemen cetak 3D:
Anda menambahkan dukungan untuk seluruh elemen, bukan hanya lubang baut. Cetak ulang elemen atau buka lubang dengan jarum yang sangat panas.
Port COM ditutup, Anda tidak dapat berkomunikasi dengan arduino:
Arduino Anda mungkin tidak menerima port USB 3 (milik saya tidak), Anda dapat membeli kabel ekstensi USB 2 atau menggunakan komputer yang memiliki port USB 2
Kode tidak berfungsi:
Ikuti tutorial ini dan modifikasi untuk membuat kode Anda sendiri
Bagian dari lengan tidak bergerak:
Kabel mungkin kusut, untuk memeriksanya, lepaskan lengan servo dari servo dan coba tarik kabel dengan tangan. Lepaskan kabel dan jika masih sulit untuk menarik kabel, coba gunakan WD-40 atau pelumas untuk memudahkan pergerakan
Langkah 29: Tautan
Lengan Non Robot:
Arm 3D Printables:
My Arm 3D Printable:
Arduino dan Pemrosesan:
Langkah 30: Kode
Dimodifikasi dari kode ini
Kode Arduino:
#include //Deklarasikan motor Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5; Servo myservo6; //Semua motor diatur pada 90 derajat secara default int current1 = 90; int arus2 = 90; int arus3 = 90; int arus4 = 90; int arus5 = 90; int arus6 = 90; // Derajat Minimum dan Maksimum yang dapat dicapai motor int mini1 = 0; int maksi1 = 180; int mini2 = 0; int maksi2 = 180; int mini3 = 0; int maksi3 = 180; int mini4 = 0; int maksi4 = 180; int mini5 = 0; int maxi5 = 180; int mini6 = 0; int maxi6 = 180; //Derajat yang akan ditambahkan atau dikurangi dari posisi saat ini int derajatFoward = 5; //Menunda agar dua fungsi tidak terjadi dalam urutan yang salah int delayBetweenSteps = 100; void setup() { //Menyetel pin kontrol untuk setiap motor myservo1.attach(3); myservo2.attach(4); myservo3.attach(5); myservo4.attach(6); myservo5.attach(7); myservo6.attach(8); //Mengatur semua motor ke pengaturan default myservo1.write(current1); myservo2.write(saat ini2); myservo3.write(saat ini3); myservo4.write(saat ini4); myservo5.write(saat ini5); myservo6.write(saat ini6); //mulai komunikasi serial @9600 bps Serial.begin(9600); } void loop(){ if(Serial.available()){ //jika data tersedia untuk dibaca char val = Serial.read(); //masukkan ke karakter ini //Motor Controls if(val == 'a' && current1 + derajatFoward mini1){ myservo1.write(current1 - derajatFoward); arus1 = arus1 - derajatMaju; delay(delayBetweenSteps); } if(val == 'c' && current2 mini2){ myservo2.write(current2 - derajatFoward); arus2 = arus2 - derajatFoward; delay(delayAntaraLangkah); } if(val == 'e' && current3 mini3){ myservo3.write(current3 - derajatFoward); arus3 = arus3 - derajatMaju; delay(delayAntaraLangkah); } if(val == 'g' && current4 mini4){ myservo4.write(current4 - derajatFoward); arus4 = arus4 - derajatMaju; delay(delayBetweenSteps); } if(val == 'i' && current5 mini5){ myservo5.write(current5 - derajatFoward); arus5 = arus5 - derajatMaju; delay(delayAntaraLangkah); } if(val == 'k' && current6 mini6){ myservo6.write(current6 - derajatFoward); arus6 = arus6 - derajatFoward; delay(delayAntaraLangkah); } //Kontrol Kecepatan if(val == 'w'){ //Jika tombol kecepatan 1 ditekan derajatFoward = 1; delay(delayBetweenSteps); } if(val == 'x'){ //Jika tombol kecepatan 5 ditekan derajatFoward = 5; delay(delayAntaraLangkah); } if(val == 'y'){ //Jika tombol speed 10 ditekan derajatFoward = 10; delay(delayAntaraLangkah); } if(val == 'z'){ //Jika tombol speed 20 ditekan derajatFoward = 20; delay(delayAntaraLangkah); } if(val == 'r'){ //Jika tombol speed 20 ditekan myservo1.write(90); arus1 = 90; myservo2.write(90); arus2 = 90; myservo3.write(90); arus3 = 90; myservo4.write(90); arus4 = 90; myservo5.write(90); arus5 = 90; myservo6.write(90); saat ini6 = 90; delay(delayBetweenSteps); } } }
Kode Pemrosesan:
import processing.serial.*; kontrol imporP5.*; //import port serial perpustakaan ControlP5; KontrolP5 cp5; //membuat font PFont objek ControlP5; void setup(){ //sama dengan ukuran program arduino(300, 700); //ukuran jendela, (lebar, tinggi) printArray(Serial.list()); //mencetak semua port serial yang tersedia //Jika Anda mengalami masalah, itu mungkin berasal dari sini String portName = Serial.list()[0]; port = Serial baru (ini, portName, 9600); // saya telah menghubungkan arduino ke com3, itu akan berbeda di linux dan mac os // mari tambahkan buton ke jendela kosong cp5 = new ControlP5(this); font = createFont("Arial", 13); // font khusus untuk tombol dan judul // Tombol Kontrol Kecepatan cp5.addButton("One") //"One" adalah nama tombol.setPosition(50, 50) //x dan y koordinat sudut kiri atas tombol.setSize(55, 25) //(lebar, tinggi).setFont(font); cp5.addButton("Lima").setPosition(110, 50).setSize(55, 25).setFont(font); cp5.addButton("Sepuluh").setPosition(170, 50).setSize(55, 25).setFont(font); cp5.addButton("Dua Puluh").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); // Tombol Kontrol 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(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) //(width, height).setFont(font); cp5.addButton("Servo_4_Foward").setPosition(50, 390).setSize(190, 40).setFont(font); cp5.addButton("Servo_4_Back").setPosition(50, 440).setSize(190, 40) //(width, height).setFont(font); 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(){ //sama seperti loop pada arduino background(192, 215, 249); // warna latar belakang jendela (r, g, b) atau (0 hingga 255) //Tambahkan teks yang mengatakan kontrol kecepatan adalah pengisian kontrol kecepatan (0, 10, 25); //warna teks (r, g, b) textFont(font); text("Kontrol Kecepatan", 50, 40); // ("teks", koordinat x, koordinat y) } //mari kita tambahkan beberapa fungsi ke tombol kita //jadi ketika Anda menekan tombol apa pun, itu akan mengirimkan karakter tertentu melalui port serial //Saya yakin itu mungkin untuk mengirim string bukannya karakter, dan itu akan lebih masuk akal tapi saya tidak tahu bagaimana melakukannya //Speed Control Commands void One(){ port.write('w'); } void Lima(){ port.write('x'); } void Sepuluh(){ port.write('y'); } void Dua Puluh(){ port.write('z'); } //Perintah Kontrol Motor 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'); }