(Edit)Makalah 35 Agfianto Eko Putra
-
Upload
m-yudi-suhendar -
Category
Documents
-
view
118 -
download
3
Transcript of (Edit)Makalah 35 Agfianto Eko Putra
IMPLEMENTASI SISTEM PENGENDALI MOTOR SERVO PADA FPGA ALTERA FLEX-10K MENGGUNAKAN DESKRIPSI VHDL
Agfianto Eko Putra1, Nukman Taufik2
email: 1 [email protected], email: 2 [email protected]
ABSTRACT
It has been design and implemented servo motor controller in Altera FLEX-10K FPGA using
VHDL. Servo motor which is used is Hi-Tech HS-311 series. The system is designed in 2 types, First,
the controller module is fully design using VHDL, implemented in Altera FLEX-10K, controlled by 2
pushbuttons, and using 3x7-segment to display servo angle. The other type is combination of servo
driver designed using VHDL and GUI interface designed using Delphi. The first system type require
277 element logic, 63 flip-flop, and has 12.5 ns propagation delay. While the second type require 140
element logic, 33 flip-flop and has 12.4 ns propagation delay.
Keywords: FPGA, VHDL, PWM, Servo Motor
INTISARI
Telah dilakukan perancangan, dan implementasi sistem pengendali motor servo dalam FPGA
FLEX-10K menggunakan VHDL. Sistem terbagi atas 2 macam, yang masing-masing dibatasi dengan
ruang putar servo 0-180 derajat. Sistem pertama dirancang secara keseluruhan menggunakan
deskripsi VHDL dengan pengontrol 2 tombol-tekan dan penampil sudutnya 3x7-segment. Sistem
kedua merupakan kombinasi antara modul driver yang ditulis dalam deskripsi VHDL, dan bagian
antarmuka yang dituliskan dalam Delphi 7.0. Sumber daya yang dibutuhkan pada sistem pengendali
yang pertama adalah 277 elemen logika dan 63 flip-flop dengan waktu rambat sebesar 12.5 nd.
Sedangkan yang kedua membutuhkan 140 elemen logika, dan 33 flip-flop dengan waktu rambatnya
12.4 nd.
Kata kunci: FPGA, VHDL, PWM, Motor Servo
PENDAHULUAN
Motor servo merupakan alat mekanis yang terdiri dari motor, gearbox, pengatur posisi
umpanbalik, dan kontrol elektronik. Motor servo sering digunakan dalam dunia Robotika, misalnya,
sebagai engsel atau sendi dari pergerakan suatu robot. Motor servo dapat dikendalikan melalui
metode pengaturan lebar pulsa atau dikenal sebagai PWM (Pulse Width Modulation), mulai 1 milidetik
hingga 2 milidetik, yang secara teori sebanding dengan pergerakan mulai posisi 0o hingga 180o
1 Program Studi Elektronika dan Instrumentasi FMIPA UGM2 Program Studi Elektronika dan Instrumentasi FMIPA UGM
(karena secara umum servo yang banyak digunakan memiliki ruang putar sebesar 180o). Motor servo
ini akan menempati posisi tengah bila diberikan pulsa selebar 1,5 milidetik dan harus dipertahankan
secara periodik.
Implementasi kontrol motor servo sudah banyak dilakukan menggunakan komputer maupun
mikrokontroler, hanya saja dalam penelitian ini dilakukan perancangan dan implementasi kontrol
motor servo ke dalam FPGA menggunakan VHDL (VHSIC (Very High Speed Integrated Circuit)
Hardware Description Language).
Ada dua alasan penggunaan VHDL, pertama, VHDL diawali sebagai bahasa untuk spesifikasi
dan pemodelan, dengan simulator yang dikembangkan di akhir tahun 1980-an. Semua perusahaan
perangkat lunak yang terkait sudah mendukung standar VHDL, dengan kelebihan bisa memindahkan
kode di antara perangkat lunak komersiil yang beredar saat ini. Kedua, perancangan menggunakan
VHDL daripada skema atau rangkaian (gerbang-gerbang dan lain sebagainya) merupakan cara baru
dalam perancangan. Bekerja dengan VHDL tidak sekedar menuliskan kode-kode, tetapi juga
membangun hirarki dan bekerja dengan pustaka komponen yang tersedia [4].
TINJAUAN PUSTAKA
1. Pulse Width Modulation (PWM) Menurut Barr [2], Pulse Width modulation atau PWM merupakan metode untuk
mengendalikan rangkaian analog dengan sebuah prosesor yang luarannya digital. PWM digunakan
pada banyak aplikasi, terutama dalam aplikasi mekanik elektronik.
Gambar 1 menunjukkan tiga sinyal PWM yang berbeda. Gambar tersebut masing-masing
menunjukkan luaran PWM dengan duty cycle 10%, artinya lebar pulsa untuk HIGH atau ON sebesar
10% dari periode T dan untuk LOW atau OFF sebesar 90%. Sedangkan Gambar 1 tengah dan bawah
menunjukkan luaran PWM masing-masing untuk duty cycle 50% dan 90%.
Gambar 1. Pola-pola PWM dengan duty cycle yang berbeda [1]
2. Motor Servo
Motor servo adalah kombinasi dari motor DC dengan rangkaian umpan balik elektronik. Servo
merupakan sebuah sistem kontrol otomatis yang dipakai untuk mengatur kecepatan sebuah motor
DC. Kecepatan motor akan konstan sampai kapan pun karena adanya mekanisme servo ini. Servo
menggunakan sistem umpan balik, artinya terdapat sensor untuk mendeteksi putaran.
Pengendalian gerakan motor servo dilakukan dengan menggunakan metode Pulse Width
Modulation atau PWM. Teknik PWM yaitu cara pengalihan daya dengan menggunakan sistem lebar
pulsa untuk mengemudikan putaran motor. Gambar 2 menunjukkan hubungan antara PWM dengan
sudut tempuh servo, sedangkan Gambar 3 menunjukkan motor servo yang digunakan dalam
penelitian ini.
Gambar 2. Posisi Servo dan PWM-nya [3]
Gambar 3. Motor Servo Hitec HS325HB
3. FPGA
Field Programmable Gate Array (FPGA) adalah Integrated Circuit (IC) digital yang berisi
sekumpulan blok logika yang dapat dikonfigurasi. FPGA memiliki 3 bagian sumber daya yaitu blok
logika, blok I/O dan blok koneksi. Struktur umum FPGA ditunjukkan pada Gambar 4.
Gambar 4. Struktur Umum FPGA [2]
Blok-blok koneksi maupun hubungan antar blok dapat diprogram atau dikonfigurasi. Masing-
masing blok logika dalam FPGA memiliki beberapa masukan dan luaran dalam jumlah kecil,
mengenai berapa jumlahnya ini berbeda-beda tergantung dari produk dan tipe FPGA-nya.
Kegunaan FPGA antara lain sebagai prototipe Application Specific Integrated Circuit (ASIC),
sebagai Digital Signal Processor, Embedded microcontroller, digunakan pada lapisan fisik jaringan
komunikasi, dan lain sebagainya. Dalam penelitian ini digunakan FPGA tipe EPF10K10 dari Altera.
PERANCANGAN DAN IMPLEMENTASI
Implementasi sistem pengendali motor servo ini dibagi juga menjadi 2 jenis yaitu rancangan
yang pertama melibatkan modul-modul yang menggunakan deskripsi VHDL dan pengontrolan
langsung. Sedangkan yang kedua menggunakan pengontrolan melalui PC (dengan bahasa
pemrograman grafis Borland Delphi). Gambar 5 menujukkan diagram blok sistem yang dirancang.
Melalui beberapa survei yang dilakukan, diperoleh bahwa terdapat 2 motor servo, dengan
produsen yang berbeda (HiTech HS-311 dan Futaba), yang menghasilkan suatu kondisi berbeda,
motor servo (RC) jenis ini membutuhkan lebar pulsa antara 0,5 md sampai 2,2 md untuk
menghasilkan besar putaran sudut antara 0o sampai 180o.
Gambar 5. Diagram blok Rancangan
1. Perancangan Sistem I 1.1. Pembagi frekuensi
Inti pada sistem pengendali servo adalah pada pembagi frekuensi-nya. Modul yang dirancang
digunakan untuk memberikan sinyal detak (clock) bagi modul-modul yang lain. Papan pengembang
yang digunakan dalam penelitian ini (Wizard Flex-A01) memiliki detak global sebesar 9,6 MHz. Detak
global ini harus dilewatkan ke pembagi frekuensi agar modul-modul yang terlibat mendapatkan
frekuensi detak yang sesuai, yaitu Modul Pencacah Modulo-3, Debouncing, dan Up-Down Counter,
sebagaimana ditunjukkan pada Gambar 5.
1.2. Pembangkit sinyal PWM Modul PWM Generator (PWMENGINE) menerima masukan clk dan data 5-bit serta luaran
PWM, sebagaimana bloknya ditunjukkan pada Gambar 7. Detak yang ada papan pengembangan (9,6
MHz) dibagi sedemikian rupa sehingga membentuk sinyal PWM, dan pada pembagian frekuensi
sendiri ada faktor yang ikut menentukan lebar HIGH yaitu masukan 5-bit. Ilustrasi masukan 5-bit
ditunjukkan pada Gambar 8 dan Tabel 1.
Gambar 7. Blok Modul PWM Generator
Gambar 8. Konfigurasi PWM
Tabel 1: Hubungan counter dengan sinyal keluaran (PWM)
Masukan
(integer)
Pembagi
frekuensi
lebar pulsa yang
dihasilkan (detik)
0 4800 0.0005
1 6229 0.000648854
2 7658 0.000797708
3 9087 0.000946563
4 10516 0.001095417
5 11945 0.001244271
6 13374 0.001393125
7 14803 0.001541979
8 16232 0.001690833
9 17661 0.001839688
10 19090 0.001988542
11 20519 0.002137396
12 21948 0.00228625
Listing VHDL untuk modul PWMENGINE ditunjukkan sebagai berikut:
library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_ARITH.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity PWMengine is port ( clk : in std_logic; input : in std_logic_vector (4 downto 0); PWM : out std_logic ); end PWMengine; architecture Structural of PWMengine is signal counter : integer; signal penentu_putaran : integer; signal PWMi : std_logic; signal faktor : integer;
begin process(clk) begin faktor <= conv_integer (input); penentu_putaran <= 4800 + (1429 * faktor); if (clk'event and clk='1') then if (counter = 192000) then counter <= 0; else counter <= counter + 1; end if; end if; if (clk'event and clk='1') then if (counter <= penentu_putaran ) then PWMi <= '1'; else PWMi <= '0'; end if; end if; end process; PWM <= PWMi; end Structural;
1.3. Up-Down Counter Counter digunakan sebagai fungsi kontrol pada sistem pengendali. Sebuah
tombol
Listing VHDL untuk modul UDCOUNTER ditunjukkan sebagai berikut:
LIBRARY IEEE;
Modul Up-Down
yang “maju” akan memberikan sinyal untuk penambahan cacah maju pada penacacah mulai
0000 hingga 1100 (0 sampai 12), tombol yang lain, “mundur”, akan memberikan perintah untuk
melakukan pencacahan mundur mulai 1100 ke 0000 (12 ke 0). Kemudian sinyal luaran yang 5-bit tadi
masuk ke dalam masukan modul PWMENGINE untuk lalu menghasilkan lebar pulsa seperti telah
dibahas pada bagian sebelumnya.
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY UDCounter IS PORT ( Clock : IN std_logic; Up : IN std_logic; Down : In std_logic; Q : OUT std_logic_vector (4 downto 0) ); END UDCounter; ARCHITECTURE Structural OF UDCounter IS signal Qi : std_logic_vector (4 downto 0); BEGIN Process (Clock, Up, Down) begin if (Clock'event and Clock='1') then if (Up='1') then if (Qi = "01100") then Qi <= "01100"; else Qi <= Qi + 1;
end if; else if (Down='1') then if (Qi = "00000") then Qi <= "00000"; else Qi <= Qi - 1; end if; end if; end if; end if; end process; Q <= Qi; end structural; 1.4. Debouncing
Modul debou
biasa terjadi
ncing merupakan modul yang digunakan untuk mengurangi efek bouncing yang
kan sekumpulan beberapa modul-modul yang membentuk satu entitas
an dapat bekerja dengan benar maka modul-modul rangkaian
pada jika suatu tombol-tekan ditekan.
1.5. Penampil 7-segment Modul ini merupa
modul penampil 7-segment yang terkait dengan tabel pada modul up-down counter. Sekilas cara
kerjanya yaitu menggunakan metode look-up table atau LUT, untuk memperkecil penyimpan data.
Tampilan angka yang dikeluarkan melalui 7-segment melalui sistem tabel (LUT).
1.6. Penggabungan Modul-modul Agar sistem secara keseluruh
yang telah dibuat digabungkan, sebagaimana ditunjukkan pada Gambar 9.
Gambar 9. Penggabungan modul-modul
2. Perancangan Sistem II ver)
akan deskripsi VHDL. Inti dari modul pengendalian servo terletak
ram Antarmuka ini adalah bagaimana program mampu mengkonversi
ula-mula dikonversi menjadi bilangan bulat 0 sampai 255, sehingga
dengan mud
hi 7.0.
Lingkaran
2.1. Pembangkit PWM (driModul ini ditulis menggun
pada pengendalian gerakan batang motor servo yang dapat dilakukan menggunakan teknik PWM.
Konsep modul ini sebenarnya hampir identik dengan modul pembangkit sinyal PWM pada sistem I,
hanya saja untuk bagian masukan dibuat untuk menyesuaikan jumlah data yang dikirim oleh komputer
melalui program Borland Delphi melalui kanal paralel atau yang biasa disebut printer port.
2.2. Antarmuka Delphi Konsep dari prog
besaran sudut yang dimasukkan oleh pengguna, agar menghasilkan sinyal luaran yang berupa data
digital 8-bit melalui port paralel.
Data besar sudut tadi m
ah bisa dikonversi menjadi bilangan biner 8-bit. Misalnya, jika pengguna memasukkan
bilangan 30o (sudut yang harus dituju oleh motor servo), maka program harus mengkonversi data
tersebut menjadi data biner 8-bit. Untuk 30o berarti bilangan biner 8-bit-nya adalah 00101010.
Gambar 10 menunjukkan rancangan antarmuka yang dibuat menggunakan Delp
di tengah merupakan tombol slider yang memicu besar sudut yang perlu dimasukkan oleh
pengguna. Pada program ini juga ditambahkan tombol testbench untuk mengetes kinerja dari servo.
Gambar 10. Antarmuka Kendali Motor Servo
HASIL DAN PEMBAHASAN
angkaian dilakukan simulasi fungsional dan simulasi pewaktuan.
Untuk memeriksa kebenaran r
1. Hasil Simulasi Fungsional Pada simulasi fungsional masing-masing modul dapat disimulasikan dengan lancar tanpa
menemui masalah, hanya mungkin bila terjadi kesalahan pada program akan muncul beberapa pesan
yang kemudian dapat dicari dan ditemukan solusinya.
2. Hasil Simulasi Pewaktuan Pada simulasi pewaktuan ditemukan adanya glitch pada rancangan. Glitch terjadi karena
perbedaan tundaan rambatan pada jalur rancangan., juga karena adanya permasalahan clock high
time violation. Dengan menurunkan jumlah detak dan DFF bisa turut meredam adanya gangguan
Glitch. Tetapi secara keseluruhan glitch dan osilasi yang masih tersisa tidak begitu memberikan
permasalahan yang signifikan pada sistem.
Perangkat lunak Max+plus II yang digunakan memiliki fasilitas untuk melakukan optimasi
sendiri (otomatis) terhadap rancangan sistem yang dibuat, maupun dilakukan secara manual [1].
Rancangan yang diimplementasikan menggunakan optimasi yang dilakukan Max+plus II.
Tabel 2 dan 3 menunjukkan tundaan waktu kedua sistem yang diimplementasikan, waktu
rambat terpendek yang diperoleh dalam sistem untuk mengeluarkan sinyal PWM adalah pada sistem
yang kedua. Dengan melihat modul-modul yang dipakai pada kedua sistem, bisa diamati bahwa
dalam mengeluarkan sinyal luaran modul pembangkit sinyal PWM harus menunggu masukan dari 2
modul yang lain. Jika dilihat pada sistem pengendalian yang kedua, maka data masukan akan
langsung dikonversi menjadi sinyal PWM.
Analisis ini juga memberikan informasi mengenai kecepatan respon, dimana skala prioritas
yang terbesar pada perancangan dengan FPGA ini yang utama adalah dengan kecepatan respon
tinggi tetapi sumber daya yang minimalis.
Tabel 2. Hasil tundaan untuk rancangan sistem pengendali I
Tundaan rambatan dari sumber detak (nd) Tujuan Luaran min maks
CM1 20.0 20.5 CM2 21.8 22.3 CM3 21.8 22.3 Leds1 30.7 91.2 Leds2 29.9 90.0 Leds3 29.9 90.0 Leds4 30.7 91.1 Leds5 30.7 91.1 Leds6 30.6 91.0 Leds7 30.7 90.2 outmotor 12.5
Tabel 2. Hasil tundaan untuk rancangan sistem pengendali I
Tujuan luaran Tundaan rambatan dari sumber detak (nd)
outmotor 12.4
3. Hasil Implementasi (Analisis Sumber Daya)
Hasil penggunaan sumber daya untuk elemen logika dan flip-flop untuk per-modul dan
rangkaian lengkap ditunjukkan pada tabel 3 dan 4.
Tabel 3. Penggunaan sumber daya pada FPGA EPF10K10LC84-4 untuk sistem pengendali I
Modul Total LE
(logic elements)
Total flip-flop
Pembagi frekuensi 19 (3%) 15
Up-down counter 19 (3%) 5
Debouncing 4 (0%) 2 Pembangkit
PWM 131 (23%) 33
Penampil 7segment 102 (18%) 6
TOTAL 275 61
Gabungan 277 (48%) 63
Tabel 4. Penggunaan resource pada FPGA EPF10K10LC84-4 untuk sistem pengendali II
Modul Total LE
(logic elements)
Total flip-flop
Pembangkit PWM (inti) 140 (24%) 33
Dari data-data yang diperoleh, jumlah konsumsi elemen logika dan flip-flop untuk masing-
masing rancangan (I dan II) menunjukkan jumlah yang berbeda-beda. Aanalisis pewaktuan-nya (lewat
delay matrix) juga berbeda, untuk sistem dengan jumlah sumber daya lebih banyak, waktu rambat-nya
juga sedikit lama.
4. Alat dan Rangkaian
Gambar 10 menunjukkan konfigurasi rangkaian sistem pengendali servo yang pertama,
dengan seluruh modul yang dideskripsikan dengan VHDL (mulai pemicu sinyal PWM hingga penampil
sudut putarnya). Sudut putaran motor servo antara 0 sampai 180 derajat dibagi menjadi 12 variasi,
setiap penekanan pada salah satu tombol pemicu akan menambah atau mengurangi sudut putaran
sebesar 15 o.
Gambar 11. Konfigurasi rangkaian untuk sistem pengendali I
Untuk sistem yang kedua, konsep dasarnya sama dengan yang pertama, hanya masukan
sudut motor servo melalui komputer menggunakan program antarmuka yang dibangun menggunakan
Delphi 7.0. Konfigurasinya ditunjukkan pada Gambar 12.
Gambar 12. Konfigurasi rangkaian untuk sistem pengendali II
KESIMPULAN
Telah berhasil dilakukan implementasi 2 macam Sistem Pengendali Motor Servo, yaitu sistem
perancangan sepenuhnya menggunakan VHDL (pengontrolan melalui perangkat keras langsung) dan
pengontrolan melalui komputer menggunakan Delphi 7.0 serta antarmuka paralel.
Hasil implementasi kedua sistem pengendali servo pada FPGA ALTERA EPF10K10 sebagai
berikut: Sistem pengendali yang pertama membutuhkan 277 elemen logika, dan 63 flip-flop. Sistem
pengendali yang kedua membutuhkan 140 elemen logika, dan 33 flip-flop.
DAFTAR PUSTAKA
[1] Altera. (1997) “MAX+PLUS II Getting Started (Version 8.1)”, Altera Corporation.
[2] Barr, M. (2001), “Pulse Width Modulation (PWM)”, Embedded Systems Programming, September 2001, p. 103-104.
[3] Lelono, D. (2006), Panduan Praktikum Motor-motor Khusus, Lab. Elektronika & Instrumentasi, Jurusan Fisika, Fak MIPA, UGM.
[4] Sjoholm, S. dan Lindh, L (1997), VHDL for Designer, Prentice Hall Europe.
BIODATA PENULIS Nama Lengkap ( dengan gelar ) : Agfianto Eko Putra, Drs., M.Si. Tempat / Tanggal Lahir : Yogyakarta / 24-02-2968 Alamat lengkap kantor : Prodi Elektronika & Instrumentasi, Jurusan Fisika, FMIPA, UGM E-mail : [email protected] Asal S1, Bidang Ilmu : Fisika Asal S2, Bidang Ilmu : Fisika (Embedded Electronics) Spesialisasi dan minat keilmuan : Embedded Eelectronics, DSP