Buat Robot SCARA DIY dengan Arduino – Panduan Langkah demi Langkah
Dalam tutorial ini kita akan mempelajari cara membangun robot SCARA berbasis Arduino. Saya akan menunjukkan seluruh proses pembangunnya, mulai dari merancang robot hingga mengembangkan Antarmuka Grafik Pengguna (GUI) sendiri untuk mengontrolnya.
Anda dapat menonton video berikut atau membaca tutorial tertulis di bawahnya.
Ringkasan
Robot ini memiliki 4 derajat kebebasan dan didorong oleh 4 motor stepper NEMA 17. Selain itu, memiliki servo kecil untuk mengontrol end effector atau pegangan robot dalam hal ini. Otak dari robot SCARA ini adalah papan Arduino UNO yang dipasangkan dengan CNC shield dan empat driver stepper A4988 untuk mengontrol motor.
Menggunakan lingkungan pengembangan Processing, saya membuat Antarmuka Grafik Pengguna yang memiliki kontrol Forward dan Inverse Kinematics. Dengan Forward Kinematics kita dapat memindahkan setiap sendi robot secara manual untuk mendapatkan posisi yang diinginkan. Menggunakan slider di sisi kiri, kita dapat mengatur sudut setiap sendi. Posisi akhir end effector, nilai X, Y dan Z dihitung dan dicetak di sisi kanan layar.
Di sisi lain, menggunakan Inverse Kinematics kita dapat menetapkan posisi end effector yang diinginkan, dan program akan secara otomatis menghitung sudut untuk setiap sendi agar robot mencapai posisi yang diinginkan tersebut.
Saya sebenarnya membuat program dengan cara yang memungkinkan kita menggunakan kedua metode pada saat yang sama, di layar yang sama. Sudut sendi serta nilai X, Y dan Z end effector terhubung dan selalu ada di layar.
Tentu saja, robot juga dapat beroperasi secara otomatis. Menggunakan tombol "Save" pada program kita dapat menyimpan setiap gerakan atau posisi robot. Kemudian ketika kita menekan tombol "Run" robot akan mengeksekusi gerakan yang disimpan dalam loop, dari yang pertama hingga yang terakhir, berulang-ulang. Kita juga dapat menyesuaikan kecepatan gerakan dan percepatan dari Antarmuka Pengguna.
Model 3D Robot SCARA
Untuk memulai, mari kita lihat model 3D.
Saya merancang robot SCARA ini menggunakan 3DEXPERIENCE SOLIDWORKS yang juga merupakan sponsor video ini.
3 3DEXPERIENCE SOLIDWORKS pada dasarnya adalah SOLIDWORKS dengan kemampuan cloud yang kita dapatkan melalui platform 3DEXPERIENCE. Semua bekerja melalui cloud, jadi Anda atau siapa pun dari tim Anda dapat mengakses data atau model kapan saja, dari mana saja di dunia. Platform 3DEXPERIENCE juga mencakup banyak aplikasi produktivitas dan manajemen yang berguna.
Misalnya, Project Planner adalah cara yang bagus untuk mengorganisir tugas, menetapkan batas waktu dan melacak kemajuan Anda. Dengan aplikasi 3D Markup, Anda dapat melihat, menjelajahi dan mencatat catatan model dari perangkat apa pun, seperti notebook, tablet atau bahkan smartphone.
Ada juga pemodel 3D terpisah berbasis cloud yang disebut SOLIDWORKS xDesign, yang berjalan di dalam browser Anda. Ini dapat digunakan bersama dengan Solidworks atau secara mandiri dan sangat bagus untuk pemodelan, di mana saja, kapan saja dan di perangkat apa pun.
Jadi, terima kasih besar kepada Solidworks atas sponsor konten edukasi seperti ini. Jika Anda ingin mengetahui apakah SOLIDWORKS dan platform 3DEXPERIENCE dapat bekerja untuk Anda, periksa tautan di bawah ini.
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 datang dengan desain ini. Tujuan saya untuk robot adalah sebagian besar bagian dapat dicetak 3D. Jadi, segala sesuatu yang Anda lihat di sini dapat dicetak 3D bahkan pada printer 3D dengan meja cetak lebih kecil. Puli GT2 juga dapat dicetak 3D. Saya menggunakan desain parametrik untuk membuatnya, jadi jika diperlukan kita dapat dengan mudah mengubah ukurannya. Kita hanya perlu mengubah jumlah gigi, dan semua dimensi akan secara otomatis diperbarui untuk membuat puli ukuran yang tepat.
Untuk sendi pertama, kita memiliki rasio reduksi 20:1, yang dicapai dalam dua tahap dengan puli khusus yang dirancang ini. Dua sabuk GT2 yang saya gunakan di sini adalah loop tertutup dengan panjang 200mm dan 300mm. Sendi robot terdiri dari dua bearing dorong dan satu bearing radial.
Untuk sendi kedua, kita memiliki rasio reduksi 16:1, yang dicapai dengan cara yang sama, dan sendi ketiga memiliki rasio reduksi 4:1 dengan hanya satu tahap reduksi. Sendi tersebut berlubang, jadi kita dapat menggunakannya untuk melewatkan kabel dari motor dan mikroswitch. Untuk setiap sabuk, ada slot tempat kita dapat memasang puli pengendali untuk menegangkan sabuk.
Pegangan robot didorong oleh servo motor MG996R dan kita dapat dengan mudah mengubah ujung pegangan untuk mencapai ukuran pegangan yang berbeda. Sumbu Z robot didorong oleh baut lead 8mm, sementara seluruh rangkaian lengan meluncur pada empat rod halus 10mm dan bearing bola linear. Tinggi robot tergantung pada panjang rod halus, yang dalam hal ini adalah 40cm. Baut lead perlu 2cm lebih pendek untuk muat dalam konfigurasi ini, atau jika tidak, motor Z dapat diangkat 2 cm menggunakan dadu jarak.
Anda dapat menemukan dan mengunduh model 3D ini, serta menjelajahlah di browser Anda di Thangs:
Unduh model rangkaian 3D di Thangs.
Berkas STL untuk cetak 3D:
Mencetak Bagian Robot dengan 3D
Baiklah, jadi kita dapat melanjutkan untuk mencetak bagian-bagian dengan 3D. Saya menggunakan printer 3D Creality CR-10 untuk mencetak semua bagian, yang merupakan printer 3D yang sangat bagus dengan harga terjangkau. Seperti yang saya sebutkan, bagian-bagian dirancang untuk muat pada printer 3D yang lebih kecil juga, misalnya Ender3.
Untuk sebagian besar bagian saya menggunakan bahan PLA+, yang biru, serta PLA normal untuk puli dan pegangan. Saya memakan waktu sekitar 120 jam untuk mencetak semua bagian dengan kecepatan cetak 60mm/s. Bagian dasar adalah bagian terbesar yang memakan waktu sekitar 32 jam. Namun, jika kita meningkatkan kecepatan cetak, kita pasti dapat mencetak bagian-bagian lebih cepat.
Lihat juga: Printer 3D Terbaik untuk Pemula dan Pebuat [Update 2021]
Berikut adalah semua bagian hasil cetak 3D.
Catatan cepat di sini, bahwa saya mencetak semuanya dengan Horizontal expansion diaktifkan sebesar –0.1mm dalam perangkat lunak pemotongan. Ini memungkinkan bagian memiliki dimensi yang lebih akurat dan pas lebih baik dengan bagian mekanis lainnya seperti bearing, rod dan baut.
Merakit Robot
Berikut adalah daftar komponen yang diperlukan untuk merakit robot SCARA berbasis Arduino ini. Daftar untuk komponen elektronik dapat ditemukan di bawah di bagian diagram rangkaian artikel.
Berikut adalah ukuran baut yang diperlukan untuk proyek ini:
Kami memulai rangkaian dengan dasar. Di sini pertama kita memasukkan bearing bola radial dengan diameter dalam 35mm dan diameter luar 47mm.
Kemudian datang bearing dorong pertama yang memiliki diameter dalam 40mm dan diameter luar 60mm. Bearing ini akan berada di antara puli dan dasar.
Di sisi lain dasar, kita menggunakan bearing dorong lagi dengan ukuran yang sama bersama dengan joint coupler.
Kemudian kita dapat memasang puli dan bagian atas menggunakan empat baut M4 dengan panjang 55mm. Kita perlu menggunakan baut self-locking di sini dan mengepalnya dengan benar sehingga sendi kokoh sementara dapat berputar bebas.
Selanjutnya, kita perlu memasang puli tengah. Puli ini dipasangkan dengan puli sendi dengan sabuk GT2 panjang 300mm. Untuk memasang puli ini, kita menggunakan dua bearing bola 608, satu di atas dan yang lain di sisi bawah dasar. Kemudian menggunakan baut M8 panjang 45mm, pelapis dan baut self-locking kita dapat mengamankan puli ke tempatnya.
Selanjutnya, kita perlu memasang motor stepper untuk sendi ini. Motor stepper akan dipasangkan dengan puli tengah dengan sabuk panjang 200mm. Untuk mengamankannya ke dasar, kita perlu empat baut M3.
Sebelum mengepal baut, kita perlu meregangkan sabuk sebanyak mungkin. Catatan cepat di sini bahwa saya sebenarnya mengganti baut M8 untuk puli tengah dengan kepala di bawah sehingga dapat muat di dalam dasar.
Pada titik ini, kita harus memeriksa apakah sabuk cukup kencang. Jika tidak, kita dapat menggunakan beberapa puli pengendali untuk menegangkannya lebih baik. Di sini saya menggunakan baut M5 panjang 35mm dan beberapa baut untuk membuat puli penegangan.
Ini dapat dipasang pada slot di kedua sisi sabuk dan jadi kita dapat menegangkan sabuk sebanyak yang kita inginkan. Saya akhirnya menegangkan sabuk di kedua sisi. Dengan ini, sendi pertama selesai.
Saya melanjutkan dengan memasang mikroswitch untuk sendi ini. Sebelum mengamankannya ke tempatnya, saya sudah memasang kabel padanya, karena agak sempit untuk melakukan itu setelahnya. Kita perlu baut M3 panjang 20mm dan satu baut untuk mengamankan mikroswitch ke tempatnya.
Joint coupler melewati cukup dekat dengan saklar sehingga saya akhirnya hanya menggunakan satu baut untuk mengamankan saklar. Di lubang lain saya hanya memasukkan baut yang lebih pendek dan melekatnya di sisi bawah. Dengan cara itu saklar cukup aman dan dapat bekerja dengan baik.
Oke, jadi selanjutnya kita dapat mulai merakit sumbu Z. Pertama, di atas joint coupler kita perlu mengamankan bagian dasar plate sumbu Z.
Di atasnya kita dapat mengamankan empat klamp untuk rod halus. Kemudian kita dapat memasukkan rod halus ke tempatnya. Mereka harus pas rapat dan sampai ke bagian joint coupler. Kita dapat kemudian mengikat rod dengan klamp menggunakan beberapa baut dan baut M4.
Pada titik ini kita perlu memasukkan bearing untuk baut lead. Untuk menyelesaikan bagian ini, kita hanya dapat memasukkan cover sederhana yang akan menyembunyikan semuanya dan memberikan tampilan yang lebih bersih pada robot.
Selanjutnya, kita dapat melanjutkan dengan merakit lengan pertama robot. Lengan akan terdiri dari dua bagian yang dibaut bersama-sama. Bagian pertama adalah tempat kita perlu memasang bearing linear yang akan meluncur melalui rod halus. Memasukkannya ke tempatnya bisa sedikit sulit, karena mereka cukup rapat.
Sebenarnya, ini tergantung pada seberapa akurat printer Anda dapat mencetak bagian-bagian. Oleh karena itu, saya menyarankan menggunakan fitur Horizontal Expansion saat mencetak bagian dan menyesuaikannya sesuai printer Anda. Dalam kasus saya, saya tidak dapat memasang dua bearing untuk pergi sampai bawah, tapi itu bukan masalah besar.
Oke, jadi sekarang kita dapat memasangkan dua bagian lengan bersama-sama. Untuk itu, kita akan menggunakan empat baut M5 panjang 25mm.
Selanjutnya, kita dapat memasang motor stepper kedua. Di sini saya akan menggunakan puli GT2 hasil cetak 3D dengan 20 gigi. Saya membuat puli ini menggunakan desain parametrik yang saya sebutkan sebelumnya dan ini bekerja cukup baik. Di sini kita juga perlu mengamankan baut nut baut lead ke tempatnya.
Selanjutnya, kita dapat memasang sabuk dan puli untuk sendi kedua. Di sini kita perlu satu sabuk dengan panjang 400mm dan satu dengan panjang 300mm. Prosedur untuk memasangnya hampir sama seperti yang dijelaskan untuk sendi pertama.
Di sini untuk sendi kedua dan ketiga, kita sebenarnya menggunakan bearing yang lebih kecil dibandingkan yang pertama. Bearing bola radial memiliki diameter dalam 30mm dan diameter luar 42mm, dan bearing dorong memiliki diameter dalam 35mm dan diameter luar 52mm.
Sebelum memasang joint coupler sendi kedua kita perlu memasukkan enam baut M4 panjang 20mm di slot heksagon.
Mereka akan berfungsi untuk memasang lengan kedua ke joint. Jika diperlukan, untuk menegangkan sabuk kita dapat menggunakan metode yang sama seperti yang dijelaskan sebelumnya dengan puli pengendali. Akhirnya, saya mengamankan mikroswitch kedua ke tempatnya dan rangkaian lengan nomor satu selesai.
Saya melanjutkan dengan memasang lengan kedua ke joint coupler. Di sini kita menggunakan baut di joint coupler yang telah kita pasang sebelumnya, untuk mengamankan bagian atas lengan kedua.
Pada titik ini saya ingin menguji berapa banyak backlash yang ada pada sendi. Tentu, saya mengira ada beberapa backlash karena sabuk, tetapi sebenarnya ada lebih banyak longgar antara dua bagian sendi. Saya memperhatikan bahwa masalahnya adalah lubang tempat baut masuk sedikit lebih besar dari baut itu sendiri. Untuk mengatasi masalahnya, kita perlu pas yang lebih erat antara baut dan lubang.
Jadi, dalam kasus saya saya memperbesar lubang menggunakan bor 4.5mm, dan menggunakan baut M5, alih-alih baut M4, untuk mengamankan kedua bagian sendi bersama-sama. Namun, saya memperbarui model 3D sehingga lubang adalah 3.5mm dan Anda dapat menggunakan baut M4 untuk menggabungkan kedua bagian ini bersama-sama. Saya juga kembali ke sendi pertama dan melakukan hal yang sama. Sekarang longgar pada sendi hampir hilang, kecuali backlash kecil yang kita peroleh dari sabuk.
Baiklah, jadi sekarang kita dapat melanjutkan dengan merakit lengan kedua. Di sini pertama kita perlu memasang motor stepper untuk sendi ketiga.
Saya menggunakan motor stepper yang lebih kecil dalam hal ini sehingga lengan sedikit lebih ringan. Namun, itu masih motor stepper NEMA 17 tetapi dengan panjang 24cm yang lebih pendek.
Lagi, kita memiliki prosedur yang sama untuk memasang sabuk dan puli untuk sendi ketiga, kecuali di sini kita hanya menggunakan satu tahap reduksi dengan sabuk 400mm. Selanjutnya, sebelum memasang bagian bawah lengan ini ke bagian atas, kita perlu menghubungkan motor dan mikroswitch dan melewatkan kabel mereka melalui sendi kedua.
Pada titik ini, kita juga perlu memasukkan kabel untuk end effector. Dalam kasus saya saya memasukkan kabel 4 utas dari motor stepper yang akan saya gunakan untuk mengemudikan servo motor untuk pegangan saya yang membutuhkan 3 utas.
Selanjutnya, kita perlu memasukkan baut M4 di slot di lengan atas yang akan berfungsi untuk mengamankan bagian bawah padanya.
Tepat sebelum menggabungkannya, kita harus melewatkan kabel di bawah kait-kait tersebut sehingga mereka menjauh dari bagian yang bergerak.
Kabel yang keluar dari sendi kedua sebenarnya dapat terpaku oleh baut pada pulu, oleh karena itu saya membuat penahan kabel sederhana untuk menahan kabel agar jauh dari baut.
Kita harus mengatur kabel untuk melewati satu sisi lengan untuk menghindari kontak dengan bagian yang bergerak. Akhirnya, kita dapat memasukkan cover lengan pertama.
Cover diamankan ke lengan dengan joint snap-fit. Dengan ini, rangkaian lengan robot selesai.
Selanjutnya, kita dapat memasukkan seluruh rangkaian ini ke rod sumbu Z.
Kemudian kita perlu menyiapkan plate atas sumbu Z yang akan menahan ujung atas rod. Di sini pertama kita dapat memasang mikroswitch untuk sumbu Z, dan memasang klamp ke plate.
Sebelum menempatkan plate atas, pertama saya memasukkan cover sederhana seperti di bawah ini, untuk menyembunyikan klamp, baut dan mikroswitch. Kemudian kita dapat memasukkan dan mengikat plate atas ke rod menggunakan klamp.
Selanjutnya, kita perlu memasukkan baut lead ke tempatnya.
Saya memiliki yang sedikit lebih panjang, jadi saya memotongnya menjadi 38cm menggunakan gergaji logam tangan. Selanjutnya, kita dapat memasang motor stepper keempat ke tempatnya. Di sini kita perlu menggunakan shaft coupler 5mm hingga 8mm untuk menghubungkan motor dengan baut lead.
Akhirnya, kita dapat melewatkan kabel melalui cover dan mengamankannya ke plate atas menggunakan dua baut.
Oke jadi, selanjutnya kita dapat melakukan manajemen kabel. Saya menggunakan selang kabel untuk menyatukan kabel dan membersihkan kekacauan. Saya juga menggunakan beberapa ikat kabel untuk tujuan itu.
Sebelum memasukkan kabel ke dalam selang kabel, lebih baik untuk menandai masing-masing sehingga Anda tidak menghubungkan sesuatu yang salah.
Yang tersisa sekarang adalah membuat end effector robot. Kita sebenarnya dapat membuat dan memasang end effector jenis apa pun ke robot. Saya memilih untuk membuat pegangan sederhana yang didorong oleh servo motor MG996R. Pegangan ini didasarkan pada dua rod 6mm di mana kedua sisi meluncur.
Dua sisi yang meluncur ini terhubung ke servo dengan servo horn, beberapa link hasil cetak 3D dan baut serta baut M3. Saya menggunakan baut dan baut M3 untuk seluruh rangkaian pegangan. Anda sebenarnya dapat menemukan daftar lengkap baut dan baut yang diperlukan untuk proyek ini di artikel situs web. Ruang untuk mengamankan baut dan baut cukup sempit, jadi Anda perlu sedikit ketabahan untuk merakit beberapa bagian ini.
Meskipun, yang baik tentang desain ini adalah kita dapat dengan mudah mengubah ujung pegangan. Mereka dapat lebih lebar atau lebih sempit atau dapat memiliki bentuk tertentu. Kita dapat memasang pegangan ke lengan robot menggunakan beberapa baut dan baut M4.
Akhirnya, kita dapat menghubungkan servo motor ke kabel yang telah kita pasang sebelumnya.
Dan itu saja, lengan robot SCARA kita telah terrakit sepenuhnya. Yang tersisa sekarang adalah menghubungkan komponen elektronik proyek ini.
Diagram Rangkaian Robot SCARA
Jadi, kita akan menggunakan papan Arduino UNO dalam kombinasi dengan CNC shield dan empat driver stepper A4988.
Meskipun ini adalah robot dan terlihat lebih rumit, itu semua elektronik yang kita butuhkan untuk proyek ini. Perlu dicatat bahwa, alih-alih Arduino UNO, kita juga dapat menggunakan Arduino MEGA dalam kombinasi dengan papan kontrol printer 3D RAMPS.
Meskipun demikian, saya mencetak 3D casing untuk Arduino UNO yang dapat dengan mudah dipasang ke dasar robot. Saya akan menggunakan resolusi kuartal untuk mengemudikan steppers, jadi saya menempatkan beberapa jumper di pin yang sesuai. Sekarang kita dapat menghubungkan motor stepper dan mikroswitch ke CNC shield.
Berikut adalah diagram rangkaian dari robot SCARA ini dan bagaimana semuanya perlu dihubungkan.
Anda dapat mendapatkan komponen yang diperlukan untuk proyek ini dari tautan di bawah ini:
DC Power Supply …………………………. Amazon / Banggood / AliExpress
Untuk menyuayi robot, kita membutuhkan sumber daya 12V yang mampu menyediakan minimal 4A, tetapi saya menyarankan sumber daya 12V 6A. Tentu saja, ini tergantung pada bagaimana batasan arus driver stepper diatur, dan saya menyarankan untuk mengaturnya pada level terendah yang mungkin.
Akhirnya, saya memadatkan semua kabel di dalam casing, sambil mencoba untuk membiarkan heat sink drives bebas, dan menambahkan cover padanya.
Menyelesaikan Rangkaian
Robot SCARA sekarang telah selesai, dan yang perlu kita lakukan sekarang adalah mengamankan dasarnya pada sesuatu. Untuk itu, saya akan menggunakan potongan kayu tebal 20mm. Di sisi bawah dasar robot kita memiliki 12 lubang yang tersedia untuk mengamankannya. Jadi, saya mencetak gambar dasar robot, dan menggunakannya untuk membuat lubang di kayu.
Di sisi bawah saya membuat lubang bersenakan karena saya akan menggunakan baut kepala datar sehingga mereka rata dengan permukaan kayu. Saya memasukkan baut M4 di slot dasar dan kemudian mengamankan dasar kayu ke dasar robot.
Sekarang idealnya, untuk memperbaikan robot di tempat, kita dapat membautnya ke meja atau saya akan cukup menggunakan klamp untuk tujuan itu.
Jadi itulah, robot SCARA kita sekarang telah selesai sepenuhnya. Yang tersisa dalam video ini adalah untuk melihat bagaimana robot bekerja.
Lihat juga: Robot Tangan Arduino DIY dengan Kontrol Smartphone
Bagaimana Robot SCARA Bekerja
Ada dua metode untuk mengontrol robot dalam hal posisi dan orientasi, yaitu menggunakan forward atau inverse kinematics.
Forward kinematics digunakan ketika kita perlu menemukan posisi dan orientasi end effector dari sudut sendi yang diberikan.
Di sisi lain, inverse kinematics digunakan ketika kita perlu menemukan sudut sendi untuk posisi end effector yang diberikan. Metode ini lebih masuk akal dalam robotika karena sebagian besar waktu kita ingin robot memosisikan alatnya ke lokasi tertentu atau koordinat X, Y dan Z tertentu.
Dengan inverse kinematics kita dapat menghitung sudut sendi sesuai koordinat yang diberikan.
Persamaan yang akan saya gunakan untuk forward dan inverse kinematics berasal dari aturan dan rumus trigonometri.
Pemrograman Robot SCARA – Kode Arduino dan Processing
Di bawah artikel Anda dapat menemukan kode Arduino dan Processing.
Berikut adalah bagaimana persamaan tersebut terlihat dalam kode, yang ditulis dalam lingkungan pengembangan Processing.
Jadi, dengan forward kinematics kita menghitung nilai X dan Y end effector, sesuai dengan sudut sendi yang ditetapkan dari dua lengan robot, theta1 dan theta2, serta panjangnya L1 dan L2.
Di sisi lain, dengan inverse kinematics kita menghitung sudut sendi, theta2 dan theta1, sesuai 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 tempat posisi ditetapkan, kita melakukan beberapa penyesuaian pada sudut sendi dengan pernyataan "if" ini. Untuk konfigurasi robot ini kita sebenarnya menghitung inverse kinematics dengan hanya dua link. Sudut ketiga yang saya sebut "phi" digunakan untuk mengatur orientasi pegangan.
Antarmuka Grafik Pengguna dibuat menggunakan library controlP5 untuk IDE Processing. Dengan library ini kita dapat dengan mudah membuat tombol, slider, kolom teks dan lain-lain.
Misalnya, kita menggunakan slider di sisi kiri untuk mengontrol sudut sendi, dan menggunakan kolom teks kita dapat memasukkan posisi tempat kita ingin robot pergi. Dengan setiap tindakan yang kita lakukan di sini dengan program, kita 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 sendi, nilai pegangan, nilai kecepatan dan percepatan, serta indikator untuk mengetahui apakah kita telah menekan tombol save atau run.
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 kita perlu mengekstrak data dari string tersebut 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 ini kita dapat melakukan tindakan dengan robot. Misalnya, jika kita menekan tombol SAVE, kita menyimpan nilai sudut sendi saat ini ke dalam array 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 mengeksekusi langkah yang disimpan dan seterusnya.
Untuk mengontrol motor stepper, saya menggunakan library AccelStepper. Meskipun ini adalah library yang hebat untuk mengontrol beberapa stepper secara bersamaan, ia memiliki beberapa keterbatasan ketika datang untuk mengontrol robot seperti ini. Saat mengontrol beberapa stepper, library tidak dapat mengimplementasikan percepatan dan perlambatan, yang penting untuk operasi robot yang lebih halus.
Saya masih berhasil mengimplementasikan percepatan dan perlambatan dengan library, tetapi mereka tidak sehalus yang saya inginkan.
Berikut adalah kode lengkap Arduino dan Processing untuk proyek robot SCARA Arduino ini:
Wrap up
Jadi akhirnya, setelah kita mengunggah kode ke Arduino, kita dapat menjalankan program processing, menghubungkan daya dan robot scara akan mulai bergerak ke posisi home-nya.
Dari sana, kita dapat melakukan apa pun yang kita inginkan padanya. Kita dapat bermain secara manual atau mengaturnya untuk bekerja secara otomatis. Tentu saja, kita dapat memasang end effector jenis apa pun dan membuat hal-hal keren dengannya. Misalnya, kita bahkan dapat memasang hot end printer 3D ke robot dan membuat robot menjadi printer 3D, atau memasang kepala laser dan membuatnya menjadi pemotong laser. Saya berencana mencoba kedua ide ini, jadi pastikan Anda berlangganan channel saya sehingga Anda tidak akan melewatkan mereka di beberapa video saya di masa depan.
Sebelum video ini berakhir, saya ingin memberikan beberapa catatan lebih lanjut tentang proyek ini. Saya menemukan robot tidak sekokoh yang saya harapkan.
Saya duga masalahnya adalah hampir seluruh robot SCARA, sumbu Z dan lengan hanya didukung oleh sendi pertama. Seluruh bobot dan gaya inersia yang dihasilkan saat bergerak, dapat memberikan stres yang cukup pada dasar tempat sendi pertama terletak, dan karena itu hanyalah plastik cenderung membengkok sedikit. Selain itu, sabuk ini tidak bebas backlash jadi kita juga mengurangi kekokohan robot dengan itu. Namun, saya pikir proyek secara keseluruhan cukup baik bagi Anda untuk mempelajari cara kerja robot SCARA, dan memberi Anda keberanian untuk membangun satu untuk diri Anda sendiri.
Jangan ragu untuk bertanya di bagian komentar di bawah dan cek Koleksi Proyek Arduino saya.