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

Buat Sendiri Pengontrol Lengan Robot MK2 Plus

Tentang Proyek

Lengan EEZYBOT MK2

Jika Anda telah mencari di thingiverse.com untuk lengan robot keren, kemungkinan Anda telah menemukan ini. Lengan EEZYBOT MK2 (dirancang oleh daghizmo yang cerdas) berbagi kinematik tautan ABB IRB460 yang diskalakan dengan rasio 1:7. Namun, lengan ini dirancang untuk bekerja dengan servo, yang membuatnya sedikit goyah dan kurang anggun. Namun, ada solusi yang lebih baik di luar sana. Lengan MK2 Plus yang ditemukan di sini, https://www.thingiverse.com/thing:2520572 adalah versi remix dari lengan MK2 asli yang menggunakan 3 motor stepper untuk menggerakkan tautannya.

Buat Sendiri Pengontrol Lengan Robot MK2 Plus

Mencetak ini memakan waktu, jadi bookmark artikel ini, cetak semua dan kembali setelah selesai! (Ini akan memakan waktu beberapa hari)

Jika Anda mengalami kesulitan merakit lengan, ada banyak tutorial online.

Memilih Posisi Home

Berbeda dengan servo, motor stepper tidak memiliki kesadaran posisi. Kita harus memperbaiki ini dengan pertama-tama menyiapkan rutinitas homing saat lengan menyala. Kita akan menggunakan 3 saklar batas untuk menentukan posisi home kita. Tautan bekerja dengan cara yang cukup kompleks, tetapi Anda akan dengan mudah memahami di mana menempatkan saklar setelah Anda merakit lengan dan melihat bagaimana semuanya bergerak.

Buat Sendiri Pengontrol Lengan Robot MK2 Plus

(i.e tidak ada XY seperti sistem Kartesian tapi kita akan menyebutnya itu untuk memudahkan hal-hal)

Anda dapat menempatkan saklar batas Z di mana saja pada dasar utama lengan. Tambahkan sedikit lem panas sehingga kabel Anda tidak akan terlepas saat lengan bergerak.

Pemasangan Kabel

Pemasangan kabel cukup sederhana, karena semua terminal ditandai pada CNC shield. Cukup jangan memasang driver A4988 Anda dengan cara yang salah! Motor stepper di sisi dengan saklar batas Y harus dihubungkan ke terminal untuk motor stepper Y di CNC shield Anda. Hal yang sama berlaku untuk motor di sisi saklar batas X. (Kita menyebutnya X dan Y karena lebih mudah untuk menangani CNC shield dengan cara ini) Hubungkan stepper terakhir yang memutar dasar lengan ke terminal Z, dan pasang kabel saklar akhir sesuai namanya. Polaritas tidak penting.

Buat Sendiri Pengontrol Lengan Robot MK2 Plus

Cari sumber daya 12V yang baik yang dapat menyediakan arus untuk motor berjalan tanpa terhenti.

Kode

Mari kita langsung ke intinya. Kita akan menggunakan perpustakaan AccelStepper untuk Arduino untuk mengemudi stepper dengan halus. Perpustakaan ini memungkinkan Anda dengan mudah mempercepat, memperlambat, dan menjalankan beberapa motor stepper secara bersamaan. Anda dapat memperoleh perpustakaan ini secara langsung melalui Arduino IDE dengan menggunakan Library Manager (Sketch > Include Library > Library Manager)

Buat Sendiri Pengontrol Lengan Robot MK2 Plus

Anda juga dapat mendapatkannya dari halaman asli pencipta di airspayce. https://www.airspayce.com/mikem/arduino/AccelStepper/

Sekarang setelah kita memiliki semua yang kita butuhkan, mari kita uraikan kode langkah demi langkah.

Pertama kita akan menentukan beberapa nama untuk pin yang akan kita gunakan. Anda dapat menemukan diagram pin CNC shield dengan pencarian gambar google cepat. Kita juga akan membuat objek AccelStepper untuk 3 motor stepper kita.

#define XSTEP 2 //Stepper Motor Step pin
#define YSTEP 3
#define ZSTEP 4
#define XDIR 5 // Stepper motor Direction control pin
#define YDIR 6
#define ZDIR 7
#define ENABLE 8 // CNC Shield Enable Pin
#define XLIMIT 9 // Limit switch pins
#define YLIMIT 10
#define ZLIMIT 11
#define XMOTORACC 250 // Acceleration and Max Speed values
#define XMOTORMAXSPEED 1000
#define YMOTORACC 250
#define YMOTORMAXSPEED 1000
#include <AccelStepper.h>
AccelStepper XMOTOR(1,XSTEP,XDIR);
AccelStepper YMOTOR(1,YSTEP,YDIR);
AccelStepper ZMOTOR(1,ZSTEP,ZDIR);

Mari kita buat fungsi bantuan kecil untuk menyiapkan pin kita.

void pinsetup(){
pinMode(ENABLE,OUTPUT);
digitalWrite(ENABLE,LOW);
pinMode(XLIMIT,INPUT_PULLUP);
pinMode(YLIMIT,INPUT_PULLUP);
pinMode(ZLIMIT,INPUT_PULLUP);
}

Sekarang setelah selesai, mari kita uraikan logika rutinitas homing kita.

void autohome(){ //We're using this to call our homing routine 
xyhome();
zhome();
}
void xyhome() {
int initial_xhome = -1;
int initial_yhome = -1;
// Set Max Speed and Acceleration of each Steppers at startup for homing
XMOTOR.setMaxSpeed(500.0); // Set Max Speed of Stepper (Slower to get better accuracy)
XMOTOR.setAcceleration(50.0); // Set Acceleration of Stepper
YMOTOR.setMaxSpeed(500.0); // Set Max Speed of Stepper (Slower to get better accuracy)
YMOTOR.setAcceleration(50.0); // Set Acceleration of Stepper
// Start Homing procedure of Stepper Motor at startup
while (digitalRead(YLIMIT)) { // Make the Stepper move CCW until the switch is activated
XMOTOR.moveTo(initial_xhome); // Set the position to move to
YMOTOR.moveTo(initial_yhome); // Set the position to move to
initial_xhome--; // Decrease by 1 for next move if needed
initial_yhome--;
XMOTOR.run(); // Start moving the stepper
YMOTOR.run();
delay(5);
}
XMOTOR.setCurrentPosition(0); // Set the current position as zero for now
YMOTOR.setCurrentPosition(0);
initial_xhome = -1;
initial_yhome = 1;
while(digitalRead(XLIMIT)){
XMOTOR.moveTo(initial_xhome); // Set the position to move to
YMOTOR.moveTo(initial_yhome); // Set the position to move to
initial_xhome--; // Decrease by 1 for next move if needed
initial_yhome++;
XMOTOR.run(); // Start moving the stepper
YMOTOR.run();
delay(5);
}
YMOTOR.setCurrentPosition(0); // Set the current position as zero for now
YMOTOR.setMaxSpeed(250.0); // Set Max Speed of Stepper (Slower to get better accuracy)
YMOTOR.setAcceleration(10.0); // Set Acceleration of Stepper
initial_yhome = 1;
while (!digitalRead(YLIMIT)) { // Make the Stepper move CW until the switch is deactivated
YMOTOR.moveTo(initial_yhome);
YMOTOR.run();
initial_yhome++;
delay(5);
}
YMOTOR.setCurrentPosition(0);
YMOTOR.setMaxSpeed(YMOTORMAXSPEED); // Set Max Speed of Stepper (Faster for regular movements)
YMOTOR.setAcceleration(YMOTORACC); // Set Acceleration of Stepper
XMOTOR.setCurrentPosition(0); // Set the current position as zero for now
XMOTOR.setMaxSpeed(250.0); // Set Max Speed of Stepper (Slower to get better accuracy)
XMOTOR.setAcceleration(10.0); // Set Acceleration of Stepper
initial_xhome = 1;
while (!digitalRead(XLIMIT)) { // Make the Stepper move CW until the switch is deactivated
XMOTOR.moveTo(initial_xhome);
XMOTOR.run();
initial_xhome++;
delay(5);
}
XMOTOR.setCurrentPosition(0);
XMOTOR.setMaxSpeed(XMOTORMAXSPEED); // Set Max Speed of Stepper (Faster for regular movements)
XMOTOR.setAcceleration(XMOTORACC); // Set Acceleration of Stepper
}
void zhome() {
int initial_zhome = -1;
// Set Max Speed and Acceleration of each Steppers at startup for homing
ZMOTOR.setMaxSpeed(100.0); // Set Max Speed of Stepper (Slower to get better accuracy)
ZMOTOR.setAcceleration(100.0); // Set Acceleration of Stepper
// Start Homing procedure of Stepper Motor at startup
while (digitalRead(ZLIMIT)) { // Make the Stepper move CCW until the switch is activated
ZMOTOR.moveTo(initial_zhome); // Set the position to move to
initial_zhome--; // Decrease by 1 for next move if needed
ZMOTOR.run(); // Start moving the stepper
delay(5);
}
ZMOTOR.setCurrentPosition(0); // Set the current position as zero for now
ZMOTOR.setMaxSpeed(50.0); // Set Max Speed of Stepper (Slower to get better accuracy)
ZMOTOR.setAcceleration(50.0); // Set Acceleration of Stepper
initial_zhome = 1;
while (!digitalRead(ZLIMIT)) { // Make the Stepper move CW until the switch is deactivated
ZMOTOR.moveTo(initial_zhome);
ZMOTOR.run();
initial_zhome++;
delay(5);
}
ZMOTOR.setCurrentPosition(0);
ZMOTOR.setMaxSpeed(1000.0); // Set Max Speed of Stepper (Faster for regular movements)
ZMOTOR.setAcceleration(1000.0); // Set Acceleration of Stepper
}

Oke, jadi itu banyak kode. Apa yang sebenarnya terjadi di sini? Lengan pertama melakukan rutinitas homing pada motor X dan Y. Karena cara tautan bekerja, ini dilakukan dalam beberapa langkah. (Anda dapat melihat video di akhir untuk melihat ini dalam tindakan)

Anda harus sangat hati-hati saat melakukan prosedur homing untuk pertama kalinya. Jika stepper Anda bergerak ke arah yang lain, cukup MATIKAN DAYA, DAN LALU balik konektor motor.

Sekarang setelah selesai, panggil autohome() dari fungsi setup() Anda sehingga hanya berjalan sekali. Biarkan loop() Anda kosong. Dan pegang tangan Anda pada sumber daya untuk mematikannya jika ada yang salah.

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinsetup();
autohome();
Serial.println("HOMING OK");
}

Jika Anda beruntung, motor Anda akan berputar dengan benar, saklar batas akan klik dengan benar dan rutinitas homing akan bekerja tanpa masalah. Tetapi jika Anda seperti saya, Anda harus melakukan sedikit perubahan sebelum semuanya berjalan. Jadi selalu putuskan daya jika homing salah sehingga Anda tidak merusak lengan cetak 3D Anda.

Akhirnya, Anda dapat menulis logika Anda sendiri di loop() sehingga lengan Anda bergerak ke posisi yang Anda inginkan. Karena cara lengan terhubung, motor X dan Y mengontrol end effector dengan cara hampir kartesian.

void loop() {
XMOTOR.runToNewPosition(100);
delay(1000);
YMOTOR.runToNewPosition(50);
delay(1000);
YMOTOR.runToNewPosition(-50);
delay(1000);
YMOTOR.runToNewPosition(0);
delay(1000);
XMOTOR.runToNewPosition(0);
delay(1000);
}

Kesimpulan

Saya telah melihat banyak tutorial tentang cara menggunakan firmware GRBL populer untuk mengontrol lengan ini. Namun, ini berarti Anda membutuhkan komputer untuk mengirim perintah serial ke lengan agar bergerak. Jika Anda hanya membutuhkan lengan MK2 untuk beberapa gerakan, Anda dapat dengan mudah mengkodekannya ke dalam Arduino dan biarkan melakukannya sendiri.

Itu tidak berarti Anda tidak dapat mengontrol ini dengan perintah serial! Anda dapat dengan mudah menyertakan kode delimiter Serial ke dalam ini dan mengirim langkah motor X Y dan Z sebagai string (dibatasi dengan karakter khusus - mis. 5, 6, 7* yang akan menggerakkan motor X sebanyak 5 langkah, Y sebanyak 6 dan Z sebanyak 7. * digunakan untuk menunjukkan akhir string).

Anda juga dapat mengembangkan ini lebih lanjut untuk mengirim koordinat ruang 3D dari end effector, dan biarkan Arduino mencari tahu langkah yang diperlukan menggunakan kinematika invers, atau bahkan trigonometri dasar.

Selamat bersenang-senang! Dan terima kasih tulus kepada semua desainer cerdas di Thingiverse!

Kode

robotArmArduino
Ekstrak file dan buka dengan Arduino IDE
Tidak ada pratinjau (hanya unduhan).
MK2 Robot Arm Controller - Github
Link ke repositori github https://github.com/yasaspeiris/MK2-Robot-Arm-Controller

Bagian dan Enclosure Kustom

Robot Arm MK2 Plus di Thingiverse
Kredit kepada ackyltle File CAD di thingiverse.com

Proses manufaktur

  1. Infineon Resmi Perkenalkan IMC300 Pengontrol Motor dengan Arm Cortex-M0 Terintegrasi untuk Fleksibilitas Tinggi
  2. Robot SCARA Dual Lengan: Solusi Assembly dan Produksi Canggih
  3. MeArm Robot Arm V1.0 – Buat Lengan Robot Berbasis Arduino & Raspberry Pi
  4. Robot Arm Berbasis Ethernet: Kontrol Jarak Jauh yang Sederhana
  5. LittleArm 2C: Bangun Lengan Robot Arduino 3D-Printed Tahan Lama untuk Pendidikan STEM
  6. Lengan Robot Arduino Dikontrol Geser Tangan – Pembangun Langkah demi Langkah DIY
  7. Kontrol Lengan Robot Arduino Anda melalui Aplikasi Android Khusus
  8. Realtime Robotics Luncurkan Kontroler Canggih Untuk Sederhanakan Integrasi
  9. Yama Seiki GA-2000CR: Compact Turning Center dengan Advanced Robot Arm & Pallet System
  10. KUKA KMR iiwa: Lengan Robot Kolaboratif Mobile untuk Industry 4.0