Sabtu, 04 Januari 2020

Merakit Robot Lengan Memakai 6 Buah Motor Servo Langkah Rincian

Merakit Robot Lengan Menggunakan 6 buah Motor servo Langkah Detail. Mari merakit Robot Lengan menggunakan 6 buah motor servo. Robot lengan ini banyak ditemui di industri dan otomatisasi. Robot lengan dapat kita gunakan untuk mengangkat benda atau memindahkan benda dari tempat satu ke tempat lainnya. Untuk merakit Robot lengan (arm robot) maka anda bisa menggunakan motor servo dan dikontrol pergerakannya menggunakan mikrokontroller. Dalam pembahasan ini kita menggunakan mikrokontroller Arduino Uno dengan menggunakan bahasa pemograman C++. Untuk merakit lengan robot kita membutuhkan berbagai alat dan bahan yaitu : Plat almunium robot lengan Motor servo type MG996R sebanyak 6 buah Board Arduino UNO R3 Driver servo PCA9685 Sensor Ultrasonic Kabel jumper Power supply 5 V / 3 A Obeng + Tang lancip Bor tangan Kabel Buzzer Setelah kita meyedikan alat dan bahan disiapkan, maka proses pertama adalah merakit lengan robot (arm robot). Kita melakukan proses perakitan  robot lengan dimulai dari memasang motor servo 0 pada bagian bawah, lalu dilanjutkan persendian pada lengan robot dengan menggunakan motor servo 1, 2, 3, 4. Sedangkan untuk japit lengan robot (arm robot) diletakkan motor servo 5.  Saat merakit robot lengan kita banyak gunakan obeng plus dan tang. Pada saat memasang motor servo pada persendian robot waka wajib menggunakan bearing supaya pergerakan sendinya menjadi lancar. Harap diperhatikan bahwa pemasangan plat dan motor servo harus dilakukan benar karena kalau tidak benar maka pergerakan sendinya bisa saja tidak lancar atau tidak sesuai.  Mohon maaf, dalam proses perakitan robot lengan ini kami tidak bisa melampirkan foto-fotonya secara detail dalam website ini, sehingga sebaiknya anda menyimak pada video dibawah ini : https://www.youtube.com/watch?v=WQRPdNfW80Q&t Setelah kita melakukan proses perakitan maka kita harus memastikan ke 6 buah servo bekerja normal dan dicari data sudut pergerakan maksimum / minimum setiap motor servo sesuai sendi pergerakannya. Karena jika pergerakan motor servo melebihi batas dalam pergerakan sendinya, maka motor bisa nyangkut atau bergerak tidak normal. Jadi data sudut pergerakan servo 1,2,3,4,5, dan 6 akan berbeda-beda sesuai pergerakannya. Didalam program sudah diatur pergerakan maksimum dan mnimum, tetapi pergerakan tersebut masih bisa di modifikasi sesuai keinginan. Untuk dapat mengatur pergerakan sudut motor servo maka harus memahami prinsip kerja motor servo. Motor Servo diputar berdasarkan sinyal Pulse width Modulation (PWM). Jadi sebelum merakit lengan robot harus menguasai bagaimana cara memutar motor servo sesuai sudutnya melalui sinyal PWM. Sinyal PWM bisa dibangkitkan oleh mikrokontroller arduino melalui pemograman. Untuk jelasnya tentang pembahasan PWM bisa lihat  disini Jika anda ingin mengetahui cara mengendalikan putaran motor servo menggunakan arduino maka bisa buka materi di website ini, dengan cara klik mengendalikan motor servo . Jika anda merasa penjelasannya masih kurang maka bisa tonton video youtubenya tentang motor servo yaitu pada channel youtube "OTOMOTIF-SMKN1SKL" judulnya : Tutorial motor Servo Arduino. Setelah kita mampu menguasai prinsip kerja motor servo maka anda bisa melakukan proses pemograman lengan robot. Untuk menggerakkan motor servo yang banyak pada lengan robot maka jangan menggunakan catu daya 5 volt langsung keluaran dari Arduino uno karena arus listriknya terbatas. Jadi khusus catu daya motor servonya kita  menggunakan catu daya eksternal tersendiri misalnya power supply 5 volt/ 3 s.d 5 Ampere. Sebagai kita ketahui bahwa pengendali motor servo yang banyak maka kita membutuhkan modul driver khusus motor servo yaitu modul  PCA9685. Pada program Arduino IDE standar belum dilengkapi library PCA9685. Jadi anda harus menambahkan librarynya terlebih dahulu. Tentang cara penambahan library PCA9685 bisa dibrowsing di internet. Kemudian selesai menambahkan library PCA9685 lalu hubungkan arduino uno, PCA9685 dan motor servo seperti gambar di bawah ini: https://learn.adafruit.com/assets/2221 J ika menggunakan motor servo yang bnyak maka bisa menggunakan semua output modul PCA9685. Untuk jelasnya bisa dilihat pada gambar dibawah ini :   https://steemit.com/utopian-io/@drencolha/adafruit-pca9685-pwm-servo-driver-setup-arduino-library-use-shown-with-an-example-project-tutorial Pada robot lengan ini kita menggunakan juga sensor ultara sonic untuk mendeteksi objek/benda. Pada saat benda terdeteksi maka robot akan aktif dan pada saat benda tidak terdeteksi maka robot selalu standbye menunggu bendanya ada.Type Sensor Ultarasonic yang digunakan adalah HC-SR04. Pin Trig pada HC-SR04 dihubungkan  ke pin 13 Arduino Uno dan pin Echo HC-SR04 dihubungkan ke pin 12 Arduino Uno. Sedangkan Tegangan Vcc HC-SR04 hubungkan dengan 5 volt Arduino dan GND HC-SR04 disatukan dengan GND Arduino Uno. Selain itu, robot lengan ini dilengkapi juga dengan buzzer. Buzzer dihubungkan dengan pin 11 Arduino. Buzzer kita gunakan sebagai tanda isyarat. Pada saat robot pertama kali di hidupkan akan ada bunyi buzzer 3 kali, ini memberi peringatan di sekitar robot agar jangan terlalu dekat dengan lengan robot karena robot sudah aktif. Tanda bunyi buzzer berikutnya adalah saat ada objek atau benda yang akan dipindahkan sudah terpasang dengan benar di posisinya. Selama benda tidak terpasang dengan tepat di posisinya maka buzzer tidak akan berbunyi. Jika buzzer berbunyi maka robot akan segera bereaksi untuk memindahkan barang tersebut.  Saatnya mengupload sketch, selesai merakit maka bisa membuat sketch program Arduino robot lengan seperti dibawah ini : #include #include Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); uint8_t servonum0 = 0; //servo 0 paling bawah untuk kanan kiri uint8_t servonum1 = 1; //sevo 1 sendi pertama untuk naik turun uint8_t servonum2 = 2; //sevo 2 sendi kedua untuk naik turun uint8_t servonum3 = 3; //sevo 3 sendi ketiga untuk naik turun uint8_t servonum4 = 4; //sevo 4 sendi rotate kiri kanan pada capit uint8_t servonum5 = 5; //sevo 5 capit buka tutup   const int PIN_TRIG = 13; const int PIN_ECHO = 12; int BUZ = 11;   void setup()   delay(1000);   Serial.begin (9600);   pinMode(PIN_TRIG, OUTPUT);   pinMode(PIN_ECHO, INPUT);   pinMode(BUZ, OUTPUT);   pwm.begin();   pwm.setOscillatorFrequency(27000000);   pwm.setPWMFreq(50);    delay(1000);     //buzzer   digitalWrite(BUZ,HIGH);   delay(1000);   digitalWrite(BUZ,LOW);   delay(500);   digitalWrite(BUZ,HIGH);   delay(1000);   digitalWrite(BUZ,LOW);   delay(500);   digitalWrite(BUZ,HIGH);   delay(1000);   digitalWrite(BUZ,LOW);   delay(1000);     //Robot standbye     pwm.setPWM(servonum0, 0, 250); //     delay(1000);     pwm.setPWM(servonum1, 0, 250); //     delay(1000);     pwm.setPWM(servonum2, 0, 400); //     delay(1000);     pwm.setPWM(servonum3, 0, 400); //     delay(1000);         pwm.setPWM(servonum4, 0, 100); // kiri     delay(1000);     pwm.setPWM(servonum4, 0, 400); // kanan     delay(1000);     pwm.setPWM(servonum4, 0, 290); // center.     delay(1000);     pwm.setPWM(servonum5, 0, 220); // buka capit     delay(1000);     pwm.setPWM(servonum5, 0, 320); // tutup capit     delay(1000);   void loop()   // Berikan isyarat HIGH pada pin trig 10 mikrodetik      digitalWrite(PIN_TRIG, HIGH);      delayMicroseconds(10);  // Tunda 10 mikrodetik      digitalWrite(PIN_TRIG, LOW);   // Baca hasilnya di pin echo      double selang = pulseIn(PIN_ECHO, HIGH);     // Hitung jarak yang diperoleh      double jarak = 0.0343 * ( selang / 2);     //deteksi objek jika ada lalu ambil objek       if (jarak > 4.5)                 Serial.println("Barang tidak ada atau posisi belum tepat");               else                 digitalWrite(BUZ,HIGH);         delay(300);         digitalWrite(BUZ,LOW);         delay(100);         Serial.print(jarak);         Serial.println(" cm");         delay(1000);                 //----MENUJU OBJEK                 //-----------Servo 2 turun         for (uint16_t pulselen2 = 400; pulselen2 > 330; pulselen2--)                      pwm.setPWM(servonum2, 0, pulselen2);           delay (10);                     //-----------Servo 1 angkat sedikit         for (uint16_t pulselen1 = 250; pulselen1 > 210; pulselen1--)                     pwm.setPWM(servonum1, 0, pulselen1);           delay (10);                              //-----------Servo 0 menuju objek         for (uint16_t pulselen0 = 250; pulselen0                     pwm.setPWM(servonum0, 0, pulselen0);           delay (10);                    //-----------Servo 3 turun         for (uint16_t pulselen3 = 400; pulselen3                     pwm.setPWM(servonum3, 0, pulselen3);           delay (10);                     //-----------Servo 5 buka capit         for (uint16_t pulselen5 = 320; pulselen5 > 210; pulselen5--)                     pwm.setPWM(servonum5, 0, pulselen5);           delay (10);                        //-----------Servo 1 turun         for (uint16_t pulselen1 = 210; pulselen1                     pwm.setPWM(servonum1, 0, pulselen1);           delay (10);                     //-----------Servo 2 turun         for (uint16_t pulselen2 = 330; pulselen2 > 280; pulselen2--)                     pwm.setPWM(servonum2, 0, pulselen2);           delay (20);                     delay(2000);                 //-----------Servo 5 tutup capit         for (uint16_t pulselen5 = 220; pulselen5                     pwm.setPWM(servonum5, 0, pulselen5);           delay (10);                     //-----------Servo 2 naik         for (uint16_t pulselen2 = 280; pulselen2                     pwm.setPWM(servonum2, 0, pulselen2);           delay (10);                     //-----------Servo 1 naik         for (uint16_t pulselen1 = 250; pulselen1 > 200; pulselen1--)                     pwm.setPWM(servonum1, 0, pulselen1);           delay (10);                     //-----------Servo 3 turun         for (uint16_t pulselen3 = 450; pulselen3                     pwm.setPWM(servonum3, 0, pulselen3);           delay (10);                     //------MENUJU PELETAKAN BARANG         //-----------Servo 0 menuju peletakan barang         pwm.setPWM(servonum0, 0, 150);                 /*for (uint16_t pulselen0 = 380; pulselen0 > 150; pulselen0--)                     pwm.setPWM(servonum0, 0, pulselen0);           delay (5);           */                 //-----------Servo 3 naik         for (uint16_t pulselen3 = 500; pulselen3 > 450; pulselen3--)                     pwm.setPWM(servonum3, 0, pulselen3);           delay (10);                     //-----------Servo 1 turun         for (uint16_t pulselen1 = 200; pulselen1                     pwm.setPWM(servonum1, 0, pulselen1);           delay (10);                     //-----------Servo 4 putar ke kiri         for (uint16_t pulselen4 = 290; pulselen4 > 250; pulselen4--)                     pwm.setPWM(servonum4, 0, pulselen4);           delay (10);                     //-----------Servo 2 turun         for (uint16_t pulselen2 = 330; pulselen2                     pwm.setPWM(servonum2, 0, pulselen2);           delay (20);                     //-----------Servo 1 turun         for (uint16_t pulselen1 = 240; pulselen1                     pwm.setPWM(servonum1, 0, pulselen1);           delay (20);                           delay(1000);                 //-----------Servo 5 buka capit         for (uint16_t pulselen5 = 300; pulselen5 > 220; pulselen5--)                     pwm.setPWM(servonum5, 0, pulselen5);           delay (10);                     delay(1000);         //-----------MENUJU TEMPAT STANDBYE           //-----------Servo 1 naik         for (uint16_t pulselen1 = 300; pulselen1 > 250; pulselen1--)                     pwm.setPWM(servonum1, 0, pulselen1);           delay (10);                      //-----------Servo 2 naik         for (uint16_t pulselen2 = 350; pulselen2                     pwm.setPWM(servonum2, 0, pulselen2);           delay (20);                     //-----------Servo 3 naik         for (uint16_t pulselen3 = 450; pulselen3 > 400; pulselen3--)                     pwm.setPWM(servonum3, 0, pulselen3);           delay (10);                     //-----------Servo 0 menuju titik standbye         for (uint16_t pulselen0 = 150; pulselen0                     pwm.setPWM(servonum0, 0, pulselen0);           delay (10);                   //-----------Servo 2 turun         for (uint16_t pulselen2 = 400; pulselen2 > 300; pulselen2--)                     pwm.setPWM(servonum2, 0, pulselen2);           delay (20);                     //-----------Servo 5 tutup capit         for (uint16_t pulselen5 = 220; pulselen5                     pwm.setPWM(servonum5, 0, pulselen5);           delay (10);                     //-----------Servo 4 putar ke center         for (uint16_t pulselen4 = 250; pulselen4                 nbsp;    pwm.setPWM(servonum4, 0, pulselen4);           delay (10);                             //-----------Servo 1 turun         for (uint16_t pulselen1 = 250; pulselen1                     pwm.setPWM(servonum1, 0, pulselen1);           delay (20);                         delay(1000);       Berikut adalah hasil dari sketch tersebut akan menciptakan pergerakan lengan robot mirip di bawah ini:   sumber video : https://www.youtube.com/watch?v=j8HDogCJZmE Itulah uraian Cara merakit Robot Lengan menggunakan 6 buah motor servo ialah ihwal cara merakit lengan robot memakai arduino uno R3.
Sumber https://pakgalingging.blogspot.com


EmoticonEmoticon