Anda di halaman 1dari 10

LAPORAN PRAKTIKUM

MIKROPROSESOR LANJUT
MODUL 4
ANTARMUKA MOTOR SERVO DENGAN MIKROKONTROLER ATmega8535
dibimbing oleh Ibu Dyah Lestari, S. T., M. Eng.

Kelompok 8

Ahmad zuhri wafa

130532506596

Aden kusuma wardana

130532506595

Istanto putra perdana

130532506590

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN ELEKTRO
PRODI D3 TEKNIK ELEKTRONIKA 2013 A
Maret 2015

MODUL IV
MOTOR SERVO
TUJUAN
Mengetahui dan memahami bagaimana cara mengontrol motor servo
MOTOR SERVO
Servo merujuk pada error sensing feedback control yang digunakan untuk memperbaiki
performa dari sebuah sistem. Servo atau Motor Servo adalah motor DC yang memiliki
mekanisme servo untuk mengontor posisi sudut secara presisi. Motor servo umumnya
mempunyai batas rotasi dari 90o hingga 360o. Beberapa motor servo juga mempunyai batas
360o atau lebih. Akan tetapi servo tidak berputar terus-menerus. Perputarannya dibatasi antara
sudut-sudut yang sudah ditentukan.
Motor servo digunakan untuk pemosisian secara akurat misalnya pada lengan atau kaki robot,
dan di mainan RC seperti RC helikopter, pesawat terbang dan mobil.

Ada empat pabrikan besar yang memproduksi motor servo : Futaba, Hitec, Airtronics, dan JR
Radios. Motor servo dari Futaba dan Hitec adalah yang paling sering digunakan.
Motor servo mempunyai tiga kabel atau konektor. Dua dari kabel-kabel tersebut adalah
ground dan sumber tegangan positif untuk pencatu Motor Servo DC. Kabel ketiga digunakan
untuk sinyal kontrol. Kabel-kabel ini dibedakan dengan warna, kabel merah merupakan
supply DC dan harus dihubungkan dengan tegangan positif antara 4,8V 6V. Kabel hitam
adalah ground. Untuk kabel ketiga warnanya tergantung pada masing-masing pabrikan. Untuk
Hitec berwarna kuning dan putih untuk Futaba.

Motor servo Hitec mempunyai 24 gigi pada splines nya sedangkan Futaba
mempunyai 25 gigi. Splines yang dibuat untuk satu tipe servo tidak bisa dipakai untuk servo
lainnya. Splines adalah tempat untuk menyambungkan lengan servo. Tidak seperti DC motor,
membalik konektor ground dan tegangan positif tidak merubah arah perputaran motor servo.
Hal ini malah dapat merusak motor servo. Oleh karena itu pemasangan konektor harus
diperhatikan dengan seksama.

Sebuah motor servo utamanya terdiri dari motor DC, sistem gigi, dan sensor posisi yang
kebanyakan berupa potensiometer dan rangkaian kontrol. Motor DC terhubung dengan
mekanisme gigi yang memberikan umpan balik ke sensor posisi yang berupa potensiometer.
Dari gear box, keluaran motor servo dikirimkan melalui spline servo ke lengan servo.
Potensiometer berganti posisi sesuai dengan posisi motor saat itu. Sehingga perubahan
resistansi menghasilkan perubahan tegangan yang sebanding dari potensiometer.

Sebuah sinyal PWM diberikan ke kabel kontrol. Lebar pulsanya lalu dikonversi menjadi
tegangan yang sesuai yang kemudian dibandingkan dengan sinyal dari potensi di aplifier
error.

Perbedaan sinyalnya dikuatkan dan diberikan ke motor DC. Jadi sinyal yang diberikan ke
Motor Servo DC adalah gelombang redaman yang melemah ketika posisi yang diinginkan
dicapai oleh motor.

Ketika perbedaan antara posisi yang diinginkan sesuai dengan yang diindikasikan oleh pulsa
dan posisi saat itu tinggi maka motor berputar cepat. Ketika perbedaan nya sedikit motor
berputar lambat.
MENGONTROL MOTOR SERVO
Motor servo dapat berputar ke sudut yang diinginkan dengan mengirimkan sinyal
PWM (Pulse Width Modulated) ke kabel kontrol. Servo mengerti bahasa dari pulse position
modulation. Lebar pulsa bervariasi mulai dari 1 ms hingga 2 ms dikirim secara berulangulang
sebanyak sekitat 50 kali dalam 1 detik. Lebar pulsa nya menentukan posisi sudut motor servo.
Sebagai contoh, pulsa 1 ms memutar servo ke sudut 0 o sedangkan pulsa 2 ms memutar
servo ke sudut 180o. Lebar pulsa antara sudut tersebut dapat di interpolasi sesuai keinginan.
Misalnya pulsa 1,5 ms akan memutar servo ke sudut 90 o. Harus dipahami bahwa nilai ini
hanya perkiraan, nilai sebenarnya dari sebuah servo berbeda pada setiap pabrikan.
Serangkaian pulsa-pulsa (50 pulsa dalam 1 detik) harus diberikan ke servo untuk
mempertahankan posisi sudut tertentu. Saat servo menerima pulsa, motor servo dapat
mempertahankan sudutnya untuk 20 ms berikutnya. Hadi sebuah pulsa setiap frame waktu
20ms harus diberikan ke motor Servo.

Untuk motor servo Futaba S3003 hubungan antara lebar pulsa dan sudut servo adalah
seperti tabel di bawah ini. Motor servo ini hanya dapat berputar antara sudut 0 hingga 180
derajat.
Lebar Pulsa
Posisi Sudut
0,360 ms
0 derajat
1,260 ms
90 derajat
2,160 ms
180 derajat

Untuk mengontrol motor servo dapat digunakan PWM dari mikrokontroler AVR.
Dicontohkan menggunakan AVR Timer 1 yang merupakan timer 16bit dan mempunyai dua
channel PWM (A dan B). Frekuensi CPU adalah 16Mhz, frekuensi ini adalah frekuensi
maksimum yang dapat digunakan oleh mikrokontroler AVR. Kali ini digunakan prescaller 64
sehingga timer akan mempunyai frekuensi 16Mhz/64 = 250khz (Periode 4uS). Kita
menggunakan timer dengan mode Fast PWM Top Value = ICR1. Sehingga timer akan
menghitung mulai dari 0 hingga ICR1 (Top Value). Formula untuk menghitung frekuensi dan
nilai Top Value adalah sebagai
berikut :

64 (1 + )
16000000
50 =
64 (1 + )
= 4999

Selanjutnya set ICR1=4999. Hal ini memberikan kita PWM dengan periode 20ms
(50Hz). Lalu set output PWM menjadi Non Inverted. Selanjutnya duty cycle dapat diset
melalui register OCR1A dan OCR1B. Karena periode timer nya adalah 4uS (250Kz), kita

dapat menghitung nilai yang dibutuhkan untuk memutar motor servo ke sudut tertentu dengan
rumus sebagai berikut :
Sudut 0o membutuhkan lebar pulsa 0.360ms(360uS) sehingga nilai OCR1A = 360us/4us =
90
Sudut 90 o membutuhkan lebar pulsa 1.260ms(1260uS) sehingga nilai OCR1A =
1260us/4us = 315
Sudut 180 o membutuhkan lebar pulsa 2.160ms(2160uS) sehingga nilai OCR1A =
2160us/4us = 540
ALAT DAN BAHAN YANG DIGUNAKANbb

1 unit PC/Notebook
Minimum System ATmega8535
Motor Servo Futaba S3003
1 kabel USB Type B
2 kabel 10 pin
Kabel jumper

PROSEDUR
1. Hitung nilai TOP dan OCR1A yang diperlukan untuk mengontrol motor servo untuk
bergerak ke sudut 0,30,60,90,120,150 dan 180 derajat! (Frekuensi Clock minimum
system 4 Mhz).
2.
3. Hubungkan kabel 10 pin dari input trainer ke port minimum sistem yang diinginkan.
4. Atur konfigurasi Timer1 mode Fast PWM Top=ICR1 dan port sesuai kebutuhan.
5. Buatlah fungsi yang memutar motor ke posisi sudut tertentu (parameter berupa besar
sudut)!.
6. Buatlah fungsi yang memutar motor ke posisi sudut tertentu (parameter berupa lebar
pulsa HIGH dalam mikrosekon)!.
7. Buatlah program yang memutar motor servo ke sudut tertentu sesuai masukan dari
toggle menggunakan fungsi pada langkah ke-5 dan ke-6 seperti tabel berikut :
No. Toggle bit ke- Sudut tujuan (derajat)
Fungsi langkah ke1
0
0
5
2
1
30
5
3
2
60
5
4
3
90
5
5
4
120
6
6
5
150
6
7
6
180
6
8
7
200
5 atau 6

8. Pindahkan kabel putih motor servo ke PD3 (Pin nomor 6 pada minimum sistem). Lalu
set pin tersebut sebagai output!

9. Buatlah program yang memutar motor servo ke sudut 0, 90, dan 180 sesuai input
toggle dengan memanipulasi level logika pin PD3 dengan algoritma sebagai berikut :
a. Set pin PD3 (HIGH)
b. Berikan delay sesuai sudut yang dibutuhkan
c. Clear pin PD3 (LOW)
d. Berikan delay (periode sinyal adalah 20ms).
DATA HASIL PERCOBAAN

1. Hasil perhitungan prosedur nomor 1.


Diketahui:
Frekwensi CPU
Prescaller (N)
F PWM

= 4Mhz
= 64
= 50

Frekwensi Timer

4 Mhz
64

= 62.500 Khz
T (Periode)

1
F

1
62500

= 6s
=

Frekwensi CPU
N (1+TOP)

50

4.000 .000
64 (1+TOP)

3.200 (1+TOP)
3.200 + 3200TOP
TOP

= 4.000.000
= 4.000.000
4.000 .0003.200
=
3.200

TOP

= 1249

F PWM

periode timer adalah 16s , nilai yang dibutuhkan untuk memutar motor servo ke sudut
tertentu dihitung dengan rumus:
360+ sudut x 10
OCR=
T
Sudut 0o,
Sudut 30 o,
Sudut 60 o,
Sudut 90 o,
Sudut 120 o,
Sudut 150 o,
Sudut 180 o,

lebar pulsa 0.360ms (360S)


lebar pulsa 0.660ms (660S)
lebar pulsa 0.960ms (960S)
lebar pulsa 1.260ms (1260S)
lebar pulsa 1.560ms (1560S)
lebar pulsa 1.860ms (1860S)
lebar pulsa 2.160ms (2160S)

OCR1A = 360us/16s
OCR1A = 660us/16s
OCR1A = 960us/16s
OCR1A = 1260us/16s
OCR1A = 1560us/16s
OCR1A = 1860us/16s
OCR1A = 2160us/16s

= 23
= 41
= 60
= 79
= 98
= 116
= 135

2. Source code program prosedur nomor 5 (blok fungsinya saja).


#include <mega8535.h>
Void set_servo(int sudut)
{
OCR1A=(360+(sudut*10))/16;

3. Source code program prosedur nomor 6 (blok fungsinya saja).


Void ms (int ms)
{
OCR1A=(ms/16);
}

4. Source code program prosedur nomor 5 (main program yang di dalam while saja).
While (1)
while (1)
{
If (PINA. 0==1) {set_servo (0) ;}
Else if (PINA.1==1) {set_servo (30) ;}
Else if (PINA.2==1) {set_servo (60) ;}
Else if (PINA.3==1) {set_servo (90) ;}
Else if (PINA.4==1) {set_servo (120) ;}
Else if (PINA.5==1) {set_servo (150) ;}
Else if (PINA.6==1) {set_servo (180) ;}
Else if (PINA.7==1) {set_servo (200) ;}
else {set_servo (0) ;}
}

5. Source code program prosedur nomor 6 (main program yang di dalam while saja).
While (1)
While (1)
{
If (PINA.0==1) {MS(360) ;}
ELSE IF (PINA.1==1) {MS (660) ;}
ELSE IF (PINA.2==1) {MS (960) ;}
ELSE IF (PINA.3==1) {MS (1260) ;}
ELSE IF (PINA.4==1) {MS (1560) ;}
ELSE IF (PINA.5==1) {MS (1860) ;}
ELSE IF (PINA.6==1) {MS (2160) ;}
ELSE IF (PINA.7==1) {MS (2360) ;}
ELSE {MS (360) ;}
}
{

ANALISA DATA

Berdasarkan hasil praktikum yang dilakukan dapat di analisa apabila kita akan
mengendalikan motor servo hal yang perlu diperhatikan yaitu menentukan nilai frekuensi
cpu, frekuansi timer, periode, serta menghitung nilai ocr.
Untuk menghitung nilai ocr dapat di hitung dengan rumus :
360+ sudut x 10
T
Setelah mendapatkan nilai OCR motor servo dapat kita digerakkan

Anda mungkin juga menyukai