Anda di halaman 1dari 10

Kontrol Motor Servo menggunakan Mikrokontroler

Tujuan :
1. Memahami prinsip kerja motor servo
2. Memahami cara mengontrol motor servo menggunakan mikrokontroler
Alat dan Bahan :
-

Modul mikrokontroler AT Mega 8535


PC
Software CV AVR
Modul ISP
Kabel USB
Motor Servo
Osilloscope dan probe
Power Supply
Kabel power
Kabel jumper
Modul Robot Planar

Dasar Teori
1. Motor Servo
Motor servo adalah sebuah motor
dengan sistem closed feedback di mana
posisi dari motor akan diinformasikan
kembali ke rangkaian kontrol yang ada
di dalam motor servo. Ada dua jenis
motor servo, yaitu motor servo AC dan
DC. Motor servo AC lebih dapat
menangani arus yang tinggi atau beban
berat, sehingga sering diaplikasikan
pada mesin-mesin industri. Sedangkan motor servo DC biasanya lebih
cocok untuk digunakan pada aplikasi-aplikasi yang lebih kecil. Dan bila
dibedakan menurut rotasinya, umumnya terdapat dua jenis motor servo
yang dan terdapat di pasaran, yaitu motor servo rotation 180 dan servo
rotation continuous.

Motor servo standard (servo rotation 180) adalah jenis yang paling
umum dari motor servo, dimana putaran poros outputnya terbatas
hanya 90 kearah kanan dan 90 kearah kiri. Dengan kata lain total
putarannya hanya setengah lingkaran atau 180.
Motor servo rotation continuous merupakan jenis motor servo yang
sebenarnya sama dengan jenis servo standard, hanya saja
perputaran porosnya tanpa batasan atau dengan kata lain dapat
berputar terus, baik ke arah kanan maupun kiri.

Motor servo dikendalikan dengan memberikan sinyal modulasi lebar


pulsa (Pulse Wide Modulation / PWM) melalui kabel kontrol. Lebar pulsa
sinyal kontrol yang diberikan akan menentukan posisi sudut putaran dari
poros motor servo. Sebagai contoh, lebar pulsa dengan waktu 1,5 ms (mili
detik) akan memutar poros motor servo ke posisi sudut 90. Bila pulsa lebih
pendek dari 1,5 ms maka akan berputar ke arah posisi 0 atau ke kiri
(berlawanan dengan arah jarum jam), sedangkan bila pulsa yang diberikan

lebih lama dari 1,5 ms maka poros motor servo akan berputar ke arah
posisi 180 atau ke kanan (searah jarum jam). Lebih jelasnya perhatikan
gambar dibawah ini.

Ketika lebar pulsa kendali telah diberikan, maka poros motor servo
akan bergerak atau berputar ke posisi yang telah diperintahkan, dan
berhenti pada posisi tersebut dan akan tetap bertahan pada posisi
tersebut. Jika ada kekuatan eksternal yang mencoba memutar atau
mengubah posisi tersebut, maka motor servo akan mencoba menahan
atau melawan dengan besarnya kekuatan torsi yang dimilikinya (rating
torsi servo). Namun motor servo tidak akan mempertahankan posisinya
untuk selamanya, sinyal lebar pulsa kendali harus diulang setiap 20 ms
(mili detik) untuk menginstruksikan agar posisi poros motor servo tetap
bertahan pada posisinya.
2. AT Mega 8535
Konfigurasi pin ATmega8535 dengan kemasan 40 pin DIP (Dual Inline
Package) dapat dilihat pada gambar 2.1. Dari gambar di atas dapat
dijelaskan fungsi dari masing-masing pin Atmega8535 sebagai berikut:
1. VCC merupakan pin yang berfungsi sebagai masukan catu daya.
2. GND merukan pin Ground.
3. Port A (PortA0PortA7) merupakan pin input/output dua arah dan pin
masukan ADC.
4. Port B (PortB0PortB7) merupakan pin input/output dua arah dan
dan pin fungsi khusus.

6. RESET merupakan pin yang digunakan untuk me-reset


mikrokontroler.
7. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal.
8. AVCC merupakan pin masukan tegangan untuk ADC.
9. AREFF merupakan pin masukan tegangan referensi ADC.
3. Timer pada Mikrokontroler
Metode Pulsa with modulation atau PWM dapat digunakan untuk
mengatur kecepatan motor dan untuk menghindarkan rangkaian
mengkomsumsi daya berlebih. PWM dapat mengatur kecepatan motor
karena tegangan yang diberikan dalam selang waktu tertentu saja.
PWM ini dapat dibangkitkan melalui software. Lebar pulsa PWM
dinyatakan dalam Duty Cycle. Misalnya duty cycle 10 %, berarti lebar
pulsa adalah 1/10 bagian dari satu perioda penuh (E. Pitowarno, 2006).
Berikut adalah rumusan frekuensi sinyal keluaran pin output compare
OC1A/OC1B dengan menggunakan timer/counter1 (A.Bejo, 2008):
a. Mode Phase Correct PWM

Keterangan:
fOC1A_PCP = frekuensi output OC1A mode PCP
fOC1B_PCP = frekuensi output OC1B mode PCP
fOSC = frekuensi kristal/ osilator
D = duty cycle
N = skala clock (Tabel 2.1)
TOP = nilai maksimum counter (TCNT1)
b. Mode CTC

Keterangan:

fOC1A_CTC = frekuensi output OC1A mode CTC


fOC1B_CTC = frekuensi output OC1B mode CTC
fOSC = frekuensi Kristal/ osilator
N = skala clock (Tabel 2.1)
OCR1A = isi register OCR1A
OCR1B = isi register OCR1B
c. Mode Fast PWM

Keterangan:
fOC1A_FastPWM = frekuensi output OC1A mode fast PWM
fOC1B_FastPWM = frekuenai output OC1B mode fast PWM
fOSC = frekuensi Kristal/ osilator
N = skala clock (Tabel 2.1)
TOP = nilai maksimum counter (TCNT1)
Setting Percobaan

Prosedur Percobaan
1. Menyiapkan alat dan bahan yang diperlukan.
2. Men-setting power supply dengan cara:
- Menyalakan power supply yang belum terhubung dengan modul mikrokontroler.
- Mengatur current soure hingga menunjukkan setengah dari nilai maksimalnya baik
pada bagian fine maupun course.
- Mengatur voltage source hingga menunjukkan nilai 5 V dengan toleransi 0,2V.
Lalu mematikan power supply.
3. Menghubungkan downloader dengan connector ISP pada modul mikrokontroler.
Kemudian menghubungkan downloader dengan PC menggunakan USB.
4. Menghidupkan PC dan membuka software CV AVR.
5. Meng-klik file, memilih new project.
6. Memilih type chip AT Mega.
7. Memilih chip AT Mega 8535 dengan nilai clock 4 MHz.
8. Meng-klik alpha numeric LCD meng-klik enablememilih character line
16mengubah port menjadi port B.
9. Meng-klik Timersmeng-klik timer 1pada clock source memilih system
clockmemilih clock value sebesar 4.000.000 KHzmemilih mode fast PWM
top=ICR1.
10. Memilih mode untuk output A dengan meng-klik non-inverted PWM.
11. Kemudian pada box input capture mengisikan FFFF h.
12. Selanjutnya pada menu bar memilih program lalu memilih generate save and exit
pada saat menyimpan memberi nama yang sama.
13. Kemudian muncul workspace yang digunakan untuk memrogram AT Mega 8535.
14. Sebelum memrogram, memeriksa pada bagian timer dengan ketentuan :
- TCCR1A = 0x82
- TCCR1B = 0x19
15. Jika sudah selesai, menulis program pada bagian paling bawah dengan format :
if (PINC.0==1) OCR1A = OCR1A+10;

if (PINC.1==1) OCR1A = OCR1A-10;


sprintf(kata,OCR1A = %d, OCR1A);
lcd_gotoxy(0,0);
lcd_puts(kata);
delay_ms(50);
16. Menambahkan library pada bagian paling atas, yaitu :
#include <stdio.h>
#include <delay.h>
dibawahnya pada bagian //declare your global variables menambahkan program :
char kata[16];
17. Selanjutnya meng-klik compile the project, kemudian memilih setting pada menu
bar, memilih programmer jika muncul peringatan klik ok dan saat muncul kotak
dialog memilih Atmel MKII (USB) dan meng-klik ok.
18. Lalu pada menu bar meng-klik projectconfigureafter buildprogram the
chipokexecute programok.
19. Meng-klik build all programexecute program the chip.
20. Memasang konektor servo dari modul robot planar dan probe oscilloscope ke modul
mikrokontroler dengan konfigurasi sebagai berikut :
Probe positif dengan kabel motor servo berwarna putih.
Probe negatif dengan kable motor servo berwarna hitam.
Kabel motor servo berwarna putih dengan PORTD.5
Kabel motor servo berwarna merah dengan PORT VCC.
Kabel motor servo berwarna hitam dengan PORT GND.
21. Menghubungkan power supply dengan modul mokrokontroler dan menyalakannya.
22. Mengatur lengan robot pada sudut 0dengan mengubah nilai OCR1A pada LCD
dengan cara menekan push button 1 untuk menaikkan programnya dan push button
0 untuk menurunkan nilainya.
23. Mencatat nilai OCR1A pada LCD untuk nilai 0 dan mengamati serta memfoto bentuk
gelombang pada oscilloscope.
24. Mengulagi prosedur 22 dan 23 dengan merubah besar sudut dari 10 hingga 90
dengan kenaikan 10.

Hasil Percobaan
Tabel 1. Tabel Hasil Percobaan
Sudut
()

OCR1A Teori
(step)

OCR1A Praktek
(step)

Error
(step)

Gambar

0
1790
10
2123
20
2456
30
2789
40
3123
50
3456
60
3789
70
4123
80
4456
90
4789
*Gambar terlampir

1790
2160
2500
3010
3300
3780
4070
4600
4980
5390

0
37
44
221
177
324
281
477
524
601

Gambar 3.1
Gambar 3.2
Gambar 3.3
Gambar 3.4
Gambar 3.5
Gambar 3.6
Gambar 3.7
Gambar 3.8
Gambar 3.9
Gambar 3.10

Analisa
Pada percobaan kali ini dilakukan uji kontrol motor servo pada mikrokontroller agar
dapat mengetahui prinsip kerja motor servo dan cara pengontrolan motor servo tersebut
menggunakan mikrokontroller. Pada percobaan ini digunakan motor servo jenis standart yang
dibuat menjadi robot planar 1 lengan serta AT Mega 8583 sebagai pengontrol dari motor servo
tersebut. Dari hal tersebut diharapkan robot planar ( lengan robot yang terdapat motor servo)
dapat bergerak pada sudut tertentu yang dikontrol oleh AT Mega 8583.
Pada awalnya AT Mega 8583 diprogram melalui software CV AVR dengan program
sebagai berikut :
#include <stdio.h>
#include <delay.h>
if (PINC.0==1) OCR1A = OCR1A+10;
if (PINC.1==1) OCR1A = OCR1A-10;
sprintf(kata,OCR1A = %d, OCR1A);
lcd_gotoxy(0,0);
lcd_puts(kata);
delay_ms(50);
AT Mega 8583 sendiri memiliki kapasitas memori 8bit dan nilai clock yang telah di setting
adalah sebesar 4x106 Hz sehingga untuk setiap stepnya membutuhkan periode waktu sebesar
0,25s,serata pada percobaan ini pin yang digunakan yaitu pin D pada AT Mega 8535. Pada
modul mikrokontroller terdapat lcd dan 4 push button ,pada lcd tersebut menampilkan OCR1A
yang merupakan besaran step dari motor servo dan fungsi push button untuk menaikkan
maupun menurunkan nilai OCR1A. Saat mikrokontroller diaktifkan lengan robot planar
langsung bergerak kebawah (melebihi sudut 0 ). Oleh karena itu nilai OCR1A diatur agar
lengan robot bergerak menuju ke sudut 0 .
Pada praktiknya agar lengan robot menuju 0 nilai OCR1A dinaikkan menjadi 1790
step. Kemudian lengan robot digeser sejauh 10 dengan menaikkan nilai OCR1A menjadi
2160 step. Selanjutnya nilai OCR1A dinaikkan kembali menjadi 2500 step agar lengan robot
berpindah ke sudut 20 . Lalu agar lengan robot bergeser ke sudut 30 nilai OCR1A
dinaikkan menjadi 3010. Selanjutnya nilai OCR1A dinaikkan menadi 3300 step agar lengan
robot bergerak ke sudut 40 . Saat lengan robot mencapai sudut 50 ,nilai OCR1A yakni
sebesar 3780 step. Kemudian lengan robot digeser kembali ke sudut 60 sehingga nilai
OCR1A dinaikkan kembali menjadi 4070 step. Saat lengan robot berada di sudut 70 ,nilai
OCR1A dinaikkan menjadi 4600 step. Lalu lengan robot digeser kembali ke sudut 80
sehingga nilai OCR1A dinaikkan kembali menjadi 4980 step. Terakhir lengan robot digeser ke
sudut 90 sehingga nilai OCR1A dinaikkan menjadi 5390 step.
Dari percobaan diatas dihitung pula kenaikkan nilai OCR1A secara teori pada sudutsudut tersebut dengan rumus sebagai berikut :

Untuk setiap kenaikan sudut 1 derajat nilai OCR1A sebesar :


OCR1A per 1 =

OCR 1 A 9 0 OCR 1 A 0
90

Kemudian untuk menghitung nilai OCR1A pada sudut-sudut tertentu digunakan rumus sebagai
berikut :

OCR1A =OCR1A0 +( x(OCR1A per 1 )

Sehingga dari rumus di atas dapat dihitung kenaikan niali OCR1A secara teori pada sudut yang
telah ditentukan sebagai berikut :

OCR1A 0 =1790+( 0 x 33,33)

=1790 step
OCR1A 10 =1790+( 10 x 33,33)

=2123 step
20
=1790+( 20 x 33,33)
OCR1A

=2456 step
30
=1790+( 30 x 33,33)
OCR1A

=2789 step
OCR1A 40 =1790+( 40

=3123 step
50
=1790+( 50 x 33,33)
OCR1A

=3456 step
60
=1790+( 60 x 33,33)
OCR1A

=3789 step
70
=1790+( 70 x 33,33)
OCR1A

=4123 step
OCR1A 80 =1790+( 80 x 33,33)

=4456 step
90
=1790+( 90 x 33,33)
OCR1A

x 33,33)

=4789 step
Sehingga dari perhitungan dan praktek yang telah dilakukan terdapat error pada nilai ORC1A
yaitu :

Error Sudut 0 = 1790 1790

=0
10
= 2160 - 2123
Error Sudut

= 37
Error Sudut 20 = 2500 2456

= 44
30
= 3010 2789
Error Sudut

= 221
40
= 3300 3123
Error Sudut
= 177

Error Sudut 50 = 3780 3456

= 324
60
= 4070 3789
Error Sudut

= 281
70
= 4600 4123
Error Sudut

= 477
80
= 4980 4456
Error Sudut

= 524
Error Sudut 90 = 5390 4789
= 601