Pemrograman Elektronik dan IoT

Cara Menjalankan Motor Servo Menggunakan Arduino dengan dan tanpa Library

Kali ini kita akan belajar menjalankan motor servo jenis Position rotation. Yaitu Motor servo yang hanya mampu berputar antara 0 derajad sampai 180 derajad. Servo yang saya gunakan adalah micro servo sg90. Kalian bisa menggunakan motor servo lain, misalkan motor servo mg90s, motor servo mg996r, atau motor servo lainnya yang sejenis dengan itu.

Gambar 1: Motor servo

Motor servo adalah sebuah motor listrik dengan sistem umpan balik tertutup (closed loop) di mana posisi dari motor akan dinformasikan kembali kerangkaian kontrol yang ada di dalam motor servo. Dari sistem closed loop itu kita dapat mengontrol kecepatan, akselerasi dan posisi sudut putaran motor. Selain dapat menentukan posisi sudutnya, motor servo juga dapat mempertahankan posisinya (mempunyai torsi) sehingga dapat menahan beban sesuai dengan spesifikasi yang dimiliki.


Cara Kerja Motor Servo

Motor servo pada dasarnya terdiri dari sebuah motor DC, serangkaian gear, potensiometer, dan rangkaian kontrol. Rangkaian gear terhubung ke as motor DC. Akibat dari perbandingan dari beberapa gear sehingga rangkaian gear ini dapat menaikkan torsi motor servo.

Gambar 2 : Bagian motor Servo

Rangkaian kontrol motor servo pada dasarnya terdiri dari motor driver, rangkaian comparator, dan pulse converter. Posisi sudut motor servo diatur berdasarkan sinyal PWM atau pulsa yang dikirim melalui kaki atau terminal sinyal pada motor servo. Sinyal ini masuk kerangkaian control melalui pulse converter. Potensiometer dirangkai sebagai pembagi tegangan. Jika potensiometer berputar mengikuti putaran gear akan menghasilkan nilai tegangan yang mewaliki posisi sudut tertentu. Nilai tegangan ini akan menjadi input dari rangkaian kontrol. 

Tegangan dari pulse converter dan tegangan dari potensiometer masuk ke rangkaian comparator dan akan dibandingkan nilainya. Jika nilai tegangan dari potensiometer dan dari hasil pengolahan pulsa input oleh pulse converter berbeda, maka komparator akan memerintahkan kepada motor driver untuk menggerakkan motor DC pada posisi sudut tertentu hingga nilai tegangannya sama (perhatikan gambar 3 di bawah ini).

Gambar 3 : Ilustrasi cara kerja Motor Servo

Motor servo position rotation dapat diatur posisinya dari 0 sampai dengan 180 derajat. Pengaturan posisi ini diatur dengan mengirim pulsa tegangan dalam waktu tertentu. nilainya tegangan yang dikirim biasanya 5v atau sesuai dengan spesifikasi motor servo tersebut. Agar motor servo bergerak ke posisi 0 derajad maka tegangan 5v harus di kirim selama 0.5 ms, 1.5 ms untuk bergerak keposisi 90 derajat, dan sekitar 2.5 ms untuk posisi sudut 180 derajad. Pulsa ini harus dikirim setiap sekitar 20 ms (frekuensi 50 Hz) agar motor servo dapat mempertahankan torsinya atau berputar ke posisi sudut sesuai dengan lebar pulsa yang dikirimkan. Untuk lebih jelas perhatikan gambar 4 di bawah 

Gambar 4 : Signal pulse input servo

Menghubungkan Motor Servo dengan Arduino

Umumnya motor servo memiliki 3 kabel, yaitu untuk power 5V biasa berwarna merah. Ground atau 0V biasanya warna coklat atau hitam. Lalu kabel sinyal biasanya warna orange atau putih. Kabel sinyal servo bisa dihubungkan ke hampir semua pin I/O arduino, dan kali ini kabel sinyal servo di hubungkan ke pin 9 arduino. Perhatikan gambar wiring servo motor ke arduino di bawah ini

Gambar 5 : Wiring motor servo ke arduino uno

Menjalankan Motor Servo dengan Library

Untuk menjalan motor servo dengan arduino kita bisa menggunakan library servo. Biasanya library ini sudah teristall ketika kita menginstall arduino IDE. Akan tetapi jika di arduino IDE kamu belum terinstall library servo silahkan install melalui Tools -> Manage Libraries kemudian search dengan kata kunci "Servo", lalu install library Servo.

Untuk menggunakan library servo paling mudah adalah menggunakan example yang sudah tersedia dari library tersebut. Terdapat 2 example yaitu Knop dan Sweep. Klik menu File > Examples > Servo untuk masuk ke program example tersebut. Knop adalah program untuk menjalankan servo berputar mengikuti nilai dari analog input yang masuk ke dalam arduino. Sedangkan sweep adalah program menjalankan servo dari 0 derajad ke 180 derajad , kemudian dari 180 derajad kembali ke 0 derajad. Gerakan servo tersebut berulang secara terus menerus. Perhatikan kode program Sweep yang telah terbuka di bawah ini:

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15 ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15 ms for the servo to reach the position
  }
}

Penjelasan program :

Servo akan bergerak dari posisi 0 ke 180 derajad dengan jeda 15 ms tiap tahapan 1 derajadnya, kemudian balik lagi dari 180 ke 0 derajad dengan jeda 15 ms tiap tahapan 1 derajadnya. Demikian seterusnya akan berulang tanpa henti.

  1. #include <Servo.h> Merupakan kode untuk memanggil atau menggunakan servo library Arduino.
  2. Servo myservo; Adalah kita membuat objek servo untuk 1 motor servo dengan nama "myservo".
  3. myservo.attach(9); Ketika kita menggunakan kode ini berarti kita akan harus memasang kabel sinyal motor servo pada pin 9  arduino.
  4. myservo.write(pos);  Adalah perintah menjalankan servo menuju posisi sudut sesuai dengan nilai variabel "pos". Nilai pos bernilai antara 0 sampau 180.

selain perintah program diatas library servo memiliki beberapa method lagi yang perlu diketahui yaitu : 

writeMicroseconds()
read()
detach()

Untuk penjelasan lengkap dari library servo, silahkan lihat dokumentasi lengkapnya di bawah ini :

1. https://www.arduino.cc/reference/en/libraries/servo

2. https://docs.arduino.cc/learn/electronics/servo-motors


Menjalankan Motor Servo tanpa Library

Menggunakan library servo yang sudah disediakan oleh Arduino memang sangat memudahkan untuk menggerakkan servo. Tetapi kadang kita perlu mengetahui cara memprogram sesuatu secara mandiri.

Sesuai dengan penjelasan cara kerja Motor Servo diatas, maka kita bisa menggunakan pin arduino yang tersambung dengan kabel sinyal motor servo di atur sebagai Digital Output. Lalu kita bisa memberi sinyal HIGH pada Digital Output tersebut dengan rentang 0,5 ms sampai 2,5 ms (500 µs sampai 2500 µs) agar servo bergerak 0 derajad sampai 180 derajad. sinyal HIGH ini harus dikirim berulang setiap sekitar 20 ms (frekuensi 50 Hz) agar motor servo dapat mempertahankan torsinya atau berputar ke posisi sudut sesuai dengan lama pulsa HIGH yang dikirimkan.

Berikut adalah contoh program untuk menjalankan servo ke posisi 0 derajad :

int pos;
void setup() {
  pinMode(9, OUTPUT);
}

void loop() {
  pos = 500;
  digitalWrite(9, HIGH);
  delayMicroseconds(pos);
  digitalWrite(9, LOW);
  delayMicroseconds(10000);
  delayMicroseconds(10000 - pos);
}

Pada program diatas, jika kita mengisi nilai 500 pada variabel pos maka posisi servo pindah atau berada di 0 derajad. Jika varibel pos di isi dengan 1500 maka posisi akan berpindah ke 90 derajad. Variabel pos bisa di isi dengan  nilai 500 sampai 2500 agar servo bergerak antara 0 sampai 180 derajad.

Kita bisa membuat program sweep seperti example pada library servo. Adapun contoh program sweep tanpa menggunakan library ada sebagai berikut :

int pos;

//Fungsi pengganti write() pada library servo
void servoWrite(int sudut) {
  int sudutMicros;
  sudutMicros = map(sudut, 0, 180, 500, 2500); //mengkonversi 0-180 derajad ke 500-2500 us
  digitalWrite(9, HIGH);
  delayMicroseconds(sudutMicros);
  digitalWrite(9, LOW);
  delayMicroseconds(10000);
  delayMicroseconds(10000 - sudutMicros);
}

void setup() {
  pinMode(9, OUTPUT);
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) {
    servoWrite(pos);
    delay(15);
  }
  for (pos = 180; pos >= 0; pos -= 1) {
    servoWrite(pos);
    delay(15);
  }
}

Upload dan jalan program diatas maka servo akan bergerak dari posisi 0 ke 180 derajad dengan jeda 15 ms tiap tahapan 1 derajadnya, kemudian balik lagi dari 180 ke 0 derajad dengan jeda 15 ms tiap tahapan 1 derajadnya. Demikian seterusnya akan berulang tanpa henti. Program di atas berfungsi persis sama seperti program sweep pada example library servo.

Share:

Cara Membaca Nilai Kode Warna Resistor

Nilai hambatan sebuah resistor ditentukan dengan kode warna, yang diwakili oleh gelang warna yang dipasang melingkar di badan resistor. Ada tiga sistem yang digunakan dalam pemberian kode warna yaitu sistem 4 gelang warna, sistem 5 gelang warna, dan sistem 6 gelang warna.

Pegertian dan Jenis Resistor di bahan pada artikel sebelumnya. Untuk membacanya klik Disini

1. Cara Membaca Resistor dengan 4 Gelang Warna

Gambar 1 : Resistor dengan 4 Gelang Warna

Perhatikan gambar di atas, untuk resistor dengan 4 gelang warna. 2 gelang warna pertama menyatakan nilai hambatan atau resistansi. Gelang ke-3 adalah nilai pengali (10n), atau jumlah nol yang ditambahkan di belakang nilai gelang pertama dan kedua. Dan gelang warna ke-4 menunjukkan toleransi. Karena ada kemungkinan tertukar untuk menentukan mana gelang ke-1 dan ke-4, caranya adalah perhatikan saja, biasanya gelang warna ke-3 dan ke-4 mempunyai jarak lebih renggang dibanding dengan antar gelang yang lain.

Setiap warna gelang mewakili nilai tertentu. Coba perhatikan tabel untuk resistor empat warna dibawah ini :

Tabel 1 : Tabel nilai warna resistor 4 gelang

Untuk mempermudah menghafalkan urutan warna dari nilai 0 ke 9 bisa di singkat dengan : HIT COK ME JI KU HI BI U A PUT

HIT = hitam, COK = Coklat, ME = Merah, JI = Jingga, KU = Kuning, HI = Hijau, BI = Biru, U = Ungu, A = Abu-abu, PUT = Putih

Contoh menentukan nilai resistor 4 gelang:

Perhatikan lagi Gambar 1, dari gambar nampak dari gelang ke-1 sampai ke-4 yaitu warna Coklat, Hijau, Merah, dan Perak Maka :
Coklat = 1
Hijau = 5
Merah = x 102 atau x 100
Perak = Toleransi 10 %
Jadi hasilnya adalah 1500 Ohm atau 1K5 dengah toleransi 10 %.
Bisa ditulis 1K5 ± 5% atau 1K5 ± 150 Ohm
Atau rentang nilai yang di hasilkan dari resistor dengan kode warna seperti gambar 1 adalah berkisar antara 1350 Ohm sampai 1650 Ohm.

Resistor dengan 4 gelang warna biasanya digunakan untuk standar nilai resistor kelompok E12 dan E24.


2. Cara Membaca Resistor dengan 5 Gelang Warna

Untuk resistor dengan 5 gelang warna, 3 gelang warna pertama menyatakan nilai hambatan atau resistansi. Gelang ke-4 adalah nilai pengali (10n), atau jumlah nol yang ditambahkan di belakang nilai gelang pertama, kedua, dan ketiga. Kemudian gelang warna ke-5 menunjukkan toleransi. (perhatikan gambar di bawah).

Gambar 2 : Resistor 5 gelang warna

Lalu untuk nilai kode warna dari resistor 5 gelang dapat di lihat pada tabel di bawah ini :

Tabel 2 : Tabel nilai warna resistor 5 gelang

Contoh menentukan nilai resistor 5 gelang:

Perhatikan  Gambar 2 diatas , dari gambar 2 nampak dari gelang ke-1 sampai ke-5 yaitu warna Coklat, Hijau, Hitam, Merah, dan Coklat Maka :
Coklat = 1
Hijau = 5
Merah = 0
Merah = x 102 atau x 100
Coklat = Toleransi 1 %
Jadi hasilnya adalah 15000 Ohm atau 15K dengah toleransi 1 %.
Bisa ditulis 15K ± 1% atau 15K ± 150 Ohm.
Atau rentang nilai yang di hasilkan dari resistor dengan kode warna seperti gambar 2 adalah berkisar antara 14850 Ohm sampai 15150 Ohm.

Resistor dengan 5 gelang warna biasanya digunakan untuk standar nilai resistor kelompok E24, E48, dan E96.


3. Cara Membaca Resistor dengan 6 Gelang Warna

Cara membaca resistor 6 gelang warna sama dengan resistor 5 warna, tetapi pada resistor 6 gelang warna ada penambahan koefisien suhu pada gelang warna ke-6. Coba perhatikan gambar dibawah ini :

Gambar 3 : Resistor 6 gelang warna

Cara membacanya adalah 3 gelang warna pertama menyatakan nilai hambatan atau resistansi. Gelang ke-4 adalah nilai pengali (10n), atau jumlah nol yang ditambahkan di belakang nilai gelang pertama, kedua, dan ketiga. Kemudian gelang warna ke-5 menunjukkan nilai toleransi. Dan gelang ke-6 adalah nilai koefisien suhu dengan satuan ppm/°C. Atau part per million per derajad Celsius (Bagian persatu juta per derajad Celsius). Maksud dari ppm/°C adalah perubahan nilai resistor karena perubahan suhu.

Lalu untuk nilai kode warna dari resistor 6 gelang dapat di lihat pada tabel di bawah ini :

Tabel 3 : Tabel nilai warna resistor 6 gelang

Contoh menentukan nilai resistor 6 gelang:

Perhatikan  Gambar 3 diatas , nampak dari gelang ke-1 sampai ke-6 yaitu warna Kuning, Coklat, Merah, Jingga, Coklat, dan Ungu Maka :
Kuning =4
Coklat = 1
Merah = 2
Jingga = x 103 atau x 1000
Coklat = Toleransi 1 %
Ungu = Koefisien suhu 5 ppm/°C
Hasilnya adalah 412000 Ohm atau 412K dengan toleransi 1 % dan Koefisien suhu 5 ppm/°C.
Bisa ditulis 412K ± 1% atau 412K ± 4K12.
Atau rentang nilai yang di hasilkan dari resistor dengan kode warna seperti gambar 3 adalah berkisar antara 407880 Ohm sampai 416120 Ohm.
Untuk koefisien suhu 5 ppm/°C artinya setiap perubahan 1 °C menyebabkan nilai hambatan resistor seperti pada gambar 3 berubah sebesar 412000 x (5/1000000) = 2,06 Ohm.

Baca juga : Pegertian dan Jenis Resistor
Share:

HALO

Haloooooo

Pengikut