- Komponen Diperlukan
- Bersedia menggunakan ARM Robotik bercetak 3D
- Rajah Litar
- Langkah-langkah yang terlibat dalam Pengaturcaraan LPC2148 untuk Robotic Arm
- Penjelasan Pengekodan
- Memilih Servo Motor untuk berputar menggunakan butang Tekan
- Bekerja Pilih dan Letakkan Lengan Robotik
Robotic Arms, adalah salah satu ciptaan kejuruteraan yang menarik dan selalu menarik untuk melihat perkara-perkara ini condong dan menyorot untuk menyelesaikan perkara-perkara yang rumit seperti yang dilakukan oleh manusia. Lengan robotik ini biasa dijumpai di industri di barisan pemasangan yang melakukan kerja mekanikal yang kuat seperti pengelasan, penggerudian, pengecatan dll. Baru-baru ini lengan robotik yang maju dengan ketepatan tinggi juga sedang dikembangkan untuk melakukan operasi pembedahan yang kompleks. Oleh itu, dalam tutorial ini mari kita bina Lengan Robotik sederhana menggunakan mikrokontroler ARM7-LPC2148 untuk memilih & meletakkan objek dengan cara mengendalikan beberapa potensiometer secara manual.
Dalam tutorial ini kita akan menggunakan ARM robotik bercetak 3D yang dibina dengan mengikuti prosedur di thingiverse. ARM menggunakan 4 servo motor untuk pergerakan ARM robotik. Sekiranya anda tidak mempunyai pencetak, anda juga boleh membina lengan anda dengan kadbod ringkas seperti yang kami buat untuk Projek Lengan Robotik Arduino kami. Untuk inspirasi, anda juga boleh merujuk pada Arm and Robotic Record and Play yang kami bina sebelumnya menggunakan Arduino.
Jadi sekarang mari kita siapkan semua perkara untuk projek kita
Komponen Diperlukan
- ARM Robotik Pencetak 3D
- ARM7-LPC2148
- Motor Servo SG-90 (4)
- Potensiometer 10k (4)
- Butang Tekan (4)
- LED (4)
- Penyesuai Daya 5V (1A) DC
- Perintang (10k (4), 2.2k (4))
- Papan roti
- Wayar Penyambung
Bersedia menggunakan ARM Robotik bercetak 3D
Lengan Robotik bercetak 3D yang digunakan dalam tutorial ini dibuat dengan mengikuti reka bentuk yang diberikan oleh EEZYbotARM yang terdapat di Thingiverse. Prosedur lengkap untuk membuat lengan robot bercetak 3D dan perincian pemasangan dengan video terdapat dalam pautan benda, yang terdapat di atas.
Ini adalah gambar Robot Arm saya yang dicetak 3D setelah dipasang dengan 4 Servo Motors.
Rajah Litar
Gambar berikut menunjukkan sambungan litar Robotic Arm berdasarkan ARM.
Sambungan litar untuk projek itu mudah. Pastikan menghidupkan Servo Motors dengan penyesuai kuasa 5V DC yang berasingan. Untuk potensiometer dan butang tekan, kita dapat menggunakan 3.3V yang tersedia dari mikrokontroler LPC2148.
Di sini kita menggunakan 4 pin ADC LPC2148 dengan 4 potensiometer. Dan juga 4 pin PWM LPC2148 yang dihubungkan dengan pin PWM motor servo. Kami juga menyambungkan 4 butang tekan untuk memilih motor mana yang akan dikendalikan. Jadi, setelah menekan butang potensiometer yang dihormati diubah untuk mengubah kedudukan motor servo.
Butang tekan satu hujung yang dihubungkan dengan GPIO LPC2148 ditarik ke bawah melalui perintang 10k dan hujung lain dihubungkan dengan 3.3V. Juga 4 LED disambungkan untuk menunjukkan motor servo mana yang dipilih untuk mengubah kedudukan.
Sambungan litar antara 4 Servo Motor & LPC2148:
LPC2148 | Motor Servo |
P0.1 | SERVO1 (PWM-Orange) |
P0.7 | SERVO2 (PWM-Orange) |
P0.8 | SERVO3 (PWM-Orange) |
P0.21 | SERVO4 (PWM-Orange) |
Sambungan litar antara 4 Potensiometer & LPC2148:
LPC2148 | Pin Pusat Potensiometer Pin Kiri - 0V GND LPC2148 Pin Kanan - 3.3V dari LPC2148 |
P0.25 | Potensiometer1 |
P0.28 | Potensiometer2 |
P0.29 | Potensiometer3 |
P0.30 | Potensiometer4 |
Sambungan litar 4 LED dengan LPC2148:
LPC2148 | LED Anode (Katod semua LED adalah GND) |
P1.28 | LED1 (Anod) |
P1.29 | LED2 (Anod) |
P1.30 | LED3 (Anod) |
P1.31 | LED4 (Anod) |
Sambungan litar dari 4 butang tekan dengan LPC2148:
LPC2148 | Butang Tekan (Dengan Perintang Pull-Down 10k) |
P1.17 | Butang tekan1 |
P1.18 | Butang tekan2 |
P1.19 | Butang tekan3 |
P1.20 | Butang tekan4 |
Langkah-langkah yang terlibat dalam Pengaturcaraan LPC2148 untuk Robotic Arm
Sebelum memprogram Lengan Robotik ini, kita perlu mengetahui tentang menghasilkan PWM di LPC2148 dan menggunakan ADC di ARM7-LPC2148. Untuk itu, rujuk projek kami sebelumnya pada motor Interfacing Servo dengan LPC2148 dan bagaimana menggunakan ADC di LPC2148.
Penukaran ADC menggunakan LPC2148
Oleh kerana kita perlu memberikan nilai ADC untuk menetapkan nilai kitaran tugas untuk menghasilkan output PWM untuk mengawal kedudukan Motor servo. Kita perlu mencari nilai ADC potensiometer. Oleh kerana kita mempunyai empat potensiometer untuk mengawal empat motor Servo, kita memerlukan 4 saluran ADC LPC2148. Di sini dalam tutorial ini kita menggunakan pin ADC (P0.25, P0.28, P0.29, P0.30) saluran ADC masing-masing 4,1,2,3 yang terdapat dalam LPC2148.
Menjana isyarat PWM untuk Servo Motor menggunakan LPC2148
Oleh kerana kita perlu menghasilkan isyarat PWM untuk mengawal kedudukan motor servo. Kita perlu mengatur kitaran tugas PWM. Kami mempunyai empat motor Servo yang disambungkan ke lengan robot jadi kami memerlukan 4 saluran PWM LPC2148. Di sini dalam tutorial ini kita menggunakan pin PWM (P0.1, P0.7, P0.8, P0.21) saluran PWM masing-masing sebanyak 3,2,4,5 yang terdapat di LPC2148.
Memprogramkan dan Mem-Flash Fail Hex ke LPC2148
Untuk Program ARM7-LPC2148 kita memerlukan keil uVision & untuk memancarkan kod HEX ke alat Flash Magic LPC2148 diperlukan. Kabel USB digunakan di sini untuk memprogram ARM7 Stick melalui port USB mikro. Kami menulis kod menggunakan Keil dan membuat fail hex dan kemudian fail HEX diturunkan ke tongkat ARM7 menggunakan Flash Magic. Untuk mengetahui lebih lanjut mengenai memasang keil uVision dan Flash Magic dan cara menggunakannya, ikuti pautan Memulakan Dengan Mikrokontroler ARM7 LPC2148 dan Program dengan menggunakan Keil uVision.
Penjelasan Pengekodan
Program lengkap untuk Robotic Arm Project ini diberikan pada akhir tutorial. Sekarang mari kita lihat pengaturcaraannya secara terperinci.
Mengkonfigurasi 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 #tentukan AD02 (1 << 26) / / Pilih fungsi AD0.2 untuk P0.29 #tentukan 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 butang tekan.
PINSEL2 = 0x00000000;
Untuk menjadikan pin LED sebagai pin Output dan Pushbutton sebagai Input, register IODIR1 digunakan. (0 untuk INPUT & 1 untuk OUTPUT)
IODIR1 = ((0 << 17) - (0 << 18) - (0 << 19) - (0 << 20) - (1 << 28) - (1 << 29) - (1 << 30) - (1 << 31));
Sementara nombor pin didefinisikan sebagai
#define SwitchPinNumber1 17 // (Disambungkan dengan P1.17) #define SwitchPinNumber2 18 // (Disambungkan dengan P1.18) #define SwitchPinNumber3 19 // (Dihubungkan dengan P1.19) #define SwitchPinNumber4 20 // (Terhubung dengan P1. 20) #define LedPinNumber1 28 // (Dihubungkan dengan P1.28) #define LedPinNumber2 29 // (Dihubungkan dengan P1.29) #define LedPinNumber3 30 // (Terhubung dengan P1.30) #define LedPinNumber4 31 // (Terhubung dengan H1.31)
Mengkonfigurasi tetapan penukaran ADC
Seterusnya mod penukaran ADC dan jam untuk ADC ditetapkan menggunakan register AD0CR_setup.
lama tidak ditandatangani AD0CR_setup = (CLKDIV << 8) - BURST_MODE_OFF - PowerUP; // Menyiapkan Mode ADC
Sementara CLCKDIV, Burst Mode dan PowerUP didefinisikan sebagai
#define CLKDIV (15-1) #define BURST_MODE_OFF (0 << 16) // 1 untuk on dan 0 untuk off #define PowerUP (1 << 21)
Menetapkan jam untuk Penukaran ADC (CLKDIV)
Ini digunakan untuk menghasilkan jam untuk ADC. Jam ADC 4Mhz (ADC_CLOCK = PCLK / CLKDIV) di mana "CLKDIV-1" sebenarnya digunakan, dalam kes kita PCLK = 60mhz
Mod Burst (Bit-16): Bit ini digunakan untuk penukaran BURST. Sekiranya bit ini diatur, modul ADC akan melakukan penukaran untuk semua saluran yang dipilih (SET) dalam bit SEL. Menetapkan 0 dalam bit ini akan mematikan penukaran BURST.
Mod Turunkan Daya (Bit-21): Ini digunakan untuk menghidupkan atau mematikan ADC. Menetapkan (1) pada bit ini menjadikan ADC keluar dari mod power down dan menjadikannya beroperasi. Membersihkan bit ini akan mematikan ADC.
Mengkonfigurasi tetapan penukaran PWM
Tetapkan semula dan matikan penghitung untuk PWM menggunakan daftar PWMTCR dan sediakan PWM Timer Prescale Register dengan nilai prescaler.
PWMTCR = 0x02; PWMPR = 0x1D;
Seterusnya tetapkan jumlah maksimum dalam satu kitaran. Ini dilakukan dalam Match Match 0 (PWMMR0). Kerana kita mempunyai 20000 kerana ia adalah gelombang PWM 20msecs
PWMMR0 = 20000;
Setelah itu menetapkan nilai untuk putaran tugas dalam daftar pertandingan, kami menggunakan PWMMR4, PWMMR2, PWMMR3, PWMMR5. Di sini kita menetapkan nilai awal 0 msec (Toff)
PWMMR4 = 0; PWMMR2 = 0; PWMMR3 = 0; PWMMR5 = 0;
Selepas itu tetapkan Daftar Kawalan Pertandingan PWM untuk menyebabkan penyetelan semula kaunter apabila daftar perlawanan berlaku.
PWMMCR = 0x00000002; // Tetapkan semula pada pertandingan MR0
Selepas itu, PWM latch Enable Register untuk membolehkan penggunaan nilai padanan (PWMLER)
PWMLER = 0x7C; // Latch enabled untuk PWM2, PWM4, PWM4 dan PWM5
Tetapkan semula penghitung pemasa menggunakan sedikit di PWM Timer Control Register (PWMTCR) dan juga membolehkan PWM.
PWMTCR = 0x09; // Dayakan PWM dan kaunter
Seterusnya aktifkan output PWM dan tetapkan PWM dalam mod terkawal tepi tunggal dalam daftar kawalan PWM (PWMPCR).
PWMPCR = 0x7C00; // Dayakan PWM2, PWM4, PWM4 dan PWM5, PWM terkawal tepi tunggal
Memilih Servo Motor untuk berputar menggunakan butang Tekan
Kami mempunyai empat butang tekan yang digunakan untuk memutar empat motor servo yang berbeza. Dengan memilih satu butang tekan dan mengubah potensiometer yang sesuai, nilai ADC menetapkan kitaran tugas dan motor servo yang sesuai mengubah posisinya. Untuk mendapatkan status suis butang tekan
switchStatus1 = (IOPIN1 >> SwitchPinNumber1) & 0x01;
Oleh itu, dengan bergantung pada nilai suis mana yang TINGGI, penukaran ADC berlaku dan kemudian setelah penukaran nilai ADC (0 hingga 1023) berjaya, ia dipetakan dalam bentuk (0 hingga 2045) dan kemudian nilai kitaran tugas ditulis ke pin (PWMMRx) PWM yang disambungkan ke motor servo. Dan juga, LED dihidupkan TINGGI untuk menunjukkan suis mana yang ditekan. Berikut adalah contoh untuk menekan butang pertama
jika (switchStatus1 == 1) { IOPIN1 = (1 <
Bekerja Pilih dan Letakkan Lengan Robotik
Setelah memuat naik kod ke LPC2148, tekan suis mana pun dan ubah potensiometer yang sesuai untuk mengubah kedudukan lengan robot.
Setiap suis dan potensiometer mengawal setiap pergerakan servomotor yang merupakan pergerakan dasar kiri atau kanan, pergerakan ke atas atau ke bawah, ke depan atau ke belakang dan kemudian gripper untuk menahan dan melepaskan pergerakan. Kod lengkap dengan video kerja terperinci diberikan di bawah.