Selasa, 20 September 2022

Cara menggerakkan dua motor servo menggunakan Arduino

 


Cara menggerakkan dua motor servo menggunakan Arduino
Di artikel-artikel lain mungkin sudah banyak yang membahas mengenai cara menggerakkan motor servo menggunakan Arduino, tetapi tidak ada salahnya juga saya membahasnya kembali di blog saya ? :D
Dalam artikel ini saya akan membahas mengenai bagaimana cara menggerakkan 2 buah motor servo, hal ini saya bahas karena pengalaman saya yang pernah mencoba menggerakkan 2 servo sekaligus, tetapi pergerakan yang dihasilkan tidak beraturan, berbeda ketika saya menggerakkan 1 buah servo saja. Hal ini bisa saja disebabkan karena kita menggunakan daya untuk motor servo tersebut langsung dari board Arduino, sehingga pada saat motor servo menyala secara bersamaan, tegangan dari board Arduino menjadi tidak stabil.
Setelah saya coba menggunakan sumber tegangan external untuk servo (tidak menggunakan daya dari board Arduino langsung) dengan cara menggunakan battery sebagai tegangan untuk servo dan charger Handphone untuk tegangan Arduino, seperti Skema yang dapat dilihat pada Gambar berikut



pin D3 -> pin data (Servo 1)
pin D5 -> pin data (Servo 2)
pin VCC dan GND pada Servo 1 dan Servo 2 dihubungkan dengan battery
pin A0 -> pin wiper (potensiometer 1)
pin A1 -> pin Wiper (potensiometer 2)

Program yang saya buat adalah sebagai berikut

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. /*
     Controlling a servo position using a potentiometer (variable resistor)
    */
     
    #include <Servo.h>
     
    Servo myser1;  //memberikan nama myser1 untuk Servo
    Servo myser2;
     
    const int potpin1 = 0;  // Pin analog yang digunakan untuk potensio
    const int potpin2 = 1;

    int val1,val2;  // variable untuk menyimpan data potensio
     
    void setup() {
      myser1.attach(3);  // menggunakan pin 3 (PWM) sebagai pin untuk myser1
      myser2.attach(5);
     
    }
    void loop() {
      val1 = analogRead(potpin1);  // membaca data analog dari potensio
      val1 = map(val1, 0, 1023, 0, 180);  //membuat nilai dari potensio yang awalnya 0-1023 menjadi 0-180
      myser1.write(val1); //Servo berputar sebanyak nilai val/potensio
      delay(10);
     
      val2 = analogRead(potpin2);
      val2 = map(val2, 0, 1023, 0, 180);
      myser2.write(val2);
      delay(10);
    }


Pembahasan program
pada program diatas terdapat sebuah perintah   val1 = map(val1, 0, 1023, 0, 180);. Perintah ini digunakan untuk membuat skala dari 0 – 1023 menjadi 0 – 180, artinya meskipun potensio diputar secara penuh maka nilai yang dihasilkan adalah 180, kenapa kita harus merubahnya menjadi 180 ?. hal ini karena rata-rata motor Servo hanya dapap berputar sebanyak 180 derajat saja.
ceritanya saya ingin membuat sebuah prototype robot Scara yang dapat digerakkan dengan menggunakan potensio :D , tapi hasilnya masih berantakan hahahaha....

sumber : https://papermindvention.blogspot.com/

Tidak ada komentar:

Posting Komentar

menangkap apel