Isi kandungan:

Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan: 5 Langkah (dengan Gambar)
Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan: 5 Langkah (dengan Gambar)

Video: Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan: 5 Langkah (dengan Gambar)

Video: Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan: 5 Langkah (dengan Gambar)
Video: (SESI 2/3) EDU:BIT Train-the-Trainer bersama Ms. Cheryl Ng (Cytron Technologies) 2024, Julai
Anonim
Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan
Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan
Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan
Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan
Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan
Arduino Lengan Robotik Terkawal W / 6 Darjah Kebebasan

Saya adalah ahli kumpulan robotik dan setiap tahun kumpulan kami mengambil bahagian dalam Faire Pembuat Mini tahunan. Bermula pada tahun 2014, saya memutuskan untuk membina projek baru untuk acara setiap tahun. Pada masa itu, saya mempunyai masa kira-kira sebulan sebelum acara untuk menyusun sesuatu dan tidak tahu apa yang ingin saya lakukan.

Seorang rakan melampirkan pautan ke "pembuatan lengan robot sumber terbuka yang menarik" yang memuncak minat saya. Rancangannya hanyalah lengan tanpa kawalan atau pengawal. Mengingat kekangan masa saya, rasanya seperti titik permulaan yang sangat baik. Satu-satunya masalah ialah saya tidak mempunyai alat untuk memulakan.

Dengan bantuan beberapa ahli kumpulan, saya dapat memotong bahagian akrilik dan dihantar kepada saya serta dua bahagian bercetak 3D yang ditunjukkan di bawah. Dikombinasikan dengan beberapa pesanan perkakasan semalam dan beberapa perjalanan ke kedai perkakasan tempatan, saya menyelesaikan projek kerja pada malam sebelum acara!

Seperti biasanya, ada lebih banyak cerita dan beberapa penjelmaan pada binaan yang telah disatukan dengan apa yang anda lihat di bawah. Sekiranya anda berminat dengan cerita belakang, lebih banyak boleh didapati di sini:

Langkah 1: Apa yang Anda Perlu - Perkakasan & Elektronik

Apa yang Anda Perlu - Perkakasan & Elektronik
Apa yang Anda Perlu - Perkakasan & Elektronik
Apa yang Anda Perlu - Perkakasan & Elektronik
Apa yang Anda Perlu - Perkakasan & Elektronik

Pereka projek asal tinggal di Eropah dan kemudian menggunakan ukuran metrik dan bahan yang biasa terdapat di sana. Contohnya papan penekan yang digunakannya untuk badan adalah setebal setebal 5mm. Bahan serupa di AS adalah 1/8 dengan ketebalan sekitar 3,7 mm. Ini meninggalkan jurang pada bukaan yang pada mulanya dirancang untuk dipasang dengan menekan. Daripada membetulkan gambar, saya hanya menggunakan Gorilla Glue untuk mengikat sendi ini.

Dia juga menggunakan mur dan baut berulir M3 yang tidak standard di kedai perkakasan tempatan anda di AS. Daripada menukarnya menjadi pilihan yang ada di tempatan, saya hanya memesan perkakasan dalam talian seperti yang ditunjukkan dalam senarai bahagian saya di bawah.

  • 22 - M3 x 0.5 x 23mm Kebuntuan
  • 15 - M3 x 15mm Spacer
  • 40 - Skru M3
  • Kacang Hex M3
  • Skru M3 25mm
  • 1 - Musim bunga
  • Pita Pemasangan Dua Sisi 3/4"
  • 5 - SG 5010 TowerPro Servo
  • 1 - servo mini SG92R TowerPro
  • 1 - servo mini SG90 TowerPro
  • Header Pin Lurus Baris Tunggal 2.54 mm
  • 1 - Papan Roti bersaiz separuh
  • 1 - Wayar Pelompat 'Ekstensi' Wanita / Lelaki - 40 x 6"
  • Lembaran Akrilik Biru 1 - 12 "x 24" atau potongan laser dari pembekal perkhidmatan kegemaran anda
  • Spacer galas sendi 2 - 3mm x 20mm + 4mm x 5mm 3D Dicetak (lihat di bawah)
  • 1 - Panel kawalan * Lihat Catatan Di Bahagian Pendawaian
  • 1 - LED 10GB RGB (tri-warna)
  • 1 - Arduino Uno
  • 1 - LCD standard 16x2 + tambahan - putih biru
  • Ransel LCD watak 2 - i2c / SPI
  • 1 - Adafruit 16-Channel 12-bit PWM / Servo Driver
  • 1 - MCP3008 - ADC 10-Bit 8-Saluran Dengan Antara Muka SPI
  • 3 - Sensor Modul Breakout JoyStick * Lihat Catatan Di Bahagian Pendawaian
  • Jack Barel DC
  • Penyesuai AC ke DC
  • Kabel Sambungan Servo - pelbagai panjang

Hampir semua bahagian lengan ini dipotong dari 1/8 inci akrilik. Kedua-dua spacer galas sendi perlu dicetak. Juga, reka bentuk asalnya meminta kedua-dua asas spacer bersama setinggi 7mm ke batang galas. Ketika saya mula memasang lengan atas, menjadi jelas bahawa ini terlalu tinggi kerana ketinggian servo TowerPro. Saya mesti mempunyai bantalan sendi baru yang dibuat dengan dasar hanya 3mm tinggi, yang, omong-omong, masih terlalu tinggi tetapi dapat dikendalikan. Anda ingin memperhatikan ketinggian relatif servo anda dan mengambil kira jarak antara kedua lengan bawah:

Ketinggian servo + tanduk servo + galas sendi + pita dua sisi = 47mm +/- 3mm.

Langkah 2: Pemasangan Lengan

Pemasangan Lengan
Pemasangan Lengan
Pemasangan Lengan
Pemasangan Lengan
Pemasangan Lengan
Pemasangan Lengan
Pemasangan Lengan
Pemasangan Lengan

Sebelum memulakan, pastikan anda memusatkan semua perkhidmatan anda! Sekiranya pada bila-bila masa semasa pembinaan, jika anda memindahkan kedudukan servo secara manual, anda perlu memasukkannya semula sebelum mengamankannya ke bingkai. Ini sangat penting dengan servo bahu yang selalu perlu bergerak serentak.

  1. Pasang servo asas ke plat asas atas menggunakan skru M3 25mm dan mur hex. Jangan terlalu ketat! CATATAN: Anda mungkin mahu menggunakan penutup kunci pada benang untuk mengurangkan kelonggaran kacang semasa digunakan.
  2. Sekiranya anda menggunakan senarai bahagian yang saya ada di atas, anda seterusnya ingin memasang 5 spacer asas dengan memasukkan 2 masing-masing M3 x 0.5 x 23mm Standoffs bersama-sama dan kemudian pasangkannya ke plat asas atas dengan kacang hex.
  3. Pasangkan plat asas bawah ke penutup dengan Skru 5 M3.
  4. Pasang pelat bahu ke dua pelekap servo menggunakan pelekat selamat akrilik. Saya menggunakan Gorilla Glue di sini. CATATAN: Setiap dua plat servo mempunyai lubang di bahagian belakang yang membolehkan spacer tetulang dimasukkan untuk menghubungkannya. Pastikan lubang sejajar! * Walaupun lem anda mudah digunakan, teruskan dan gabungkan plat pemasangan pergelangan tangan dengan plat utama gripper. * Sebagai pilihan, anda juga boleh melekatkan plat servo pergelangan tangan ke kedua plat sendi pergelangan tangan. Saya tidak melakukan pemilihan ini sebaliknya untuk mengetepikannya dengan kebuntuan seperti yang dijelaskan di bawah.

  5. Pasang pemasangan bahu yang telah disembuhkan ke servo asas. Saya menggunakan tanduk terluas yang disertakan dengan servo yang merupakan tanduk pemasangan enam batang.
  6. Menambah rangka lengan bawah ke servo bahu boleh menjadi sukar. Saya cadangkan mengunci tanduk ke bingkai lengan bawah sebelum meneruskan. CATATAN: Pastikan memusatkan servo anda untuk pemasangan bahu SEBELUM melampirkannya ke bingkai. Kedua-dua servo ini mesti bergerak serentak dan jika tidak selaras akan menyebabkan gangguan servo dan, jika tidak sejajar, boleh merosakkan bingkai atau servo. * Setiap servo bahu dipasang dengan pendakap di bahagian belakang plat pelekap dan bukannya melewati servo melalui plat - ini akan membolehkan anda mendorong tanduk ke poros servo pada sudut dan menahan skru. Jangan selamatkan servo ke pelekap pelekap. * Seterusnya, tambahkan servo dalaman dan pasangkan lengan
  7. Pasang rangka lengan atas dan servo dengan mendorong servos melalui ruang di lengan dan kemudian masukkan spacer di antara kedua-dua plat lengan atas dan selamatkan dengan skru M3.

  8. Tambahkan pita pelekat dua sisi ke belakang spacer sendi siku dan potong lebihan.
  9. Pasang spacer ke bahagian bawah servo yang akan bertindak sebagai penggerak siku.
  10. Selipkan bahagian lengan atas ke bingkai pemasangan lengan bawah dan pasangkan skru tanduk servo.
  11. Tambahkan penegangan tetulang antara dua plat lengan bawah. Saya menggunakan dua bukannya empat untuk menurunkan berat badan.
  12. Tambahkan pita pelekat dua sisi ke belakang spacer sendi pergelangan tangan atas dan potong lebihan.
  13. Pasang spacer ke bahagian bawah servo yang akan bertindak sebagai penggerak pergelangan tangan.
  14. Pasang plat pergelangan luar ke tanduk servo pergelangan tangan dan selamatkan dengan skru tanduk.
  15. Pasang plat servo pergelangan tangan dengan dua plat sendi dan pergelangan tangan.
  16. Pasangkan servo pergelangan tangan pada plat servo dengan plat penjepit servo.
  17. Anda perlu mengikat tanduk pergelangan tangan ke servo sebelum memasang unit gripper pada tanduk itu kerana bukaan skru tanduk tersumbat.
  18. Pasangkan kepingan gripper secara longgar sebelum memasang tanduk servo gripper ke servo. Ini akan memberi ruang untuk mengetuk tanduk pada langkah sebelumnya.
  19. Pasang tanduk gripper ke servo dan ketatkan lagi skru yang menahan sendi gripper. CATATAN: jangan kencangkan mur dan baut sepenuhnya kerana perlu dilepaskan agar cengkaman bergerak.

Langkah 3: Panel Pendawaian dan Kawalan

Pendawaian dan Panel Kawalan
Pendawaian dan Panel Kawalan
Pendawaian dan Panel Kawalan
Pendawaian dan Panel Kawalan
Pendawaian dan Panel Kawalan
Pendawaian dan Panel Kawalan

Saya membina projek ini sebagai platform pengembangan untuk beberapa idea yang saya ada untuk projek pendidikan kemudian. Jadi, kebanyakan sambungan saya adalah penyambung dupont sederhana. Satu-satunya pematerian yang saya lakukan adalah untuk MCP3008. Sekiranya anda dapat mencari papan pemecah untuk komponen ini, maka anda seharusnya boleh membina solder lengan ini secara percuma.

Terdapat 3 kumpulan komponen:

  1. Input - Item ini mengambil maklumat daripada pengguna dan terdiri daripada kayu bedik dan mcp3008 ADC.
  2. Keluaran - Item ini menyampaikan data ke dunia sama ada dengan menunjukkan status kepada pengguna atau mengemas kini servos dengan data kedudukan. Item ini adalah Skrin LCD, Ransel LCD, RGB LED, papan pemacu Servo dan terakhir servo.
  3. Memproses - Arduino menyusun kumpulan terakhir yang mengambil data dari input dan mendorong data keluar ke output mengikut arahan kod.

Skema Fritzing di atas memperincikan sambungan pin untuk semua komponen.

Input

Kita akan mulakan dengan input. Joystick adalah peranti analog - yang bermaksud bahawa mereka memberikan voltan berubah sebagai input ke Arduino. Masing-masing dari tiga tongkat Joystick mempunyai dua output analog untuk X dan Y (atas, bawah, kiri kanan) membuat total 6 input ke Arduino. Walaupun Arduino Uno mempunyai 6 input analog yang tersedia, kita perlu menggunakan dua pin ini untuk komunikasi I2C ke skrin dan pengawal servo.

Oleh kerana itu, saya memasukkan penukar analog ke digital MCP3008 (ADC). Cip ini mengambil sehingga 8 input analog dan menukarnya menjadi isyarat digital melalui pin komunikasi SPI Arduino seperti berikut:

  • MCP Pins 1-6> Output pemboleh ubah dari joystick ibu jari
  • MCP Pin 7 & 8> Tiada sambungan
  • MCP Pin 9 (DGND)> Tanah
  • Pin MCP 10 (CS / SHDN)> Uno Pin 12
  • Pin MCP 11 (DIN)> Uno Pin 11
  • Pin MCP 12 (DOUT)> Uno Pin 10
  • Pin MCP 13 (CLK)> Uno Pin 9
  • MCP Pin 14 (AGND)> Tanah
  • MCP Pin 15 & 16> + 5V

Sambungan kayu bedik dalam skema ditunjukkan sebagai contoh. Bergantung pada kayu bedik mana yang dibeli dan bagaimana ia dipasang, sambungan anda mungkin berbeza dari yang lain. Pelbagai jenama kayu bedik mungkin mempunyai pinout yang berbeza dan juga boleh mengorientasikan X dan Y secara berbeza. Yang penting ialah memahami apa yang diwakili oleh setiap input pada ADC. Setiap pin menunjukkan hubungan berikut dalam kod saya:

  • Pin 1 - Pangkalan - 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 asas
  • Pin 3 - Siku - Data analog pada pin ini akan memutar servo seterusnya ke atas dari servo bahu
  • Pin 4 - UP / DN Wrist - Data analog pada pin ini akan memutar servo pergelangan tangan, menaikkan dan menurunkan unit gripper
  • Pin 5 - The Gripper - Data analog pada pin ini akan membuka dan menutup gripper
  • Pin 6 - Rotate Wrist - Data analog pada pin ini akan memutar gripper

CATATAN: Semasa membeli dan memasang joystick jempol yang dirujuk dalam senarai bahagian, ingatlah bahawa orientasi modul mungkin berbeza dari modul saya, jadi, uji output x dan y untuk sambungan yang betul ke ADC. Juga, jika anda menggunakan panel kawalan bercetak 3D saya, lubang pelekap mungkin akan diimbangi dari lubang saya.

Keluaran

Adafruit PWM / Servo Controller menjadikan projek ini sangat mudah. Cukup sambungkan Servos ke header servo dan semua sambungan kuasa dan isyarat dikendalikan. Kecuali jika anda menjumpai servo dengan petunjuk panjang yang lebih panjang, anda akan memerlukan satu set sambungan kabel servo dalam jarak yang berbeza-beza sehingga semua kabel servo anda mencapai papan pengawal anda.

Servo disambungkan seperti berikut:

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

Selain itu, VCC dan V + kedua-duanya disambungkan ke +5 Volt dan GND disambungkan ke Ground.

CATATAN 1: Satu nota BESAR di sini: Voltan bekalan untuk keseluruhan projek masuk melalui blok terminal kuasa di Papan Kawalan Servo. Pin V + pada Servo Controller sebenarnya membekalkan kuasa dari blok terminal ke litar lain. Sekiranya anda perlu memprogram Uno anda, saya sangat mengesyorkan melepaskan pin V + sebelum menyambungkan Uno ke PC anda kerana pengambilan semasa dari servo boleh merosakkan port USB anda.

CATATAN 2: Saya menggunakan penyesuai dinding 6V AC ke DC untuk menghidupkan projek. Saya mengesyorkan penyesuai yang dapat membekalkan sekurang-kurangnya 4A arus sehingga apabila satu atau lebih servos terikat, lonjakan arus yang tiba-tiba tidak menjadikan sistem anda tidak pulih dan menetapkan semula Arduino anda.

Skrin LCD 16X2 disambungkan ke Ransel Adafruit LCD untuk memanfaatkan antara muka I2C yang sudah digunakan oleh Servo Controller. SCL pada Servo Controller dan CLK pada Backpack kedua-duanya bersambung ke Pin A5 di Uno. Begitu juga, SDA pada Servo Controller dan DAT pada Backpack kedua-duanya bersambung ke Pin A4 di Uno. Selain itu, 5V disambungkan ke +5 Volt dan GND disambungkan ke Ground. LAT pada Ransel tidak dihubungkan dengan apa-apa.

Terakhir, LED RGB disambungkan ke pin 7 (RED), 6 (Hijau), dan 5 (Biru) di Uno. Kaki tanah LED disambungkan ke Ground melalui perintang 330Ohm.

Memproses

Akhir sekali, baki sambungan Arduino yang tidak disenaraikan di atas adalah seperti berikut: Pin 5V disambungkan ke +5 Volt dan GND disambungkan ke Ground.

Dalam persediaan saya, saya menggunakan rel sisi papan roti untuk mengikat semua garisan kuasa dan tanah serta pin I2C untuk semua peranti.

Langkah 4: Kod

Kod
Kod

Seperti yang dinyatakan sebelum ini, saya pada awalnya membina projek ini sebagai demonstrasi untuk Maker Faire tempatan saya. Saya bermaksud untuk menjadi permainan kanak-kanak dan orang dewasa semasa berada di gerai kami. Ternyata, itu jauh lebih popular daripada yang saya bayangkan - begitu banyak, sehingga anak-anak memperjuangkannya. Jadi, ketika tiba masanya untuk menulis semula, saya memasukkan "Demo Mode" yang menerapkan had masa.

Lengan duduk di sana menunggu seseorang menggerakkan kayu bedik dan ketika mereka melakukannya, ia memulakan pemasa 60 saat. Pada akhir 60 saat, ia berhenti mengambil input dari pengguna dan "Rehat" selama 15 saat. Perhatian yang pendek merangkumi apa adanya, tempoh rehat ini sangat mengurangkan pertikaian untuk masa tongkat.

Operasi Asas

Kod yang disenaraikan di bahagian rujukan di bawah ini cukup mudah. Susunan melacak 6 sendi dengan min, maksimum, kedudukan rumah dan kedudukan semasa. Apabila lengan dihidupkan, fungsi permulaan menentukan perpustakaan yang diperlukan untuk bercakap dengan MCP3008, Ransel LCD (dan seterusnya skrin), dan menentukan pin LED. Dari sana ia melakukan pemeriksaan sistem asas dan menuju ke rumah lengan. Fungsi rumah bermula dengan gripper dan berjalan hingga ke pangkal sehingga meminimumkan peluang mengikat dalam keadaan normal. Sekiranya lengan dilanjutkan sepenuhnya, maka sebaiknya kembalikan lengan secara manual sebelum menghidupkannya. Oleh kerana servo generik tidak memberikan maklum balas mengenai kedudukannya, kita perlu meletakkan masing-masing pada titik yang telah ditentukan dan menjejaki sejauh mana masing-masing bergerak.

Gelung utama pertama kali dimulakan dalam mod menunggu - mencari kayu bedik untuk menjauh dari kedudukan tengahnya. Setelah itu berlaku, gelung utama mengubah keadaan menjadi keadaan undur. Semasa pengguna menggerakkan setiap kayu bedik, kedudukan relatif kayu bedik dari tengah akan menambah atau mengurangkan dari kedudukan yang diketahui sekarang dan mengemas kini servo yang sesuai. Setelah servo mencapai had yang ditentukan dalam satu arah, joystick akan berhenti. Pengguna perlu menggerakkan kayu bedik ke arah lain untuk menggerakkannya semula. Ini adalah had perisian yang dikenakan pada servo tanpa mengira perkakasan mereka berhenti. Ciri ini membolehkan anda menjaga pergerakan lengan dalam kawasan operasi yang ditentukan jika diperlukan. Sekiranya kayu bedik dilepaskan ke tengah, pergerakan akan berhenti.

Kod ini hanyalah titik permulaan umum. Anda boleh menambah mod anda sendiri mengikut kehendak anda. Salah satu contohnya ialah mod larian berterusan tanpa pemasa atau mungkin menambah butang tekan kayu bedik sebagai input dan menulis mod rakaman / main balik.

Langkah 5: Pautan dan Sumber

Rujukan Lengan

  • Catatan yang mengilhami projek ini
  • Catatan blog Pereka AsalLengan Robotik saya sendiri Pencengkam servo mini saya dan lengan robot yang lengkap Gandakan lengan robotik dan elektronik
  • Lengan Thingiverse
  • Thingiverse Mini Servo Gripper

Perisian Perisian

  • Sumber Pengawal Adafruit PWM / Servo
  • Perpustakaan MCP3008
  • Lembaran Data MCP3008

Panel Kawalan dan Kod

  • Lukisan Tinkercad dari Panel yang saya buat
  • Repositori kod semasa

Disyorkan: