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

Lengan Robot Lokal dan Jarak Jauh yang Dapat Diprogram

Komponen dan persediaan

Arduino Mega 2560
× 1
SainSmart DIY 3-Axis Control Palletizing Robot Arm Model untuk Arduino UNO MEGA2560
× 1
MeArm DIY Robot Arm Kit
× 1
Adafruit RGB Backlight LCD - 16x2
× 1
Perangkat Android
× 1
Potensiometer putar (generik)
10Kohm
× 4
Sakelar Tombol Tekan SparkFun 12mm
× 3
LED (generik)
MERAH, BIRU, HIJAU, KUNING
× 4

Aplikasi dan layanan online

Arduino IDE
MIT App Inventor 2

Tentang proyek ini

Tujuan dari tutorial ini adalah untuk mengembangkan proyek langkah demi langkah untuk mengendalikan dan memprogram Lengan Robot, mensimulasikan fungsi dasar robot industri.

Langkah 1:Spesifikasi

Robot memiliki dua fungsi dasar:

  • Program :Rekam posisi lengan dalam tiga dimensi (setiap catatan adalah "langkah")
  • Lari :Lakukan secara berurutan posisi yang direkam dalam "Program". Robot akan menjalankan program sampai perintah "ABORT" digunakan.

Karakteristik utama:

  • Proyek ini dapat digunakan untuk mengontrol robot dengan 3 atau 4 DOF ("Derajat Kebebasan").
  • Robot dapat dikontrol dalam mode "LOCAL" dan "REMOTE" (yang terakhir melalui perangkat Android)
  • Selama fase program, pengguna dapat mengubah mode kontrol dari "LOCAL" menjadi "REMOTE" dan sebaliknya.
  • Informasi kepada pengguna akan diberikan melalui LED berwarna, tampilan LED 2 baris, dan suara (buzzer).
  • Alarm suara juga dapat dipicu dari jarak jauh.

Langkah 2:​Proyek

Diagram blok pada langkah sebelumnya menunjukkan "Bill of Material" yang akan digunakan dalam proyek ini.

Saya memilih Arduino MEGA agar tidak khawatir dengan jumlah port Arduino (I/Os) yang tersedia. UNO misalnya, akan bekerja tanpa masalah tetapi metode perluasan port harus digunakan. Ada beberapa opsi yang dapat dengan mudah ditemukan di internet, seperti dekoder 74138 misalnya.

Di sini, prototipe Pertama diprogram dalam "mode lokal".

Untuk jaringan Bluetooth, HC-06 akan digunakan.

Aplikasi Android yang digunakan untuk "mode jarak jauh ", dikembangkan menggunakan alat MIT Appinventor2, yang merupakan platform tunggal yang kuat untuk jenis aplikasi berbasis perangkat Android ini. Aplikasi ini tersedia untuk diunduh secara gratis di Google store:MJRoBot Arduino Robot Arm Control.

Video di bawah ini dapat memberi Anda gambaran tentang apa yang seharusnya menjadi tugas akhir dengan pemrograman jarak jauh:

Langkah 3:Pengembangan Proyek

Lengan Robot dapat diklasifikasikan menurut jumlah "sendi" atau "Degrees Of Freedom" (DOF) yang mereka miliki.

  • "Pangkalan ", atau "Pinggang ", biasanya dapat memutar lengan 180o atau 360o, tergantung dari jenis Servo yang digunakan (di sini dalam proyek ini, Servo 180o digunakan).
  • "Bahu ", bertanggung jawab untuk "mengangkat atau menurunkan" lengan secara vertikal.
  • "Siku " akan membuat lengan "maju atau mundur".
  • "Cakar " atau "Gripper " bekerja dengan membuka atau menutup untuk "ambil barang."

Langkah 4:Sirkuit

Motor servo akan digunakan untuk menggerakkan sambungan yang terhubung langsung ke Arduino. Perhatikan bahwa tidak jarang melihat "Motor Stepper" digunakan di pangkalan untuk torsi dan presisi yang lebih besar. Pilihan servo yang tepat sangat penting (ada servo Cina murah yang konstruksinya sangat buruk seperti MG995, yang sayangnya adalah servo yang disertakan dengan AARM 3DOF SanSmart saya). Tapi untuk usulan proyek ini bekerja dengan baik.

Daya DC untuk servos harus dipisahkan dari Arduino dan komponen lainnya. Catu daya eksternal 5 atau 6V akan bekerja tanpa masalah (periksa Lembar Data dari servors Anda untuk memverifikasi rentang tegangan yang tepat). Praktik umum juga menggunakan kapasitor 470uF antara VCC dan GND untuk meminimalkan kebisingan yang dihasilkan oleh motor DC di dalam servors. Pastikan untuk menghubungkan semua "Pembumian" (Sumber Daya eksternal dengan pin Arduino GND).

Jika servo bermasalah dan banyak bergetar, lakukan penyesuaian pada "penundaan" kode Anda. Penting bahwa servo memiliki waktu untuk mencapai titik tertentu sebelum menerima perintah baru. Juga patut diperiksa apakah servos itu digital atau analog, seolah-olah mereka secara mekanis serupa, digital bekerja dengan frekuensi 300Hz sedangkan analog, 50Hz. Pustaka Arduino standar "Servo.h " dikembangkan untuk servo analog dan dapat dimodifikasi jika perlu, agar berfungsi lebih baik dengan servo digital.

Gambar di atas menunjukkan rangkaian lengkapnya.

Langkah 5:​Kode

Proyek ini tidak rumit, tetapi memiliki banyak variabel. Yang paling bijaksana adalah mendefinisikannya dengan jelas dan meninggalkan komentar pada file unik:

ArmDefine.h

File ini juga harus mengatur sudut servo minimum, maksimum dan awal. Kode yang disertakan dalam tutorial ini, memiliki dua set parameter untuk lengan robot yang saya uji dalam proyek saya (tentu saja hanya sekelompok konstanta yang harus digunakan):

// MeArm 4-DOF#define minGrip 15 #define minBase 0 #define minShou 60 #define minElbw 60 #define maxGrip 45 #define maxBase 170#define maxShou 180 #define maxElbw 150 #define midGrip 30#define midBase 87#define midShou 138#define midElbw 100/* SS 3-DOF#define minGrip 75 #define minBase 5 #define minShou 5 #define minElbw 0 #define maxGrip 125 #define maxBase 150#define maxShou 155 #define maxElbw 0 midGrip 100#define midBase 90#define midShou 90#define midElbw 0 */ 

Setiap jenis lengan memiliki serangkaian parameter yang berbeda dan penting bagi Anda untuk menemukan yang tepat untuk Anda. Apa yang saya sarankan adalah bahwa awalnya potensiometer (pot) tetap pada titik tengahnya dan Pemetaan output PWM diatur ke nilai default:Max =255 , Min =0 dan Mid =126 ( "#defines " di atas). Kemudian, mulailah memvariasikan pot (satu per satu) dan ikuti di Serial Monitor (atau LCD) apa yang harus menjadi nilai minimum dan maksimum di mana lengan bekerja dengan benar. Itu akan menjadi nilai akhir yang akan digunakan untuk pengaturan (ubah nilai asli saya di ArmDefine.h) .

Untuk ”merekam” kumpulan koordinat (atau langkah) yang harus dimainkan robot, saya akan menggunakan larik data:

int gripPosition[100];int basePosition[100];int shouPosition[100];int elbwPosition[100];int positionIndex =0; // Indeks yang akan digunakan pada array posisi yang digunakan untuk tugas yang direkam 

Perhatikan bahwa saya tidak menjaga posisi "tersimpan" dan di akhir program "robot", indeks kembali ke nol dan robot akan menunggu perekaman urutan baru (program hilang). Atau, Anda dapat menyimpan array data ini di Arduino EEPROM, misalnya. Dengan melakukan itu, program akan dijalankan kembali atau bahkan Anda dapat memiliki lebih dari satu program yang tersimpan.

Langkah 6:​Logika program

Blok utama ("Loop") sangat sederhana:

Periksa apakah perintah untuk menjalankan "program" (urutan langkah) telah digunakan.

  • Jika demikian, jalankan.
  • Jika tidak, "program" belum selesai dan masih harus menulis langkah-langkah baru.
  • Jika "posisi baru" ditentukan, tambahkan ke program.
  • Pertama, periksa pesan yang tiba di buffer serial, dari perangkat Android.
  • Selanjutnya, memverifikasi apakah mode kontrol adalah "Lokal" atau "Jarak Jauh" (defaultnya adalah Lokal).
  • Kembali ke awal dan lakukan langkah 1 lagi.
void loop(){ checkBTcmd(); defineLocalRemote(); execTaskCmd =digitalRead (execTaskPin); if (execTaskCmd ==|| perintah HIGH =="runon") { RunProgram (); } else recArmPosition(); perintah ="";} 

Fungsi checkBTcmd() merakit string menggunakan karakter individu yang berasal dari modul BT. String ini diteruskan ke variabel "command ".

Fungsi defineLocalRemote() menganggap variabel "perintah " memeriksa apakah satu perintah untuk mengubah mode ke remote diterima atau sebaliknya. Perintah alarm juga dianalisis di sini. Untuk logika program, jika "Alarm" dipicu di perangkat Android, lengan harus selalu pergi ke Remote modus.

Fungsi RunProgram() melakukan persiapan, menyalakan / mematikan LED, dll dan terutama menjalankan fungsi:ExecuteTask() . Yang terakhir adalah fungsi yang berisi logika eksekusi dari urutan langkah. Fungsi meningkatkan "positionIndex " mengirimkan data posisi ke lengan satu per satu menggunakan alat:armPosition(grip, base, shoulder, elbow) .

Terakhir, fungsi yang benar-benar memerintahkan servo dan menulis "langkah" adalah recArmPosition() . Bergantung pada penerimaan perintah Android, fungsi ini akan menentukan posisi servos yang dapat melalui pot, atau melalui "slider" aplikasi Android. Dengan setiap perubahan posisi, fungsi ini mengirimkan koordinat ke servos menggunakan armPosition fungsi (pegangan, alas, bahu, siku). Pembacaan posisi sebenarnya dari pot atau slider dan aktivasi servo yang sesuai terjadi pada saat perintah "SAVE" atau "PROGRAM" dipicu. Pada saat itu, indeks posisi array bertambah dan langkah disimpan.

Untuk menyederhanakan pemahaman, semua kode didasarkan pada fungsi spesifiknya. "Penyiapan ", "Lingkaran " dan fungsi yang dijelaskan di atas hampir semuanya ada dalam file:MJRoBot_Arm_Robot_Task_Prgm.ino

Fungsi yang lebih umum seperti perintah read BT:void checkBTcmd() ; generator suara:bip kosong (int pin, int freq, long ms) dan debouncing:debounce boolean (int pin) ; ada di file:General_Functions.ino

Fakta penting:saat Arduino mengeksekusi instruksi berdasarkan clock 16Mhz, diharapkan tombol kontrol dibaca ratusan atau bahkan ribuan kali per detik, oleh karena itu penting untuk membuat tombol "debouncing" yang mengatur langkah perekaman .

File keempat dan terakhir adalah:Arm_Ctrl_and_Display.ino

Dalam file ini adalah fungsi membaca potensiometer:bool readPotenciometers() ; membaca slider Android:bool readSliders() ; penempatan servo:void armPosition (int gripp, int basee, int shoulder, elbow int) . Fungsi lain yang disertakan dalam file adalah untuk tampilan data pada LCD, Serial Monitor, alarm, dll.

Video menunjukkan lengan robot 4DOF "meArm" diprogram dari jarak jauh melalui aplikasi Android .

Kode sumber lengkap untuk proyek ini dapat ditemukan di GITHUB:

https://github.com/Mjrovai/MJRoBot-Programmed-Arm

atau di sini:

F49C85FIL8CVX0P.ino FC4OQJNIL8CVX1C.h FBYPQAMIL8CVX1D.ino F2SBAXVIL8CVX1E.ino

Langkah 7:Kesimpulan

Seperti biasa, saya berharap proyek ini dapat membantu orang lain menemukan jalan mereka di dunia Elektronik, Robotika, dan IoT yang mengasyikkan! Untuk proyek lainnya, silakan kunjungi blog saya:MJRoBot.org

Saludos dari selatan dunia! Sampai jumpa di tutorial saya berikutnya!

Terima kasih

Marcelo

Kode

  • Cuplikan kode #1
  • Cuplikan kode #2
  • Cuplikan kode #3
Cuplikan kode #1Arduino
// MeArm 4-DOF#define minGrip 15 #define minBase 0 #define minShou 60 #define minElbw 60 #define maxGrip 45 #define maxBase 170#define maxShou 180 #define maxElbw 150 #define midGrip 30#define midBase 87# define midShou 138#define midElbw 100/* SS 3-DOF#define minGrip 75 #define minBase 5 #define minShou 5 #define minElbw 0 #define maxGrip 125 #define maxBase 150#define maxShou 155 #define maxElbw 0 #define midGrip define midBase 90#define midShou 90#define midElbw 0 */
Cuplikan kode #2Arduino
int gripPosition[100];int basePosition[100];int shouPosition[100];int elbwPosition[100];int positionIndex =0; // Indeks yang akan digunakan pada array posisi yang digunakan untuk tugas yang direkam
Cuplikan kode #3Arduino
void loop(){ checkBTcmd(); defineLocalRemote(); execTaskCmd =digitalRead (execTaskPin); if (execTaskCmd ==|| perintah HIGH =="runon") { RunProgram (); } else recArmPosition(); perintah ="";}
Github
https://github.com/Mjrovai/MJRoBot-Programmed-Armhttps://github.com/Mjrovai/MJRoBot-Programmed-Arm

Skema

Lengan Robot
https://github.com/Mjrovai/MJRoBot-Programmed-Arm/blob/master/Arm_Robot_Task_Program_Man_BT_16_fev_16/Arm%20Robot%20Diagram.png

Proses manufaktur

  1. Kontrol Jarak Jauh Universal menggunakan Arduino, 1Sheeld, dan Android
  2. Senjata Robot dalam Pembuatan dan Manfaatnya
  3. Perbedaan Antara Manipulator Robot dan Lengan Robot
  4. Animasi dan Permainan LCD
  5. Voltmeter DIY Menggunakan Arduino dan Smartphone
  6. Menggunakan IoT untuk Mengontrol Lengan Robot dari Jarak Jauh
  7. Arduino 3D-Printed Robotic Arm
  8. Lengan Robot Terkendali Nunchuk (dengan Arduino)
  9. Voltmeter DIY dengan Arduino dan Tampilan Nokia 5110
  10. Lengan Robot Sederhana dan Cerdas Menggunakan Arduino