Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Robot SCARA | Cara Membuat Robot Berbasis Arduino Anda Sendiri

Dalam tutorial ini kita akan belajar bagaimana membangun Robot SCARA berbasis Arduino. Saya akan menunjukkan kepada Anda seluruh proses pembuatannya, mulai dari mendesain robot hingga mengembangkan Antarmuka Pengguna Grafik kita sendiri untuk mengendalikannya.

Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini.

Ringkasan

Robot memiliki 4 derajat kebebasan dan digerakkan oleh 4 motor stepper NEMA 17. Selain itu, ia memiliki motor servo kecil untuk mengendalikan efektor akhir atau gripper robot dalam hal ini. Otak dari robot SCARA ini adalah papan Arduino UNO yang dipasangkan dengan pelindung CNC dan empat driver stepper A4988 untuk mengendalikan motor.

Menggunakan lingkungan pengembangan Pemrosesan, saya membuat Antarmuka Pengguna Grafis yang menampilkan kontrol Kinematika Maju dan Terbalik. Dengan Forward Kinematics kita dapat secara manual menggerakkan setiap sendi robot untuk mendapatkan posisi yang diinginkan. Dengan menggunakan penggeser di sisi kiri, kita dapat mengatur sudut setiap sambungan. Posisi akhir efektor akhir, nilai X, Y dan Z dihitung dan dicetak di sisi kanan layar.

Di sisi lain, dengan menggunakan Inverse Kinematics, kita dapat mengatur posisi end effector yang diinginkan, dan program akan secara otomatis menghitung sudut untuk setiap joint agar robot mencapai posisi yang diinginkan.

Saya sebenarnya membuat program sedemikian rupa sehingga kita dapat menggunakan kedua metode secara bersamaan, di layar yang sama. Sudut sambungan serta nilai X, Y, dan Z dari efektor akhir terhubung dan selalu ada di layar.

Tentu saja, robot juga dapat beroperasi secara otomatis. Menggunakan tombol “Simpan” pada program kita dapat menyimpan setiap gerakan atau posisi robot. Kemudian ketika kita menekan tombol “Run” robot akan mengeksekusi gerakan yang tersimpan dalam satu lingkaran, dari yang pertama hingga yang terakhir, berulang-ulang. Kami juga dapat menyesuaikan kecepatan gerakan dan akselerasi dari Antarmuka Pengguna.

Model 3D Robot SCARA

Untuk memulai, mari kita lihat model 3D.

Robot SCARA ini saya rancang menggunakan 3DEXPERIENCE SOLIDWORKS yang juga merupakan sponsor dari video ini.

3 3DEXPERIENCE SOLIDWORKS pada dasarnya adalah SOLIDWORKS dengan kemampuan cloud yang kami dapatkan melalui platform 3DEXPERIENCE. Semuanya bekerja melalui cloud, sehingga Anda atau siapa pun dari tim Anda dapat memiliki akses ke data atau model kapan saja, dari mana saja di dunia. Platform 3DEXPERIECE juga mencakup banyak aplikasi manajemen dan produktivitas yang berguna.

Misalnya, Project Planer adalah cara yang bagus untuk mengatur tugas Anda, menetapkan tenggat waktu, dan melacak kemajuan Anda. Dengan aplikasi Markup 3D, Anda dapat melihat, menjelajahi, dan mencatat model dari perangkat apa pun, seperti notebook, tablet, atau bahkan ponsel cerdas.

Ada juga pemodel 3D berbasis cloud terpisah yang disebut SOLIDWORKS xDesign, yang berjalan di dalam browser Anda. Ini dapat digunakan bersama dengan Solidworks atau sendiri dan sangat bagus untuk pemodelan, di mana saja, kapan saja, dan di perangkat apa pun.

Jadi, terima kasih banyak kepada Solidworks karena telah mensponsori konten pendidikan seperti ini. Jika Anda ingin mengetahui apakah SOLIDWORKS dan platform 3DEXPERIENCE dapat bekerja untuk Anda, periksa tautan berikut di bawah.

Coba 3DEXPERIENCE gratis dengan tautan khusus saya:www.solidworks.com/HTMTryNow

Pelajari lebih lanjut tentang 3DEXPERIENCE SOLIDWORKS: www.solidworks.com/HTMLearnMore

Oke, jadi mari kita kembali ke model dan menjelaskan bagaimana saya membuat desain ini. Tujuan saya untuk robot adalah sebagian besar bagian yang akan dicetak 3D. Jadi, semua yang Anda lihat di sini dapat dicetak 3D bahkan pada printer 3D dengan tempat pencetakan yang lebih kecil. Katrol GT2 juga dapat dicetak 3D. Saya menggunakan desain parametrik untuk membuatnya, jadi jika diperlukan kami dapat dengan mudah mengubah ukurannya. Kita hanya perlu mengubah jumlah gigi, dan semua dimensi akan otomatis diperbarui untuk membuat katrol menjadi ukuran yang tepat.

Untuk sambungan pertama, kami memiliki rasio reduksi 20:1, yang dicapai dalam dua tahap dengan katrol yang dirancang khusus ini. Dua sabuk GT2 yang saya gunakan di sini adalah loop tertutup dengan panjang 200mm dan 300mm. Sambungan robot terdiri dari dua bantalan dorong dan satu bantalan radial.

Untuk sambungan kedua, kami memiliki rasio reduksi 16:1, dicapai dengan cara yang sama, dan sambungan ketiga memiliki rasio reduksi 4:1 hanya dengan reduksi satu tahap. Sambungannya berlubang, jadi kita bisa menggunakannya untuk melewati kabel dari motor dan sakelar mikro. Untuk masing-masing sabuk, ada slot tempat kita dapat memasang katrol pemalas untuk mengencangkannya.

Gripper robot digerakkan oleh motor servo MG996R dan kita dapat dengan mudah mengubah ujung gripper untuk mencapai ukuran grip yang berbeda. Sumbu Z robot digerakkan oleh sekrup timah 8mm, sedangkan seluruh rakitan lengan meluncur pada empat batang halus 10mm dan bantalan bola linier. Ketinggian robot hanya tergantung pada panjang batang halus, yang dalam hal ini adalah 40cm. Sekrup utama harus lebih pendek 2 cm agar sesuai dengan konfigurasi ini, atau jika tidak, motor Z dapat dinaikkan 2 cm menggunakan mur pengatur jarak.

Anda dapat menemukan dan mengunduh model 3D ini, serta menjelajahinya di browser Anda di Thangs:

Unduh model perakitan 3D di Thans.

File STL untuk Pencetakan 3D:

Mencetak 3D bagian robot

Baiklah, jadi kita bisa melanjutkan dengan pencetakan 3D bagian-bagiannya. Saya menggunakan printer 3D Creality CR-10 saya untuk mencetak semua bagian, yang merupakan printer 3D yang sangat bagus dengan harga yang terjangkau. Seperti yang saya sebutkan, bagian-bagiannya juga dirancang agar sesuai dengan printer 3D yang lebih kecil, misalnya Ender3.

Untuk sebagian besar bagian saya menggunakan bahan PLA+, yang biru, serta PLA biasa untuk puli dan gripper. Saya membutuhkan waktu sekitar 120 jam untuk mencetak semua bagian dengan kecepatan cetak 60mm/s. Bagian dasar adalah bagian terbesar untuk dicetak yang memakan waktu sekitar 32 jam. Namun, jika kami meningkatkan kecepatan pencetakan, kami pasti dapat mencetak suku cadang lebih cepat.

Lihat juga: Printer 3D Terbaik untuk Pemula dan Pembuat [Pembaruan 2021]

Berikut adalah semua bagian cetakan 3D.

Hanya catatan singkat di sini, bahwa saya mencetak semuanya dengan ekspansi Horizontal yang diaktifkan -0.1mm dalam perangkat lunak pengiris. Hal ini memungkinkan suku cadang memiliki dimensi yang lebih akurat, dan lebih cocok dengan suku cadang mekanis lainnya seperti bantalan, batang, dan baut.

Merakit robot

Berikut daftar komponen yang dibutuhkan untuk merakit robot SCARA berbasis Arduino ini. Daftar komponen elektronik dapat ditemukan di bawah di bagian diagram rangkaian artikel.

  • 4x Poros batang halus – 10mm 400mm……… AmazonBanggood / AliExpress
  • 1x Sekrup timah – 8mm 400mm  ………………… AmazonBanggood / AliExpress
  • 4x Bantalan linier 10mm …………………..……. AmazonBanggood / AliExpress
  • 1x Bantalan bola dorong 40x60x13mm   …..… Amazon / AliExpress
  • 2x Bantalan bola dorong 35x52x12mm   …..… Amazon / AliExpress
  • 5x Bantalan bola radial 8x22x7mm ………………. AmazonBanggood / AliExpress
  • Berbagai panjang baut dan mur M3, M4 dan M5

Berikut adalah ukuran baut yang diperlukan untuk proyek ini:

Kami memulai perakitan dengan pangkalan. Di sini pertama-tama kita memasukkan bantalan bola radial dengan diameter dalam 35mm dan diameter luar 47mm.

Kemudian dilanjutkan dengan bantalan dorong pertama yang memiliki diameter dalam 40mm dan luar 60mm. Bantalan ini akan berada di antara puli dan alas.

Di sisi lain alas, kami menggunakan bantalan dorong lain dengan ukuran yang sama bersama dengan coupler sambungan.

Kemudian kita dapat memasangkan puli dan bagian atas menggunakan empat baut M4 dengan panjang 55mm. Kita perlu menggunakan mur pengunci sendiri di sini dan mengencangkannya dengan benar sehingga sambungan kokoh sekaligus dapat berputar dengan bebas.

Selanjutnya, kita perlu memasang katrol tengah. Katrol ini dipasangkan dengan katrol sambungan dengan sabuk GT2 300mm. Untuk memasang katrol ini, kami menggunakan dua bantalan bola 608, satu di atas dan yang lainnya di sisi bawah alas. Kemudian menggunakan baut M8 45mm, washer, dan mur pengunci otomatis, kami dapat mengencangkan katrol di tempatnya.

Selanjutnya, kita perlu memasang motor stepper untuk sambungan ini. Stepper akan dipasangkan dengan puli tengah dengan sabuk 200mm. Untuk mengencangkannya ke alas, kita membutuhkan empat baut M3.

Sebelum mengencangkan baut, kita perlu meregangkan sabuk sebanyak yang kita bisa. Sekedar catatan singkat di sini bahwa saya benar-benar mengganti baut M8 untuk katrol tengah dengan kepala di bagian bawah sehingga dapat masuk ke dalam alas.

Pada titik ini, kita harus memeriksa apakah ikat pinggang cukup kencang. Jika tidak, kita dapat menggunakan beberapa katrol pemalas untuk mengencangkannya dengan lebih baik. Di sini saya menggunakan baut M5 35mm dan beberapa mur untuk membuat katrol pengencang.

Itu dapat dipasang pada slot di kedua sisi sabuk sehingga kami dapat mengencangkan sabuk sebanyak yang kami inginkan. Saya akhirnya mengencangkan ikat pinggang di kedua sisi. Dengan ini, sambungan pertama selesai.

Saya melanjutkan dengan memasang sakelar mikro untuk sambungan ini. Sebelum mengamankannya di tempatnya, saya sudah menyolder kabel ke sana, karena agak ketat di sini untuk melakukannya setelahnya. Kami membutuhkan baut dan mur M3 20mm untuk mengamankan sakelar mikro di tempatnya.

Coupler sambungan melewati begitu menutup sakelar sehingga saya akhirnya hanya menggunakan satu baut untuk mengamankan sakelar. Di lubang lain saya hanya memasukkan baut yang lebih pendek dan menempelkannya di sisi bawah. Dengan begitu sakelar cukup aman dan dapat berfungsi dengan baik.

Ok, jadi selanjutnya kita bisa mulai merakit sumbu Z. Pertama, di atas joint coupler kita perlu mengamankan bagian pelat bawah sumbu Z.

Di atasnya kita dapat mengamankan empat klem untuk batang halus. Kemudian kita bisa memasukkan batang halus di tempatnya. Mereka harus pas dan turun sampai ke bagian coupler sendi. Kita bisa mengencangkan batang dengan klem dengan beberapa baut dan mur M4.

Pada titik ini kita perlu memasukkan bantalan untuk sekrup utama. Untuk menyelesaikan bagian ini, kita cukup menggeser penutup sederhana yang akan menyembunyikan semuanya dan memberikan tampilan yang lebih bersih pada robot.

Selanjutnya, kita bisa melanjutkan dengan merakit lengan pertama robot. Lengan akan dibuat dari dua bagian yang dibaut menjadi satu. Bagian pertama adalah di mana kita perlu memasang bantalan linier yang akan meluncur melalui batang halus. Memasukkannya pada tempatnya bisa jadi agak sulit, karena cukup pas.

Sebenarnya, ini tergantung pada seberapa akurat printer Anda dapat mencetak bagian-bagiannya. Oleh karena itu, saya sarankan menggunakan fitur Ekspansi Horisontal saat mencetak bagian dan menyesuaikannya dengan printer Anda. Dalam kasus saya, saya tidak dapat memasukkan dua bantalan untuk turun sepenuhnya, tetapi itu bukan masalah besar.

Ok, jadi sekarang kita bisa memasangkan kedua bagian lengan bersama-sama. Untuk tujuan itu, kami akan menggunakan empat baut M5 25mm.

Selanjutnya kita bisa memasang motor stepper kedua. Disini saya akan menggunakan pulley GT2 print 3D dengan 20 gigi. Saya membuat katrol ini menggunakan desain parametrik yang saya sebutkan sebelumnya dan bekerja dengan cukup baik. Di sini kita juga perlu mengencangkan mur sekrup timah pada tempatnya.

Selanjutnya, kita dapat memasang sabuk dan puli untuk sambungan kedua. Di sini kita membutuhkan satu sabuk dengan panjang 400mm dan satu dengan panjang 300mm. Prosedur untuk menginstalnya hampir sama dengan yang dijelaskan untuk sambungan pertama.

Di sini untuk sambungan kedua dan ketiga, kami sebenarnya menggunakan bantalan yang lebih kecil dibandingkan dengan yang pertama. Bantalan bola radial memiliki diameter dalam 30mm dan diameter luar 42mm, dan bantalan dorong memiliki diameter dalam 35mm dan luar 52mm.

Sebelum memasang coupler sambungan kedua, kita perlu memasukkan enam baut M4 20mm ke dalam slot segi enam.

Mereka akan berfungsi untuk menempelkan lengan kedua ke sambungan. Jika diperlukan, untuk mengencangkan sabuk kita dapat menggunakan metode yang sama seperti yang dijelaskan sebelumnya dengan katrol pemalas. Akhirnya, saya mengamankan sakelar mikro kedua di tempatnya dan perakitan lengan nomor satu selesai.

Saya melanjutkan dengan menempelkan lengan kedua ke coupler sendi. Disini kami menggunakan baut-baut pada joint coupler yang telah kami pasang sebelumnya, untuk mengamankan bagian atas dari second arm.

Pada titik ini saya ingin menguji seberapa banyak serangan balik yang dimiliki sendi. Tentu, saya mengharapkan serangan balasan karena sabuk, tetapi sebenarnya ada lebih banyak permainan di antara dua bagian sambungan. Saya perhatikan bahwa masalahnya adalah lubang di mana baut pergi, sedikit lebih besar dari baut itu sendiri. Untuk mengatasi masalah tersebut, kita perlu memasang lebih erat antara baut dan lubangnya.

Jadi, dalam kasus saya, saya memperluas lubang menggunakan bor 4,5 mm, dan menggunakan baut M5, bukan baut M4, untuk mengencangkan kedua bagian sambungan. Namun, saya memperbarui model 3D sehingga lubangnya menjadi 3,5 mm dan Anda dapat menggunakan baut M4 untuk menyatukan kedua bagian ini. Saya juga kembali ke sendi pertama dan melakukan hal yang sama. Sekarang permainan di sendi hampir hilang, kecuali serangan balik kecil yang kita dapatkan dari sabuk.

Baiklah, jadi sekarang kita bisa melanjutkan dengan merakit lengan kedua. Di sini pertama-tama kita perlu memasang motor stepper untuk sambungan ketiga.

Saya menggunakan motor stepper yang lebih kecil dalam hal ini sehingga lengannya sedikit lebih ringan. Namun, ini adalah motor stepper NEMA 17 tetapi dengan panjang lebih pendek 24cm.

Sekali lagi, kami memiliki prosedur yang sama untuk memasang sabuk dan katrol untuk sambungan ketiga, kecuali bahwa di sini kami hanya menggunakan reduksi satu tahap dengan sabuk 400mm. Selanjutnya, sebelum memasang bagian bawah lengan ini ke bagian atas, kita perlu menghubungkan motor dan sakelar mikro dan meneruskan kabelnya melalui sambungan kedua.

Pada titik ini, kita juga perlu memasukkan kabel untuk end-effector. Dalam kasus saya, saya memasukkan kabel 4 kabel dari motor stepper yang akan saya gunakan untuk menggerakkan motor servo untuk gripper saya yang membutuhkan 3 kabel.

Selanjutnya, kita perlu memasukkan mur M4 di slot lengan atas yang akan berfungsi untuk mengamankan bagian bawahnya.

Tepat sebelum menggabungkannya, kita harus melewati kabel di bawah kait tersebut sehingga mereka menjauh dari bagian yang bergerak.

Kabel yang keluar dari sambungan kedua sebenarnya bisa tersangkut oleh mur pada katrol, oleh karena itu saya membuat dudukan kawat sederhana untuk menahan kabel dari mur.

Kita harus mengatur kabel untuk melewati satu sisi lengan untuk menghindari kontak dengan bagian yang bergerak. Akhirnya, kita bisa memasukkan penutup lengan pertama.

Penutup diamankan ke lengan dengan sambungan snap-fit. Dengan ini, perakitan lengan robot selesai.

Jadi selanjutnya, kita dapat memasukkan seluruh rakitan ini ke batang sumbu Z.

Kemudian kita perlu menyiapkan pelat atas sumbu Z yang akan menahan ujung atas batang. Di sini pertama-tama kita dapat memasang sakelar mikro untuk sumbu Z, dan memasang klem for ke pelat.

Sebelum memasang pelat atas, pertama-tama saya memasukkan penutup sederhana seperti di bawah ini, untuk menyembunyikan klem, baut, dan sakelar mikro. Kemudian kita dapat memasukkan dan mengencangkan pelat atas ke batang menggunakan klem.

Selanjutnya, kita perlu memasukkan sekrup timah pada tempatnya.

Yang saya punya sedikit lebih panjang, jadi saya memotongnya menjadi 38cm menggunakan gergaji tangan logam. Selanjutnya, kita bisa memasang motor stepper keempat pada tempatnya. Di sini kita perlu menggunakan coupler poros 5mm hingga 8mm untuk menghubungkan motor dengan sekrup utama.

Terakhir, kita dapat memasukkan kabel melalui penutup dan mengencangkannya ke pelat atas menggunakan dua baut.

Ok jadi, selanjutnya kita bisa melakukan beberapa manajemen kabel. Saya menggunakan selongsong kabel untuk menyatukan kabel dan membersihkan kekacauan. Saya juga menggunakan beberapa ikatan zip untuk tujuan itu.

Sebelum memasang kabel di selongsong kabel, sebaiknya tandai masing-masing kabel agar Anda tidak salah menyambungkan.

Yang tersisa sekarang adalah membuat efektor akhir dari robot. Kami benar-benar dapat membuat dan memasang segala jenis efektor akhir ke robot. Saya memilih untuk membuat gripper sederhana yang digerakkan oleh motor servo MG996R. Gripper didasarkan pada dua batang 6mm di mana kedua sisinya meluncur.

Kedua sisi geser terhubung ke servo dengan tanduk servo, beberapa tautan cetak 3D dan baut dan mur M3. Saya menggunakan baut dan mur M3 untuk seluruh rakitan gripper. Anda benar-benar dapat menemukan daftar lengkap baut dan mur yang diperlukan untuk proyek ini di artikel situs web. Ruang untuk mengencangkan baut dan mur cukup rapat, sehingga Anda perlu nyali untuk merakit beberapa bagian ini.

Padahal, kelebihan desain ini adalah kita bisa dengan mudah mengganti ujung gripper. Mereka bisa lebih lebar atau lebih sempit atau mereka bisa memiliki bentuk tertentu. Kita dapat memasang gripper ke lengan robot menggunakan beberapa baut dan mur M4.

Terakhir, kita dapat menghubungkan motor servo ke kabel yang telah kita pasang sebelumnya.

Dan hanya itu, lengan robot SCARA kami telah dirakit sepenuhnya. Yang tersisa sekarang adalah menyambungkan komponen elektronik proyek ini.

Diagram Sirkuit Robot SCARA

Jadi, kita akan menggunakan papan Arduino UNO yang dikombinasikan dengan pelindung CNC dan empat drive stepper A4988.

Meskipun itu robot dan tampaknya lebih rumit, hanya itu yang kami butuhkan untuk proyek ini. Perlu diperhatikan bahwa, selain Arduino UNO, kami juga dapat menggunakan Arduino MEGA yang dikombinasikan dengan papan pengontrol printer RAMPS 3D.

Namun demikian, saya 3D mencetak kasing untuk Arduino UNO yang dapat dengan mudah dipasang ke dasar robot. Saya akan menggunakan resolusi seperempat langkah untuk menggerakkan stepper, jadi saya menempatkan beberapa jumper di pin yang sesuai. Sekarang kita dapat menghubungkan motor stepper dan sakelar mikro ke pelindung CNC.

Berikut diagram rangkaian robot SCARA ini dan bagaimana semuanya harus terhubung.

Anda bisa mendapatkan komponen yang dibutuhkan untuk proyek ini dari tautan di bawah ini:

  • Motor Stepper – NEMA 17……………… 
  • A4988 Stepper Driver…………………..… 
  • Perisai CNC Arduino ………………………. AmazonBanggood / AliExpress
  • Arduino Uno………………………..… 
  • Motor Servo MG996R…………………..
  • Limit Switch …………………………………. AmazonBanggood / AliExpress
  • Pasokan Listrik DC …………………………. Amazon  / Bagus / AliExpress

Untuk menyalakan robot, kita membutuhkan catu daya 12V yang mampu menyediakan minimal 4A, tetapi saya akan menyarankan catu daya 12V 6A. Tentu saja, ini tergantung pada bagaimana batasan driver stepper saat ini diatur, dan saya sarankan untuk mengaturnya pada level serendah mungkin.

Pada akhirnya, saya meremas semua kabel dalam casing, sambil mencoba membiarkan drive pendingin bebas, dan menambahkan penutup ke dalamnya.

Menyelesaikan perakitan

Robot SCARA sekarang telah selesai, dan yang perlu kita lakukan sekarang adalah mengamankan pangkalan ke sesuatu. Untuk itu, saya akan menggunakan kayu tick berukuran 20mm. Di sisi bawah dasar robot kami memiliki 12 lubang yang tersedia untuk mengamankannya. Jadi, saya mencetak gambar dasar robot, dan menggunakannya untuk membuat lubang di kayu.

Di sisi bawah saya countersunk mereka karena saya akan menggunakan baut kepala datar sehingga mereka berkedip dengan permukaan kayu. Saya memasukkan mur M4 di slot dasar dan kemudian mengamankan dasar kayu ke dasar robot.

Sekarang idealnya, untuk memperbaiki robot di tempatnya, kita bisa menguncinya ke meja atau saya cukup menggunakan klem untuk tujuan itu.

Jadi begitulah, robot SCARA kita sekarang sudah selesai sepenuhnya. Apa yang tersisa di video ini adalah melihat cara kerja robot.

Lihat juga: Lengan Robot Arduino DIY dengan Kontrol Ponsel Cerdas

Cara kerja robot SCARA

Ada dua metode untuk mengontrol robot dalam hal penentuan posisi dan orientasi, yaitu menggunakan kinematika maju atau mundur.

Kinematika maju digunakan ketika kita perlu menemukan posisi dan orientasi efektor akhir dari sudut sambungan yang diberikan.

Di sisi lain, kinematika terbalik digunakan ketika kita perlu menemukan sudut bersama untuk posisi tertentu dari efektor akhir. Metode ini lebih masuk akal dalam robotika karena sebagian besar waktu kita ingin robot memposisikan alatnya ke lokasi tertentu atau koordinat X, Y, dan Z tertentu.

Dengan kinematika terbalik, kita dapat menghitung sudut-sudut sambungan menurut koordinat yang diberikan.

Persamaan yang akan saya gunakan untuk kinematika maju dan mundur berasal dari aturan dan rumus trigonometri.

Memrogram Robot SCARA – Arduino dan Memproses Kode

Di bagian bawah artikel Anda dapat menemukan Arduino dan kode Pemrosesan.

Berikut adalah tampilan persamaan dalam kode, yang ditulis di lingkungan pengembangan Processing.

// FORWARD KINEMATICS
void forwardKinematics() {
  float theta1F = theta1 * PI / 180;   // degrees to radians
  float theta2F = theta2 * PI / 180;
  xP = round(L1 * cos(theta1F) + L2 * cos(theta1F + theta2F));
  yP = round(L1 * sin(theta1F) + L2 * sin(theta1F + theta2F));
}Code language: Arduino (arduino)

Jadi, dengan kinematika maju, kami menghitung nilai X dan Y dari efek-akhir, menurut sudut sambungan yang ditetapkan dari dua lengan robot, theta1 dan theta2, serta panjangnya L1 dan L2.

Di sisi lain, dengan kinematika terbalik kami menghitung sudut bersama, theta2 dan theta1, menurut posisi yang diberikan atau koordinat X dan Y.

/ INVERSE KINEMATICS
void inverseKinematics(float x, float y) {
  theta2 = acos((sq(x) + sq(y) - sq(L1) - sq(L2)) / (2 * L1 * L2));
  if (x < 0 & y < 0) {
    theta2 = (-1) * theta2;
  }
  
  theta1 = atan(x / y) - atan((L2 * sin(theta2)) / (L1 + L2 * cos(theta2)));
  
  theta2 = (-1) * theta2 * 180 / PI;
  theta1 = theta1 * 180 / PI;

 // Angles adjustment depending in which quadrant the final tool coordinate x,y is
  if (x >= 0 & y >= 0) {       // 1st quadrant
    theta1 = 90 - theta1;
  }
  if (x < 0 & y > 0) {       // 2nd quadrant
    theta1 = 90 - theta1;
  }
  if (x < 0 & y < 0) {       // 3d quadrant
    theta1 = 270 - theta1;
    phi = 270 - theta1 - theta2;
    phi = (-1) * phi;
  }
  if (x > 0 & y < 0) {       // 4th quadrant
    theta1 = -90 - theta1;
  }
  if (x < 0 & y == 0) {
    theta1 = 270 + theta1;
  }
  
  // Calculate "phi" angle so gripper is parallel to the X axis
  phi = 90 + theta1 + theta2;
  phi = (-1) * phi;

  // Angle adjustment depending in which quadrant the final tool coordinate x,y is
  if (x < 0 & y < 0) {       // 3d quadrant
    phi = 270 - theta1 - theta2;
  }
  if (abs(phi) > 165) {
    phi = 180 + phi;
  }

  theta1=round(theta1);
  theta2=round(theta2);
  phi=round(phi);
  
  cp5.getController("j1Slider").setValue(theta1);
  cp5.getController("j2Slider").setValue(theta2);
  cp5.getController("j3Slider").setValue(phi);
  cp5.getController("zSlider").setValue(zP);
}Code language: Arduino (arduino)

Bergantung pada kuadran mana posisi diatur, kami membuat beberapa penyesuaian pada sudut sambungan dengan pernyataan "jika" ini. Untuk konfigurasi robot ini, kami sebenarnya menghitung kinematika terbalik hanya dengan dua tautan. Sudut ketiga yang saya sebut "phi" digunakan untuk mengatur orientasi gripper.

Graphic User Interface dibuat menggunakan library controlP5 untuk Processing IDE. Dengan library ini kita dapat dengan mudah membuat tombol, slider, bidang teks dan sebagainya.

Misalnya, kami menggunakan bilah geser di sisi kiri untuk mengontrol sudut sambungan, dan menggunakan bidang teks kami dapat memasukkan posisi yang kami inginkan untuk robot kami. Dengan setiap tindakan yang kami ambil di sini dengan program, kami mengirim data ke papan Arduino melalui port serial.

if (gripperValuePrevious != gripperValue) {
    if (activeIK == false) {     // Check whether the inverseKinematics mode is active, Executre Forward kinematics only if inverseKinematics mode is off or false
      gripperAdd = round(cp5.getController("gripperValue").getValue());
      gripperValue=gripperAdd+50;
      updateData();
      println(data);
      myPort.write(data);
    }
  }Code language: Arduino (arduino)

Data ini mencakup sudut sambungan, nilai gripper, nilai kecepatan dan akselerasi, dan indikator untuk mengetahui apakah kita telah mengklik tombol simpan atau jalankan.

public void updateData() {
  data = str(saveStatus)
    +","+str(runStatus)
    +","+str(round(cp5.getController("j1Slider").getValue())) 
    +","+str(round(cp5.getController("j2Slider").getValue()))
    +","+str(round(cp5.getController("j3Slider").getValue()))
    +","+str(round(cp5.getController("zSlider").getValue()))
    +","+str(gripperValue)
    +","+str(speedSlider)
    +","+str(accelerationSlider);
}Code language: Arduino (arduino)

Semua data ini datang sebagai satu String panjang di Arduino. Jadi di sini, pertama-tama kita perlu mengekstrak data dari string itu dan memasukkannya ke dalam variabel terpisah.

if (Serial.available()) {
    content = Serial.readString(); // Read the incomding data from Processing
    // Extract the data from the string and put into separate integer variables (data[] array)
    for (int i = 0; i < 10; i++) {
      int index = content.indexOf(","); // locate the first ","
      data[i] = atol(content.substring(0, index).c_str()); //Extract the number from start to the ","
      content = content.substring(index + 1); //Remove the number from the string
    }
    /*
     data[0] - SAVE button status
     data[1] - RUN button status
     data[2] - Joint 1 angle
     data[3] - Joint 2 angle
     data[4] - Joint 3 angle
     data[5] - Z position
     data[6] - Gripper value
     data[7] - Speed value
     data[8] - Acceleration value
    */Code language: Arduino (arduino)

Sekarang dengan variabel-variabel ini kita dapat mengambil tindakan dengan robot. Misalnya, jika kita menekan tombol SIMPAN, kita menyimpan nilai sudut sambungan saat ini dalam larik terpisah.

// If SAVE button is pressed, store the data into the appropriate arrays
    if (data[0] == 1) {
      theta1Array[positionsCounter] = data[2] * theta1AngleToSteps; //store the values in steps = angles * angleToSteps variable
      theta2Array[positionsCounter] = data[3] * theta2AngleToSteps;
      phiArray[positionsCounter] = data[4] * phiAngleToSteps;
      zArray[positionsCounter] = data[5] * zDistanceToSteps;
      gripperArray[positionsCounter] = data[6];
      positionsCounter++;
    }Code language: Arduino (arduino)

Jika kita mengklik tombol RUN, kita menjalankan langkah-langkah yang disimpan dan seterusnya.

Untuk mengontrol motor stepper, saya menggunakan library AccelStepper. Meskipun ini adalah perpustakaan yang bagus untuk mengendalikan beberapa stepper pada saat yang sama, ia memiliki beberapa keterbatasan dalam hal mengendalikan robot seperti ini. Saat mengontrol beberapa stepper, library tidak dapat menerapkan akselerasi dan deselerasi, yang penting untuk pengoperasian robot yang lebih lancar.

stepper1.moveTo(stepper1Position);
  stepper2.moveTo(stepper2Position);
  stepper3.moveTo(stepper3Position);
  stepper4.moveTo(stepper4Position);

  while (stepper1.currentPosition() != stepper1Position || stepper2.currentPosition() != stepper2Position || stepper3.currentPosition() != stepper3Position || stepper4.currentPosition() != stepper4Position) {
    stepper1.run();
    stepper2.run();
    stepper3.run();
    stepper4.run();
  }Code language: Arduino (arduino)

Saya masih berhasil menerapkan akselerasi dan deselerasi dengan perpustakaan, tetapi tidak semulus yang saya inginkan.

Here are full Arduino and Processing codes for this Arduino SCARA robot project:

Wrap up

So finally, once we upload the code to the Arduino, we can run the processing program, connect the power and the scara robot will start moving to its home position.

From there on, we can do whatever we want the it. We can play around manually or set it to work automatically. Of course, we can attach any kind of end-effector and make cool stuff with it. For example, we can even attach a 3D printer hot end to the robot and so make the robot a 3D printer, or attach a laser head and make it a laser cutter. I do plan try these two ideas, so make sure you subscribe to my channel so you don’t miss them in some of my future videos.

Before this video ends, I would like to give you few more notes about this project. I found the robot to be not as rigid as I expected.

I guess the problem is that almost the entire SCARA robot, the Z-axis and the arms are supported only by the first joint. The whole weight and the inertial forces generated when moving, can make quite a stress to base where the first joint is located, and as it’s just a plastic it tends to bend a little bit. Also, these belts are not backlash free so we reduce the robot rigidity with that too. However, I think the overall project is good enough so you to learn how SCARA robots work, and gives you the courage to build one for yourself.

Feel free to ask any question in the comments section below and check my Arduino Projects Collection.


Proses manufaktur

  1. Meretas Lego EV3:Bangun Sensor Objek Anda Sendiri "Mata"
  2. Buat Robot Streaming Video Terkendali Internet Anda dengan Arduino dan Raspberry Pi
  3. Whitepaper:Cara Menemukan Potensi Robot Anda
  4. Cara Membangun Sauron Penguasa Robot
  5. Cara Membuat Monitor Energi Arduino dan Data Logger
  6. Cara Meretas Remote IR
  7. Panduan Utama:Cara Memilih Robot SCARA yang Tepat
  8. Littlearm 2C:Membangun Lengan Robot Arduino Cetak 3D
  9. Cara membuat Pintu Otomatis Berbasis Arduino
  10. Cara Membangun Peta Jalan Otomasi Anda dalam 7 Langkah