(Edit)Makalah 35 Agfianto Eko Putra

13
IMPLEMENTASI SISTEM PENGENDALI MOTOR SERVO PADA FPGA ALTERA FLEX-10K MENGGUNAKAN DESKRIPSI VHDL Agfianto Eko Putra 1 , Nukman Taufik 2 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 0 o hingga 180 o 1 Program Studi Elektronika dan Instrumentasi FMIPA UGM 2 Program Studi Elektronika dan Instrumentasi FMIPA UGM

Transcript of (Edit)Makalah 35 Agfianto Eko Putra

Page 1: (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

Page 2: (Edit)Makalah 35 Agfianto Eko Putra

(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

Page 3: (Edit)Makalah 35 Agfianto Eko Putra

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

Page 4: (Edit)Makalah 35 Agfianto Eko Putra

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.

Page 5: (Edit)Makalah 35 Agfianto Eko Putra

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

Page 6: (Edit)Makalah 35 Agfianto Eko Putra

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;

Page 7: (Edit)Makalah 35 Agfianto Eko Putra

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;

Page 8: (Edit)Makalah 35 Agfianto Eko Putra

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

Page 9: (Edit)Makalah 35 Agfianto Eko Putra

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

Page 10: (Edit)Makalah 35 Agfianto Eko Putra

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

Page 11: (Edit)Makalah 35 Agfianto Eko Putra

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.

Page 12: (Edit)Makalah 35 Agfianto Eko Putra

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.

Page 13: (Edit)Makalah 35 Agfianto Eko Putra

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