Daftar Isi:

Lengan Robot yang Dikendalikan Arduino dengan 6 Derajat Kebebasan: 5 Langkah (dengan Gambar)
Lengan Robot yang Dikendalikan Arduino dengan 6 Derajat Kebebasan: 5 Langkah (dengan Gambar)

Video: Lengan Robot yang Dikendalikan Arduino dengan 6 Derajat Kebebasan: 5 Langkah (dengan Gambar)

Video: Lengan Robot yang Dikendalikan Arduino dengan 6 Derajat Kebebasan: 5 Langkah (dengan Gambar)
Video: merakit robot ARM/ Robot lengan || tutorial 2024, November
Anonim
Lengan Robot Terkendali Arduino dengan 6 Derajat Kebebasan
Lengan Robot Terkendali Arduino dengan 6 Derajat Kebebasan
Lengan Robot Terkendali Arduino dengan 6 Derajat Kebebasan
Lengan Robot Terkendali Arduino dengan 6 Derajat Kebebasan
Lengan Robot Terkendali Arduino dengan 6 Derajat Kebebasan
Lengan Robot Terkendali Arduino dengan 6 Derajat Kebebasan

Saya adalah anggota grup robotika dan setiap tahun grup kami berpartisipasi dalam Pameran Mini-Maker tahunan. Mulai tahun 2014, saya memutuskan untuk membangun proyek baru untuk acara setiap tahun. Saat itu, saya punya waktu sekitar satu bulan sebelum acara untuk mengumpulkan sesuatu dan tidak tahu apa yang ingin saya lakukan.

Rekan anggota memposting tautan ke "pembuatan lengan robot open source yang menarik" yang membuat saya tertarik. Rencana itu hanya lengan tanpa kontrol atau pengontrol. Mempertimbangkan keterbatasan waktu saya, sepertinya ini adalah titik awal yang sangat bagus. Satu-satunya masalah adalah saya benar-benar tidak memiliki alat untuk memulai.

Dengan bantuan beberapa anggota kelompok, saya dapat memotong bagian akrilik dan mengirimkannya kepada saya serta dua bagian cetakan 3D yang ditunjukkan di bawah ini. Dikombinasikan dengan beberapa pesanan perangkat keras semalam dan beberapa perjalanan ke toko perangkat keras lokal, saya menyelesaikan proyek kerja malam sebelum acara!

Seperti biasanya, ada lebih banyak cerita dan beberapa inkarnasi dari bangunan yang telah diringkas menjadi apa yang Anda lihat di bawah. Jika Anda tertarik dengan cerita sebelumnya, lebih banyak dapat ditemukan di sini:

Langkah 1: Yang Anda Butuhkan - Perangkat Keras & Elektronik

Yang Anda Butuhkan - Perangkat Keras & Elektronik
Yang Anda Butuhkan - Perangkat Keras & Elektronik
Yang Anda Butuhkan - Perangkat Keras & Elektronik
Yang Anda Butuhkan - Perangkat Keras & Elektronik

Perancang proyek asli tinggal di Eropa dan kemudian menggunakan pengukuran metrik dan bahan yang umum di sana. Misalnya press-board yang dia gunakan untuk bodi standar dengan ketebalan 5mm. Bahan serupa di AS adalah 1/8 yang tebalnya sekitar 3,7mm. Ini meninggalkan celah di bukaan yang awalnya dirancang untuk dipasang dengan mesin press. Daripada mengoreksi gambar, saya hanya menggunakan Gorilla Glue untuk mengamankan sambungan ini.

Dia juga menggunakan mur dan baut berulir M3 yang tidak standar di toko perangkat keras lokal Anda di AS. Daripada mengonversinya ke opsi yang tersedia secara lokal, saya hanya memesan perangkat keras secara online seperti yang ditunjukkan pada daftar bagian saya di bawah ini.

  • 22 - Kebuntuan M3 x 0,5 x 23mm
  • Spacer 15 - M3 x 15mm
  • 40 - Sekrup M3
  • Kacang Hex M3
  • Sekrup M3 25mm
  • 1 - Musim semi
  • 3/4" Pita Pemasangan Dua Sisi
  • 5 - SG 5010 TowerPro Servo
  • 1 - SG92R TowerPro mini servo
  • 1 - SG90 TowerPro mini servo
  • Header Pin Lurus Baris Tunggal 2,54 mm
  • 1 - Papan tempat memotong roti setengah ukuran
  • 1 - Kabel Jumper 'Ekstensi' Wanita/Pria - 40 x 6"
  • 1 - 12" x 24" Lembaran Akrilik Biru atau potongan laser dari penyedia layanan favorit Anda
  • 2 - 3mm x 20mm + 4mm x 5mm joint bearing spacer Dicetak 3D (lihat di bawah)
  • 1 - Panel kontrol *Lihat Catatan Di Bagian Pengkabelan
  • 1 - RGB Tersebar (tri-warna) 10mm LED
  • 1 - Arduino Uno
  • 1 - LCD standar 16x2 + ekstra - putih di atas biru
  • 1 - ransel LCD karakter i2c / SPI
  • 1 - Adafruit 16-Channel 12-bit PWM/Servo Driver
  • 1 - MCP3008 - ADC 10-Bit 8-Saluran Dengan Antarmuka SPI
  • 3 - Sensor Modul Breakout JoyStick *Lihat Catatan Di Bagian Pengkabelan
  • Jack Barel DC
  • Adaptor AC ke DC
  • Kabel Ekstensi Servo - berbagai macam panjang

Hampir semua bagian untuk lengan ini dipotong dari akrilik 1/8 inci. Namun, dua spacer bantalan sambungan perlu dicetak. Selain itu, desain aslinya meminta dua alas spacer sambungan setinggi 7mm ke poros bantalan. Ketika saya mulai merakit lengan atas, menjadi jelas bahwa ini terlalu tinggi karena ketinggian servo TowerPro. Saya harus memiliki bantalan sambungan baru yang dibuat dengan alas setinggi hanya 3mm, yang, bagaimanapun, masih agak terlalu tinggi tetapi dapat diatur. Anda perlu memperhatikan ketinggian relatif servo Anda dan memperhitungkan jarak antara kedua lengan bawah:

Tinggi servo + tanduk servo + bantalan sendi + pita sisi ganda = 47mm +/- 3mm.

Langkah 2: Perakitan Lengan

Perakitan Lengan
Perakitan Lengan
Perakitan Lengan
Perakitan Lengan
Perakitan Lengan
Perakitan Lengan
Perakitan Lengan
Perakitan Lengan

Sebelum Anda mulai, pastikan untuk memusatkan semua servo Anda! Jika sewaktu-waktu selama konstruksi, jika Anda memindahkan posisi servo secara manual, Anda harus memasangnya kembali sebelum mengamankannya ke rangka. Ini sangat penting dengan servos bahu yang selalu perlu bergerak serempak.

  1. Pasang servo dasar ke pelat dasar atas menggunakan sekrup M3 25mm dan mur hex. Jangan terlalu kencang!CATATAN: Anda mungkin ingin menerapkan penguncian yang ketat pada ulir untuk meminimalkan kendornya mur saat digunakan.

  2. Jika Anda menggunakan daftar suku cadang yang saya miliki di atas, selanjutnya Anda akan ingin merakit 5 spacer dasar dengan memasang 2 masing-masing M3 x 0,5 x 23mm Standoffs bersama-sama dan kemudian memasangnya ke pelat dasar atas dengan mur hex.
  3. Pasang pelat dasar bawah ke standoff dengan 5 Sekrup M3.
  4. Pasang pelat bahu ke dua pelat pemasangan servo menggunakan perekat aman akrilik. Saya menggunakan Gorilla Glue di sini. CATATAN: Masing-masing dari dua pelat servo memiliki lubang di bagian belakang yang memungkinkan spacer penguat dimasukkan untuk menghubungkannya. Pastikan lubangnya sejajar!* Selagi Anda memiliki lem, lanjutkan dan gabungkan pelat pemasangan pergelangan tangan dengan pelat utama gripper.* Secara opsional, Anda juga dapat merekatkan pelat servo pergelangan tangan ke dua pelat sambungan pergelangan tangan. Saya tidak melakukan pemilihan ini sebagai gantinya untuk menyatukan ini dengan kebuntuan seperti yang dijelaskan di bawah ini.
  5. Pasang rakitan bahu yang sekarang disembuhkan ke servo dasar. Saya menggunakan klakson terluas yang disertakan dengan servo yang merupakan klakson pemasangan enam batang.
  6. Menambahkan rangka lengan bawah ke servo bahu bisa jadi rumit. Saya sarankan mengamankan tanduk ke rangka lengan bawah sebelum melanjutkan. CATATAN: Pastikan untuk memusatkan servo Anda untuk rakitan bahu SEBELUM memasangnya ke rangka. Kedua servos ini harus bergerak secara serempak dan jika tidak selaras, minimal akan menyebabkan servo jitter dan, jika tidak sejajar, dapat merusak frame atau servos. * Setiap servo bahu dipasang dengan braketnya di bagian belakang pelat pemasangan alih-alih melewati servo melalui pelat - ini akan memungkinkan Anda untuk mendorong klakson ke poros servo pada suatu sudut dan mengamankan sekrup. Jangan kencangkan servo ke pelat pemasangan. * Selanjutnya, tambahkan servo bagian dalam dan pasang lengan
  7. Pasang rangka lengan atas dan servos dengan mendorong servos melalui ruang di lengan dan kemudian masukkan spacer di antara kedua pelat lengan atas dan kencangkan dengan sekrup M3.

  8. Tambahkan pita perekat dua sisi ke bagian belakang spacer sambungan siku dan rapikan kelebihannya.
  9. Pasang spacer ke bagian bawah servo yang akan bertindak sebagai aktuator siku.
  10. Selipkan rakitan lengan atas ke dalam rangka rakitan lengan bawah dan kencangkan sekrup tanduk servo.
  11. Tambahkan kebuntuan penguatan di antara dua pelat lengan bawah. Saya menggunakan dua daripada keempatnya untuk menurunkan berat badan.
  12. Tambahkan pita perekat dua sisi ke bagian belakang spacer sendi pergelangan tangan atas dan rapikan kelebihannya.
  13. Pasang spacer ke bagian bawah servo yang akan bertindak sebagai aktuator pergelangan tangan.
  14. Pasang pelat pergelangan tangan luar ke klakson servo pergelangan tangan dan kencangkan dengan sekrup klakson.
  15. Pasang pelat servo pergelangan tangan dengan dua pelat sambungan pergelangan tangan dan penyangga.
  16. Amankan servo pergelangan tangan pada pelat servo dengan pelat penjepit servo.
  17. Anda harus mengencangkan klakson pergelangan tangan ke servo sebelum memasang rakitan gripper ke klakson tersebut karena lubang untuk sekrup klakson terhalang.
  18. Pasang secara longgar potongan gripper agar pas sebelum memasang tanduk servo gripper ke servo. Ini akan memberi Anda ruang untuk memasang klakson pada langkah sebelumnya.
  19. Pasang klakson gripper ke servonya dan kencangkan sekrup yang menahan sambungan gripper. CATATAN: jangan kencangkan sepenuhnya mur dan baut ini karena harus dilonggarkan agar gripper dapat bergerak.

Langkah 3: Pengkabelan dan Panel Kontrol

Pengkabelan dan Panel Kontrol
Pengkabelan dan Panel Kontrol
Pengkabelan dan Panel Kontrol
Pengkabelan dan Panel Kontrol
Pengkabelan dan Panel Kontrol
Pengkabelan dan Panel Kontrol

Saya membangun proyek ini sebagai platform pengembangan untuk beberapa ide yang saya miliki untuk proyek pendidikan selanjutnya. Jadi, sebagian besar koneksi saya adalah konektor dupont sederhana. Satu-satunya penyolderan yang saya lakukan adalah untuk MCP3008. Jika Anda dapat menemukan papan breakout untuk komponen ini, maka Anda harus dapat membuat lengan ini bebas solder.

Ada 3 kelompok komponen:

  1. Input - Item ini mengambil informasi dari pengguna dan terdiri dari joystick dan mcp3008 ADC.
  2. Output - Item ini menyampaikan data ke dunia baik dengan menunjukkan status kepada pengguna atau memperbarui servos dengan data posisi. Item ini adalah Layar LCD, Tas Ransel LCD, LED RGB, papan driver Servo dan terakhir servos.
  3. Pemrosesan - Arduino membungkus grup terakhir yang mengambil data dari input dan mendorong data keluar ke output sesuai instruksi kode.

Skema Fritzing di atas merinci koneksi pin untuk semua komponen.

Masukan

Kami akan mulai dengan input. Joystick adalah perangkat analog - artinya mereka menghadirkan tegangan variabel sebagai input ke Arduino. Masing-masing dari tiga joystick memiliki dua output analog untuk X dan Y (atas, bawah, kiri kanan) membuat total 6 input ke Arduino. Sementara Arduino Uno memiliki 6 input analog yang tersedia, kita perlu menggunakan dua pin ini untuk komunikasi I2C ke layar dan pengontrol servo.

Karena itu, saya memasukkan konverter analog ke digital (ADC) MCP3008. Chip ini menerima hingga 8 input analog dan mengubahnya menjadi sinyal digital melalui pin komunikasi SPI Arduino sebagai berikut:

  • Pin MCP 1-6 > Output variabel dari joystick ibu jari
  • Pin MCP 7&8 > Tidak ada koneksi
  • MCP Pin 9 (DGND) > Ground
  • MCP Pin 10 (CS/SHDN) > Uno Pin 12
  • MCP Pin 11 (DIN) > Uno Pin 11
  • MCP Pin 12 (DOUT) > Uno Pin 10
  • MCP Pin 13 (CLK) > Uno Pin 9
  • MCP Pin 14 (AGND) > Ground
  • Pin MCP 15 & 16 > +5V

Sambungan joystick dalam skema hanya ditampilkan sebagai contoh. Tergantung pada joystick yang dibeli dan cara pemasangannya, koneksi Anda mungkin berbeda dengan milik saya. Merek joystick yang berbeda mungkin memiliki pinout yang berbeda dan juga dapat mengarahkan X dan Y secara berbeda. Yang penting adalah memahami apa yang diwakili oleh setiap input pada ADC. Setiap pin mewakili hubungan berikut dalam kode saya:

  • Pin 1 - Basis - Data analog pada pin ini akan memutar servo terendah pada robot
  • Pin 2 - Bahu - Data analog pada pin ini akan memutar dua servo di atas servo dasar
  • Pin 3 - Siku - Data analog pada pin ini akan memutar servo berikutnya ke atas dari servo bahu
  • Pin 4 - UP/DN Wrist - Data analog pada pin ini akan memutar pergelangan tangan servo, menaikkan dan menurunkan rakitan gripper
  • Pin 5 - Gripper - Data analog pada pin ini akan membuka dan menutup gripper
  • Pin 6 - Rotate Wrist - Data analog pada pin ini akan memutar gripper

CATATAN: Saat membeli dan memasang joystick ibu jari yang dirujuk dalam daftar suku cadang, ingatlah bahwa orientasi modul mungkin berbeda dari milik saya, jadi, uji keluaran x dan y untuk koneksi yang benar ke ADC. Juga, jika Anda menggunakan panel kontrol cetak 3D saya, lubang pemasangan mungkin diimbangi dari milik saya.

Keluaran

Adafruit PWM/Servo Controller membuat proyek ini sangat sederhana. Cukup sambungkan Servo ke header servo dan semua koneksi daya dan sinyal ditangani. Kecuali Anda menemukan servos dengan lead ekstra panjang, Anda akan ingin mendapatkan satu set ekstensi kabel servo dalam berbagai panjang sehingga semua kabel servo Anda mencapai papan pengontrol Anda.

Servo terhubung sebagai berikut:

  • Posisi 0 - Servo dasar
  • Posisi 1 - Servo bahu (Kabel Servo Y)
  • Posisi 2 - Servo Siku
  • Posisi 3 - Pergelangan Tangan 1 Servo
  • Posisi 4 - Servo Gripper
  • Posisi 5 - Pergelangan Tangan 2 Servo

Selain itu, VCC dan V+ keduanya terhubung ke +5 Volt dan GND terhubung ke Ground.

CATATAN 1: Satu catatan BESAR di sini: Tegangan suplai untuk seluruh proyek masuk melalui blok terminal daya pada Papan Kontrol Servo. Pin V+ pada Kontroler Servo sebenarnya mensuplai daya dari blok terminal ke seluruh rangkaian. Jika Anda perlu memprogram Uno Anda, saya sangat menyarankan untuk melepaskan pin V+ sebelum menghubungkan Uno ke PC Anda karena penarikan arus dari servos dapat merusak port USB Anda.

CATATAN 2: Saya menggunakan adaptor dinding 6V AC ke DC untuk memberi daya pada proyek. Saya merekomendasikan adaptor yang dapat memasok setidaknya 4A arus sehingga ketika satu atau lebih servos terikat, lonjakan arus yang tiba-tiba tidak membuat sistem Anda mati dan mengatur ulang Arduino Anda.

Layar LCD 16X2 terhubung ke Adafruit LCD Backpack untuk memanfaatkan antarmuka I2C yang sudah digunakan oleh Kontroler Servo. SCL pada Pengontrol Servo dan CLK pada Ransel keduanya terhubung ke Pin A5 di Uno. Demikian juga, SDA pada Pengontrol Servo dan DAT pada Ransel keduanya terhubung ke Pin A4 di Uno. Selain itu, 5V terhubung ke +5 Volt dan GND terhubung ke Ground. LAT di Ransel tidak terhubung dengan apa pun.

Terakhir, LED RGB terhubung ke pin 7 (MERAH), 6 (Hijau), dan 5 (Biru) pada Uno. Kaki ground LED terhubung ke Ground melalui resistor 330Ohm.

Pengolahan

Last but not least, sisa koneksi Arduino yang tidak tercantum di atas adalah sebagai berikut: Pin 5V terhubung ke +5 Volt dan GND terhubung ke Ground.

Dalam pengaturan saya, saya menggunakan rel samping papan tempat memotong roti untuk mengikat semua saluran listrik dan tanah bersama-sama serta pin I2C untuk semua perangkat.

Langkah 4: Kode

Kode
Kode

Seperti yang dinyatakan sebelumnya, saya awalnya membangun proyek ini sebagai demonstrasi untuk Maker Faire lokal saya. Saya bermaksud menjadikannya sesuatu untuk dimainkan oleh anak-anak dan orang dewasa saat berada di stan kami. Ternyata, itu jauh lebih populer daripada yang saya bayangkan - begitu banyak, sehingga anak-anak memperebutkannya. Jadi, ketika saatnya tiba untuk menulis ulang, saya memasukkan "Mode Demo" yang menerapkan batas waktu.

Lengan itu duduk di sana menunggu seseorang untuk menggerakkan joystick dan ketika mereka melakukannya, itu memulai penghitung waktu 60 detik. Pada akhir 60 detik, ia berhenti mengambil input dari pengguna dan "Istirahat" selama 15 detik. Rentang perhatian yang pendek menjadi apa adanya, periode istirahat ini sangat mengurangi pertentangan untuk waktu tetap.

Operasi dasar

Kode yang tercantum di bagian referensi di bawah ini cukup sederhana. Array melacak 6 sambungan dengan min, ekstensi maks, posisi awal, dan posisi saat ini. Saat lengan dihidupkan, fungsi startup mendefinisikan library yang diperlukan untuk berbicara dengan MCP3008, LCD Backpack (dan selanjutnya layar), dan mendefinisikan pin LED. Dari sana ia melakukan pemeriksaan sistem dasar dan melanjutkan ke rumah lengan. Fungsi rumah dimulai dengan gripper dan turun ke dasar sehingga meminimalkan kemungkinan pengikatan dalam kondisi normal. Jika lengan diluruskan sepenuhnya, mungkin yang terbaik adalah meletakkan lengan secara manual sebelum menyalakannya. Karena servos generik tidak memberikan umpan balik tentang posisinya, kita perlu menempatkan masing-masing pada titik yang telah ditentukan dan melacak seberapa jauh masing-masing saat dipindahkan.

Loop utama pertama dimulai dalam mode menunggu - mencari joystick untuk menjauh dari posisi tengahnya. Setelah itu terjadi, loop utama mengubah status menjadi status hitung mundur. Saat pengguna menggerakkan setiap joystick, posisi relatif joystick dari pusat akan menambah atau mengurangi dari posisi yang diketahui saat ini dan memperbarui servo yang sesuai. Setelah servo mencapai batas yang ditentukan dalam satu arah, joystick berhenti. Pengguna harus menggerakkan joystick ke arah lain untuk memindahkannya lagi. Ini adalah batas perangkat lunak yang dikenakan pada servos terlepas dari penghentian perangkat kerasnya. Fitur ini memungkinkan Anda untuk menjaga gerakan lengan dalam area operasional yang ditentukan jika diperlukan. Jika joystick dilepaskan ke tengah, gerakan akan berhenti.

Kode ini hanyalah titik awal umum. Anda dapat menambahkan mode Anda sendiri sesuai keinginan. Salah satu contohnya mungkin mode run berkelanjutan tanpa timer atau mungkin menambahkan tombol tekan joystick sebagai input dan menulis mode rekam/pemutaran.

Langkah 5: Tautan dan Sumber Daya

Referensi Lengan

  • Postingan yang menginspirasi proyek ini
  • Postingan blog Desainer Asli Lengan robot saya sendiri Gripper servo mini saya dan lengan robot lengkap Kalikan lengan robot dan elektronik
  • Lengan Thingiverse
  • Thingiverse Mini Servo Gripper

Pustaka Perangkat Lunak

  • Sumber Daya Pengontrol Adafruit PWM/Servo
  • Perpustakaan MCP3008
  • Lembar Data MCP3008

Panel Kontrol dan Kode

  • Gambar Tinkercad dari Panel yang saya buat
  • Repositori kode saat ini

Direkomendasikan: