Kendali Motor Servo Berbasis Arduino

Pengendalian Motor Servo tidak bisa dilepaskan dari penerapan PWM (Pulse Width Modulation), besar Duty Cycle akan menentukan arah putaran motor servo. Untuk mengingatkan kembali bentuk sinyal PWM dengan besar Duty Cycle yang berbeda-beda.

Rangkaian pengawatan motor servo berbasis PWM dengan menggunakan pengendali Arduino seperti pada gambar di bawah ini.

Rangkaian Pengawatan Motor Servo dan Arduino
Konektor Motor Servo

Rangkaian dalam bentuk simulasi dengan sensor atau knob yang dibuat seperti gambar di bawah ini dengan pergerakan motor sensor berputar 180 derajat arah CW (Clock Wise) jika sensor atau potensiometer berubah besar tahanannya.

Rangkaian Kendali Motor Servo dengan Sensor

 

List Program kendali Motor Servo dengan sensor atau knob sesuai gambar di atas bisa dibuat seperti berikut :

#include <Servo.h>

Servo myservo; // create servo object to control a servo

int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin

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

void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}

 

Rangkaian dalam bentuk simulasi tanpa sensor atau knob yang dibuat seperti gambar di bawah ini dengan pergerakan motor sensor berputar 180 derajat arah CW (Clock Wise) kemudian kembali lagi berputar 180 derajat arah CCW (Counter Clock Wise) secara terus menerus.

Rangkaian Kendali Motor Servo tanpa Sensor

Pada rangkaian di atas, sinyal PWM berasal dari keluaran arduino pin 9 yang dihubungkan dengan terminal masukan motor servo. Pada terminal catu daya motor servo bisa sama dengan catu daya pada arduino atau terpisah.

 

Program Kendali Motor Servo Berputar CW dan CCW 180 derajat Berbasis Arduino Uno sebagai berikut:

#include <Servo.h>

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

int pos = 0; // variabel menentukan posisi motor servo

void setup() {
myservo.attach(9); // pin keluaran arduino
}

void loop() {
for (pos = 0; pos <= 180; pos += 1) { // berputar dari 0 derajat ke 180 derajat
// langkah dalam 1 derajat
myservo.write(pos); // memberitahukan motor servo untuk ke posisi sesuai variabel 'pos'
delay(15); // tunda 15ms untuk bergerak posisi ke 180 derajat
}
for (pos = 180; pos >= 0; pos -= 1) { // berputar dari 180 derajat ke 0 derajat
myservo.write(pos); // memberitahukan motor servo untuk ke posisi sesuai variabel 'pos'
delay(15); // tunda 15ms untuk bergerak posisi ke 0 derajat
}
}

 

Untuk lebih jelasnya silahkan lihat pergerakan motor servo dalam video simulasi di bawah ini :

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *