Kawalan Motor Servo: Panduan Lengkap
Pembelajaran Utama:
Definisi Kawalan Motor Servo: Kawalan motor servo membolehkan manipulasi tepat kedudukan, kelajuan, dan pecutan motor melalui isyarat elektronik.
Mekanisme Maklum Balas: Sistem maklum balas, sering kali potensiometer atau enkoder, memastikan output motor sepadan dengan input kawalan dengan tepat.
Isyarat PWM: Modulasi lebar pulsa (PWM) adalah penting untuk menetapkan kedudukan servo dengan mengubah tempoh isyarat elektrik.
Arduino dan Motor Servo: Menggunakan papan Arduino adalah cara yang popular dan berkesan untuk memprogram dan mengawal motor servo dengan penyiapan peranti keras minimal.
Aplikasi Motor Servo: Motor servo adalah penting untuk projek yang memerlukan kawalan kedudukan yang tepat, seperti robotik dan sistem automatik.
Motor servo adalah motor yang direka untuk presisi dan ketepatan tinggi dalam putaran. Ia berbeza dari motor DC biasa dengan keupayaannya untuk mengekalkan kedudukan tertentu daripada berputar secara berterusan. Ciri ini menjadikan motor servo ideal untuk robotik, automasi, dan projek hobi.
Artikel ini menerangkan bagaimana fungsi kawalan motor servo, jenis-jenis motor servo yang berbeza, dan pelbagai kaedah dan peranti kawalan. Ia juga memberikan contoh aplikasi dan projek motor servo.
Apakah Motor Servo?
Motor servo didefinisikan sebagai aktuator yang membolehkan kawalan tepat kedudukan (sudut), kelajuan, dan pecutan. Motor servo biasa terdiri daripada tiga komponen utama: motor DC, litar kawalan, dan peranti maklum balas.
Motor DC memacu servo dan disambungkan ke gigi-gigi yang mengurangkan kelajuan dan meningkatkan tork pada poros output.

Poros output adalah bahagian servo yang berputar dan memindahkan beban.
Litar kawalan bertanggungjawab untuk menerima dan memproses isyarat input dari pengawal luar. Isyarat-isyarat ini memberitahu servo apa kedudukan, kelajuan, atau arah untuk bergerak. Litar kawalan juga menghantar kuasa kepada motor DC untuk memacunya.
Peranti maklum balas biasanya adalah potensiometer atau enkoder yang mengukur kedudukan semasa poros output.

Peranti maklum balas mengirim data kedudukan kembali ke litar kawalan, yang kemudian menyesuaikan kuasa motor DC untuk menyelaraskan kedudukan sebenar dengan kedudukan yang diinginkan dari isyarat input.
Sila maklum balas antara litar kawalan dan peranti maklum balas memastikan servo dapat bergerak dan mengekalkan mana-mana kedudukan dalam julat gerakanannya dengan tepat.
Bagaimana Mengawal Motor Servo?
Motor servo dikawal dengan menghantar isyarat modulasi lebar pulsa (PWM) ke barisan isyarat motor. PWM adalah teknik yang menghidupkan dan memadam isyarat dengan cepat untuk mencipta pulsa dengan lebar yang berbeza. Lebar pulsa menentukan kedudukan poros output.
Sebagai contoh, apabila anda menghantar isyarat PWM dengan lebar pulsa 1.5 milisaat (ms), servo akan bergerak ke kedudukan neutral (90 derajat).

Apabila anda menghantar isyarat PWM dengan lebar pulsa 1 ms, servo akan bergerak ke kedudukan minimum (0 derajat). Apabila anda menghantar isyarat PWM dengan lebar pulsa 2 ms, servo akan bergerak ke kedudukan maksimum (180 derajat).
Isyarat PWM mempunyai frekuensi 50 Hz, yang bermaksud ia berulang setiap 20 ms. Lebar pulsa boleh berubah dari 1 ms hingga 2 ms dalam tempoh ini.
Terdapat banyak cara untuk menghasilkan dan menghantar isyarat PWM ke motor servo. Beberapa kaedah yang paling umum adalah:
Menggunakan papan Arduino atau mikrokontroler lain
Menggunakan potensiometer atau sensor analog lain
Menggunakan joystick atau peranti input digital lain
Menggunakan pengawal servo atau pemacu khusus
Dalam bahagian berikut, kita akan mengeksplorasi setiap kaedah ini secara lebih mendalam dan melihat beberapa contoh bagaimana mereka berfungsi.
Mengawal Motor Servo dengan Arduino
Arduino adalah salah satu platform yang paling popular untuk mengawal motor servo. Papan Arduino mempunyai output PWM bawaan yang boleh digunakan untuk menghantar isyarat ke servos. Arduino juga mempunyai pustaka Servo yang memudahkan penulisan kod untuk kawalan servo.
Untuk mengawal motor servo dengan Arduino, anda akan memerlukan:
Papan Arduino (seperti Arduino UNO)
Motor servo standard (seperti SG90)
Dawai jumper
Breadboard (pilihan)
Dawai merah dari servo disambungkan ke 5V pada papan Arduino. Dawai hitam dari servo disambungkan ke GND pada papan Arduino. Dawai putih dari servo disambungkan ke pin 9 pada papan Arduino.
Untuk memprogram papan Arduino, anda akan memerlukan IDE Arduino (dalam talian atau luar talian). Anda boleh menggunakan salah satu contoh dari pustaka Servo atau menulis kod anda sendiri.
Kod berikut menunjukkan bagaimana untuk menyapu motor servo bolak-balik sepanjang 180 derajat menggunakan loop for:
#include <Servo.h> // Sertakan pustaka Servo
Servo myservo; // Buat objek Servo
int pos = 0; // Pemboleh ubah untuk kedudukan
void setup() {
myservo.attach(9); // Pasangkan objek Servo ke pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Loop dari 0 hingga 180 derajat
myservo.write(pos); // Tulis kedudukan ke objek Servo
delay(15); // Tunggu 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Loop dari 180 hingga 0 derajat
myservo.write(pos); // Tulis kedudukan ke objek Servo
delay(15); // Tunggu 15 ms
}
}
Kod ini menggunakan dua loop untuk menambah dan mengurangkan pemboleh ubah kedudukan dari 0 hingga 180 derajat dan sebaliknya. Ia kemudian menulis nilai ini ke objek Servo menggunakan myservo.write(pos). Ia juga menambah jeda 15 ms antara setiap langkah untuk melambatkan pergerakan.
Muat naik kod ini ke papan Arduino anda menggunakan butang Muat Naik IDE, dan lihat motor servo anda menyapu bolak-balik dengan lancar.
Mengawal Motor Servo dengan Potensiometer
Potensiometer adalah sensor analog yang boleh mengubah rintangan bergantung pada sejauh mana anda memutar knobnya. Anda boleh menggunakan potensiometer sebagai peranti input untuk mengawal motor servo.
Untuk mengawal motor servo dengan potensiometer, anda akan memerlukan:
Papan Arduino (seperti Arduino UNO)
Motor servo standard (seperti SG90)
Potensiometer (10k Ohm)
Dawai jumper
Breadboard
Gambar rajah sambungan untuk menghubungkan potensiometer dan motor servo ke papan Arduino ditunjukkan di bawah:
Dawai merah dari potensiometer disambungkan ke 5V pada papan Arduino. Dawai hitam dari potensiometer disambungkan ke GND pada papan Arduino. Dawai hijau dari potensiometer disambungkan ke pin A0 pada papan Arduino.
Dawai merah dari servo disambungkan ke 5V pada baris lain di breadboard. Dawai hitam dari servo disambungkan ke GND pada baris lain di breadboard. Dawai putih dari servo disambungkan ke pin D9 pada baris lain di breadboard.
Untuk memprogram papan Arduino anda, anda akan memerlukan kod yang sama seperti contoh sebelumnya tetapi ubah beberapa baris:
#include <Servo.h> // Sertakan pustaka Servo
Servo myservo; // Buat objek Servo
int potpin = A0; // Pin yang disambungkan ke potensiometer
int val = 0; // Pemboleh ubah untuk membaca nilai potensiometer
void setup() {
myservo.attach(9); // Pasangkan objek Servo ke pin D9
}
void loop() {
val = analogRead(potpin); // Baca nilai dari potensiometer (0 -1023)
val = map(val,0,1023,0,180); // Petakan julat nilai (0 -180)
myservo.write(val); // Tulis nilai yang dipetakan ke objek Servo
delay(15); // Tunggu 15 ms
}
Kod ini menggunakan fungsi analogRead(potpin) untuk membaca nilai dari potensiometer yang disambungkan ke pin A0. Kemudian, ia menggunakan fungsi map(val,0,1023,0,180) untuk memetakan julat nilai dari 0 -1023 ke 0 -180 derajat. Ia kemudian menulis nilai yang dipetakan ke objek Servo menggunakan fungsi myservo.write(val). Ia juga menambah jeda 15 ms, sama seperti contoh sebelumnya.
Anda boleh memuat naik kod ini ke papan Arduino anda menggunakan butang Muat Naik IDE. Anda seharusnya melihat motor servo anda bergerak mengikut kedudukan knob potensiometer.
Mengawal Motor Servo dengan Joystick
Joystick adalah peranti input digital yang boleh mendeteksi arah dan magnitud pergerakan sepanjang dua paksi. Anda boleh menggunakan joystick untuk mengawal motor servo dengan memetakan paksi x joystick ke sudut servo.
Untuk mengawal motor servo dengan joystick, anda akan memerlukan:
Papan Arduino (seperti Arduino UNO)
Motor servo standard (seperti SG90)
Modul joystick (seperti KY-023)
Dawai jumper
Breadboard
Gambar rajah sambungan untuk menghubungkan modul joystick dan motor servo ke papan Arduino ditunjukkan di bawah:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Dawai merah dari modul joystick disambungkan ke 5V pada papan Arduino. Dawai hitam dari modul joystick disambungkan ke GND pada papan Arduino. Dawai hijau dari modul joystick disambungkan ke pin A0 pada papan Arduino.
Dawai merah dari servo disambungkan ke 5V pada baris lain di breadboard. Dawai hitam dari servo disambungkan ke GND pada baris lain di breadboard. Dawai putih dari servo disambungkan ke pin D9 pada baris lain di breadboard.
Untuk memprogram papan Arduino anda, anda akan memerlukan kod yang sama seperti contoh sebelumnya tetapi ubah beberapa baris:
#include <Servo.h> // Sertakan pustaka Servo
Servo myservo; // Buat objek Servo
int joyX = A0; // Pin yang disambungkan ke paksi x joystick
int val = 0; // Pemboleh ubah untuk membaca nilai joystick
void setup() {
myservo.attach(9); // Pasangkan objek Servo ke pin 9
}
void loop() {
val = analogRead(joyX); // Baca nilai dari paksi x joystick (0 - 1023)
val = map(val, 0, 1023, 0, 180); // Petakan julat nilai (0 - 180)
myservo.write(val); // Tulis nilai yang dipetakan ke objek Servo
delay(15); // Tunggu 15 ms
}
Kod ini menggunakan fungsi analogRead(joyX) untuk membaca nilai dari paksi x joystick yang disambungkan ke pin A0. Kemudian, ia menggunakan fungsi map(val, 0, 1023, 0, 180) untuk memetakan julat nilai dari 0 – 1023 ke 0 – 180 derajat. Ia kemudian menulis nilai ini ke objek Servo menggunakan fungsi myservo.write(val). Ia juga menambah jeda 15 ms antara setiap langkah.