- Komponen Diperlukan
- Mempersiapkan ARM Robot cetak 3D
- Diagram Sirkuit
- Langkah-langkah yang terlibat dalam Pemrograman LPC2148 untuk Lengan Robot
- Penjelasan Coding
- Memilih Motor Servo untuk diputar menggunakan tombol Push
- Pengerjaan Pilih dan Tempatkan Lengan Robot
Lengan Robot, adalah salah satu kreasi teknik yang menarik dan selalu menarik untuk melihat benda-benda ini miring dan bergeser untuk menyelesaikan hal-hal rumit seperti yang dilakukan lengan manusia. Lengan robotik ini umumnya dapat ditemukan di industri di jalur perakitan yang melakukan pekerjaan mekanis yang intens seperti pengelasan, pengeboran, pengecatan, dll. Lengan robotik canggih baru-baru ini dengan presisi tinggi juga sedang dikembangkan untuk melakukan operasi bedah yang kompleks. Jadi dalam tutorial ini mari kita membangun Lengan Robot sederhana menggunakan mikrokontroler ARM7-LPC2148 untuk mengambil & menempatkan objek dengan mengendalikan beberapa potensiometer secara manual.
Dalam tutorial ini kita akan menggunakan ARM robot cetak 3D yang dibuat dengan mengikuti prosedur di thingiverse. ARM menggunakan 4 motor servo untuk pergerakan robotik ARM. Jika Anda tidak memiliki printer, Anda juga dapat membangun lengan Anda dengan karton sederhana seperti yang kami buat untuk Proyek Lengan Robot Arduino kami. Untuk inspirasi Anda juga bisa merujuk ke Rekam dan Mainkan Lengan Robot yang kami buat sebelumnya menggunakan Arduino.
Jadi sekarang mari kita siapkan semuanya untuk proyek kita
Komponen Diperlukan
- ARM Robot Printer 3D
- ARM7-LPC2148
- SG-90 Servo Motor (4)
- Potensiometer 10k (4)
- Tombol Tekan (4)
- LED (4)
- Adaptor Daya DC 5V (1A)
- Resistor (10k (4), 2,2k (4))
- Papan tempat memotong roti
- Menghubungkan Kabel
Mempersiapkan ARM Robot cetak 3D
Lengan Robot cetak 3D yang digunakan dalam tutorial ini dibuat dengan mengikuti desain yang diberikan oleh EEZYbotARM yang tersedia di Thingiverse. Prosedur lengkap untuk membuat lengan robot cetak 3D dan detail perakitan dengan video ada di tautan benda yang berbeda, yang dibagikan di atas.
Ini adalah gambar Lengan Robot cetak 3D saya setelah dirakit dengan 4 Motor Servo.
Diagram Sirkuit
Gambar berikut menunjukkan koneksi rangkaian Lengan Robot berbasis ARM.
Koneksi sirkuit untuk proyek ini sederhana. Pastikan untuk menyalakan Motor Servo dengan adaptor daya DC 5V terpisah. Untuk potensiometer dan push button kita dapat menggunakan 3.3V yang tersedia dari mikrokontroler LPC2148.
Di sini kami menggunakan 4 pin ADC LPC2148 dengan 4 potensiometer. Dan juga 4 pin PWM LPC2148 dihubungkan dengan pin PWM motor servo. Kami juga telah menghubungkan 4 tombol tekan untuk memilih motor mana yang akan dioperasikan. Jadi, setelah menekan tombol potensiometer yang divariasikan untuk mengubah posisi motor servo.
Tombol tekan salah satu ujung yang terhubung dengan GPIO dari LPC2148 ditarik ke bawah melalui resistor 10k dan ujung lainnya dihubungkan dengan 3.3V. Juga 4 LED terhubung untuk menunjukkan motor servo mana yang dipilih untuk mengubah posisi.
Koneksi sirkuit antara 4 Servo Motor & LPC2148:
LPC2148 | Motor servo |
P0.1 | SERVO1 (PWM-Oranye) |
P0.7 | SERVO2 (PWM-Oranye) |
P0.8 | SERVO3 (PWM-Oranye) |
P0.21 | SERVO4 (PWM-Oranye) |
Koneksi sirkuit antara 4 Potensiometer & LPC2148:
LPC2148 | Potensiometer Pin Tengah Pin Kiri - 0V GND dari LPC2148 Pin Kanan - 3,3V dari LPC2148 |
P0.25 | Potensiometer 1 |
P0.28 | Potensiometer2 |
P0.29 | Potensiometer3 |
P0.30 | Potensiometer 4 |
Koneksi sirkuit 4 LED dengan LPC2148:
LPC2148 | Anoda LED (Katoda dari semua LED adalah GND) |
P1.28 | LED1 (Anoda) |
P1.29 | LED2 (Anoda) |
P1.30 | LED3 (Anoda) |
P1.31 | LED4 (Anoda) |
Koneksi sirkuit dari 4 tombol tekan dengan LPC2148:
LPC2148 | Tombol Tekan (Dengan Resistor Tarik 10k) |
P1.17 | Tombol tekan1 |
P1.18 | Tombol tekan2 |
P1.19 | Tombol tekan3 |
P1.20 | Tombol tekan4 |
Langkah-langkah yang terlibat dalam Pemrograman LPC2148 untuk Lengan Robot
Sebelum memprogram untuk Lengan Robot ini, kita perlu mengetahui tentang menghasilkan PWM di LPC2148 dan menggunakan ADC di ARM7-LPC2148. Untuk itu, lihat proyek kami sebelumnya tentang Interfacing Servo motor dengan LPC2148 dan cara menggunakan ADC di LPC2148.
Konversi ADC menggunakan LPC2148
Karena kita perlu memberikan nilai ADC untuk mengatur nilai siklus tugas untuk menghasilkan output PWM untuk mengontrol posisi Motor servo. Kita perlu menemukan nilai ADC dari potensiometer. Karena kami memiliki empat potensiometer untuk mengendalikan empat motor Servo, kami membutuhkan 4 saluran ADC LPC2148. Di sini, di tutorial ini kami menggunakan pin ADC (P0.25, P0.28, P0.29, P0.30) dari saluran ADC masing-masing 4,1,2,3 yang ada di LPC2148.
Membangkitkan sinyal PWM untuk Servo Motor menggunakan LPC2148
Karena kita perlu membangkitkan sinyal PWM untuk mengontrol posisi motor servo. Kita perlu mengatur duty cycle dari PWM. Kami memiliki empat motor Servo yang terhubung ke lengan robot sehingga kami membutuhkan 4 saluran PWM LPC2148. Di sini, di tutorial ini kami menggunakan pin PWM (P0.1, P0.7, P0.8, P0.21) dari kanal PWM masing-masing 3,2,4,5 yang ada di LPC2148.
Pemrograman dan Flashing File Hex ke LPC2148
Untuk memprogram ARM7-LPC2148 kita membutuhkan keil uVision & untuk mem- flash kode HEX ke LPC2148 diperlukan alat Flash Magic. Kabel USB digunakan di sini untuk memprogram ARM7 Stick melalui port micro USB. Kami menulis kode menggunakan Keil dan membuat file hex dan kemudian file HEX di-flash ke tongkat ARM7 menggunakan Flash Magic. Untuk mengetahui lebih lanjut tentang menginstal keil uVision dan Flash Magic dan bagaimana menggunakannya ikuti link Memulai Dengan Mikrokontroler ARM7 LPC2148 dan Program itu menggunakan Keil uVision.
Penjelasan Coding
Program lengkap untuk Proyek Lengan Robot ini diberikan di akhir tutorial. Sekarang mari kita lihat pemrogramannya secara detail.
Mengonfigurasi PORT LPC2148 untuk menggunakan GPIO, PWM, dan ADC:
Menggunakan register PINSEL1 untuk mengaktifkan saluran ADC- ADC0.4, ADC0.1, ADC0.2, ADC0.3 untuk pin P0.25, P0.28, P0.29, P0.30. Dan juga, untuk PWM5 untuk pin P0.21 (1 << 10).
#define AD04 (1 << 18) // Pilih fungsi AD0.4 untuk P0.25 #define AD01 (1 << 24) // Pilih fungsi AD0.1 untuk P0.28 #define AD02 (1 << 26) / / Pilih fungsi AD0.2 untuk P0.29 #define AD03 (1 << 28) // Pilih fungsi AD0.3 untuk P0.30 PINSEL1 - = AD04 - AD01 - AD02 - AD03 - (1 << 10);
Menggunakan register PINSEL0 untuk mengaktifkan saluran PWM PWM3, PWM2, PWM4 untuk pin P0.1, P0.7, P0.8 dari LPC2148.
PINSEL0 = 0x000A800A;
Menggunakan register PINSEL2 untuk mengaktifkan fungsi pin GPIO untuk semua pin di PORT1 yang digunakan untuk sambungan LED dan tombol tekan.
PINSEL2 = 0x00000000;
Untuk menjadikan pin LED sebagai pin Output dan Pushbutton sebagai Input digunakan register IODIR1. (0 untuk INPUT & 1 untuk OUTPUT)
IODIR1 = ((0 << 17) - (0 << 18) - (0 << 19) - (0 << 20) - (1 << 28) - (1 << 29) - (1 << 30) - (1 << 31));
Sedangkan nomor pin diartikan sebagai
#define SwitchPinNumber1 17 // (Terhubung dengan P1.17) #define SwitchPinNumber2 18 // (Terhubung dengan P1.18) #define SwitchPinNumber3 19 // (Terhubung dengan P1.19) #define SwitchPinNumber4 20 // (Terhubung dengan P1. 20) #define LedPinNumber1 28 // (Terhubung dengan P1.28) #define LedPinNumber2 29 // (Terhubung dengan P1.29) #define LedPinNumber3 30 // (Terhubung dengan P1.30) #define LedPinNumber4 31 // (Terhubung dengan P1.31)
Mengonfigurasi pengaturan konversi ADC
Selanjutnya mode konversi ADC dan jam untuk ADC diatur menggunakan register AD0CR_setup.
unsigned long AD0CR_setup = (CLKDIV << 8) - BURST_MODE_OFF - PowerUP; // Menyiapkan Mode ADC
Sedangkan CLCKDIV, Burst Mode dan PowerUP didefinisikan sebagai
#define CLKDIV (15-1) #define BURST_MODE_OFF (0 << 16) // 1 untuk hidup dan 0 untuk mati #define PowerUP (1 << 21)
Menyetel jam untuk Konversi ADC (CLKDIV)
Ini digunakan untuk menghasilkan jam untuk ADC. 4Mhz ADC clock (ADC_CLOCK = PCLK / CLKDIV) di mana "CLKDIV-1" sebenarnya digunakan, dalam kasus kami PCLK = 60mhz
Burst Mode (Bit-16): Bit ini digunakan untuk konversi BURST. Jika bit ini disetel, modul ADC akan melakukan konversi untuk semua saluran yang dipilih (SET) di SEL bit. Menetapkan 0 dalam bit ini akan menonaktifkan konversi BURST.
Power Down Mode (Bit-21): Ini digunakan untuk menyalakan atau mematikan ADC. Pengaturan (1) dalam bit ini mengeluarkan ADC dari mode daya mati dan membuatnya beroperasi. Menghapus bit ini akan mematikan ADC.
Mengonfigurasi pengaturan konversi PWM
Pertama Atur ulang dan nonaktifkan penghitung untuk PWM menggunakan register PWMTCR dan atur Register Prescale Timer PWM dengan nilai prescaler.
PWMTCR = 0x02; PWMPR = 0x1D;
Selanjutnya atur jumlah hitungan maksimum dalam satu siklus. Ini dilakukan di Match Register 0 (PWMMR0). Karena kami memiliki 20000 karena itu adalah gelombang PWM 20msecs
PWMMR0 = 20000;
Setelah itu atur nilai duty cycle di register pertandingan, kita menggunakan PWMMR4, PWMMR2, PWMMR3, PWMMR5. Di sini kami menetapkan nilai awal 0 msec (Toff)
PWMMR4 = 0; PWMMR2 = 0; PWMMR3 = 0; PWMMR5 = 0;
Setelah itu setel PWM Match Control Register agar menyebabkan counter reset ketika match register terjadi.
PWMMCR = 0x00000002; // Setel ulang pada pertandingan MR0
Setelah itu, latch PWM Enable Register untuk mengaktifkan use of match value (PWMLER)
PWMLER = 0x7C; // Aktifkan kancing untuk PWM2, PWM4, PWM4, dan PWM5
Setel ulang penghitung waktu menggunakan sedikit di PWM Timer Control Register (PWMTCR) dan juga mengaktifkan PWM.
PWMTCR = 0x09; // Aktifkan PWM dan penghitung
Selanjutnya aktifkan keluaran PWM dan setel PWM dalam mode terkontrol tepi tunggal dalam register kontrol PWM (PWMPCR).
PWMPCR = 0x7C00; // Aktifkan PWM2, PWM4, PWM4 dan PWM5, PWM terkontrol satu sisi
Memilih Motor Servo untuk diputar menggunakan tombol Push
Kami memiliki empat tombol tekan yang digunakan untuk memutar empat motor servo yang berbeda. Dengan memilih satu tombol tekan dan memvariasikan potensiometer yang sesuai, nilai ADC mengatur siklus kerja dan motor servo yang sesuai mengubah posisinya. Untuk mendapatkan status sakelar tombol tekan
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01;
Jadi, dengan bergantung pada nilai sakelar mana yang TINGGI, konversi ADC terjadi dan kemudian setelah konversi berhasil dari nilai ADC (0 hingga 1023), itu dipetakan dalam istilah (0 hingga 2045) dan kemudian nilai siklus tugas ditulis ke pin PWM (PWMMRx) terhubung ke motor servo. Dan juga, LED dinyalakan untuk menunjukkan sakelar mana yang ditekan. Berikut adalah contoh tombol tekan pertama
jika (switchStatus1 == 1) { IOPIN1 = (1 <
Pengerjaan Pilih dan Tempatkan Lengan Robot
Setelah mengunggah kode ke LPC2148, tekan sakelar apa saja dan variasikan potensiometer yang sesuai untuk mengubah posisi lengan robot.
Setiap sakelar dan potensiometer mengontrol setiap gerakan servomotor yaitu gerakan basis kiri atau kanan, gerakan naik atau turun, maju atau mundur dan kemudian gripper untuk menahan dan melepaskan gerakan. Kode lengkap dengan video kerja terperinci diberikan di bawah ini.