Daftar Isi:

Lengan Robot Arduino: 5 Langkah
Lengan Robot Arduino: 5 Langkah

Video: Lengan Robot Arduino: 5 Langkah

Video: Lengan Robot Arduino: 5 Langkah
Video: ROBOT ARM 5 AXIS DAPAT MENUANG MINUMAN 2024, November
Anonim
Image
Image
Lengan Robot Arduino
Lengan Robot Arduino
Lengan Robot Arduino
Lengan Robot Arduino

Karena ini adalah proyek pertama saya setelah 15 tutorial starter kit Arduino saya, tujuan sebenarnya adalah untuk mendapatkan beberapa kritik, tips, saran, ide dari siapa pun yang lebih tahu dari saya.

Proyek ini tentang lengan robot, dengan 4 dof dan pegangan. Dengan anggaran yang cukup rendah: struktur telah dipotong oleh seorang teman, 4 servos adalah 30€, 2 joystick 4€, baut sekrup dll. kurang dari 10€ dan sisanya (Arduino, kabel, servo pegangan, dll.) sudah disertakan dalam starter kit saya. Untuk total 40-45€ yaitu sekitar 45-50 dolar AS (harga yang sama untuk kit me-arm, tapi hei, menyenangkan harus membuatnya sendiri (dan kadang-kadang mengacaukan sesuatu) dan tidak mengikuti instruksi seperti mesin).

Karena ini adalah proyek pertama saya dan Instructable, saya mengikuti "Penulis Pertama Kali" dan beberapa kontes lainnya, jadi jika Anda suka, pilih:)

Langkah 1: PERANCANGAN DAN PERAKITAN:

Pertama saya membutuhkan struktur: Ini jelas merupakan bagian terpanjang. Karena saya tidak ingin menyalin dan menempel proyek dari orang lain, saya mengambil proyek sebagai referensi dan saya (dan beberapa teman sekelas yang lebih terampil yang benar-benar menyelamatkan saya) mulai memodifikasinya sesuai dengan kebutuhan kita (servo berbeda dengan torsi, berat dan dimensi berbeda, dll.). Saya harus membangunnya beberapa kali, masing-masing saya menemukan sesuatu yang salah, dan kami harus memotong beberapa bagian dan mencoba lagi. Saya telah melampirkan file.dxf jika Anda ingin menggunakannya. Kemudian saya harus membeli elektronik: Sebagian besar bagiannya standar, bagian yang sulit adalah memilih servos. Saya menghitung torsi yang diperlukan dengan aturan praktis, kemudian saya mencoba perhitungan yang lebih akurat dan saya menemukan bahwa saya mungkin sedikit berlebihan. Rupanya 6 kg/cm sudah cukup untuk servo ke-2 (dari pangkalan), dan milik saya menyediakan 9-11 kg/cm. Nah, ini memberi saya keamanan dan kesempatan untuk memuat hingga 2kg beban (yang tidak mungkin, tetapi saya suka bahwa saya secara teknis dapat melakukannya). Saya juga bisa membeli servo yang berbeda, dengan torsi yang berkurang saat menjauh dari pangkalan, tetapi membeli servo yang identik dari vendor yang sama sejauh ini merupakan pilihan termurah. Catu daya: Arduino jelas tidak cukup untuk servo, karena setiap mg995 menarik 350mA dan microservo 9g menarik 100mA, dengan total 350*4 +100 = 1500mA. Jadi saya menyelamatkan pengisi daya (6V 1.5A) dan menyolder dua kabel jumper ke sana. (jika beberapa dari Anda mungkin memerlukan petunjuk nyata, tanyakan saja di komentar, dan saya akan melakukan yang terbaik untuk membuat langkah demi langkah panduan)Daftar bahan:- Struktur- M5x7cm sekrup x5, m5 baut x15 (dasar)- M3x16mm sekrup x18*- M3x20mm sekrup x13*- M3 baut x40*- M3x8cm sekrup x3 - Penjepit (jika tidak akan jatuh)- 3 pasak- Arduino (atau sesuatu yang lain untuk mengendalikannya, ia harus memiliki setidaknya 5 PWM)- Sesuatu untuk memasok 5-6V dan setidaknya 1,5A - 3x joystick seperti ps2- 4x TowerPro mg995 servos- 1x TowerPro 9g microservo (untuk pegangan)- Banyak kabel jumper - Breadboard*(Saya menggunakan baut dan sekrup untuk merakit dan membongkar dengan cepat, jika tidak, Anda dapat mengganti hampir semuanya dengan sekrup kayu)

Langkah 2: KODE:

Idenya adalah untuk mengontrol setiap servo dengan salah satu dari dua sumbu joystick seperti ps2. Setiap joystick tampaknya memiliki "nilai istirahat" yang berbeda (nilai antara 0-1023 saat diam) untuk sumbu y dan x. adalah masalah, karena perbedaannya hanya kecil (satu memiliki nol pada y pada 623) dan saya ingin menggunakan fungsi peta untuk mengonversi dari 0-1023 ke derajat. Tetapi fungsi peta menganggap nilai sisanya adalah 1023/2. Yang dibawa ke setiap servo bergerak segera setelah saya menyalakan Arduino, tidak bagus. Saya berhasil menyiasatinya dengan menemukan secara manual perbedaan antara nilai pembacaan dan setiap nilai istirahat yang berbeda (yang saya hitung secara terpisah untuk setiap joystick), lalu ke membuat kode lebih pendek dan lebih pintar, saya membuatnya membaca nilai sisa dalam fungsi pengaturan dan menyimpannya di beberapa variabel. Algoritme baru bergantung pada konversi kenaikan dalam derajat, tetapi saya menginginkan jumlah derajat yang sangat rendah untuk kenaikan saya, jadi Saya harus membaginya untuk konstanta: Saya mencoba banyak nilai, sampai saya menemukan 200 terakhir (saya dapat menambahkan potensiometer untuk mengubah nilai ini secara manual ke nilai yang diinginkan). Sisa kodenya cukup standar, saya kira, meskipun mungkin lebih elegan untuk menempatkan perhitungan kenaikan di dalam fungsi yang terpisah.

Langkah 3: ELEKTRONIK:

ELEKTRONIK
ELEKTRONIK

Pengkabelan sama seperti yang ditunjukkan pada gambar atau file fritzing: sinyal servo ke pin: 5-6-9-10-11 dan sumbu joystick ke pin analog: A0-A1-A2-A3-A4Masalah utama yang saya hadapi adalah bahwa joystick HARUS dipasok oleh Arduino, BUKAN oleh pengisi daya yang saya gunakan untuk servos. Kalau tidak, servo hanya akan menjadi gila bergerak bolak-balik secara acak. Saya pikir itu mungkin karena, jika saya memasok mereka dengan pengisi daya, Arduino tidak akan dapat secara tepat membedakan perbedaan potensial ketika saya memindahkannya, tetapi sekali lagi: Saya sangat baru dalam elektronik jadi ini hanya perkiraan. Menghubungkan ground Arduino dan ground pengisi daya melalui papan tempat memotong roti membantu mencegah gerakan acak dan tak terduga, untuk alasan yang sama dari pasokan joystick, saya kira.

Langkah 4: SAAT INI TERJADI PERBAIKAN:

SAAT INI ADA PERBAIKAN
SAAT INI ADA PERBAIKAN

Karena setiap joystick dapat mengontrol 2 servo (1 per sumbu), saya memerlukan 3 servo untuk mengontrol seluruh lengan, tetapi sayangnya saya hanya memiliki 2 jempol. Jadi saya pikir, alih-alih mengontrol setiap servo, saya hanya dapat mengontrol posisi xyz dari grip dan buka-tutup grip, untuk total 4 sumbu, 2 joystick dan 2 jempol! Saya menemukan bahwa masalah itu dikenal sebagai Kinematika Terbalik, saya juga menemukan bahwa itu semua mudah. Idenya adalah untuk menulis (persamaan nonlinier) untuk menemukan keadaan setiap efektor (sudut untuk servos) yang diberikan posisi akhir. Saya telah mengunggah makalah tulisan tangan dengan persamaan tersebut, dan saat ini saya sedang mengerjakan kode baru untuk menggunakannya. Seharusnya tidak terlalu sulit, pada dasarnya saya harus membaca joystick, menggunakan bacaannya untuk memodifikasi koordinat xyz pegangan, dan kemudian memberikannya ke persamaan saya, menghitung sudut servos dan menulisnya.

Langkah 5: PENINGKATAN MASA DEPAN:

Jadi, saya cukup puas dengan hasilnya dan mengingat bahwa saya benar-benar baru dalam elektronik, tidak meledakkan sesuatu atau diri saya sendiri sudah merupakan kemenangan besar. Seperti yang saya katakan di awal, ide untuk perbaikan di masa depan, baik perangkat lunak maupun hardware, lebih dari diterima! Sejauh ini saya berpikir tentang:1. Potensiometer untuk mengubah "sensibilitas" joystick.2. Kode baru untuk membuatnya "merekam" beberapa gerakan dan melakukannya lagi (mungkin lebih cepat dan lebih pendek dari input manusia)3. Beberapa jenis input visual/jarak/suara dan bisa mendapatkan objek tanpa seseorang menggunakan joystick4. Mampu menggambar bentuk geometris Ada ide lain? Silakan berkomentar dengan saran apa pun. Terima kasih

Direkomendasikan: