Isi kandungan:

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, Julai
Anonim
Image
Image
Lengan Robot Arduino
Lengan Robot Arduino
Lengan Robot Arduino
Lengan Robot Arduino

Oleh kerana ini adalah projek pertama saya selepas 15 tutorial kit pemula Arduino saya, tujuan sebenarnya adalah mendapatkan beberapa kritikan, petua, cadangan, idea daripada sesiapa sahaja yang lebih mengenali saya.

Projek ini adalah mengenai lengan robot, dengan 4 dof dan cengkaman. Dengan anggaran yang rendah: strukturnya telah dipotong oleh seorang rakan, 4 servo adalah 30 €, 2 joystick 4 €, bolt screw dll kurang dari 10 € dan selebihnya (Arduino, wayar, grip's servo dll.) sudah dimasukkan ke dalam kit pemula saya. Dengan harga keseluruhan 40-45 € iaitu sekitar 45-50 dolar AS (harga yang sama untuk me-arm kit, tetapi hei, sangat seronok apabila saya membuatnya sendiri (dan mengacaukan sesuatu sekali-sekala) dan tidak mengikut arahan seperti mesin).

Oleh kerana ini adalah projek pertama saya dan Instructable, saya memasuki '' First Time Author '' dan beberapa pertandingan lain, jadi jika anda menyukainya, pilihlah:)

Langkah 1: MERANCANG DAN MENGUMPUL:

Mula-mula saya memerlukan struktur: Ini pasti bahagian terpanjang. Oleh kerana saya tidak mahu menyalin dan menampal projek dari orang lain, saya mengambil projek sebagai rujukan dan saya (dan beberapa rakan sekelas yang lebih mahir yang benar-benar menyelamatkan saya) mula mengubahnya mengikut keperluan kita (servo berbeza dengan tork, berat dan dimensi yang berbeza, dll.). Saya terpaksa membinanya beberapa kali, masing-masing daripadanya saya mendapati ada sesuatu yang salah, dan kami terpaksa mengumpul semula beberapa bahagian dan mencuba semula. Saya telah melampirkan fail.dxf sekiranya anda mahu menggunakannya. Kemudian saya terpaksa membeli elektronik: Sebilangan besar bahagian adalah standard, bahagian yang sukar adalah memilih servos. Saya mengira daya kilas yang diperlukan dengan kaedah praktis, kemudian saya mencuba pengiraan yang lebih tepat dan saya mendapat tahu bahawa saya mungkin sedikit berlebihan. Rupa-rupanya 6 kg / cm sudah cukup untuk servo ke-2 (dari pangkalan), dan tambang menyediakan 9-11 kg / cm. Nah, ini memberi saya keselamatan dan peluang untuk memuat hingga 2kg beban (yang mustahil, tetapi saya suka bahawa saya dapat melakukannya secara teknikal). Saya juga boleh membeli servo yang berbeza, dengan penurunan tork semasa menjauh dari pangkalan, tetapi membeli servo yang sama dari vendor yang sama jauh merupakan pilihan termurah. Bekalan kuasa: Arduino pasti tidak mencukupi untuk servo, kerana setiap mg995 menarik 350mA dan microservo 9g menarik 100mA, dengan jumlah 350 * 4 +100 = 1500mA. Oleh itu, saya menyelamatkan pengecas (6V 1.5A) dan memateri dua wayar pelompat padanya. (Jika ada di antara anda mungkin memerlukan petunjuk sebenar, tanyakan sahaja di komen, dan saya akan melakukan yang terbaik untuk membuat langkah demi langkah panduan) Senarai bahan: - Struktur- M5x7cm skru x5, baut m5 x15 (asas) - M3x16mm skru x18 * - M3x20mm skru x13 * - M3 bolt x40 * - M3x8cm skru x3 - Pengapit (jika tidak akan jatuh) - 3 dowels- Arduino (atau sesuatu yang lain untuk mengawalnya, ia mesti mempunyai sekurang-kurangnya 5 PWM) - Sesuatu untuk membekalkan 5-6V dan sekurang-kurangnya 1.5A - joystick seperti ps2 3x - 4x servo TowerPro mg995- 1x microservo TowerPro 9g (untuk cengkaman) - Banyak kabel jumper - Breadboard * (Saya menggunakan bolt dan skru untuk dapat memasang dan membongkar dengan cepat, jika tidak, anda boleh mengganti hampir semuanya dengan skru kayu)

Langkah 2: KOD:

Ideanya adalah untuk mengawal setiap servo dengan salah satu daripada dua paksi joystick mirip ps2. Setiap joystick nampaknya mempunyai "nilai rehat" yang berbeza (nilai antara 0-1023 ketika masih) untuk kedua-dua paksi y dan x. Itu adalah masalah, kerana perbezaannya hanya kecil (satu mempunyai nol pada y pada 623) dan saya ingin menggunakan fungsi peta untuk menukar dari 0-1023 ke darjah. Tetapi fungsi peta berpendapat nilai selebihnya adalah 1023/2. Yang membawa kepada setiap servo bergerak sebaik sahaja saya menghidupkan Arduino, tidak bagus. Saya berjaya mengatasi ini dengan mencari secara manual perbezaan antara nilai bacaan dan setiap nilai rehat yang berbeza (yang saya kirakan secara berasingan untuk setiap kayu bedik), kemudian ke menjadikan kodnya lebih pendek dan lebih pintar, saya membuatnya membaca nilai selebihnya dalam fungsi persediaan dan menyimpannya dalam beberapa pemboleh ubah. Algoritma baru bergantung pada menukar kenaikan dalam darjah, tetapi saya mahukan jumlah darjah yang sangat rendah untuk kenaikan saya, jadi Saya terpaksa membahagikannya untuk pemalar: Saya mencuba banyak nilai, sehingga saya menghasilkan 200 akhir (saya mungkin menambah potensiometer untuk menukar nilai ini secara manual ke nilai yang diinginkan). Selebihnya kodnya cukup standard saya rasa, walaupun mungkin lebih elegan untuk meletakkan perhitungan kenaikan di dalam fungsi yang terpisah.

Langkah 3: ELEKTRONIK:

ELEKTRONIK
ELEKTRONIK

Pendawaian adalah sama seperti yang ditunjukkan dalam gambar atau fail fritzing: isyarat servos ke pin: 5-6-9-10-11 dan paksi joystick ke pin analog: A0-A1-A2-A3-A4Masalah utama yang saya hadapi adakah kayu bedik HARUS dibekalkan oleh Arduino, BUKAN oleh pengecas yang saya gunakan untuk servos. Jika tidak, servo akan menjadi gila bergerak secara rawak bolak-balik. Saya rasa itu mungkin kerana, jika saya membekalkannya dengan pengecas, Arduino tidak akan dapat dengan tepat mengetahui perbezaan kemungkinan ketika saya memindahkannya, tetapi sekali lagi: Saya sangat baru dalam bidang elektronik jadi ini hanya dugaan. Menyambungkan tanah Arduino dan tanah pengecas melalui papan roti membantu mencegah pergerakan rawak dan tidak dijangka, kerana alasan yang sama seperti bekalan tongkat yang saya rasa.

Langkah 4: SEMASA MENINGKATKAN PENAMBAHBAIKAN:

SEMASA MENINGKATKAN PENAMBAHBAIKAN
SEMASA MENINGKATKAN PENAMBAHBAIKAN

Oleh kerana setiap kayu bedik dapat mengawal 2 servo (1 per paksi), saya memerlukan 3 servo untuk mengawal seluruh lengan, tetapi malangnya saya hanya mempunyai 2 ibu jari. Oleh itu, saya fikir, bukannya mengawal setiap servo, saya hanya dapat mengawal kedudukan xyz dari genggam dan tutup-tutup pegangan, dengan jumlah 4 paksi, 2 batang bedik dan 2 ibu jari! Saya mendapat tahu bahawa masalah itu terkenal sebagai Inematik Kinematik, saya juga mendapati bahawa semuanya mudah. Ideanya ialah menulis (persamaan bukan linier untuk mencari keadaan setiap efektor (sudut untuk servos) yang diberi kedudukan akhir. Saya telah memuat naik kertas tulisan tangan dengan persamaan, dan saya sedang berusaha untuk menggunakan kod baru untuk menggunakannya. Tidak semestinya terlalu sukar, pada dasarnya saya mesti membaca kayu bedik, menggunakan bacaannya untuk mengubah suai koordinat xyz, dan kemudian memberikannya pada persamaan saya, mengira sudut servos dan menulisnya.

Langkah 5: PENAMBAHBAIKAN MASA DEPAN:

Oleh itu, saya cukup berpuas hati dengan hasilnya dan menganggap bahawa saya benar-benar baru dalam elektronik tidak meletupkan sesuatu atau saya sendiri sudah menjadi kemenangan besar. Seperti yang saya katakan pada awalnya, ada idea untuk penambahbaikan masa depan, baik perisian dan perkakasan, lebih daripada dialu-alukan! Setakat ini saya memikirkan: 1. Potensiometer untuk mengubah "kepekaan" kayu bedik.2. Kod baru untuk membuatnya "merakam" beberapa pergerakan dan melakukannya lagi (mungkin lebih cepat dan lebih pendek daripada input manusia) 3. Beberapa jenis input visual / jarak / suara dan dapat memperoleh objek tanpa seseorang menggunakan kayu bedik4. Mampu melukis angka geometri Ada idea lain? Jangan ragu untuk memberi komen dengan sebarang cadangan. Terima kasih

Disyorkan: