Bagaimana Cara Kerja Motor Servo & Menghubungkannya Dengan Arduino

Bagaimana Cara Kerja Motor Servo & Menghubungkannya Dengan Arduino

 Bagaimana Cara Kerja Motor Servo & Menghubungkannya Dengan Arduino

Tidak seperti motor DC, Anda dapat mengontrol posisi motor ini dengan tepat. Instruksikan motor servo ke mana harus diarahkan, dan motor servo akan melakukannya untuk Anda. Motor Servo berguna dalam banyak proyek robotika, seperti untuk memutar roda depan pada model RC untuk kemudi atau memutar sensor untuk melihat sekeliling pada kendaraan robotik.

Apa itu Servo?


Servo adalah istilah umum untuk sistem kendali loop tertutup.

Sistem loop tertutup menggunakan sinyal umpan balik untuk mengatur kecepatan dan arah motor untuk mencapai hasil yang diinginkan.


Motor servo RC bekerja dengan prinsip yang sama. Ini berisi motor DC kecil yang terhubung ke poros keluaran melalui roda gigi.

Poros keluaran menggerakkan lengan servo dan juga terhubung ke potensiometer (pot).


Potensiometer memberikan umpan balik posisi ke unit kontrol servo di mana posisi motor saat ini dibandingkan dengan posisi target.

Berdasarkan kesalahannya, unit kendali mengoreksi posisi motor yang sebenarnya agar sesuai dengan posisi target.

Bagaimana Motor Servo Bekerja?

Anda dapat mengontrol motor servo dengan mengirimkan serangkaian pulsa ke jalur sinyal. Motor servo analog konvensional mengharapkan untuk menerima pulsa kira-kira setiap 20 milidetik (yaitu sinyal harus 50Hz).

Panjang pulsa menentukan posisi motor servo.


  • Jika pulsa tinggi selama 1ms, maka sudut servo akan menjadi nol.
  • Jika pulsa tinggi selama 1,5ms, maka servo akan berada di posisi tengahnya.
  • Jika pulsa tinggi selama 2ms, maka servo akan 180 derajat.
  • Pulsa yang berkisar antara 1ms dan 2ms akan menggerakkan poros servo melalui 180 derajat penuh dari perjalanannya.

Durasi pulsa terkadang bervariasi dengan merek yang berbeda dan bisa 0,5ms untuk 0 derajat dan 2,5ms untuk 180 derajat.

Pinout Motor Servo

Motor servo biasanya memiliki tiga koneksi dan sebagai berikut:


GND .

5V adalah tegangan positif yang memberi daya pada servo.

Kontrol adalah input untuk sistem kontrol.

Warna kabel bervariasi antara motor servo, tetapi kabel merah selalu 5V dan GND akan menjadi hitam atau coklat. Kabel kendali biasanya berwarna oranye atau kuning.

Rangkaian Servo Motor ke Arduino UNO

Mari kaitkan motor servo ke Arduino.

Misalnya kita gunakan SG90 Micro Servo Motor. Ini berjalan pada 4.8-6VDC (5V Khas) dan dapat berputar sekitar 180 derajat (90 di setiap arah).

Ini menghabiskan sekitar 10mA saat idle dan 100mA hingga 250mA saat bergerak, jadi kami dapat menyalakannya melalui output 5 volt pada Arduino.

Jika Anda memiliki servo yang mengkonsumsi lebih dari 250mA, pertimbangkan untuk menggunakan catu daya terpisah untuk servo Anda.

Hubungkan kabel Merah ke 5V pada Arduino (atau jack DC) dan kabel Hitam / Coklat ke ground. Terakhir, sambungkan kabel Oranye / Kuning ke pin 9 yang mendukung PWM.


Kode Arduino - Sweep

Untuk sketsa Arduino pertama kami, kami akan menggunakan salah satu contoh bawaan yang disertakan dengan Arduino IDE.

Buka sub-menu Examples. Pilih Servo dan Load the Sweep sketch.


Silakan dan unggah sketsa. Anda akan segera melihat motor bergerak ke satu arah dan kemudian kembali ke arah lain.

#include <Servo.h>

int servoPin = 9;
Servo servo;
int angle = 0;  // servo position in degrees

void setup() {
    servo.attach(servoPin);
}

void loop() {

    // scan from 0 to 180 degrees
    for(angle = 0; angle < 180; angle++) {
        servo.write(angle);
        delay(15);
    }
    
    // now scan back from 180 to 0 degrees
    for(angle = 180; angle > 0; angle--) {
        servo.write(angle);
        delay(15);
    }
}

Penjelasan:

Mengontrol servos bukanlah tugas yang mudah, tetapi untungnya bagi kami, Arduino IDE sudah berisi pustaka yang sangat bagus bernama Servo. Ini mencakup perintah sederhana sehingga Anda dapat dengan cepat menginstruksikan servo untuk berbelok ke sudut tertentu.

Jika Anda akan menggunakan perintah ini, Anda perlu memberi tahu Arduino IDE bahwa Anda menggunakan pustaka dengan perintah ini:

#include <Servo.h>

Hal selanjutnya yang kami lakukan adalah mendeklarasikan pin Arduino yang terhubung dengan pin kontrol motor servo.

int servoPin = 9;

Garis di bawah ini menciptakan objek servo.

Servo servo;

Anda sebenarnya dapat menentukan hingga delapan servo dengan cara ini, misalnya, jika kita memiliki dua servo, maka kita dapat menulis sesuatu seperti ini:

Servo servo1;
Servo servo2;

Sudut variabel digunakan untuk menyimpan sudut servo saat ini dalam derajat.

int angle = 0;

Dalam fungsi pengaturan, kami menghubungkan objek servo ke pin yang akan mengontrol servo menggunakan perintah ini:

servo.attach(servoPin);

Fungsi loop sebenarnya berisi dua loop for. Loop pertama meningkatkan sudut dalam satu arah dan yang kedua dalam arah berlawanan.

Perintah di bawah ini memberi tahu servo untuk memperbarui posisinya ke sudut yang ditentukan.

servo.write(angle);

Penyelesaian masalah

Terkadang servo Anda mungkin tidak berfungsi jika Anda memutuskan untuk menjalankannya langsung dari Arduino. Alasannya adalah servo menarik daya yang cukup besar, terutama saat start-up, dan ini dapat menyebabkan board Arduino disetel ulang.

Jika ini terjadi, biasanya Anda dapat memperbaikinya dengan menempatkan kapasitor elektrolitik yang cukup besar (470uF - 1000uF) antara GND dan 5V.

Kapasitor berperan sebagai penampung listrik, sehingga pada saat motor dinyalakan, dibutuhkan muatan dari kapasitor sekaligus supply Arduino.

Kabel kapasitor yang lebih panjang harus dihubungkan ke 5V dan kabel negatif ke GND.


Mengontrol Servo dengan Potensiometer

Langkah kami selanjutnya adalah menambahkan potensiometer sehingga kami dapat mengontrol posisi servo dengan memutar kenop.

Proyek ini bisa sangat berguna ketika Anda ingin mengontrol pan dan kemiringan sensor yang terhubung ke servo.

Rangkaian

Seperti yang ditunjukkan oleh diagram pengkabelan, Anda memerlukan potensiometer, nilai apa pun dari 10k ke atas akan baik-baik saja. Hubungkan satu ujung pot ke ground, ujung lainnya ke Arduino 5V dan wiper ke input analog A0.


Kode Arduino

Kode untuk membuat servo mengikuti posisi kenop lebih sederhana daripada membuatnya sweep.

#include <Servo.h>

int potPin = 0;
int servoPin = 9;
Servo servo;

void setup() {
    servo.attach(servoPin);
}

void loop() {
    int reading = analogRead(potPin);
    int angle = map(reading, 0, 1023, 0, 180);
    servo.write(angle);
}

Perhatikan bahwa sekarang ada variabel baru yang disebut potPin.

Dalam fungsi loop, kita mulai dengan membaca nilai dari pin analog A0.

int reading = analogRead(potPin);

Ini memberi kita nilai antara 0 dan 1023. Tapi kita perlu menurunkannya, karena servo hanya dapat berputar 180 derajat.

Salah satu cara untuk melakukan ini adalah dengan menggunakan  map() Function  yang memetakan ulang nomor dari satu rentang ke rentang lainnya. Jadi, garis di bawah mengubah pembacaan untuk mewakili sudut antara 0 dan 180 derajat.

int angle = map(reading, 0, 1023, 0, 180);

Terakhir, kami menggunakan perintah write() yang memberi tahu servo untuk memperbarui posisinya ke sudut yang dipilih oleh potensiometer.

servo.write(angle);
untuk lebih jelasnya bisa lihat video berikut!



Selamat Mencoba

Post a Comment

Previous Post Next Post

Contact Form