Pada tutorial sebelumnya dijelaskan secara dasar konstruksi dan pengaturan motor servo pada mikrokontroller ATmega8. Pada tulisan ini akan dijelaskan secara teknis mulai menggunakan paramter-paramter yang ada dari tulisan sebelumnya yang kemudian diolah untuk memenuhi rumus persamaan 9 . Persamaan 9 ini hanya valid untuk tipe servo yang berputar dengan derajat kebebasan sebesar 180 derajat.


Sebelumnya beberapa parameter yang sangat perlu diketahui ketika menggunakan rumus persamaan 9,
  • B - adalah sudut yang akan dibentuk oleh servo [bernilai -90 sampai dengan 90].
  • Max pulse - adalah nilai lebar pulsa dalam milidetik atau mikrodetik pada saat poisi servo membentuk sudut 90 derajat.
  • Min pulse - adalah nilai lebar pulsa dalam milidetik atau mikrodetik pada saat posisi servo membentuk sudut -90 derajat.
  • N - adalah nilai prescale. Silahkan baca tutorial sebelumnya.[Part 1 dan Part 2]
  • fosc - adalah frekuensi osilator dari mikrokontroller yang digunakan.



1. Meng-generate Rumus
Langkah awal yang dilakukan untuk membuat sebuah program pengatur servo motor menggunakan  kontrol PWM dari Mikrokontroler AVR ATmega8 adalah mencari parameter-parameter untuk melengkapi persamaan 9 di atas. Hasil pengukuran lebar  pulsa secara langsung akan didapat 2 nilai parameter yaitu Max Pulse dan Min Pulse. Selain itu yang perlu diketahui yaitu Nilai prescale (N)  yang digunakan adalah 8. (*Untuk lebih jelas silahkan baca mode fast PWM pada datasheet mikrokontroller ATmega8). Frekuensi osilator fosc yang digunakan adalah 11.059200 MHz. Dari beberapa meter tersebut maka didapatkan bahwa:
  • Max Pulse = 0.536 millidetik
  • Min PulsE = 2.464 millidetik
  • N = 8
  • fosc = 11.059200 MHz
2. Meng-generate script pada CV-AVR microcontroller
Dalam pembuatan listing program, digunakan software  CV-AVR.

Gambar 1. CodeVisionAVR

Adapun langkah-langkah dalam pembuatan program pada  CV-AVR ini yaitu.
1. Click pada create New Project
Gambar 2. Menu Bar Untuk Membuat Projek Baru

2. Pada window create new file, pilih menu Project kemudian pilih OK.
Gambar 3. Pemilihan Menu Project

3. Pilih Yes pada menu confirm. Kita menggunakan codewizard untuk memudahkan  dalam pembuatan listing program
Gambar 4. Konfirmasi penggunaan CodeWizard

4. Setelah itu akan muncul window codewizard. Pada menu chip pilih chip yang akan digunakan adalah  AVR ATmega8  lalu kemudian XTAL yang digunakan adalah 11.059200 MHz.
(a)


(b)
Gambar 5. (a) Pemilihan Chip Mikrokontroller. (b) Input Nilai XTAL yang akan digunakan

5. Setelah tab chip diisi, selanjutnya memilih tab timer. Pada tab timer ini dipilih timer1. Pada timer1 ada beberapa parameter yang harus diisi yaitu clock value, mode, out. A dan out. B. dan input capture.
Untuk mengisi bagian clock value dibutuhkan 2 parameter dasar yaitu nilai prescale (N), dan frekuensi oscilator (fosc).


Dari hasil perhitungan didapatkan nilai clock value = 1382.400 KHz. Setelah menentukan clock value, kemudian memilih mode PWM yang  akan digunakan. mode PWM yang digunakan adalah mode "Fast PWM top=ICR1".  Output yang digunakan adalah OC1A atau output A, dimana out. A diset "Non-Inverting". sedangkan pada out. B diset "Disconnect". Setelah itu kemudian dimasukkan parameter input capture. Dalam mencari nilai input capture digunakan rumus pada persamaan Persamaan 3 (lihat part 2).




Hasil perhitungan, didapatkan input capture = 27647 (6BFF dalam hexadecimal, 6BFF ini akan menjadi nilai yang akan dimasukkan pada fill input capture). Jadi beberapa parameter yang harus diisi dalam setiap fill bada bagian timer 1 yaitu:

  • clock value = 1382.400 KHz [1]
  • mode = Fast PWM top=ICR1 [2]
  • out.A = Non-Inverting [3]
  • input capture = 6BFF [4]
Gambar 6. Kotak Dialog Untuk Mengatur Timer 1


Setelah selesai, kemudian pilih generate program dan exit. Maka Setelah itu, akan muncul dashboard yang berisikan listing program. Nah di sini kita akan masuk ke tahap selanjutnya yaitu coding program

3. Coding Control Motor Servo
Pada  listing program masukkan syntag 
void set_servo(int sudut)
 {
 OCR1A= sudut;
 };
Letakkan script tersebut di bawah declarae global variabel, sperti yang dilakukan pada Gambar 7.

Gambar 7. Peletakkan syntag Pembuat Sudut

Setelah melakukan hal tersebut, kemudian pada tempat program utama atau main program (di sini ditandai dengan while (1)). Pada bagian tersebut silahkan tuliskan besar nilai hasil perhitungan c(B), berdasarkan nilai sudut B yang ingin dibentuk.
set_servo(nilai counter sudut);
Script di atas di taruh pada main program, seperti pada gambar 8. Pada script juga bisa ditambahkan program delay untuk memberikan delay beberapa milidetik untuk melakukan instruksi selanjutnya
Gambar 8. Main Program


4. Compile Program
Setelah membuat listing program. Program tersebut harus dibuild agar dapat dimengerti oleh mesin. Cara membuild suatu program pada CV-AVR yaitu diawali dengan Klik Pada bar compile (gambar 9)

Gambar 9. icon compile

Setelah dilakukan compile kemudian dilanjutkan dengan proses build. Sama halnya dengan melakukan compile. Untuk build klik icon build pada menu bar seperti yang diperlihatkan pada gambar 10

Gambar 10. icon build

Setelah proses build. Dilakukan. Maka akan muncul kotak dialog hasil build program. Berupa resume informasi. Seperti yang diperlihatkan gambar 11.

Gambar 11. Kotak Dialog Resume Build

Kondisi apabila proses build program berhasil, maka pada kotak dialog tersebut akan tertera keterangan bahwa program yang dibuild No Errors. Apabila ada warning, ini kemungkinan ada beberapa variabel yang ditaruh pada listing program tidak terpakai. Setelah melakukan build program ini. Proses selanjutnya atau proses terakhir sebelum ditanamkan pada mikrokontroller adalah proses simulasi. Proses simulasi ini bertujuan untuk memverifikasi secara software apakah sistem yang kita buat sudah benar atau belum.

5. Proses simulasi.
Pada proses simulasi, program yang digunakan adalah Proteus 7.8 SP 2. Dan item-item yang dibutuhkan dalam proses simulasi hanya 2 buah saja. Yaitu sebuah device motor servo dan Mikrokontroller AVR ATmega8. Adapun konfigurasinya diperlihatkan pada gambar 12.

Gambar 12. Konfigurasi Pada Proteus

Yang perlu diperhatikan di sini adalah. Kita harus menyesuaikan spesifiasi motor servo pada proteus dengan spesifikasi motor servo yang kita punya. Caranya yaitu dengan meng-click 2 kali gambar device motor servo kemudian akan muncul kotak dialog seperti gambar berikut.

Gambar 13. Kotak Dialog Edit komponen Motor Servo

Ganti minimum angel [1] menjadi sudut -90 dan kemudian maximum angle [2] menjadi sudut 90. Dan ubah minimum control pulse [3] sesuai dengan Min pulse dan ubah maximum control pulse [4] sesuai dengan max pulse. Setelah itu klik ok. Setelah mengubah spesifikasi motor servo dilanjutkan dengan menyesuaikan mikrokontroller yang digunakan sesuai dengan program yang telah dibuat. Untuk mengubahnya klik 2 kali gambar mikrokontroller pada proteus. Maka akan muncul kotak dialog seperti gambar 14.

Gambar 14. Kotak Dialog Edit komponen Mikrokontroller

Yang perlu diatur pada mikrokontroller adalah mengeset xtal frekuensi, sesuai dengan frekuensi yang digunakan pada program sistem yang dibuat. Setelah itu jalankan program yang telah dibuat tadi dengan mengikuti langkah-langkah berikut ini:

1. Jangan menutup kotak edit komponen mikrokontroler setalah mengganti frekuensi. Jika sudah ketutup duluan. Click 2 kali lagi gambar mikrokontroller AVR ATmega8. Kemudian click icon folder pada list program file. Seperti gambar 15

Gambar 15. Icon Menu pada Kotak Dialog Edit Komponen Mikrokontroller

2. Kemudian cari folder dimana anda menyimpan File program yang anda save tadi, setelah menemukan foldernya, buka folder exe [1] dan pilih program yang berextension hex tersebut [2]. Untuk lebih jelasnya perhatikan gambar 16

(a)

(b)
Gambar 16. Kotak Dialog Penempatan File Hex dari Program yang Telah dibuat.


3. Setelah mimilih file kemudian klik open, dan setelah itu klik oke pada kotak dialog edit component mikrokontroller. Kemudian terakhir jalankan simulasinya dengan menekan tombol play pada pojok kiri bawah window program proteus

Selamat mencoba. Jika ada pertanyaan kita bisa mendiskusikan dengan berkomentar ria. Ataupun via e-mail

Sumber:
[1] Paulus A. Nalwan. AN-0012 Jenis-jenis Motor. http://www.robotindonesia.com/article/an0012 (tanggal akses 24 Maret 2012)
[2] wangready.wordpress.com/2012/12/30/kendali-motor-servo-menggunakan-pwm-dari-timer/ (tanggal akses 13 Februari 2013)
[3] ATMEL .2011, AVR ATmega8 datasheet. Atmel Corporation 
[4] Elektro Kontrol. Mengatur Motor Servo. http://elektro-kontrol.blogspot.com/2011/06/mengakses-motor-servo.html (tanggal akses 24 Maret 2013)