P. 1
Implementasi Pengontrol Pid Pada Mikrokontroler 8051 Untuk Kecepatan Motor Dc

Implementasi Pengontrol Pid Pada Mikrokontroler 8051 Untuk Kecepatan Motor Dc

|Views: 1,517|Likes:
Published by Subuh Kurniawan
Implementasi Pengontrol Pid Pada Mikrokontroler 8051 Untuk Kecepatan Motor Dc
Implementasi Pengontrol Pid Pada Mikrokontroler 8051 Untuk Kecepatan Motor Dc

More info:

Published by: Subuh Kurniawan on Mar 14, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

06/18/2013

pdf

text

original

IMPLEMENTASI PENGONTROL PID PADA MIKROKONTROLER 8051 UNTUK KECEPATAN MOTOR DC

TUGAS AKHIR

Oleh : R Ibrahim Hakim K NIM : 13395027

Pembimbing : Dr.Ir. Edi Leksono, M.Eng. Dr.Ing. Parsaulian Siregar

JURUSAN TEKNIK FISIKA FAKULTAS TEKNOLOGI INDUSTRI INSTITUT TEKNOLOGI BANDUNG 2000

IMPLEMENTASI PENGONTROL PID PADA MIKROKONTROLER 8051 UNTUK KECEPATAN MOTOR DC

Oleh: R Ibrahim Hakim K 13395027

Disetujui Oleh :

Pembimbing I

Pembimbing II

Dr. Ir. Edi Leksono, M.Eng

Dr.-Ing. Parsaulian Siregar

JURUSAN TEKNIK FISIKA FAKULTAS TEKNOLOGI INDUSTRI INSTITUT TEKNOLOGI BANDUNG 2000

ABSTRAK

Mikrokontroler adalah sistem komputer digital yang berisi gabungan mikroprosesor dengan fasilitas-fasilitas tambahan seperti port paralel, port serial, interrupt, memori data, memori program serta timer/counter dalam satu chip. Dengan fasilitas-fasilitas tersebut dan terutama dimensinya yang kecil serta harga yang murah, mikrokontroler sangat cocok untuk diaplikasikan pada sistem kontrol embedded, dimana pengontrol dapat diintegrasikan dalam suatu peralatan. Pada tugas akhir ini dilakukan implementasi pengontrol PID dengan menggunakan mikrokontroler 8051. Pengontrol PID ini kemudian diujicobakan untuk mengontrol kecepatan suatu motor DC, yang memiliki respon dinamik sangat cepat. Perancangan dan implementasi yang dilakukan meliputi perangkat keras dan perangkat lunak. Perangkat keras meliputi sistem mikrokontroler 8051, ADC

(Analog to Digital Converter), DAC (Digital to Analog Converter), driver motor DC dan rangkaian pengkondisian sinyal. Perangkat lunak ditulis dengan bahasa assembler untuk mengimplementasikan algoritma PID diskrit. Komputasi algoritma PID diskrit dilakukan dengan menggunakan perhitungan bilangan integer 8 bit dan 16 bit Hasil pengujian dengan menggunakan waktu sampling 8,2 ms menunjukkan bahwa implementasi pengontrol PID pada mikrokontroler 8051 dapat berfungsi dengan baik untuk mengontrol kecepatan motor DC dimana kecepatan motor tetap terkontrol meskipun diberikan perubahan set point ataupun perubahan beban.

KATA PENGANTAR

Assalamualaikum Wr. Wb.

Puji syukur penulis panjatkan kehadirat Allah SWT atas rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan tugas akhir ini. Penulis merasa sangat

bersyukur mendapatkan kesempatan untuk ikut bergelut pada bidang yang selama ini tidak pernah terbayangkan oleh penulis, yaitu bidang perangkat keras, elektronika dan mikroprosesor. Mudah-mudahan pengerjaan tugas akhir ini dapat memberikan pengalaman berharga bagi penulis dan dapat berguna bagi para pembaca.

Terima kasih sebanyak banyaknya penulis sampaikan kepada: • • • • Papa, mama dan dedek atas kasih sayang, doa dan dorongannya. Dr. Ir. Edi Leksono, M.Eng, selaku pembimbing 1 yang telah banyak memberikan bimbingan, dorongan dan inspirasi kepada penulis. Dr.-Ing. Parsaulian Siregar, selaku pembimbing 2, yang banyak memberikan masukan dan bantuan kepada panulis. Heru Yuwono (TF 95) dan Fadli Hari Purnomo (MS 95), yang banyak memberi masukan mengenai perangkat keras dan mikrokontroler pada masa awal pengerjaan tugas akhir. • • Praban Triyatno dan Ilo Harmawijaya atas bantuan, masukan dan diskusi selama pengerjaan tugas akhir ini. Rekan-rekan pe-TA di Laboratorium Instrumentasi Industri: Aslan, Liliyoso, Yogi, Budi, Ronaldi, dan teman-teman lain yang tidak dapat disebutkan satu persatu..

• • • • •

Semua teman-teman mahasiswa Teknik Fisika ITB, terutama Otang dan Isbandi atas semangat dan bantuannya. Teman-teman di #Bandung dan Ciheulang 53X. Rekan-rekan di 8eh, atas kesempatan bagi penulis untuk dapat merasakan gejolak kemahasiswaan. Komposisi dari Lennon/McCartney yang memberikan semangat dan hiburan bagi penulis. Semua pihak yang telah membantu selama pengerjaan tugas akhir.

Akhir kata, penulis menyadari bahwa tugas akhir ini masih jauh dari sempurna. Oleh karena itu penulis dengan senang hati menerima kritikan dan saran dari pembaca melalui alamat email: iimkresno@mailexcite.com. Semoga laporan tugas akhir ini bermanfaat.

Wassalam.

Bandung, 22 September 2000

Penulis

DAFTAR ISI

ABSTRAK …………………………………………………………………. KATA PENGANTAR ……………………………………………….……. DAFTAR ISI ….………….…………………………….………………….. DAFTAR GAMBAR …….………….…………….………………………. DAFTAR TABEL …………………………………………………………. DAFTAR SINGKATAN ………………………………………………….. BAB I PENDAHULUAN ……………..…………………………………. 1.1. Latar Belakang ………………………………..……………… 1.2. Tujuan …………………………………………..……………. 1.3. Batasan Masalah …………………………………..…………. 1.4. Sistematika Pembahasan …………………………..………… BAB II Mikrokontroler ……. ………………………….……………….. 2.1. Mikrokontroler 8051 ………………………………………… 2.2. Organisasi Memori …………………………………………… 2.2.1. Memori Program ………………………………………. 2.2.2. Memori Data …………………………………………… 2.2.2.1. 128 Byte Bawah ………………………………. 2.2.2.2. Register dengan Fungsi Khusus ………………. 2.3. Instruksi dan Pemrograman Assembler ……………..……….. 2.3.1. Instruksi Transfer Data ………………………..………. 2.3.2. Instruksi Pemrosesan Data ……………………..……… 2.3.3. Instruksi Kontrol Aliran Program ………………..……. 2.4. Fasilitas Chip 8051 …………………………………………… 2.4.1. Port Input/Output Paralel …………………………….…

i ii iv vi vii viii 1 1 2 2 3 4 4 6 7 7 8 9 11 12 13 13 14 14

2.4.2. Port Serial ……………………………………………… 2.4.3. Timer/Counter …………………………………………. 2.4.4. Interrupt ……………………………………………….. BAB III PERANCANGAN ……………………..……………………….. 3.1. Pendahuluan ………………. ……………………………….. 3.2. Perangkat Keras ……………………………………………. 3.2.1. Sistem Mikrokontroler …………….………………… 3.2.2. ADC (Analog to Digital Converter) …………………. 3.2.3. DAC (Digital to Analog Converter) ………….……… 3.2.4. Rangkaian Pengkondisian Sinyal ……………………. 3.2.5. Driver Motor DC …………………………………….. 3.2.6. Motor DC …………………………………………….. 3.3. Perancangan Perangkat Lunak ……………………………… 3.3.1. Algoritma Pengontrol PID …………………………… 3.3.2. Struktur Program …………………………………….. 3.3.3. Prosedur Utama …….. ……………………………… 3.3.3.1. Prosedur Algoritma PID …………………….. 3.3.3.2. Prosedur I/O …………………………………. BAB IV IMPLEMENTASI DAN PENGUJIAN ……………………….. 4.1. Hasil Implementasi ………………………………………….. 4.2. Pengujian .. …………………………………………………. 4.2.1. Perangkat Akusisi Data .……………………………… 4.2.1. Pemilihan Parameter PID ………….. ……………….. 4.2.2. Respon Terhadap Perubahan SP …. ………………….. 4.2.3. Respon Terhadap Perubahan Beban ………………….. BAB V KESIMPULAN DAN SARAN ……….………………………… 5.1. Kesimpulan ………..………………………………………… 5.2. Saran ………..………………………………………………..

14 14 15 16 16 17 17 19 22 23 24 26 26 26 28 31 31 34 39 37 37 38 39 39 43 48 48 48

DAFTAR PUSTAKA ………………………..…………………………… LAMPIRAN: A. Gambar Perangkat Keras B. Listing Program Pengontrol PID C. Daftar Instruksi Mikrokontroler D. Datasheet

49

DAFTAR GAMBAR

Gambar 2.1. Diagram blok mikrokontroler 8051 Gambar 2.2. Fungsi kaki mikrokontroler 8051 Gambar 2.3. Organisasi memori MCS-51 Gambar 2.4. Struktur memori program internal Gambar 2.5. Struktur memori data internal Gambar 2.6. 128 byte bawah memori data internal Gambar 2.7. Operasi pengaksesan instruksi mikrokontroler Gambar 3.1. Diagram blok implementasi sistem kontrol Gambar 3.2. Diagram blok sistem minimum 8051 Gambar 3.3. Koneksi kaki ADC 0809 Gambar 3.4. Rangkaian pewaktu Gambar 3.5. Rangkaian DAC 0832 Gambar 3.6. Rangkaian pengkondisi sinyal Gambar 3.7. Diagram blok driver motor DC Gambar 3.8. Pembangkit sinyal PWM Gambar 3.9. Diagram alir program utama Gambar 3.10. Diagram alir rutin interrupt Gambar 3.11. Diagram waktu pengoperasian program Gambar 3.12. Diagram alir algoritma PID Gambar 3.13. Diagram pewaktuan DAC 0832 Gambar 3.14. Diagram pewaktuan ADC 0809 Gambar 4.1. Set up perangkat pengontrol secara keseluruhan

5 5 6 7 8 9 11 16 18 20 21 22 23 25 25 28 29 31 33 34 35 37

Gambar 4.2. Koneksi PC dengan perangkat akusisi dan komunikasi serial 39 Gambar 4.3. Respon perubahan SP = 451,648 rpm Gambar 4.4. Respon perubahan SP = 752,747 rpm 40 41

Gambar 4.5. Respon perubahan SP = 1053,11 rpm Gambar 4.6. Respon perubahan beban pada SP = 451,648 rpm Gambar 4.7. Respon perubahan beban pada SP = 752,747 rpm Gambar 4.8. Respon perubahan beban pada SP = 1053,11 rpm

42 44 45 46

DAFTAR TABEL

Tabel 2.1. Daftar SFR Tabel 2.2. Interrupt Service Routine Tabel 3.1. Pemilihan channel input analog ADC 0809

10 15 21

DAFTAR SINGKATAN

1. ADC = Analog to Digital Converter 2. ALE = sinyal "Address Latch Enable" pada ADC 0809. 3. CS = sinyal "Chip Select" pada DAC 0832 4. DAC = Digital to Analog Converter 5. EEPROM = Electrically Erasable Prommable Read Only Memory 6. IC = Integrated Circuit 7. ILE = sinyal "Input Latch Enable" pada DAC 0832 8. MV = Manipulated Variable 9. OE = sinyal "Output Enable" pada ADC 0809 10. PC = Personal Computer 11. PID = Proportional, Integral, Derivative 12. PPI = Programmable Peripheral Interface 13. PV = Process Variable 14. PWM = Pulse Width Modulation 15. RAM = Random Access Memory 16. ROM = Read Only Memory 17. SFR = Special Function Register 18. SP = Set Point 19. TTL = Transistor Transistor Logic 20. WR1 dan WR2 = sinyal "Write" pada DAC 0832 21. XFER = sinyal "Transfer control" pada DAC 0832

BAB I PENDAHULUAN

1.1. Latar Belakang

Perkembangan komputer digital yang sangat cepat telah memberikan dampak yang cukup besar pada kehidupan manusia dewasa ini. Kemampuan komputer untuk melakukan perhitungan-perhitungan dan proses logika secara cepat telah banyak dimanfaatkan oleh manusia untuk membantu pekerjaannya sehari-hari. Komputer digital dapat membantu melakukan perhitungan matematika yang rumit yang jika dilakukan secara manual akan membutuhkan waktu yang sangat lama. Kemampuan komputer digital kemudian dimanfaatkan pula dalam bidang mekanika. Hal ini dilakukan dengan cara mengintegrasikan komponen dan alat-alat mekanika dengan komponen elektronika. Bidang ilmu yang menggabungkan dua hal ini

disebut mekatronika. Kata mekatronika ini sendiri diperkenalkan pada awal tahun 1970 oleh ilmuwan di Yaskawa Electric Corporation, Jepang [8]. Perkembangan teknologi fabrikasi IC ikut pula menunjang perkembangan mekatronika dengan semakin menurunnya harga dan dimensi mikroprosesor serta chip-chip

semikonduktor pada umumnya. Perkembangan teknologi IC juga telah memungkinkan pengintegrasian fasilitasfasilitas tambahan, seperti memori, port paralel dan port serial, dalam satu chip. Pengintegrasian fasilitas tambahan ini memunculkan apa yang disebut sebagai mikrokontroler [2]. Dengan mikrokontroler maka dapat diwujudkan sistem pengontrol embedded yang simpel, kompak dan dapat melakukan aksi pengontrolan suatu plant. Pengimplementasian pengontrol embedded telah memberikan sumbangan yang sangat besar dalam proses otomasi industri. Aplikasinya juga dapat dilihat pada produkproduk rumah tangga seperti mesin cuci, kamera, pendingin udara, walkman, dan lain

sebagainya [6]. Demikian pula pada bidang robotika, dimana setiap robot memiliki banyak sekali sistem kontrol embedded untuk mengontrol posisi dan kecepatan motor pada tiap-tiap sumbu putar lengan robot. Aplikasi mikroprosessor/mikrokontroler juga terlihat pada sistem suspensi aktif dan sistem pembakaran pada mesin mobil. Masih banyak lagi aplikasi mikroprosesor/mikrokontroler sebagai sistem embedded yang dapat dikembangkan. Apalagi dengan ditunjang dengan perkembangan teori kontrol dari kontrol klasik, yang dapat diimplementasikan sehingga dapat bermanfaat dalam bidang industri dan kehidupan manusia pada umumnya.

1.2. Tujuan

Tujuan penelitian pada tugas akhir ini adalah: 1. 2. Mengimplementasikan pengontrol PID pada mikrokontroler 8051. Melakukan uji coba pengontrol PID ini untuk mengontrol kecepatan motor DC.

2.1. Batasan Masalah

Beberapa batasan masalah dalam tugas akhir ini adalah: 1. Perhitungan aritmatika untuk mengimplementasikan algoritma PID diskrit dilakukan dengan menggunakan perhitungan bilangan integer 8 bit dan 16 bit. 2. Putaran motor hanya satu arah.

2.2. Sistematika Pembahasan

Laporan tugas akhir ini terdiri dari lima bab yang disusun sebagai berikut: Bab I menjelaskan mengenai latar belakang, tujuan, batasan masalah dan sistematika pembahasan.

Bab II menjelaskan mengenai mikrokontroler jenis 8051, organisasi memori, instruksi dan pemrograman assembler serta fasilitas-fasilitas yang disediakan pada mikrokontroler 8051 tersebut. Bab III menjelaskan mengenai perancangan sistem yang akan diimplementasikan. Kemudian dilanjutkan dengan pembahasan mengenai perangkat keras yang digunakan Dan terakhir akan dijelaskan mengenai perancangan perangkat lunak, yang ditujukan untuk mengimplementasikan algoritma PID diskrit dengan bahasa pemrograman assembler. Bab IV menjelaskan mengenai hasil implementasi dan pengujian. Bab V merupakan kesimpulan dan saran untuk pengembangan selanjutnya.

BAB II MIKROKONTROLER

Komputer digital pada dasarnya terdiri dari tiga komponen utama: Unit Pemrosesan Sentral (Central Processing Unit, CPU), memori (program dan data) dan sistem Input/Output (I/O). CPU berfungsi untuk mengatur aliran informasi antara komponen komputer dan melakukan pemrosesan data. Mikroprosesor adalah CPU yang dibuat dalam satu chip semikonduktor. Gabungan mikroprosesor, memori, dan sistem I/O membentuk sebuah mikrokomputer. Apabila ketiga komponen komputer digital tersebut dibuat dalam satu chip, maka chip tersebut disebut mikrokontroler. Karena hanya terdiri dari satu chip, maka mikrokontroler dapat ditempatkan pada perangkat keras lainnya (embedded system) dan dapat berfungsi sebagai pengontrol. Pada tugas akhir ini, mikrokontroler akan digunakan untuk mengimplementasikan sistem kontrol kecepatan motor DC.

2. 1.

Mikrokontroler 8051

Mikrokontroler 8051 adalah anggota keluarga MCS-51 keluaran Intel [4]. Mikrokontroler jenis ini selain diproduksi oleh Intel sebagai standarnya, juga diproduksi oleh pabrik-pabrik lain seperti Dallas, Atmel, dsb. Spesifikasi mikrokontroler 8051 adalah: 8-bit CPU 64K ruang alamat memori program 64K ruang alamat memori data 4K byte memori program internal dalam chip 128 byte memori data internal dalam chip 4 port I/O (Input/Output) yang masing-masing berukuran 8 bit

-

2 pewaktu/penghitung yang masing-masing berukuran 8 bit 6 sumber/5 vektor interupsi

Arsitektur dasar dari mikrokontroler 8051 dapat dilihat pada Gambar 2.1.
INTERRUPT EKSTERNAL

INTERRUPT CONTROL

4K ROM

TIMER 1 128 BYTES RAM INPUT COUNTER TIMER0

CPU

OSC

BUS CONTROL

4 I/O PORT

SERIAL PORT

TXD P0 P2 P1 P3

RXD

Gambar 2.1 Diagram blok mikrokontroler 8051

Fungsi kaki-kaki mikrokontroler 8051 dapat dilihat pada Gambar 2.2
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST/VPD RxD/P3.0 TxD/P3.1 INT0#/P3.2 INT1#/P3.3 T0/P3.4 T1/P3.5 WR#/P3.6 RD#/P3.7 XTAL2 XTAL1 Vss 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 Vcc P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA# ALE PSEN# P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8

KETERANGAN: P0, P1, P2, P3 = Port I/O Vcc = tegangan catu Vss = ground XTAL1, XTAL2 = tempat koneksi kristal RST = masukan sinyal reset EA#, PSEN#, ALE = digunakan untuk pengalamatan memori eksternal

8051

31 30 29 28 27 26 25 24 23 22 21

Gambar 2.2. Fungsi kaki mikrokontroler 8051

2.2.Organisasi Memori

8051 memiliki RAM internal untuk menyimpan data dan

ROM internal untuk

menyimpan instruksi program. Apabila memori internal tersebut telah cukup untuk aplikasi tertentu, maka 8051 dapat dioperasikan hanya dengan satu chip. Akan tetapi, jika aplikasi membutuhkan memori yang lebih besar, maka dapat digunakan tambahan memori eksternal. Secara garis besar struktur memori MCS-51 dapat dilihat pada Gambar 2.3.

MEMORI PROGRAM

MEMORI DATA

FFFFH

FFFFH

EKSTERNAL

EKSTERNAL

INTERNAL FFH

EA# = 0 EKSTERNAL

EA# = 1 INTERNAL

0000H

00H

0000H

PSEN#

RD#

WR#

Gambar 2.3. Organisasi memori MCS-51

Dari gambar diatas, terlihat pembagian memori mikrokontroler menjadi memori program (internal dan eksternal) dan memori data (internal dan eksternal). Masing-

masing memori terbagi menjadi ruang-ruang memori yang dapat diakses dengan alamat 16 bit.

2.2.1. Memori Program

8051 memiliki 4K byte memori program internal dalam chip. ROM internal ini hanya dapat dibaca dan tidak dapat ditulis. Memori program berisi instruksi yang akan dieksekusi oleh mikrokontroler. Struktur memori program internal dapat dilihat pada Gambar 2.4.

0023H

001BH LOKASI INTERRUPT

0013H

000BH

0003H RESET 0000H

Gambar 2.4. Struktur memori program internal

Pada memori program internal, terlihat bahwa alamat memori tertentu (3H, BH, 13H, 1BH, 23H) digunakan sebagai awal dari Interrupt Service Routine (ISR). ISR adalah instruksi program yang akan dilaksanakan apabila terjadi interrupt. Pembahasan mengenai interrupt dapat dilihat pada bagian 3.4.4.

2.2.2. Memori data

Memori data berisi data-data yang diperlukan mikrokontroler untuk melakukan eksekusi instruksi program. Secara umum, struktur memori data internal pada MCS-51 dapat dilihat pada Gambar 2.5 . Terlihat pada gambar memori data internal dapat dibagi menjadi dua blok, yaitu 128 byte bawah (alamat 0h - 7Fh) dan 128 byte atas (alamat 80h - FFh). 128 byte atas dapat berfungsi sebagai memori serbaguna dan sebagai register dengan fungsi khusus
FFH UPPER 128 DAPAT DIAKSES DENGAN DAPAT DIAKSES DENGAN PENGALAMATAN TIDAK PENGALAMATAN LANGSUN LANGSUNG (INDIRECT (DIRECT ADDRESSING) ADDRESSING) 80H 7FH LOWER 128 00H DAPAT DIAKSES BAIK DENGAN PENGALAMATAN TIDAK LANGSUNG (INDIRECT ADDRESSING) DAN LANGSUNG (DIRECT ADDRESSING)

SFR

(Special Funciton Register/SFR).

Gambar 2.5. Struktur memori data internal

8051 memiliki 128 byte memori data internal. Artinya 8051 hanya memiliki 128 byte bawah dan tidak memiliki memori serbaguna pada 128 memori atas. Walaupun demikian, 8051 tetap memiliki SFR yang dapat diakses pada alamat 80h - FFh. Pengaksesan memori serbaguna pada 128 byte atas dapat dilakukan pada keluarga MCS-51 yang memiliki 256 byte memori data internal, seperti pada mikrokontroler 8032 atau 8052. Pada gambar diatas, terlihat bahwa pengaksesan memori data internal ditentukan dengan mode pengalamatan. Mode pengalamatan adalah cara instruksi program mengakses suatu alamat di memori data. 128 byte bawah diakses dengan

menggunakan mode pengalamatan langsung atau tidak langsung. Sementara itu 128 byte atas diakses dengan mode pengalamatan langsung (untuk mengakses SFR) dan mode pengalamatan tidak langsung (untuk mengakses memori serbaguna). Pembahasan lebih lanjut mengenai mode pengalamatan dapat dilihat pada bagian 2.3.

2.2.2.1. Byte Bawah

Pada 128 byte bawah terdapat blok memori yang dapat digunakan untuk pengalamatan register, yaitu pada blok memori 0 - 1Fh. Blok ini terbagi menjadi 4 register bank, yang masing masing terdiri dari 8 register. Ke-8 register ini diberi nama R0 - R8. Tiap register bank dapat diakses dengan mengatur register bank select bit pada PSW. Pada 128 byte bawah juga memiliki blok memori yang dapat digunakan untuk pengalamatan bit, yaitu pada blok memori 20h - 2Fh. Perhatikan bahwa terdapat 128 bit yang dapat diakses pada blok memori ini. Struktur 128 byte bawah dari memori data internal dapat dilihat pada Gambar 2.6.

7FH RUANG RAM SERBAGUNA 30H 2FH DAPAT DIAKSES DENGAN MODE PENGALAMATAN BIT (BIT ADDRESSABLE) 20H 1FH BANK 3 18H 17H BANK 2 10H FH BANK 1 80H 07H BANK 0 00H 4 BANK REGISTER (TIAP BANK TERDIRI DARI 8 REGISETER R0-R7, TIAP REGISTER TERDIRI DARI 8 BIT)

Gambar 2.6. 128 byte bawah memori data internal

2.2.2.2. Register Fungsi Khusus

Register dengan fungsi khusus (SFR) adalah alamat memori yang terdiri dari: register data yang diperlukan untuk menyimpan data sementara pada saat eksekusi program dan keluar/masuk data melalui port. Contoh register data adalah akumulator (A), register B, SBUF dan P1. register kontrol yang diperlukan untuk mengatur konfigurasi fasilitas yang tersedia pada chip mikrokontroler seperti fasilitas interrupt, port data, timer/counter dan port komunikasi serial. Contoh register kontrol adalah IE (Interrupt Enable), SCON dan PCON. Berikut adalah tabel dari SFR pada mikrokontroler 8051:

Register Port 0 Latch Stack Pointer Data Pointer (as a word) Data Pointer Low Byte Data Pointer High Byte Power Control Timer/Counter Control Timer/Counter Mode Control Timer/Counter 0 Low Byte Timer/Counter 1 Low Byte Timer/Counter 0 High Byte Timer/Counter 1 High Byte Port 1 Latch Serial Port Control Serial Data Port Port 2 Latch Interrupt Enable Port 3 Latch Interrupt Priority Control Program Status Word Accumulator B Register

Mnemonic P0 SP DPTR DPL DPH PCON TCON TMOD TL0 TL1 TH0 TH1 P1 SCON SBUF P2 IE P3 IP PSW ACC or A B

Internal Address 80h 81h 82h-83h 82h 83h 87h 88h 89h 8Ah 8Bh 8Ch 8Dh 90h 98h 99h A0h A8h B0h B8h D0h E0h F0h

Tabel 2.1. Daftar SFR

2.3. Instruksi dan Pemrograman Assembler

Pembuatan program mikrokontroler MCS-51 dilakukan dengan instruksi yang ditulis dalam bahasa assembler untuk 8051. Bahasa asembler terdiri dari instruksi-instruksi yang terbagi menjadi dua bagian yaitu mnemonic dan operand. Mnemonic merupakan jenis instruksi yang dilaksanakan, operand menentukan elemen memori data yang terlibat. Walaupun demikian terdapat beberapa jenis mnemonic yang tidak melibatkan operand. Sebagai contoh, yaitu instruksi:
mov A, 80h

Instruksi ini memiliki mnemonic mov dan operand A, #80h. Instruksi ini berarti: masukkan nilai data yang terdapat pada alamat memori data 80h ke dalam akumulator (A).

Secara garis besar, operasi mikrokontroler dapat dijelaskan dengan siklus seperti yang terlihat pada Gambar 2.7.:

Gambar 2.7. Operasi pengaksesan instruksi mikrokontroler

Prosesor menempatkan alamat memori program yang akan diakses pada bus alamat memori program dan melakukan operasi baca memori program. Memori yang dibaca akan diterjemahkan sebagai sebuah instruksi. Alamat-alamat dari memori program ini disimpan pada sebuah register, yang dinamakan Program Counter. Setiap instruksi dapat terdiri dari satu byte atau lebih. Kemudian Program Counter akan di-update untuk alamat memori instruksi selanjutnya, dan instruksi yang telah dibaca akan dieksekusi oleh prosesor. Siklus ini berlanjut kembali. Berdasarkan fungsinya, instruksi terdiri dari: instruksi tansfer data, instruksi pemrosesan data, instruksi kontrol aliran program.

2.3.1. Instruksi transfer data

Instruksi transfer data digunakan untuk memindahkan data dari alamat memori data yang satu ke alamat yang lain. Instruksi transfer data dapat dibedakan menjadi beberapa mode. Mode pengalamatan yang penting adalah:

a. Mode pengalamatan segera (immediate addressing mode) Pengalamatan ini melibatkan konstanta pada operasi. Contoh:
mov a, #1

Instruksi diatas berarti pindahkan konstanta 1 kedalam akumulator.

b. Mode pengalamatan langsung (direct addressing mode) Pada pengalamatan ini tujuan atau sumber instruksi berupa alamat dari memori data. Contoh:
mov a, 70h

Instruksi diatas berarti pindahkan data yang ada pada alamat memori 70h ke dalam akumulator.

c. Mode pengalamatan register tidak langsung (register indirect addressing mode) Pada pengalamatan ini digunakan register sebagai tujuan dan sumber instruksi. Contoh:
mov a, @R0

Instruksi diatas berarti pindahkan data yang ada pada alamat yang tercantum pada register 0. d. Data transfer berorientasi bit (bit oriented data transfer) Pengalamatan ini memindahkan data berupa bit. Contoh:
mov P1.0, C

Instruksi diatas berarti pindahkan data bit yang ada pada carry flag C ke bit pertama dari P1. Carry flag adalah bit ke 7 dari PSW.

2.3.2. Instruksi Pemrosesan Data

Instruksi pemrosesan data digunakan untuk memproses data.

Pada umumnya

instruksi dibagi menjadi dua yaitu instruksi aritmatika dan instruksi logika. Instruksi aritmatika digunakan untuk melakukan operasi aritmatika seperti penjumlahan, pengurangan, dsb. Instruksi logika diguanakan untuk melakukan operasi logika seperti OR, AND, NOR, dll.

2.3.3. Instruksi Kontrol Aliran Program

Instruksi kontrol aliran program digunakan untuk mengatur aliran dari program agar sesuai dengan algoritma dan diagram alir (flowchart) yang telah disusun. Dengan demikian dapat dilakukan perpindahan (jump) dari satu alamat suatu rutin program ke alamat rutin yang lain. Pencabangan (branch) dari aliran program untuk pindah dari

satu alamat memori program ke alamat yang lain dapat dilakukan dengan menggunakan instruksi loncat yang tidak terkondisi (unconditional jump instruction) seperti SJMP dan LJMP. Logika IF … THEN dapat direalisasikan dengan menggunakan instruksi loncat yang terkondisi (conditional jump instructions) seperti JB, CJNE dan DJNZ. Pemanggilan (call) subprogram/subrutin juga dapat dilakukan dengan menggunakan perintah seperti LCALL, PUSH, POP dan RET.

2.4. Fasilitas Chip 8051

2.4.1. Port Input/Output Paralel

Mikrokontroler memiliki 4 buah port paralel yaitu P0, P1, P2, dan P3 (lihat Gambar 2.2). Port-port tersebut dapat digunakan untuk input/output dengan mengakses alamat SFR P0, P1, P2 dan P3 (lihat tabel 2.1). P0, P2 dan P3 juga memiliki fungsi alternatif. P0 dan P2 dapat digunakan untuk pegalamatan dan pengiriman data pada memori eksternal. Adapun pin-pin dari P3 memiliki fungsi alternatif sebagai input interrupt eksternal (kaki P3.2 dan P3.3), timer/counter (kaki P3.4 dan P3.5), komunikasi serial (kaki P3.0 dan P3.1) dan sinyal kontrol bagi chip memori eksternal (kaki P3.6 dan P3.7).

2.4.2. Port Serial

Port serial merupakan fungsi alternatif dari kaki P3.0 dan P3.1. Komunikasi serial dikontrol oleh SFR SCON. Data dari/ke port serial akan disimpan dalam SFR SBUF.

2.4.3. Timer/Counter

8051 memiliki 2 sumber timer/counter yaitu kaki P3.4 (timer/counter 1) dan P3.5 (timer/counter2). Timer adalah pencacah yang didasarkan pada pulsa-pulsa dari clock sistem mikrokontroler. Oleh karena 8051 memiliki generator clock dengan frekuensi 12 MHz, maka timer akan melakukan pencacahan secara periodik dengan selang waktu 1 siklus mesin = 1 µs. Sementara itu counter adalah pencacah yang didasarkan pada input pulsa eksternal yang diterima kaki P3.4 dan P3.5. Nilai pencacahan timer/counter disimpan pada SFR TH0, TL0 (timer/counter 0), TH1 dan TL1 (timer/counter 1) dan akan di-update (bertambah) setiap pulsa clock (timer) atau pulsa eksternal (counter). Timer/counter dikontrol oleh SFR TMOD dan TCON.

2.4.4. Interrupt

Interrupt adalah keadaan yang menyebabkan mikrokontroler menghentikan pekerjaan yang sedang dilakukannya dan segera mengerjakan tugas yang ada pada rutin interrupt (interrupt service routine). Setelah rutin interrupt selesai dikerjakan, maka mikrokontroler akan kembali melanjutkan pekerjaan sebelumnya. Mikrokontroler 8051 memiliki 5 sumber interrupt yaitu TF0, TF1, IE0, IE1, dan R1/T1. TF0 dan TF1 aktif jika terjadi overflow pada timer/counter. IE0 dan IE1 diaktifkan secara eksternal pada kaki P3.2 dan P3.3. R1/T1 diaktifkan pada komunikasi serial. Interrupt dikontrol oleh SFR IE dan IP. Berikut adalah tabel alamat Interrupt Service Routine beserta prioritasnya:

Interrupt

Alamat Rutin Interrupt

Prioritas (default) 1 (tinggi) 2

Penyebab

IE0 TF0

3h Bh

External interrupt 0 Timer/Counter 0

IE1 TF1 R1 or T1

13h 1Bh 23h

3 4 5 (rendah)

External interrupt 1 Timer/Counter 1 Komunikasi Serial

Tabel 2.2. Interrupt Service Routine

BAB III PERANCANGAN

3.1. Pendahuluan

Seperti yang telah dikemukakan pada Bab 1, tugas akhir ini bertujuan untuk mengimplementasikan pengontrol PID dengan menggunakan mikrokontroler 8051. Pengontrol PID ini kemudian diujicobakan untuk mengontrol kecepatan motor DC, yang memiliki respon dinamik sangat cepat. Diagram blok sistem kontrol yang akan diimplementasikan dapat dilihat pada Gambar 3.1.

Perangkat Lunak: Algoritma PID MV SP Mikrokontroler 8051 DAC 0832 Driver M Kecepatan (rpm) PV Pengkondisi Sinyal Sensor Kecepatan

ADC 0809

Gambar 3.1. Diagram blok implementasi sistem kontrol motor

Dari gambar diatas terlihat bahwa sistem kontrol motor bekerja dengan mengumpanbalikkan kecepatan motor aktual dan membandingkan dengan kecepatan motor yang diinginkan. Berdasarkan error antara kecepatan motor aktual dengan

kecepatan yang diinginkan, mikrokontroler 8051 akan melakukan perhitungan algoritma PID untuk menghasilkan output yang dapat meminimalisir error sehingga kecepatan motor aktual akan selalu dapat mengikuti kecepatan motor yang diinginkan. Kecepatan motor aktual disebut sebagai variabel proses (PV) sementara kecepatan motor yang diinginkan disebut sebagai set point (SP). Keluaran pengontrol disebut sebagai variabel manipulasi (MV). Untuk menjembatani keluaran digital dari mikrokontroler dengan input analog motor digunakan DAC (Digital Analog to Converter) untuk mengubah sinyal digital menjadi sinyal analog. Demikan pula untuk menjembatani keluaran analog dari sensor dengan input digital ke mikrokontroler digunakan ADC (Analog to Digital Converter). Karena motor DC yang digunakan membutuhkan daya yang besar, baik dalam bentuk tegangan maupun dalam bentuk arus, maka digunakan rangkaian driver yang dapat mengatur suplai daya yang besar berdasarkan input masukan dengan daya yang kecil dari DAC. Sensor kecepatan yang digunakan adalah tachometer. Sensor ini menghasilkan tegangan yang besarnya sebanding dengan kecepatan putaran rotor. Untuk menurunkan tegangan keluaran sensor agar dapat diterima oleh ADC, digunakan rangkaian pengkondisi sinyal.

3.2. Perangkat Keras 3.2.1. Sistem Mikrokontroler

Pada tugas akhir ini digunakan mikrokontroler AT89C51 keluaran Atmel yang kompatibel dengan 8051. Mikrokontroler ini terintegrasi dalam sebuah sistem

minimum board DT51 keluaran Innovative Electronics yang terdiri dari:

mikrokontroler, eksternal ROM, antar muka paralel yang dapat diprogram (PPI 8255) dan antar muka komunikasi serial (ICL232). Diagram blok dari sistem minimum ini dapat dilihat pada Gambar 3.2.

Bus Data

Port A Suplai Tegangan EEPROM PPI 8255 Port B

Port C Bus Alamat uC 8051 Bus Kontrol

ICL232 Kristal Clock

Port Serial

Bus Data

P1

Sistem Minimum Berbasis Mikrokontroller 8051

Gambar 3.2. Diagram blok sistem minimum 8051

ROM eksternal digunakan untuk mendapatkan kapasitas penyimpanan memori program yang lebih besar dibandingkan dengan hanya menggunakan ROM internal di dalam mikrokontroler. Dengan demikian ROM internal dapat diisi oleh program kernel yang mengatur operasi internal dari sistem minimum, sementara ROM eksternal dapat diisi dengan program aplikasi yang ditulis dengan tujuan tertentu.

Dengan menggunakan EEPROM sebagai memori eksternal, maka dapat dilakukan operasi tulis/hapus sehingga sistem dapat digunakan untuk berbagai aplikasi. PPI 8255 adalah antar muka paralel yang dapat diprogram. Komponen ini digunakan untuk memperbanyak port I/O. Telah dibahas pada bab sebelumnya bahwa mikrokontroler hanya memiliki 4 x 8 bit port I/O (P0, P1, P2, dan P3). Sementara itu, P0, P2 dan P3 juga memiliki fungsi alternatif. P0 dan P2 dapat digunakan untuk pegalamatan dan pengiriman data pada memori eksternal, yaitu: P0 dan P2 berfungsi sebagai bus alamat: P0 sebagai alamat bawah (LSByte) dan P2 sebagai alamat atas (MSByte). P0 juga berfungsi sebagai bus data dari/ke memori/peripheral eksternal.

Adapun kaki-kaki dari P3 memiliki fungsi alternatif sebagai input interrupt eksternal, timer/counter, komunikasi serial dan sinyal kontrol bagi chip memori eksternal. Fungsi alternatif port-port tersebut membatasi penggunaan port I/O yang dapat langsung diakses untuk transfer data dari/ke luar mikrokontroler. Untuk itulah digunakan PPI 8255 sebagai sarana untuk memperbanyak akses I/O data dengan menggunakan 3 buah port I/O yang dimiliki PPI (Port A, Port B dan Port C). ICL232 adalah komponen antar muka komunikasi serial. Dengan demikian, dapat dilakukan transfer data melalui kabel serial RS232 dari/ke mikrokontroler. Transfer data ini sangat berguna untuk proses download program assembler yang telah di tulis di komputer PC ke dalam memori eksternal (EEPROM). Sistem minimum ini juga memerlukan komponen penunjang seperti address decoder, latch, kristal, power supply dan gerbang-gerbang logika dengan menggunakan IC TTL.

3.2.2. ADC (Analog to Digital Coverter)

ADC yang digunakan adalah ADC0809 8-bit dengan multiplekser 8 channel, keluaran National Semiconductor [6,8]. Koneksi dari kaki ADC0809 dapat dilihat pada Gambar 3.3.

PORT DATA 26 27 17 2(-8)LSB 14 2(-7) 15 2(-6) 8 2(-5) 18 2(-4) 19 2(-3) 20 2(-2) CLOCK 21 2(-1)MSB 6 START 22 ADDA ALE 9 ADDB OE 7 ADDC EOC ADC 0809 INTERRUPT

INPUT SET POINT

IN0 IN1

INPUT SENSOR

CLOCK 640 kHz 25 24 23

PORT KONTROL

PILIH CHANNEL INPUT

Gambar 3.3. Koneksi kaki ADC 0809

Untuk mengoperasikan ADC perlu diperhatikan diagram pewaktuan dari kaki ALE (Address Latch Enable, untuk menahan alamat channel input analog), START (untuk memulai konversi analog ke digital) dan OE (Output Enable, untuk mengeluarkan output digital). Dengan mengatur waktu pengaktifan kaki-kaki ALE, START dan

OE secara software, maka dapat dilakukan konversi input analog yang diterima channel IN0 - IN7 menjadi output digital (kaki 2-1 - 2-8). Input analog adalah 5 V full scale. Dengan demikian output digital 0-FFh menyatakan input analog 0(255/256)Vref . Rutin operasi DAC dapat dilihat pada bagian 3.3.3.2. Fasilitas multichannel ADC 0809 dapat digunakan dengan melakukan pengaturan kondisi logika kaki ADD A, ADD B dan ADD C (kaki 25, 24 dan 23 ADC).

Pengaturan kondisi logika kaki ini dapat dilakukan secara hardware maupun secara software. Tabel keadaan dari pemilihan channel input analog adalah sebagai berikut:

Input channel IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7

Address line C L L L L H H H H B L L H H L L H H A L H L H L H L H

Tabel 3.1. Pemilihan channel input analog ADC 0809

Untuk mengatur waktu konversi ADC digunakan rangkaian pewaktu. clock yang dianjurkan pada datasheet adalah 640 kHz [6].

Frekuensi

Untuk itu digunakan rangkaian osilator gelombang blok dengan IC TTL gerbang NAND [10]. IC yang digunakan adalah 7400 sebagai gerbang NAND dan 74132 Schmitt Trigger untuk memperbaiki bentuk gelombang blok. Rangkaian pewaktu dapat dilihat pada Gambar 3.4.

7400
N1

7400
N2

7400
N3

74132 CLK = 640 kHz

1 nF

50 K

Gambar 3.4. Rangkaian pewaktu

3.2. 3. DAC (Digital to Analog Converter)

DAC yang digunakan adalah DAC0832 8-bit, keluaran National Semiconductor [6,12]. Untuk menghasilkan dan menguatkan tegangan output DAC digunakan rangkaian tambahan yang terdiri dari op-amp LM741. Output yang dihasilkan berupa sinyal 0-5 V DC sebagai sinyal masukan driver motor DC. Rangkaian DAC dapat dilihat pada Gambar 3.5 [1].

+ 12 V 10 k
7 6 5 4 16 15 14 13 1 2 18 19 17

Port Data DI0 RFB 11 IOUT 112 DI1 IOUT 2 DI2 DI3 DI4 DI5 DI6 DI7 CS# WR1# WR2# ILE XFER# VREF
9

10 k 0-5V 741 741

- 12 V

Port Kontrol

8

Vcc DAC 0832

Gambar 3.5. Rangkaian DAC 0832

Perhatikan bahwa rangkaian DAC diatas digunakan untuk putaran motor satu arah, dimana nilai digital 0 - FFh dikonversikan menjadi tegangan analog 0 - 5 V dengan persamaan sebagai berikut:

VO =

DI VREF 256

(3.1)

dengan VREF = VCC = +5 volt dan DI = nilai desimal dari data input digital DI0 - DI7. Seperti ADC, untuk mengoperasikan DAC perlu diperhatikan diagram pewaktuan dari kaki CS (Chip Select, untuk memilih chip DAC aktif), ILE (Input Latch Enable, untuk menahan input digital), XFER (untuk mengkonversi digital ke analog), WR1 (Write 1, untuk menulis data digital ke register pertama DAC) dan WR2 (Write 2, untuk menulis data digital ke register kedua DAC). Pada rangkaian op-amp yang dirancang seperti pada diagram diatas, terlihat bahwa kaki kontrol CS, ILE dan XFER telah diberi nilai tetap secara hardware. Dengan demikian kita tinggal mengatur pewaktuan untuk kaki kontrol WR1 dan WR2 secara software untuk mengkonversi sinyal masukan digital (kaki DI0 - DI7) menjadi sinyal keluaran analog (kaki IOUT1 dan IOUT2). Rutin operasi DAC dapat dilihat pada bagian 3.3.3.2.

3.2.4. Rangkaian Pengkondisian Sinyal

Rangkaian pengkondisian sinyal (signal conditioner) digunakan untuk menurunkan tegangan keluaran tachometer menjadi tegangan yang dapat diterima oleh ADC (0 - 5 volt). Rangkaian pengkondisi sinyal dapat dilihat pada Gambar 3.6. Terlihat bahwa rangkaian pengkondisian sinyal yang dirancang terdiri dari pembagi tegangan sederhana.

R2 R1 Output Sensor Vi = 0 - 7 V LM324 Vo = 0 - 5 V

Gambar 3.6. Rangkaian pengkondisi sinyal

Hubungan V0 dan VI dapat diperoleh dengan persamaan:

VO = −

R2 Vi R1

(3.2)

Dengan mengubah hambatan R1 maka akan dapat diatur besar Vo yang sesuai dengan batas input ADC0809. Perhatikan bahwa LM324 hanya dapat menerima tegangan catu positif sehingga output yang dihasilkan selalu bernilai positif.

3.2.5. Driver Motor DC

Pada Tugas Akhir ini digunakan driver motor DC dengan jenis dc-to-dc converter yang telah tersedia di Laboratorium Instrumentasi Industri, Jurusan Teknik Fisika ITB. Prinsip kerja driver motor DC [9,11]: Driver motor digunakan untuk memperkuat sinyal keluaran pengontrol sehingga memiliki daya yang cukup besar untuk disupplai ke motor. Komponen penting dari driver adalah saklar elektronik seperti transistor, JFET, MOSFET dan thyristor.

Saklar elektronik ini hanya terdiri dari dua kondisi keluaran, yaitu kondisi buka dan kondisi tutup. Dengan mengatur waktu buka tutup saklar, maka dapat dilakukan pengaturan duty cycle sinyal suplai berdaya besar untuk selanjutnya diberikan ke motor. Pengaturan waktu buka tutup dilakukan dengan memberikan sinyal PWM kepada saklar MOSFET. Harga rata-rata dari sinyal PWM dengan duty cycle tertentu menentukan bentuk dan besar sinyal output, baik berupa tegangan DC, tegangan sinusoidal, dan sebagainya. Blok diagram dari driver motor DC dapat dilihat pada Gambar 3.7. PWM generator bekerja dengan cara memodulasi sinyal kontrol (dari pengontrol) dengan suatu sinyal carrier 'pembawa' atau pemodulasi, yang umumnya berupa sinyal segitiga. Dalam hal pengontrolan motor DC maka sinyal kontrolnya berupa sinyal DC. Sinyal carrier dari pembangkit sinyal segitiga dan sinyal kontrol akan menjadi input bagi komparator. Output komparator adalah sinyal PWM dengan bentuk sebagai berikut: bila tegangan sinyal kontrol pada suatu saat lebih kecil dari sinyal segitiga, maka sinyal PWM akan bernilai rendah; dan sebaliknya. Gambar 3.8. menunjukkan prinsip kerja PWM generator.

MOSFET BRIDGE

M

MOSFET DRIVER

Keluaran Pengontrol

PWM GENERATOR

Rangkaian Driver

Gambar 3.7. Diagram blok driver motor DC

Sinyal Kontrol (DC)
KOMPARATOR

Sinyal PWM Sinyal Segitiga

Gambar 3.8. Pembangkitan sinyal PWM

MOSFET driver adalah rangkaian yang berfungsi sebagai pengolah sinyal output dari rangkaian PWM generator menjadi sinyal pengendali MOSFET bridge. Rangkaian MOSFET bridge berfungsi sebagai saklar pengatur tegangan berdaya besar yang akan disuplai ke motor.

3.2.6. Motor DC

Motor DC yang digunakan adalah jenis motor DC-permanen magnet Sanyo Denki tipe M605T yang tersedia di Laboratorium Instrumentasi Industri Jurusan Teknik Fisika ITB. Motor ini memiliki tegangan kerja nominal 24 volt dan daya 50 W. Tachometer, sebagai sensor kecepatan, telah tersedia bersama motor DC dengan karakteristik output 7.10-3 volt/rpm.

3.3. Perancangan Perangkat Lunak

Perangkat lunak mikrokontroler 8051 ditulis dalam bahasa assembler untuk 8051. Pada bab sebelumnya telah dijelaskan mengenai instruksi-instruksi untuk transfer

data, pemrosesan data dan kontrol aliran program. Pada bagian ini, instruksi-instruksi tersebut akan digunakan untuk menyusun sebuah program pengontrol PID.

3.3.1. Algoritma Pengontrol PID

Pengontrol PID dapat dinyatakan dengan persamaan diferensial [1,7]:
t ⎡ de(t ) ⎤ 1 m(t ) = K P ⎢e(t ) + ∫ e(t )dt + Td Ti 0 dt ⎥ ⎦ ⎣

(3.3)

Dimana e(t) = r(t) - c(t), r(t) adalah set point, c(t) adalah variabel proses dan m(t) adalah variabel manipulasi. Untuk mengimplementasikan pengontrol PID dengan perangkat digital, maka harus dilakukan konversi dari bentuk kontinu ke bentuk diskrit. Dengan melihat bahwa:

df dt

f − f k −1 = k ∆t
K

dan

∫ e(t )dt = ∑ e ∆t
k =1 k

n

maka persamaan (3.3) menjadi persamaan PID diskrit:

⎡ ⎛ e( n ) − e ( n − 1) ⎞ 1 m ( n ) = K P ⎢Td ⎜ ⎟ + e(n) + Ti ∆t ⎠ ⎣ ⎝

∑ e ∆t ⎥
k =1 k

n

⎤ ⎦

(3.4)

dimana m(n) menyatakan nilai m pada suatu interval n∆t, dengan n bilangan bulat. Dengan memperkenalkan parameter:

⎛T Ki = K P ⎜ s ⎜T ⎝ i

⎞ ⎟ ⎟ ⎠

⎛T Kd = KP ⎜ d ⎜T ⎝ s

⎞ ⎟ ⎟ ⎠

dimana Ts = ∆t = waktu sampling dari input ADC, maka persamaan (3.4) dapat dinyatakan dalam sebuah algoritma sebagai berikut:

s (n) = s (n − 1) + e(n) m(n) = K P e(n) + K i s (n) + K d [e(n) − e(n − 1)]

(3.5)

dimana s(n) = jumlah seluruh nilai error pada interval 0 sampai nTs.

3.3.2. Struktur Program

Realisasi program pengontrol PID dilakukan dengan menggunakan struktur program foreground/background [1]. Dengan demikian tugas program dapat dibagi dua yaitu foreground task dan background task. Foreground task adalah tugas program yang memerlukan akses waktu sesegera mungkin (hard time constrains) Backround task adalah tugas program yang tidak memerlukan akses yang sesegera mungkin (soft time constrains). Dalam hal perancangan pengontrol PID ini, background task adalah rutin program utama yang terdiri dari instruksi inisialisasi dan instruksi nop (no operation) untuk menunggu terjadinya interrupt timer 0. Apabila terjadi interrupt maka program utama akan dihentikan dan mikrokontroller langsung mengerjakan foreground task berupa rutin interrupt algoritma PID diskrit. Diagram alir dari program utama dapat dilihat pada Gambar 3.9.

START

INISIALISASI

TUNGGU INTERRUPT TIMER

Gambar 3.9. Diagram alir program utama

Bagian inisialisasi ditujukan untuk memberi nilai konfigurasi awal mikrokontroler, pendefinisan harga awal, dan pemberian nilai pada parameter pengontrol PID. Sebagai contoh, untuk mematikan/menghidupkan fasilitas-fasilitas mikrokontroler, seperti interrupt dan timer dilakukan dengan memberikan nilai yang sesuai pada SFR, dalam hal ini SFR TCON dan TMOD. Diagram alir dari rutin interrupt yang digunakan dapat dilihat pada Gambar 3.10.

START

INPUT SP & PV

ALGORITMA PID

OUTPUT MV

RETI

Gambar 3.10. Diagram alir rutin interrupt

Rutin interrupt akan mengerjakan rutin algoritma PID diskrit yang diawali dengan prosedur I/O untuk mengambil nilai SP dan PV. Berdasarkan data input tersebut, akan dilakukan perhitungan algoritma pengontrol dengan memanggil prosedur PID. Hasil perhitungan akan dikeluarkan sebagai output dengan prosedur I/O. Setelah rutin interrupt telah selesai dikerjakan, maka program utama akan kembali menjalankan operasi 0. Keuntungan penggunaan struktur foreground/background dengan mengaplikasikan interrupt dalam perancangan ini berhubungan dengan waktu sampling algoritma pengontrol PID. Hal ini akan dijelaskan sebagai berikut: Pada bagian 3.3.1. telah dijelaskan mengenai algoritma PID dan terlihat bahwa waktu sampling Ts adalah faktor yang sangat penting dalam implementasi persamaan diskrit dari algoritma PID. Waktu sampling adalah waktu yang dibutuhkan oleh pengontrol untuk mengambil data input dari ADC.
nop

secara berulang untuk menunggu terjadinya interrupt timer

Dari persamaan (3.4) terlihat bahwa persamaan PID diskrit berlaku untuk waktu sampling yang konstan. Untuk itu perlu digunakan metode untuk mendapatkan waktu sampling konstan yang tidak tergantung pada lama waktu perhitungan PID. Waktu sampling pengontrol juga diatur agar memiliki nilai yang lebih kecil dari konstanta waktu plant yang akan dikontrol. Dalam hal pengontrolan motor DC, dari identifikasi parameter didapat bahwa waktu sampling motor DC Sanyo Denki tipe M605T yang dipakai pada tugas akhir ini adalah kurang lebih 50 mdetik. Dari pertimbangan diatas, maka digunakan metoda interrupt timer internal mikrokontroller. Dengan demikian, pengontrol akan dapat melakukan penyamplingan data input setiap terjadi interrupt timer pada selang waktu yang tetap dan tidak bergantung dengan lama operasi perhitungan algoritma kontrol. Timer 0 mode 0 digunakan untuk menghitung waktu sampling. Apabila terjadi overflow pada register TH0 dan TL0, maka akan terjadi interrupt timer 0 (TF0) sehingga program akan jump ke interrupt service routine untuk timer 0. Interrupt service routine akan mengerjakan algoritma kontrol PID yang dimulai dengan pengambilan input SP dan PV dari ADC dan diakhiri dengan mengeluarkan output pengontrol MV melalui DAC. Timer 0 mode 0 menggunakan 8 bit register TH0 dan 5 bit register TL0 untuk pencacahan clock internal mikrokontroler. Dengan demikian timer 0 mode 0 akan overflow dan menghasilkan interupt setiap selang waktu 8192 µs = 8,2 ms. Waktu sampling 8,2 ms telah cukup kecil dibandingkan konstanta waktu motor DC sebesar 50 ms. Selain itu, waktu sampling ini juga cukup besar untuk melayani rutin pengontrol (2 ms) yang terdiri dari rutin input ADC (557 µs), rutin perhitungan algoritma PID (1585 µs) dan rutin output DAC (13 µs). Diagram waktu pengaksesan program dapat dilihat pada Gambar 3.11.

ADC Perhitungan algoritma PID

DAC

ADC

nop

waktu sampling

interrupt timer

interrupt timer

Gambar 3.11. Diagram waktu pengoperasian program

3.3.3. Prosedur Utama

3.3.3.1. Prosedur algoritma PID

Berdasarkan persamaan (3.5) dapat dibuat sebuah algoritma pemrograman untuk perhitungan algoritma PID diskrit sebagai berikut [1]:
BEGIN sn : = sn + en; mn : = Kp*en + Ki*sn + Kd*(en - enOld); enOld : = en; END

Perlu diperhatikan bahwa, algoritma PID diskrit melibatkan perhitungan aritmatika, yang walaupun tampak sederhana, tetapi cukup rumit jika ditulis dalam bahasa assembler. Oleh karena itu perlu dilakukan perhitungan tiap suku persamaan (3.5) secara terpisah [5]. Suku yang dipisahkan dalam hal ini adalah suku perkalian Kpe(n), suku Kis(n) dan suku Kd[e(n)-e(n-1)]. Setelah dilakukan perhitungan matematika secara terpisah, akhirnya semua suku dijumlahkan untuk mendapatkan output akhir.

Karena perhitungan aritmatika algoritma PID juga melibatkan bilangan negatif sementara instruksi dasar dari mikrokontroler tidak mengenal harga negatif maka digunakan bit flag untuk memberikan tanda positif atau negatif bagi suatu data. Perhitungan aritmatika PID juga melibatkan kondisi overflow (hasil perhitungan melebihi lebar bit yang diizinkan), sehingga perlu dilakukan pengecekan terhadap kondisi overflow agar hasil perhitungan dapat diperoleh dengan benar. Hal lain yang harus diperhatikan adalah metode perhitungan dan pernyataan sebuah besaran data, apakah dalam bentuk bilangan integer atau bilangan floating point. Pada tugas akhir ini digunakan bilangan integer yang terdiri dari 8 bit. Adapun perhitungan aritmatika dilakukan dengan lebar data maksimum 16 bit. Untuk membatasi lebar data maksimum 16 bit pada perhitungan aritmatika, maka perhitungan parameter Kp, Ki, dan Kd dari persamaan (3.5) dilakukan dengan melakukan penyederhanaan perhitungan terlebih dahulu sebelum dilibatkan dalam perhitungan mikrokontroler. Dalam kasus suku Kpe(n) tidak ada masalah dengan penyederhanaan parameter karena data Kp dan e(n) masing-masing terdiri dari 8 bit dan hasil perkalian maksimalnya adalah 16 bit. Pada suku Kis(n), perhitungan aritmatika terdiri dari operasi perkalian dan pembagian data Kp, Ts, s(n) dan Ti. Untuk membatasi perhitungan aritmatika dengan lebar data maksimum 16 bit, dilakukan penyederhanaan terlebih dahulu terhadap suku (KiTs) dengan lebar 8 bit. Dengan demikian dapat dilakukan operasi perkalian 16 bit antara suku (KiTs) dengan s(n) yang selanjutnya akan diproses dengan operasi pembagian 16 bit (KiTs) s(n)/ Ti. Hal demikian juga berlaku dalam perhitungan suku Kd[e(n)-e(n-1)]. Batasan-batasan yang muncul dalam perhitungan aritmatika diatas adalah dilakukannya pembulatan hasil pembagian ke bentuk bilangan bulat dan tidak melibatkan pecahan. Selain itu, karena DAC memiliki lebar data 8 bit sebagai inputnya, maka dilakukan pembatasan output akhir keluaran pengontrol sebesar 8 bit dengan nilai maksimum 0FFh. Nilai ini sebanding dengan tegangan maksimum keluaran DAC sebesar 5 volt. Juga dibatasi nilai negatif output akhir pada nilai 0h yang sebanding dengan tegangan keluaran 0 volt.

Berdasarkan algoritma diatas dapat disusun diagram alir dari prosedur algoritma PID seperti yang terlihat pada Gambar 3.12.

Start

hitung en = ref - PV

hitung sn = sn + en

tidak

overflow?

ya

sn = sn

sn = FFh

hitung de = en - e(n-1)

tidak

overflow?

ya

de = de

de= FFh

update e(n-1) = en

hitung m1 = Kp x en

hitung m2 = Ki x sn

hitung m3 = Kd x de

hitung m = m1 + m2 + m3

tidak

m = negatif? ya

ya

tidak

overflow?

m=0

m=m

m = FFh

ret

Gambar 3.12. Diagram alir algoritma PID

3.3.3.2. Prosedur I/O

Prosedur I/O ditujukan untuk mengoperasikan ADC 0809 dan DAC 0832 yang akan mengambil/mengeluarkan data I/O dan melakukan konversi analog ke digital dan sebaliknya. Pengoperasian ini harus memperhatikan diagram pewaktuan untuk mengaktifan kaki-kaki kontrol dari ADC dan DAC. Diagram pewaktuan dari DAC 0832 dapat dilihat pada Gambar 3.13.

DATA BUS CS#

DATA

WR1# & WR2#

XFER# ILE = LOGIC "1" MASUKKAN DATA DIGITAL KE INPUT LATCH TAHAN REGISTER DAC TAHAN INPUT LATCH MASUKKAN DATA DARI INPUT LATCH KE REGISTER DAC (UPDATE ANALOG INPUT)

Gambar 3.13. Diagram pewaktuan DAC 0832

Berdasarkan gambar diatas, dapat disusun rutin pemrograman untuk mengaktifkan kaki-kaki kontrol DAC. Dengan memakai rangkaian DAC seperti yang terlihat pada Gambar 3.5, maka tidak perlu lagi dilakukan pengaturan nilai kaki kontrol CS, XFER dan ILE pada rutin program, karena nilai kaki-kaki tersebut telah ditentukan secara hardware. Dengan demikian, kita tinggal mengatur nilai kaki WR1 dan WR2 secara software. Perhatikan juga port output PPI 8255 yang akan digunakan untuk mengeluarkan data digital ke DAC. Pengaturan fungsi port PPI sebagai output dilakukan dengan memberikan nilai yang sesuai pada register kontrol PPI 8255.

Rutin program DAC adalah sebagai berikut [12]:
setb setb clr setb clr setb ret WR1 WR2 WR1 WR1 WR2 WR2 ; DAC belum aktif ; input latch; data digital dimasukkan ke dalam DAC ; output latch; output analog di update

Diagram pewaktuan dari ADC 0809 dapat dilihat pada Gambar 3.14.

50% START tws

50%

ALE

OE EOC 50% 50%

teoc tc

Gambar 3.14. Diagram pewaktuan ADC 0809

Channel input akan ditahan dengan transisi LOW ke HIGH pada kaki ALE. Dengan demikian, ADC telah siap menerima input analog pada channel yang telah dipilih. Pemilihan channel dilakukan mengatur nilai logika pada kaki alamat ADD A, B dan C (lihat tabel 3.1). Proses konversi akan dimulai dengan transisi LOW ke HIGH kaki START [6]. Lebar minimum pulsa START adalah tws = 200 ns. Pada waktu tEOC = (8 x perioda clock + 2 µs) setelah sudut naik (rising edge) pulsa START, kaki EOC akan LOW. Proses konversi berlangsung selama tC = 90-116 µs. Setelah proses konversi selesai, kaki

EOC akan HIGH, sementara kaki OE (Output Enable) akan HIGH dan memberikan data digital ke bus data mikrokontroler.

Rutin program ADC adalah sebagai berikut:
setb setb clr clr lcall setb clr ret p1.5 p1.6 p1.5 p1.6 delay p1.7 p1.7 ; ; ; ; ALE 'high' Start 'high' ALE 'low' Start 'low'

; delay selama tC ; OE 'high' ; OE 'low'

= 116 µs

Seperti pada pengoperasian DAC, register kontrol PPI 8255 harus diberi nilai yang sesuai untuk mendefinisikan port input yang akan digunakan untuk memberikan input digital hasil konversi ADC ke mikrokontroler.

BAB IV IMPLEMENTASI DAN PENGUJIAN

4.1. Hasil Implementasi

Set up perangkat sistem kontrol motor DC secara keseluruhan terlihat pada Gambar 4.1.

Bus Data Sistem Minimum DT51 DAC 0832 Port A uC 8051 EEPROM PPI 8255 Port C Port B P1 Port Serial Bus Kontrol SP Ch0 Bus Data ADC 0809 Rangkaian Pengkondisi Sinyal Ch1 M Rangkaian Penunjang ADC Driver

Tacho

PV Dari PC, untuk upload program asembler

MV

Ke perangkat akusisi data

Gambar 4.1. Set up perangkat pengontrol secara keseluruhan

Port A PPI 8255 digunakan sebagai output data dari mikrokontroler ke DAC. Data ini merupakan variabel manipulasi sebagai output pengontrol PID. Port B PPI digunakan sebagai input data dari ADC ke mikrokontroler. Data ini berasal dari dua kanal input ADC yaitu kanal 0 (Ch0) sebagai masukan set point kecepatan motor, dan kanal 1 (Ch1) sebagai masukan variabel proses dari sensor tachometer. Untuk mengoperasikan PPI 8255 dan mengatur fungsi masing-masing port, apakah berfungsi sebagai input atau sebagai output,

maka register kontrol PPI harus diberikan nilai yang tepat. Demikian pula perlu diperhatikan pengalamatan masing-masing port dan register kontrol PPI. Untuk melakukan operasi baca/tulis komponen ADC dan DAC, maka bus kontrol memberikan sinyal-sinyal kontrol seperti WR1, WR2, Start dan ALE. Sinyal-sinyal ini diberikan melalui P1 mikrokontroler. Pengaturan kondisi sinyal kontrol dilakukan dengan memperhatikan diagram pewaktu dari komponen ADC dan DAC. Setelah dilakukan pengimplementasian perangkat keras, maka perangkat lunak diintegrasikan ke dalam perangkat keras. Dalam hal ini, dilakukan proses download program assembler dari komputer PC ke dalam eksternal EEPROM yang terdapat pada papan DT51. Proses download dilakukan dengan menggunakan kabel serial RS232. Setelah proses download dilakukan, maka mikrokontroler telah dapat berfungsi sebagai pengontrol.

4.2. Pengujian

Pengujian dilakukan untuk melihat kemampuan pengontrol untuk mengikuti perubahan set point serta kemampuan pengontrol untuk mengatasi gangguan.

4.2.1. Perangkat Akusisi Data

Sebagai sarana untuk menganalisa hasil pengujian, maka digunakan perangkat akusisi data yang terhubung dengan PC. Dengan demikian dapat dilakukan pengukuran besaran variabel proses dari motor dan variabel manipulasi dari pengontrol dimana hasil pengukuran dapat ditampilkan dalam bentuk grafik pada monitor PC. Perangkat yang digunakan adalah ADDA (ADC dan DAC) card jenis ACL 8112DG dengan lebar data 12 bit. Penampilan data dalam bentuk grafik dilakukan software LABVIEW. Diagram koneksi PC, ACL dan komunikasi serial dapat dilihat pada Gambar 4.2.

COM1 ACL 8122 PC Kabel serial untuk upload program assembler

SP PV MV

Akusisi Data

Gambar 4.2. Koneksi PC dengan perangkat akusisi dan komunikasi serial

4.2.2. Pemilihan Parameter PID

Dari hasil percobaan diperoleh parameter pengontrol PID yang memberikan respon sistem yang cukup stabil, yaitu:

Kp = 2h, Ti = 5h, Ts = 8h, KpTs = 4h, KdTd = 1h
Parameter ini dipilih sebagai parameter pengontrol dalam pengujian yang akan dilakukan. Parameter pengontrol diberikan dalam bilangan hexadesimal, dan merupakan

penyederhanaan dari harga parameter sesungguhnya sehingga dapat dilakukan operasi aritmatika tiap suku persamaan (3.5) dengan lebar data maksimum 16 bit.

4.2.3. Respon terhadap perubahan Set Point

Dengan parameter pengontrol yang dipilih diatas, dilakukan pengujian respon sistem terhadap perubahan set point step. Pengujian yang dilakukan adalah: a. Pengujian respon sistem terhadap perubahan set point kecepatan 0 rpm menjadi 450 rpm (lihat Gambar 4.3). b. Pengujian respon sistem terhadap perubahan set point kecepatan 0 rpm menjadi 752,75 rpm (lihat Gambar 4.4). c. Pengujian respon sistem terhadap perubahan set point kecepatan 0 rpm menjadi 1053,11 rpm (lihat Gambar 4.5).

Grafik setpoint & variabel proses 1500 kecepatan (rpm) 1000 500 0 100 -500 SP PV 300 500 700

nomor cacah

(a)

Grafik keluaran pengontrol
10 tegangan (volt) 8 6 4 2 0 100 -2

300

500 nomor cacah

700

(b)

Gambar 4.3. Respon perubahan SP = 451,648 rpm

Grafik setpoint & variabel proses 1500 kecepatan (rpm) 1000 500 0 100 -500 SP PV 600 nomor cacah

(a)

Grafik keluaran pengontrol
10 tegangan (volt) 8 6 4 2 0 -2100 300 500 700 900

nom or cacah

(b)

Gambar 4.4. Respon perubahan SP = 752,747 rpm

Grafik setpoint & variabel proses 1500 kecepatan (rpm) 1000 500 0 100 -500 SP PV 300 500 700 900

nomor cacah

(a)

Grafik keluaran pengontrol
10 tegangan (volt) 8 6 4 2 0 -2100 300 500 nom or cacah 700 900

(b)

Gambar 4.5. Respon perubahan SP = 1053,11 rpm

Terlihat untuk ketiga pengujian, kecepatan motor dapat mengikuti perubahan set point. Error keadaan tunak rata-rata adalah nol dan tidak terlihat overshoot yang berarti.

Terlihat bahwa pada set point kecepatan yang rendah, ripple pada kecepatan motor tidak terlalu besar dibandingkan dengan pada set point yang besar. Hal ini juga teramati pada variabel manipulasi keluaran pengontrol. Ripple ini, selain disebabkan oleh gangguan (noise) pada keluaran tachometer juga disebabkan karena pembatasan lebar data, baik pada perhitungan aritamatika algoritma PID diskrit atau pada lebar data keluaran yang mampu diterima DAC. Telah dijelaskan pada bagian , bahwa perhitungan aritmatika pengontrol dilakukan dalam 8 bit dan 16 bit. Tentu saja dilakukan pembulatan dan pembatasan pada operasi matematika seperti pembagian dan penjumlahan. Pembulatan dan pembatasan lebar data ini menghasilkan kesalahan perhitungan. Pada set point kecil, lebar bit yang diproses masih dapat ditampung dalam ruang data yang kecil. Akan tetapi pada set point besar, lebar bit yang harus diproses juga lebih banyak dan program harus melakukan pembulatan dan pembatasan untuk menjaga agar ruang data yang terpakai maksimal 16 bit. Hal ini menyebabkan ketidakakuratan output pengontrol pada set point besar dan muncul dalam bentuk ripple.

4.2.4. Respon terhadap perubahan beban

Pengujian respon pengontrol terhadap perubahan beban dengan memberikan tekanan/stress pada sumbur putar rotor motor DC. Pengujian yang dilakukan adalah: a. Pengujian respon sistem terhadap perubahan beban pada set point kecepatan 450 rpm (lihat Gambar 4.6). b. Pengujian respon sistem terhadap perubahan beban pada set point kecepatan 752,75 rpm (lihat Gambar 4.7). c. Pengujian respon sistem terhadap perubahan beban pada set point kecepatan 1053,11 rpm (lihat Gambar 4.8).

Grafik setpoint & variabel proses 2000 kecepatan (rpm) 1500 1000 500 0 -500 0 500 1000 1500 SP PV

nomor cacah

(a)

Grafik keluaran pengontrol
15 tegangan (volt) 10 5 0 0 -5 nom or cacah 500 1000 1500

(b)

Gambar 4.6. Respon perubahan beban pada SP = 451,648 rpm

Grafik setpoint & variabel proses 2000 kecepatan (rpm) 1500 1000 500 0 -150 -500 350 850 1350 SP PV

nomor cacah

(a)

Grafik keluaran pengontrol
15 tegangan (volt) 10 5 0 -150 -5

350

850

1350

nom or cacah

(b)

Gambar 4.7. Respon perubahan beban pada SP = 752, 747 rpm

Grafik setpoint & variabel proses 2000 kecepatan (rpm) 1500 1000 500 0 -300 -500 200 700 1200 1700 SP MV

nomor cacah

(a)

Grafik keluaran pengontrol
15 tegangan (volt) 10 5 0 -300 -5 nom or cacah 200 700 1200 1700

(b)

Gambar 4.8. Respon perubahan beban pada SP = 1053,114 rpm

Terlepas dari signifikan atau tidaknya gangguan berupa perubahan beban, dari gambar respon pengontrol terhadap perubahan beban terlihat bahwa pengontrol telah dapat mengatasi perubahan beban dan menjaga kecepatan motor agar tetap pada set point.

Pada set point = 451,648 rpm diberikan perubahan beban pada waktu cacah ke 700 sampai 1300. Terlihat bahwa kecepatan motor tidak berubah dan tetap mengikuti besar set point (Gambar 4.6.a). Sementara itu terlihat pula pada pengontrol berusaha menjaga kecepatan motor agar sama dengan set point dengan cara memperbesar variabel manipulasi (Gambar 4.6.b). Besar perubahan MV ini sesuai dengan perhitungan algoritma PID yang berusaha untuk menjaga agar error = 0. Pada set point = 752,75 rpm diberikan perubahan beban pada waktu cacah ke 600 sampai 900. Terlihat bahwa PV juga tetap mengikuti set point. Juga terlihat ripple yang cukup besar baik pada PV maupun pada MV. Hal ini juga terlihat pada perubahan beban pada set point = 1053,11 rpm. Pada set point tersebut, perubahan beban terjadi pada waktu cacah 700 sampai 1300. Seperti telah dijelaskan sebelumnya, munculnya ripple ini disebabkan karena pembatasan lebar bit kesalahan pembulatan dan pembatasan lebar data pada perhitungan algoritma PID.

BAB VI KESIMPULAN DAN SARAN

5.1. Kesimpulan

1. Implementasi pengontrol PID pada mikrokontroler 8051 dapat berfungsi dengan baik pada plant dengan respon dinamik yang cepat (motor DC). 2. Waktu komputasi modul program: ADC = 552 µs, PID = 1585 µs, DAC = 3 µs, sehingga total waktu komputasi pengontrol PID = 2140 µs. 3. Interrupt timer mode 0 pada mikrokontoler 8051 dapat digunakan untuk implementasi algoritma kontrol dengan waktu sampling yang kecil, yaitu 8,2 ms. 4. Perhitungan aritmatika dengan bilangan integer 8 bit dan 16 bit telah cukup untuk implementasi algoritma PID diskrit.

5.2. Saran

1. Menggunakan parameter Kp, Ki dan Kd yang kecil (lebih kecil dari 0Fh). Hal ini bertujuan untuk mencegah terjadinya pembulatan hasil perhitungan aritmatika yang terlalu besar sehingga hasil perhitungan tidak akurat. 2. Pemberian nilai logika tetap pada kaki kontrol DAC 0832: CS, ILE, XFER. Dengan demikian mikrokontroler hanya perlu mengatur pewaktuan dari kaki kontrol WR1 danWR2. Tentu saja hal ini dapat memperkecil rutin operasi DAC pada mikrokontroler dan memperkecil waktu komputasi modul DAC.

Lampiran A: Gambar Perangkat Keras

Mikrokontroler AT80C51

EEPROM

PPI8255

Port A,B,C PPI 8255

Tegangan catu Port 1 Kabel Serial

Gambar 1. Sistem minimum berbasis mikrokontroler 8051 tipe DT51

DAC 0832

Clock ADC

ADC 0809

Rangkaian tambahan DAC

Pengkondisi sinyal

Gambar.2. Antarmuka pengontrol motor DC
Sistem mikrokontroler DT51 Power supply ke DT51 Power supply ke driver

Antarmuka pengontrol motor DC

Motor DC Sensor kecepatan

Motor driver

Gambar 3. Set up perangkat keras

Lampiran B: Listing Program Pengontrol PID

;******************************************* ;Judul: Pengontrol PID untuk kecepatan motor DC ;Tanggal: Juli 2000 ;Proyek: Tugas Akhir ;Penyusun: R. Ibrahim HK (13395027) ;Instansi: Jurusan Teknik Fisika, ITB ;******************************************* ;=========================================================== ;------------------------------------- definisi konstanta dan variabel ---------------------------------;============================================================ ;-------------------;definisi label port ;-------------------PORTA PORTB PORTC CPORT EQU EQU EQU EQU 4000h 4001h 4002h 4003h ; ; ; ; 4000h 4001h 4002h 4003h adalah adalah adalah adalah alamat alamat alamat alamat untuk untuk untuk untuk mengakses mengakses mengakses mengakses port A PPI 8255 port B PPI 8255 port C PPI 8255 register kontrol PPI 8255

;-------------------;definisi konstanta ;-------------------CW EQU 0082h ; ; ; ; 82h akan diberikan pada register kontrol PPI 8255 untuk mengaktifkan port A dan port C sebagai output, port B sebagai input, dan PPI bekerja pada mode 0

;-----------------------------------------------------------------------------;definisi label register ;catatan: register yang digunakan memiliki alamat memori 5h s/d 23h ;-----------------------------------------------------------------------------ref PV en en_1 de sn Kp Ki_0 Kd_0 M1H M1L M2H M2L M3H M3L M4H M4L M5H M5L EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU 5h 6h 7h 8h 9h 0ah 0bh 0ch 0dh 0eh 0fh 10h 11h 12h 13h 14h 15h 16h 17h ;set point ;variabel proses (keluaran sensor kecepatan) ;e(n) = error sekarang ;e(n-1) = error pada sebelumnya ;∆e = e(n) - e(n-1) ;s(n) = s(n-1) + e(n) = jumlah error pada waktu ke-n ;proportional gain ;Ki_0 = KpTs ;Kd_0 = KpTd ;suku m1 = Kpe(n) ;suku m2 = Kis(n) ;suku m3 = Kd∆e ;suku m4 = Kpe(n) + Kis(n) ;suku m5 = Kpe(n) + Kis(n) + Kd∆e

XH XL YH YL ZH ZL Z0 Z1 Z2 Z3 Ts Ti_c

EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU

18h 19h 1ah 1bh 1ch 1dh 1eh 1fh 20h 21h 22h 23h

;register untuk perhitungan aritmatika 8 bit dan 16 bit

;waktu sampling ;integral time

;-----------------------------------------------------------------------------------------------------------;bit register ;catatan: pengalamatan bit berguna untuk memberi tanda positif atau negatif pada suatu variabel ;-----------------------------------------------------------------------------------------------------------ES_0 ES_1 SS_0 DE_0 M1 M2 M3 M4 M5 XS YS ZS ZOV EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU 20h 21h 22h 23h 24h 25h 26h 27h 28h 29h 2ah 2bh 2ch ;flag ;flag ;flag ;flag ;flag ;flag ;flag ;flag ;flag ;flag ;flag ;flag ;flag untuk untuk unt

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->