Agustus 18th, 2017 by Catur Budi Waluyo
Selamat pagi sobat, sekarang kita memasuki era modern dimana saat ini dalam kehidupan sehari-hari tidak lepas dari alat elektronik. Sehingga perkembangan elektronik menjadi berkembang pesat. Perkembangan ini dimulai dari komponen yang digunakan sampai aplikasi yang di hasilkan. Baru-baru ini banyak sekali produk-produk yang ditujukan untuk mempermudah pekerjaan dalam kehidupan sehari-hari salah satunya yaitu aplikasi lengan robot.
Sekarang ini, Robot tidak hanya ada dalam dunia industri saja. Saat ini robot juga gunakan di restoran untuk menyajikan makanan, rumah sakit, dan rumah untuk mengasuh bayi. Robot di sini berfungsi sebagai pelayan bagi konsumen, pasien maupun pemiliknya berdasar fungsinya masing – masing sesuai program yang diberikan. Robot sendiri terpasang beberapa sensor sesuai dengan fungsinya. Tetapi tidak semua robot dipasang sensor, karena mungkin penggunaannya masih manual secara langsung dioperasikan oleh manusia, tidak seperti robot yang diberi sensor yang mampu beroperasi sendiri tanpa dioperasikan manusia secara langsung.
Dalam sistem robot sendiri terdapat program yang berfungsi menjalankan robot tersebut sesuai fungsinya untuk membantu kegiatan manusia. Baik robot yang sudah otomatis bekerja sendiri ataupun robot yang masih dioperasikan langsung oleh manusia memerlukan pemrograman.
Untuk kali ini prototype yang dibuat oleh mahasiswa saya dengan nama Arif Budi P dan Muhammad Ari Roma mengembangkan lengan robot dengan stik es krim dan mikrokontroller AT Mega. Dengan pengoperasian yang mudah menggunakan smartphone yang menggunakan sistem Remote Tx Rx.
Untuk spesifikasi dari perangkat dapat dilihat pada tabel berikut ini:
Mikrokontroler |
ATmega328 |
Tegangan pengoperasian |
5V |
Tegangan input yang disarankan |
7-12V |
Batas tegangan input |
6-20V |
Jumlah pin I/O digital |
14 (6 di antaranya menyediakan keluaran PWM) |
Jumlah pin input analog |
6 |
Arus DC tiap pin I/O |
40 mA |
Arus DC untuk pin 3.3V |
50 mA |
Memori Flash |
32 KB (ATmega328), sekitar 0.5 KB digunakan oleh bootloader |
SRAM |
2 KB (ATmega328) |
EEPROM |
1 KB (ATmega328) |
Clock Speed |
16 MHz |
Skematik dari sistem Rangkaian lengan robot yang digunakan.
Berdasarkan gambar di atas dapat di jelaskan sebagai berikut: VCC IC dari power supply 5V 4A yang dihubungkan ke power input IC. Untuk servo mendapat VCC langsung dari power supply. Dan sinyalnya mendapat dari output PWM IC. Motor servo mendapatkan sinyal untuk menggerakkan servo berdasarkan sudut. Di sini kita menggunakan HP sebagai TX dan RX nya adalah rangkaian tersebut yang dihubung ke bluetooth. Kita pairing bluetooth HP dengan bluetooth rangkaian. Lalu kita jalankan aplikasi pada HP untuk menggerakkan setiap servonya. Maka bluetooth HP akan mengirimkan sinyal ke bluetooth rangkaian. Kemudian sinyal tersebut dimasukkan ke IC untuk diproses sesuai program yang telah di upload. Yaitu jika kita mengoperasikan servo 1 di aplikasi maka dari data program tersebut outputnyadigital 6pada IC. Begitu juga dengan servo 2 output sinyalnya terhubung ke output digital 9, servo 3 ke output digital 10 dan servo 4 ke output digital 11.
Program mikrokontroller yang digunakan sebagai berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
PROYEK RX TX ARM ROBOT RANGKAIAN LISTRIK KELAS B 1. Muhammad Ari Roma Wicaksono 16010082 2. Arif Budi Prakoso 16010096 #include <Servo.h> Servo myservo1, myservo2, myservo3, myservo4; byte serialA; void setup() { myservo1.attach(6); myservo2.attach(9); myservo3.attach(10); myservo4.attach(11); Serial.begin(9600); } void loop() { if (Serial.available() > 2) {serialA = Serial.read();Serial.println(serialA);} { unsigned int servopos = Serial.read(); unsigned int servopos1 = Serial.read(); unsigned int realservo = (servopos1 *256) + servopos; Serial.println(realservo); if (realservo >= 1000 && realservo <1180){ int servo1 = realservo; servo1 = map(servo1, 1000,1180,0,180); myservo1.write(servo1); Serial.println("servo 1 ON"); delay(10); } if (realservo >=2000 && realservo <2180){ int servo2 = realservo; servo2 = map(servo2,2000,2180,0,180); myservo2.write(servo2); Serial.println("servo 2 On"); delay(10); } if (realservo >=3000 && realservo < 3180){ int servo3 = realservo; servo3 = map(servo3, 3000, 3180,0,180); myservo3.write(servo3); Serial.println("servo 3 On"); delay(10); } if (realservo >=4000 && realservo < 4180){ int servo4 = realservo; servo4 = map(servo4, 4000, 4180,0,180); myservo4.write(servo4); Serial.println("servo 4 On"); delay(10); } } } |
Pada setup tertulis :
- “myservo1.attach (6)”, disini diartikan bahwa untuk servo satu terhubung atau mendapat sinyal dari output digital 6 dari IC.
- “myservo2.attach (9)”, disini diartikan bahwa untuk servo dua terhubung atau mendapat sinyal dari output digital 9 dari IC.
- “myservo3.attach (10)”, disini diartikan bahwa untuk servo tiga terhubung atau mendapat sinyal dari output digital 10 dari IC.
- “myservo4.attach (11)”, disini diartikan bahwa untuk servo empat terhubung atau mendapat sinyal dari output digital 11 dari IC.
Setup ini digunakan untuk mengatur program pada aplikasi untuk menentukan output digital yang mana yang akan dihubungkan ke motor servo.
Pada loop tertulis :
- if papapsaikjdk(realservo >=1000 “ realservo <1180) {
int servo1 = realservo;
servo1 = map (servo1, 1000, 1180, 0, 180) ;
servo1.write (servo1) ;
Serial.printin (“servo 1 ON”) ;
delay (10) ;
Diartikan bahwa pada servo satu ini frekuensi kerjanya dari 1000 sampai 1180. Dengan mapping frekuensi 1000 menunjukkan di posisi servo 0o sampai frekuensi 1180 menunjukkan di posisi 180o.
- if papapsaikjdk(realservo >=2000 “ realservo <2180) {
int servo2 = realservo ;
servo2 = map (servo2, 2000, 2180, 0, 180) ;
servo2.write (servo2) ;
Serial.printin (“servo 2 ON”) ;
delay (10) ;
Diartikan bahwa pada servo satu ini frekuensi kerjanya dari 2000 sampai 2180. Dengan mapping frekuensi 2000 menunjukkan di posisi servo 0o sampai frekuensi 2180 menunjukkan di posisi 180o.
- if papapsaikjdk(realservo >=3000 “ realservo <3180) {
int servo3 = realservo ;
servo3 = map (servo3, 3000, 3180, 0, 180) ;
servo3.write (servo3) ;
Serial.printin (“servo 3 ON”) ;
delay (10) ;
Diartikan bahwa pada servo satu ini frekuensi kerjanya dari 3000 sampai 3180. Dengan mapping frekuensi 3000 menunjukkan di posisi servo 0o sampai frekuensi 3180 menunjukkan di posisi 180o.
- if papapsaikjdk(realservo >=4000 “ realservo <4180) {
int servo4 = realservo ;
servo4 = map (servo4, 4000, 4180, 0, 180) ;
servo4.write (servo4) ;
Serial.printin (“servo 4 ON”) ;
delay (10) ;
Diartikan bahwa pada servo satu ini frekuensi kerjanya dari 4000 sampai 4180. Dengan mapping frekuensi 4000 menunjukkan di posisi servo 0o sampai frekuensi 4180 menunjukkan di posisi 180o.
Loop disini digunakan untuk mengatur cara dan sudut kerja dari servo berdasarkan frekuensinya masing – masing. Frekuensi servo 1 sampai dengan servo 4 dibedakan agar saat bekerja bisa sendiri – sendiri. Karena jika frekuensinya sama maka servo – serevo tersebut akan bekerja bersamaan.
Sedangkan aplikasi yang digunakan pada smartphone saya update di kemudian hari. semoga bermanfaat.
Update 31/08/2017
Software android yang digunakan dapat di download pada link ini atau klik ini.
Posted in Elektronika, Kuliah, Riset Tagged with: ATmega328, bluetooth, Lengan robot, Mikrokontroller