BAB 3 Implementasi Modul Kontrol Temperatur
3.1.
Perangkat Keras Kontroler PID Digital dan plant
Gambar 3.1 menunjukkan kontroler PID digital beserta plant dan aktuatornya. Modul kontrol temperatur terdiri dari satu buah resistor variabel (Tuning) yang berfungsi sebagai pengatur setting point (SP) dan parameterparameter kontroler PID (KP, KI, KD). Nilai parameter yang telah ditentukan dengan menggunakan resistor variabel tersebut kemudian dimasukan dengan penekanan tombol 1. parameter yang pertama dimasukkan adalah SP, kemudian KP, KI, dan diakhiri dengan pemasukan KD. Dengan penekanan tombol 1 sekali lagi sistem kontrol temperatur akan berjalan. Modul kontrol temperatur yang dirancang menggunakan dua buah mikrokontroler PIC18F4520. Mikrokontroler yang pertama berfungsi sebagai kontroler yang akan mengolah data yang masuk yaitu error dan parameterparameter kontrol PID (KP, KI, dan KD) untuk menghasilkan sinyal kontrol. Sinyal kontrol yang dihasilkan dari mikrokontroler kemudian dikonversi ke dalam bentuk analog dengan bentuk sinyal PWM (pulse-width modulation), sinyal kontrol ini kemudian dikuatkan lalu dikirimkan ke aktuator untuk mengontrol temperatur plant. Aktuator yang digunakan dalam modul kontrol ini berupa lampu sebagai pemanas (Pemanas 1) dan kipas (Pendingin 1) yang berfungsi sebagai pendingin. Respon temperatur dari plant kemudian dikembalikan ke mikrokontroler melalui
10
11
sensor temperatur untuk dievaluasi error-nya. Sensor temperatur yang digunakan adalah LM35 dengan karakteristik 10 mV/0C.
Gangguan SP
ADC
+
Kontroler
DAC
Aktuator
Plant
Y(t)
_ ADC
Gambar 3.1 Kontroler PID digital beserta aktuator dan plant-nya
Mikrokontroler yang kedua berfungsi sebagai penghasil sinyal gangguan yang dibentuk dari pemanas 2 dan pendingin 2. Penekanan tombol 2 akan
12
menyalakan pemanas 2, penekanan tombol 3 akan menyalakan pendingin 2, serta penekanan tombol 4 akan mematikan pemanas2 dan pendingin 2.
3.1.1.
Rangkaian sensor temperatur R3
4
12K VCC
VCC
LM35
2
3K Input1
3
A
1
U4A TL084ACN RA1
11
3 2 1
R2
-VCC
Gambar 3.2 Sensor Temperatur
Sensor temperatur yang ditunjukkan dalam Gambar 3.2 menggunakan LM35 dengan karakteristik 10 mV/0C6). Pada suhu 100 0C, keluaran LM35 akan bernilai 1V sehingga agar mendapatkan nilai ADC maksimum pada 100 0C, maka output dari LM35 dikalikan 5 kali sehingga akan bernilai 5 V pada saat suhu 100 0
C. ⎛ R ⎞ A = ⎜1 + 3 ⎟ ⎝ R2 ⎠
(3.1)
⎛ 12 ⎞ A = ⎜1 + ⎟ = 5 3⎠ ⎝
(3.2)
13
Sinyal dari penguat ini kemudian masuk ke pin RA1 (AN1) mikrokontroler PIC18F4520. ADC yang digunakan berupa ADC internal dengan resolusi 10 bit.
3.1.2.
Mikrokontroler PIC18F4520
(a)
14
(b) Gambar 3.3 Device mikrokontroler PIC18F4520 (a) dan diagram blok mikrokontroler PIC18F4520 (b)
Mikrokontroler yang digunakan sebagai pengontrol adalah PIC18F4520 dari keluarga microchip. Mikrokontroler ini memiliki fitur: 1. 100.000 kali baca/tulis flash memori 2. Single-supply 5V in circuit
15
3. Pemrograman menggunakan ICSP (In Circuit Serial Programming) melalui dua kabel 4. 32 Kbyte flash memori 5. 2 sumber PWM 6. 3 sumber interupsi eksternal 7. 3 timer 8. Komunikasi serial (USART) 9. 13 channel ADC internal 10 bit 10. 36 pin I/O yang terbagi ke dalam 5 port File hexa yang telah dibuat dengan menggunakan software aplikasi MPLAB dimasukkan ke dalam mikrokontroler dengan menggunakan rangkaian ICSP seperti terlihat pada Gambar 3.4.
2
3
D2 1N4148
4K7
R2 4K7 R3 10K
1 2 3 4 5 Header 5
D3
BAT42 BAT42
C7 2uF
RB7 R11 R12 2K2 10K
RB6
D5 BAT42
D6 BAT42
D7 5.1V
C5 100nF C6 100nF
D9 1N4148
D4
1 6 2 7 3 8 4 9 5
+15
LM78L12ACZ 1
OUT IN GND C4 100nF
D8 1N4148
R5 1K JP1
U7 3
2
1
R1 T1 BC237
2
BC307 3 T2 1
J2 11 10
D Connector 9
Gambar 3.4 Rangkaian downloader ICSP
R4 680
DS1 LED2
16
Sedangkan software programmer yang digunakan untuk mendownloadkan program (file hex) ke dalam mikrokontroler digunakan WinPIC seperti ditunjukkan pada Gambar 3.5.
Gambar 3.5 Programmer WINPIC
3.1.2.1.
Port I/O mikrokontroler
Mikrokontroler PIC18F4520 memiliki 36 buah pin I/O yang terbagi ke dalam 5 buah port yaitu 8 pin pada PORTA, 8 pin pada PORTB, 8 pin pada PORTC, 8 pin pada PORTD, dan 4 pin pada PORTE. Dari 32 pin I/O yang dimiliki oleh mikrokontroler PIC18F4520 terdapat 2 pin yang biasa digunakan untuk osilator eksternal, 1 pin yang digunakan untuk mereset mikrokontroler, dan 13 pin bisa digunakan sebagai input ADC seperti terlihat pada gambar 3.3(b).
17
Fungsi port sebagai input atau output dikontrol melalui register yang bernama register TRIS. Register TRIS harus diberi nilai nol untuk membuat port I/O berfungsi sebagai output, dan diberi nilai 1 untuk membuat port berfungsi sebagai input.
3.1.2.2.
ADC internal
Mikrokontroler bekerja secara digital sehingga jika ada sinyal analog yang akan masuk pada mikrokontroler, sinyal ini harus dikonversi terlebih dahulu ke dalam bentuk digital. Mikrokontroler PIC18F4520 telah dilengkapi dengan ADC (Analog to Digital Converter) internal sebanyak 13 channel dengan resolusi sebesar 10 bit.
18
Gambar 3.6 Diagram blok ADC internal
Gambar 3.6 menunjukkan diagram blok ADC internal yang terdapat pada mikrokontroler PIC18F4520. Mikrokontroler ini dilengkapi juga dengan multiplexer yang berguna untuk memilih channel input analog yang akan digunakan. Secara umum, kerja dari modul ADC ini dikontrol oleh 3 register yaitu ADCON0, ADCON1, dan ADCON 2. ADCON0 berfungsi untuk mengontrol operasi modul ADC yang digunakan, ADCON1 berfungsi sebagai pengontrol konfigurasi pin-pin pada port yang digunakan (pin yang digunakan untuk input
19
ADC harus dikonfigurasi pada mode analog), sedangkan ADCON2 berfungsi sebagai pengatur sumber clock dari modul ADC yang digunakan. Hasil dari konversi ADC ini kemudian disimpan ke dalam 2 register yaitu ADRESH : ADRESL, byte tinggi disimpan di ADREH sedangkan byte rendah disimpan di ADRESL. Pada aplikasi yang dibuat, channel AN0 digunakan sebagai input dari sensor yang berfungsi sebagai feed back bagi sistem kontrol yang dibuat.
3.1.2.3.
PWM (Pulse Width Modulator)
Mikrokontroler
PIC18F4520
terdapat
dua
buah
pin
yang
bisa
mengeluarkan sinyal PWM yaitu CCP1 dan CCP2. Dalam mode ini pin CCPx akan menghasilkan output PWM dengan resolusi 10 bit. Sebuah output PWM (Gambar 3.7) mempunyai waktu dasar (perioda) dan waktu pada saat sinyal output berada pada logika High (duty cycle). Frekuensi dari PWM merupakan kebalikan dari periodanya (1/perioda).
Gambar 3.7 Output PWM
20
Perioda PWM dapat diatur dengan memberi nilai pada register PR2. perioda PWM dapat dihitung dengan menggunakan Persamaan 3.1. Perioda PWM = ⎡⎣( PR 2 ) + 1⎤⎦ • 4 • TOSC • ( nilai PrescaleTMR 2 )
(3.1)
Dalam penelitian ini digunakan PR2 sebesar 0xff atau 256 dalam bilangan desimal, dan nilai prescaler timer 2 yang digunakan sebesar 16. pada rangkaian aplikasi ini digunakan kristal (oscillator) sebesar 10 MHz sehingga Tosc sebesar 1/10MHz = 0,0000001 detik. Dengan memasukan data-data di atas ke dalam persamaan 3.1 diperoleh perioda PWM. Perioda PWM = [ 255 + 1] • 4 • 0,0000001 • 16 PeriodaPWM = 0,0016384 detik = 1,6384ms
PWM duty cycle diperoleh dengan memberi nilai pada CCPRxL dan CCPxCON<5:4>. PWM duty cycle ini memiliki resolusi 10 bit. Byte tinggi disimpan ke CCPRxL dan dua bit rendah disimpan ke CCPxCON<5:4>. Nilai duty cycle bisa dihitung dengan Persamaan 3.2 PWM Duty Cycle = (CCPRxL : CCPxCON < 5 : 4 >) • TOSC • (TMR 2 PrescalerValue) (3.2) Sebagai
contoh
untuk
menghitung
PWM
100%,
maka
nilai
CCPRxL:CCPxCON harus diberi 1023 PWM Duty Cycle = 1023 • 0,0000001 • 16 = 0,0016368 s = 1, 6368 ms Persentase PWM diperoleh dengan membandingkan antara waktu duty cycle dengan perioda dikali 100%
21
1, 6368 ms • 100% 1,6384ms PWM = 99,90234375% ≈ 100% PWM =
Dari hasil perhitungan, persentase PWM maksimum PWM diperoleh sebesar 99,9% mendekati 100%.
3.1.2.4.
Komunikasi serial mode asinkron (EUSART Asynchronous )
Modul EUSART (Enhanced Universal Synchronous Asynchronous Receiver
Transmitter)
merupakan
salah
satu
komunikasi
serial
yang
memungkinkan untuk berkomunikasi dengan PC atau aplikasi lainnya. Data yang dikirim maupun diterima oleh mikrokontroler akan disimpan terlebih dahulu dalam buffer. Buffer untuk mengirimkan data adalah TXREG sedangkan buffer yng digunakan pada saat menerima data adalah RCREG. Terdapat dua jenis dari EUSART yaitu mode synchronous dan mode asynchronous. EUSART mode synchronous melakukan komunikasi antar dua prosesor dengan menggunakan satu buah oscillator atau dua buah osilator yang tepat sama baik itu frekuensinya maupun waktu pulsa pada osilator pada keadaan high dan low. Hal ini tentu sangat sulit diperoleh jika menggunakan dua buah osilator. Sedangkan EUSART mode Asynchronous melakukan komunikasi data antar dua prosesor dengan menggunakan dua sumber osilator yang berbeda. Komunikasi EUSART mode asybchronous melibatkan tiga register kontrol yaitu TXSTA, RCSTA dan BAUDCON. TXSTA berfungsi sebagai pengontrol pengiriman data dari mikrokontroler ke PC, RCSTA berfungsi sebagai pengontrol penerimaan data dari PC ke mikrokontroler, sedangkan BAUDCON
22
berfungsi sebagai pengatur baudrate yang digunakan. Baudrate berpengaruh pada kecepatan transfer data yang dilakukan, biasanya menggunakan satuan bps (bit per second). Baud rate ini dihasilkan oler baud rate generator (BRG). BRG menyediakan 8 bit atau 16 bit generator yang mendukung pada komunikasi serial baik itu mode synchronous maupun asynchronous. Pada dasarnya BRG beroperasi pada mode 8 bit. Agar beroperasi pada mode 16 bit, BRG16 (BAUDCON<3>) harus diset menjadi berlogika 1. SPBRGH:SPBRG merupakan sepasang register yang mengontrol perioda timer yang berjalan bebas. Dalam mode asynchronous bit BRGH(TXSTA<2>) dan BRG16(BAUDCON<3>) juga ikut mengontrol baud rate. Pada baudrate synchronous bit BRG tidak berpengaruh pada baud rate. Tabel 3.1 menunjukkan persamaan untuk pehitungan baud rate.
Tabel 3.1 Persamaan Baudrate Konfigurasi bit BRG/EUSART MODE
Persamaan Baud Rate
FOSC/[64(n+1)]
SYNC
BRG16 BRGH
0
0
0
8-bit/Asynchronous
0
0
1
8-bit/Asynchronous FOSC/[16(n+1)]
0
1
0
16-bit/Asynchronous
0
1
1
16-bit/Asynchronous
FOSC/[4(n+1)]
23
1
0
x
8-bit/Asynchronous
1
1
x
16-bit/Asynchronous
Lebih lengkapnya dapat dilihat pada table baud rate untuk mode asynchronous pada Lampiran 1. Pada penelitian ini digunakan EUSART mode asynchronous, mode 8 bit dan baud rate 19200.
3.1.3.
Rangkaian aktuator U10 RC1 5 RC2 7 10 12 RC5 6 11 8
IN1 IN2 IN3 IN4 EN A EN B GND
VSS VS OUT1 OUT2 OUT3 OUT4 ISEN A ISEN B
VCC 9 4 2 OUT1 3 OUT2 13 14
+15
C20 100nF
Pemanas (Lampu) 1 2 Pendingin (Kipas)
1 15
1 2
L298N
Gambar 3.8 Rangkaian driver PWM
Output PWM dari mikrokontroler keluar melalui pin RC1 dan RC2 seperti diberikan pada Gambar 3.8. PWM ini mempunyai daya yang lemah sehingga perlu dikuatkan lagi dayanya untuk mengaktifkan kipas dan lampu. Dalam penelitian ini digunakan IC driver L298N sebagai penguat daya.
24
3.1.4.
Tampilan peraga LCD
3
VCC
R27
Q2 BC307
2 1
47K
RE0 RE1 RE2 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7
RP2 10K 3
+0 +5 Cn Rs Rw E D0 D1 D2 D3 D4 D5 D6 D7 15 16
1
2
VCC
A K
LCD2X16
Gambar 3.9 Rangkaian Peraga LCD
LCD pada aplikasi ini berfungsi sebagai display dari suhu yang terukur, setting point (SP), KP, KI, dan KD. LCD yang digunakan pada aplikasi ini adalah LCD dot matrks 16x2 yang dapat menampilkan 32 karakter dalam dua baris. Tampilan peraga LCD menggunakan dua port mikrokontroler yaitu Port D sebagai komunikasi data dan Port E sebagai pengontrol LCD. Resistor variabel RP2 dipakai sebagai pembagi tegangan yang berfungsi untuk mengatur kontras LCD.
25
3.1.5.
Rangkaian Komunikasi serial RS232 C13 10uF C14
1 3 4 5
10uF 11 RC6 10 RC7
12 9 15
U8 C1+ C1C2+ C2T1IN T2IN
VDD VCC
T1OUT T2OUT
R1OUT R2OUT
R1IN R2IN
GND
VEE
MAX232ACPE
2 16
C15 VCC 10uF
14 7 13 8 6 C16 10uF
1 6 2 7 3 8 4 9 5
JP3 11 10
D Connector 9
Gambar 3.10 Rangkaian komunkasi serial RS232
Modul kontrol yang dibuat dilengkapi pula dengan komunikasi serial RS232 untuk berkomunikasi dengan PC. Tegangan yang keluar dari PC (RS232) sebesar +3V sampai +25V untuk logika 0, dan -3V sampai -25V untuk logika 1. Sinyal ini perlu dikonversi dulu ke bentuk TTL sebelum masuk ke aplikasi (mikrokontroler), dan juga sebaliknya sinyal dari mikrokontroler perlu dikonversi dulu ke level RS232 sebelum masuk ke port serial PC. Konverter yang paling mudah digunakan adalam MAX-232. Di dalam IC ini terdapat Charge Pump yang yang akan membangkitkan tegangan +10V dan -10V dari sumber tegangan +5V tungal. Dalam aplikasi ini nilai temperatur yang terukur akan dikirimkan ke PC sekitar setiap 1 detik.
26
3.2. 3.2.1.
Perangkat Lunak Program Utama Program Utama START
Inisialisasi
Baca Parameter SP, KP, KI, KD
dt =0,1 detik?
tidak
Ya ya
Baca Temperatur Plant Hitung Error Temperatur PID Kontroler
Update PWM Kirim Data Temperatur Ke LCD
t = 1 detik?
Tidak
Ya Kirim Data Temperatur ke PC
Gambar 3.11 Diagram alir kontroler PID Digital
27
Perangkat lunak yang diaplikasikan dalam mikrokontroler diawali dengan inisialisasi (Gambar 3.11). Inisialisasi berfungsi untuk menginisialisasi port yang akan digunakan sebagai input atau output, penginisialisasian komunikasi serial, penginisialisasian ADC, penginisialisasian penulisan ke LCD, penginisialisasian PWM, serta penginisialisasian interupsi eksternal dan timer. Tahap selanjutnya program dilakukan dengan membaca parameterparameter yang dibutuhkan (SP, KP, KI, KD). Pembacaan ini memanfaatkan resistor variable yang difungsikan sebagai pembagi tegangan yang mana nilai tegangannya bisa diatur, data tegangan dari resistor variabel kemudian dikonversikan ke bentuk digital oleh ADC internal. Setiap terjadi interupsi eksternal, hasil pembacaan ADC disimpan di memori dalam mikrokontroler. Terdapat empat kali interupsi eksternal, pertama untuk menentukan SP, kedua untuk menentukan KP, ketiga untuk menentukan KI, keempat untuk menentukan KD. Jadi, keempat parameter tersebut akan tersimpan semuanya di mikrokontroler, interupsi
yang
kelima
berfungsi
untuk
memerintahkan
mikrokontroler
mengeksekusi tahap selanjutnya. Setelah parameter-parameter disimpan, nilai ini akan dikontrol dengan menggunakan algoritma PID, m(t ) = K P e(t ) + K I ∫ e(t )dt + K D dengan K I =
de(t ) dt
(3.2)
KP , dan K D = K P * TD . TI
Secara sederhana algoritma PID bisa diungkapkan sebagai
PID = P + I + D
(3.3)
28
P = K P * error
(3.4)
I = K I * jumlah error yang sudah terjadi * dt
(3.5)
D = KD
(error saat ini − error yang lalu ) dt
(3.6)
Dengan dt adalah perubahan waktu antara error yang terjadi saat ini dengan error sebelumnya, dt bisa dsebut juga lamanya satu siklus kontroler terjadi. Nilai dt pada kontroler ini sebesar 0,1 detik dengan memanfaatkan fasilitas timer dari timer3 pada mikrokontroler PIC18F4520, tetapi nilai temperatur (dalam bentuk digital) yang dikirimkan ke PC dilakukan selama 1 detik sekali. Hasil dari PID kontroler ini kemudian akan memperbaharui duty cycle dari PWM yang dihasilkan. Kemudian temperatur plant akan diukur oleh sensor dan kemudian akan diperoleh error baru. Peristiwa ini akan terus menerus dilakukan sampai sistem dimatikan. Proses pembaharuan duty cycle terjadi jika ada error yang terjadi, pembaharuan duty cycle tidak akan dilakukan jika tidaka ada error yang terjadi. Kontroler PID digital bekerja berdasarkan error yang terjadi.
3.2.2.
Program Pendukung
3.2.2.1.
Subrutin program ADC
ADC yang digunakan dalam aplikasi kontrol temperatur ini adalah channel 0 (AN0) dan channel 1 (AN1). AN0 berfungsi untuk menentukan setting awal seperti setting point (SP), KP, KI, KD. sedangkan AN1 berfungsi untuk mengkonversi nilai tegangan yang diterima dari sensor suhu ke dalam bentuk digital. Diagram alir untuk proses konversi ADC terlihat pada Gambar 3.12.
29
START
Set analog input Pilih Channel ADC Set Waktu Konversi ADC
Aktifkan modul ADC (Konversi ADC mulai)
Konversi Selesai?
Tidak
Ya Baca Buffer ADC
END
Gambar 3.12 Diagram alir konversi ADC internal
3.2.2.2.
Subrutin program PWM
PWM digunakan untuk mengontrol daya yang digunakan untuk pemanas atau pendingin. Persentase daya untuk pemanas atau pendingin sebanding pada persentasi duty cycle pada PWM yang digunakan. Diagram alir pengontrolan PWM terlihat pada Gambar 3.13.
30
START
Set Perioda PWM
Set Duty Cycle
END
Gambar 3.13 Diagram alir generator PWM
3.2.2.3.
Subrutin peraga LCD
Peraga LCD menggunakan dua port yaitu PORTD dan PORTE. PORTD berfungsi sebagai jalur komunikasi data dan PORTE berfungsi sebagai jalur kontrol. Diagram alir penulisan LCD ditunjukkan pada Gambar 3.14. START PORTD:PORTE YDigital Output
Set Posisi Penulisan LCD
Tulis Data
END
Gambar 3.14 Diagram alir penulisan LCD
31
3.2.2.4.
Subrutin komunikasi serial RS232
Komunikasi serial RS232 digunakan untukmengirimkan nila KP, KI, KD, dan SP pada proses kontrol dimulai. Nilai temperatur sebenarnya yang terukur dikirimkan setiap satu detik sekali. Diagram alir pengiriman data secara serial ke PC terlihat pada Gambar 3.15.
START Set mode 8 bit Asynchronous Set baud rate 9600 Kirim ke PC END
Gambar 3.15 Diagram alir komunikasi serial RS232