Oleh :
Dosen Pembimbing :
i
PROYEK AKHIR
Oleh :
Dosen Pembimbing :
i
PERNYATAAN ORISINILITAS
ii
ABSTRAK
iv
ABSTRACT
v
KATA PENGANTAR
Penulis
vi
UCAPAN TERIMA KASIH
vii
PERSETUJUAN PUBLIKASI TERBATAS
beserta perangkat yang ada (jika diperlukan), yang oleh karenanya Politeknik
Elektronika Negeri Surabaya dengan ini berhak menyimpan, mengalih-
media-kan atau mengalih-format-kan, mengelola dalam pangkalan data
(database), merawat, dan memublikasikan proyek akhir saya selama tetap
mencantumkan nama saya sebagai penulis/pencipta dan sebagai pemilik Hak
Cipta.
viii
DAFTAR ISI
x
DAFTAR GAMBAR
xi
DAFTAR TABEL
xii
BAB I
PENDAHULUAN
1
4. Bagaimana perancangan nilai membership function pada Fuzzy
yang sesuai untuk meng-update PID.
5. Bagaimana sistem electronic load controller dapat bekerja
dengan baik.
1.5 MANFAAT
Adakalanya sebuah penelitian dapat bermanfaat untuk lingkungan
sekitar. Adapun manfaat yang dapat diberikan dari penyelesaian proyek
akhir ini adalah
1. Target luaran dari proyek akhir ini adalah dapat mempertahan
kan output dari sistem plant PLTMH menjadi stabil sehingga
pemanfaatan energi terbarukan ini dapat menjadi energi
alternatif yang sangat bermanfaat pada desa-desa terpencil.
2. Sebagai alat pengaman beban utama/konsumen dari gangguan
ketidakstabilan output dari generator pada PLTMH.
3. Sebagai pengaman plant dari getaran ketika terjadi kecepatan
berlebih dari turbin ke generator.
2
BAB II
STUDI LITERATUR
6
BAB III
PERANCANGAN SISTEM
dE FUZZY
E
Set point
KP KI KD
50 Hz
+ E Plant Output
PID
Mikrohidro
-
Sensor
Frekuensi
7
GENERATOR Beban Utama
Sensor Frekuensi
TRIAC Beban Komplemen
f to v
Driver
Mikrokontroler
TCA785
8
3.2.1.1 Sudut Elevasi Pipa Pesat (Penstock)
Pipa pesat berfungsi mengalirkan air dari bendungan ke turbin. Pipa
pesat yang optimal bisa didapatkan dengan membuatnya dalam posisi
straight. Akan lebih mudah bila kondisi tempat instalasi PLTMH
memiliki dataran dengan gradient downward alami. Denga posisi pipa
pesat yang demikian dapat meminimalisir rugi gesekan dan biaya.
Dalam menghitung berapa sudut elevasi dari pipa pesat maka ada
beberapa parameter yang harus sudah diketahui besarnya. Antara lain
adalah tinggi dari head bendungan dengan turbin yaitu 3 meter.
Sedangkan untuk panjang pipa pesat sendiri yaitu 26 meter.
α° = 6,6°
Turbin
Beban
komplemen
Beban
Generator ELC utama
10
Pada gambar 3.5 ditunjukan bahwa electronic load controller yang
dirancang pada akhirnya semua sistem elektrik akan dikemas dalam satu
panel box. Pada panel terdapat interface berupa LCD untuk menunjukan
hasil pengukuran frekuensi dan tegangan dari keluaran generator.
Kemudian terdapat saklar untuk ON/OFF power pada electronic load
controller.
11
3.2.3 Rangkaian DAC 0808
DAC 0808 digunakan sebagai pengubah nilai digital dari
mikrokontroler menjadi tegangan analog yang nantinya digunakan untuk
mengontrol output dari sudut penyulutan oleh rangkaian TCA785. Karena
rangkaian TCA785 ini menggunakan tegangan analog yang telah diatur
tegangan kontrol sampai dengan tegangan 9 volt dengan sudut penyulutan
180° maksimal. Sehingga tegangan referensi yang harus diberikan pada
rangkaian DAC 0808 adalah sebesar 9 volt. Berikut adalah skematik dari
rangkaian DAC 0808 dengan rangkaian penguat disisi output.
13
START
Baca Nilai
Frekuensi
Tampilkan Nilai
Frekuensi
YA
Turunkan Beban
Frekuensi < 49,5 Hz
Komplemen
TIDAK
YA
Naikan Beban
Frekuensi >50,5 Hz
Komplemen
TIDAK
Output
RETURN
14
c. Pembacaan frekuensi dengan melalui sensor frekuesnsi. Dan
pembacaan frekuensi setpoint yaitu sebesar 49.5Hz – 50.5 Hz.
d. Saat frekuensi input bernlai kurang dari 49,5 Hz maka
mikrokontroler memberi perintah ke rangkaian switching agar
daya yang menuju ke arah beban komplemen dikurangi dengan
memberikan tegangan kontrol rangkaian switching kecil. Agar
frekuensi tetap berada pada setpoint.
e. Saat frekuensi input lebih besar dari 50.5 Hz maka
mikrokontroler memberi perintah ke rangkaian driver TCA785
agar daya yang menuju ke beban komplemen agar dinaikan
dengan memberikan tagangan kontrol ke rangkaian switching
besar agar tetap pada total beban komplemen dan beban utama
adalah daya maksimal yang dibangkitkan oleh generator sesuai
dengan persamaan berikut.
Dimana,
Pgenerator adalah daya maksimal generator
Pbeban utama adalah daya pada beban utama
Pbeban komplemen adalah daya pada beban komplemen
15
de(t)
µ(t) = Kd (3.5)
dt
Blok diagram dari sistem kontrol PID adalah seperti pada gambar
berikut ini.
Proportional
50Hz
Referensi +
+ +
Differential Plant
- +
Integral
Sensor
Frekuensi
outP=KP*E; //nilai Kp
errorI=E+error_sblmI;
outI=KI*errorI*0.1; //nilai Ki
error_sblmI=errorI;
DE=E-error_sblmD;
outD=(KD*DE)/0.1; //nilai Kd
error_sblmD=E;
Hasil perhitungan dari kontrol PID ini adalah nilai data biner 8-bit
yang digunakan sebagai masukan bagi rangkaian DAC. Dimana output
dari rangkaian DAC digunakan untuk mengontrol rangkaian switching
TCA785. Nilai dari output PID ini adalah 0 – 255.
16
langsung oleh error dan delta error secara real time. Alur program dapat
dilihat seperti yang terlampir pada flowchart.
Sensor
Frekuensi
Sedangkan untuk output terdiri dari membership function KP, KI, dan
KD. Seperti pada gambar 3.15, gambar 3.16, dan gambar 3.17.
18
Gambar 3.15 Membership function KP
19
Tabel 3.1 Rule based KP
de/e eNB eNS eZ ePS ePB
dNB HL M LL M HL
dNS HS M LL M HS
dZ LS LS LL LS LS
dPS HS M LL M HS
dPB HL HS LL M HL
Dimana:
LL adalah Low Large, LS adalah Low Small, M adalah Medium, HS adalah
High Small, dan HL adalah High Large.
Tahapan terakhir adalah proses defuzifikasi yaitu proses pemetaan
ruang aksi kontrol fuzzy menjadi ruang aksi kkontrol non-fuzzy.
Tujuannya adalah untuk menghasilkan sinyal kontrol yang dapat
digunakan plant. Dalam kasusu ini, proses defuzzifikasi dilakukan
dengan menggunakan metode COA (Centre of Area).
∑𝑚
𝑘=1 𝑣𝑘 µ𝑣(𝑣𝑘)
𝑉𝑜 = ∑𝑚
(3.6)
𝑘=1 µ(𝑣𝑘)
20
Dimana,
vo = Nilai keluaran
m = Tingkat kuantisasi
vk = elemen ke-k
µv(vk) = Derajat keanggotaan elemen
V = Semesta pembicaraan
21
Halaman ini sengaja dikosongkan
22
BAB IV
PENGUJIAN DAN ANALISA
Pada bab ini akan dilakukan pengujian dan analisa terhadap alat
dan algoritma yang telah dirancang dan dibuat pada bab sebelumnya.
Untuk tahap-tahap pengujian yang akan dilakukan adalah sebagai
berikut :
1. Pengujian karakteristik plant mikrohidro
2. Pengujian sensor frekuensi
3. Pengujian rangkaian DAC 8 bit 0808
4. Pengujian rangkaian switching TCA785
5. Pengujian PID
6. Pengujian PID-Fuzzy
150
100
50
0
0 20 40 60 80 100 120
FREKUENSI INPUT(Hz)
Frekuensi Pembacaan (Hz) Error Pembacaan pada LCD (%)
25
GRAFIK PENGUJIAN RANGKAIAN DAC0808
10,00
8,00
VOUT (VDC)
6,00
4,00
2,00
0,00
0 50 100 150 200 250 300
INPUT DESIMAL
Vout (volt) Praktik Error (%)
𝑁𝑖𝑙𝑎𝑖 𝐷𝑒𝑠𝑖𝑚𝑎𝑙
𝑉𝑜 = 𝑥 𝑉𝑟𝑒𝑓
256
130
𝑉𝑜 = 𝑥 9,18
256
𝑉𝑜 = 4,66 𝑉𝑑𝑐
200,0
150,0
100,0
50,0
0,0
0,00 2,00 4,00 6,00 8,00 10,00
Tegangan Kontrol (Vdc)
Sudut Penyulutan (α⁰) Tegangan Output Praktik (Vac)
Error (%)
𝑉𝑘𝑜𝑛𝑡𝑟𝑜𝑙
α= 𝑥 180° (4.4)
𝑉10
Maka, untuk tegangan kontrol 2,16, dan V10 diatur sebesar 10 Vdc
sehingga nilai α adalah sebagai berikut.
2,16
α= 𝑥 180°
10
27
α = 42,3°
Sehingga nilai dari tegangan output untuk penyulutan dengan nilai α =
42,3° adalah sebagai berikut.
α sin 2α
Vo = Vs√1- +
π 2π
28
4.5 PENGUJIAN PID
Pada pengujian PID ini bertujuan untuk mencari nilai konstanta KP,
KI, dan KD untuk dapat dimasukan kedalam membership function pada
kontroler logika fuzzy. Pada pengujian PID ini menggunakan metode
Ziegler-Nichols Close Loop. Yaitu dimana sistem dibuat sampai
mencapai osilasi konstan (Tu). Prinsip kerja dari metode ini yaitu nilai KI
dan KD diatur 0 (nol) terlebih dahulu. Secara perlahan KP dinaikan
sampai mencapai osilasi konstan (disebut penguatan ultimate, Ku).
Berkut merupakan hasil dari tuning dari sistem ELC.
30
Grafik Hubungan Beban Utama dan Frekuensi
Generator
Frekuensi Generator (Hz)
62
60
58
56
54
52
50
48
0 50 100 150 200
Beban Utama (W)
58
56
54
52
50
48
0 50 100 150 200
Beban Utama (W)
31
semakin besar beban utama yang digunakan maka frekuensi generator
akan semakin turun. Pada beban 150 watt frekuensi generator mencapai
nilai 50,1 Hz pada pengujian hari ke-1 dan 49,8 Hz pada pengujian hari
ke-2. Sehingga dari pengujian yang dilakukan selama dua hari
mengindikasikan bahwa kapasitas beban generator dengan terpasang pada
plant mikrohidro adalah berkapasitas ±150 watt.
32
Grafik Hubungan Beban Utama Dengan Frekuensi
Frekuensi Generator (Hz) Generator
50,6
50,5
50,4
50,3
50,2
50,1
50
49,9
49,8
0 50 100 150 200
Beban Utama (W)
50,6
50,4
50,2
50
49,8
49,6
49,4
0 50 100 150 200
Beban Utama (W)
33
frekuensi 50 Hz maka sistem akan mengirim data menuju DAC untuk
mengontrol rangkaian driver TCA785 yang digunakan untuk memberikan
pulsa trigger sebagai pengontrol daya masukan pada beban komplemen
melalui TRIAC. Agar daya pada beban komplemen dapat disesuaikan
sehingga total penjumlahan antarabeban utama dengan beban komplemen
adalah kapasitas daya dari generator. Dimana sistem fuzzy akan meng-
update nilai dari KP, KI, dan KD sesuai input error dan delta error. Pada
perubahan beban maka parameter KP, KI, dan KD akan berubah sesuai
dengan error yang dihasilkan dari pengurangan referensi dengan
pembacaan frekuensi oleh sensor.
Pada pengontrolan frekuensi agar tetap berada pada nilai dan
toleransi yang diberikan maka peranan beban komplemen sangat penting
guna untuk memberikan daya generator sama dengan penjumlahan beban
utama dengan beban komplemen. Sehinga perlu dilakukan pengujian
daya pada beban komplemen. Berikut adalah hasil dari pengujian beban
komplemen dan dibandingkan dengan beban utama dengan waktu
pengambilan pada cuaca hujan dan cuaca cerah.
150
Daya (Watt)
100
50
0
0 2 4 6 8 10 12
34
Grafik Hubungan Beban Utama Dengan Beban
Kompemen Pengujian Hari Ke-2
200
150
Daya (Watt)
100
50
0
0 2 4 6 8 10 12
V2
P= (4.5)
R
Dimana,
P = daya (Watt)
V = tegangan (Volt)
R = resistansi (Ohm)
Data secara tabel pengujian beban utama dan beban kompelemen hari
ke-1 dengan cuaca hujan terlampir pada lampiran 6. Dan pada hari ke-2
dengan cuaca cerah terlampir pada lampiran 8. Dengan hasil perhitungan
35
daya untuk beban komplemen didapat dari perhitungan pada persamaan
4.5. dengan tegangan untuk beban komplemen adalah tegangan dari
proses switching pada rangkaian driver TCA785 dan TRIAC. Dari
rangkaian tersebut daya yang digunakan pada beban komplemen dapat
diatur dan disesuaikan dengan sistem yang berjalan.
Dari gambar hasil pengujian beban utama dan beban komplemen
pada gambar 4.3 dan 4.4 dapat dianalisa bahwa ketika beban utama
menggunakan sebagian daya dari generator maka sebagian daya yang lain
diambil dari pemberian daya pada beban komplemen. Sehingga daya
maksimal dari generator adalah total beban yang diberikan pada generator
sesuai dengan permaan dibawah ini. Dengan beban utama sebagai beban
user dan beban komplemen sebagai beban penyeimbang.
Dimana,
Pmax generator = daya maksimal generator (Watt)
Pbeban utama = daya beban utama (Watt)
Pbeban komplemen = daya beban komplemen (Watt)
36
BAB V
PENUTUP
5.1 KESIMPULAN
Setelah melakukan tahap perancangan dan pembuatan sistem yang
kemudian dilanjutkan dengan tahap pengujian dan analisa maka dapat
diambil kesimpulan sebagai berikut:
1. Perubahan debit air dapat dipengaruhi oleh cuaca dan perubahan
debit air pada pipa pesat akan mempengaruhi kecepatan generator.
Pada cuaca hujan dengan debit air 0,055 m3/s menghasilkan
kecepatan generator 3638 RPM. Sedangkan pada cuaca cerah debit
air 0,0506 m3/s menghasilkan kecepatan generator 3418 RPM.
2. Perubahan beban yang diberikan pada generator akan berbanding
terbalik dengan frekuensi dan tegangan yang dihasilkan. Semakin
besar beban generator maka frekuensi dan tegangan yang
dihasilkan akan semakin turun.
3. Dengan menggunakan Electronic Load Controller dengan input
kontroler dari variabel pembacaan frekuensi dapat menjaga
frekuensi yang dihasilkan generator pada frekuensi 49,5 Hz
sampai dengan 50,5 Hz dan tegangan generator masih diatas
ketentuan SPLN No. 1:1978 +5% dan -10% dengan error
maksimal 3,4 % dari batas maksimum tegangan pelayanan PLN
dikarenakan kualitas dari generator yang diguanakan kurang baik.
4. Dengan menggunakan metode kontrol PID-Fuzzy dapat
mengontrol plant mikrohidro dengan baik dengan frekuensi sudah
sesuai toleransi dan tegangan dengan error 3,4 % untuk hasil
output generator.
5. Dengan menggunakan electronic load controller dapat menjaga
total beban generator pada daya maksimal yang disediakan
generator meskipun terjadi perubahan beban.
5.2 SARAN
Adapun saran-saran untuk penelitian selanjutnya mengenai
pengontrolan beban secara electronik sehingga bagian yang masih perlu
dilakukan penyempurnaan dapat disempurnakan pada penelitian
selanjutnya antara lain.
1. Perancangan power supply harus baik dengan tegangan ripple
yang sekecil mungkin.
2. Memperhatikan kapasitas generator, beban, dan daya yang dapat
dibangkitkan oleh plant mikrohidro di lapangan.
37
Halaman ini sengaja dikosongkan
38
DAFTAR PUSTAKA
39
Halaman ini sengaja dikosongkan
40
LAMPIRAN
a
Tabel 1. Waktu bola pim pong melewati pipa pesat
Pengukuran t Waktu
Ke (detik)
1 10
2 10,5
3 10,9
4 10,2
5 10,8
Rata-rata 10,48
v=s/t (1.2)
v = 26 / 10,48
v = 2,48 m/s
Sehingga debit dari air pada pipa pesat dengan A adalah luas pipa
pesat (0,02223504m2).
Q=A.v (1.3)
Q = 0,02223504 . 2,48
Q = 0,055 m3/s
dimana :
P adalah daya [kW]
H adalah tinggi jatuh efektif maksimum [meter]
Q debit maksimum turbin [m3/s]
ηt adalah efisiensi turbin untuk turbin crossflow diasumsikan 0,7
k adalah konstanta. Konstanta k dihitung berdasarkan pengertian bahwa 1
HP = 75 kgm/detik dan 1 HP = 0.736 kW sehingga apabila ingin
dinyatakan dalam kW, sedangkan tinggi jatuh air H dinyatakan dalam
meter dan debit air dinyatakan dalam m3/s, maka
b
𝑚3 1000𝑘𝑔 1𝑑𝑘 𝑘𝑊
k= × × 𝑚 × 75𝑘𝑔𝑚 × 0.736 = 9.813 = 9.8
𝑑𝑒𝑡 𝑚3 ⁄𝑑𝑒𝑡 𝑑𝑘
Sehingga daya turbin adalah
Daya turbin P = k. ηt .H.Q [kW]
Daya turbin P = 9,8. 0,7 . 3 . 0,055 [kW]
Daya turbin P = 1,13 kW
Pada pengujian hari ke-1 ini nilai kecepatan maksimal dari generator
dan turbin yang terukur adalah 3638 RPM dan turbin 525 RPM. Sehingga
daya pada generator jika dihitung secara teori adalah.
𝑁𝑡𝑢𝑟𝑏𝑖𝑛 𝑃 𝑔𝑒𝑛𝑒𝑟𝑎𝑡𝑜𝑟
= (1.5)
𝑁𝑔𝑒𝑛𝑒𝑟𝑎𝑡𝑜𝑟 𝑃𝑡𝑢𝑟𝑏𝑖𝑛
525 𝑅𝑃𝑀 𝑃 𝑔𝑒𝑛𝑒𝑟𝑎𝑡𝑜𝑟
3638 𝑅𝑃𝑀
= 1130 𝑊𝑎𝑡𝑡
525 .1130
Pgenerator =
29933638
Pgenerator = 163 Watt
Pengukuran t Waktu
Ke (detik)
1 11
2 11,5
3 11,8
4 11,4
5 11,3
Rata-rata 11,4
Sehingga debit dari air pada pipa pesat dengan A adalah luas pipa
pesat (0,02223504m2).
Q=A.v
Q = 0,02223504 . 2,28
Q = 0,0506 m3/s
Pada pengujian hari ke-2 ini nilai kecepatan maksimal dari generator
dan turbin yang terukur adalah 3418 RPM dan turbin 493 RPM. Sehingga
daya pada generator jika dihitung secara teori adalah.
𝑁𝑡𝑢𝑟𝑏𝑖𝑛 𝑃 𝑔𝑒𝑛𝑒𝑟𝑎𝑡𝑜𝑟
𝑁𝑔𝑒𝑛𝑒𝑟𝑎𝑡𝑜𝑟
= 𝑃𝑡𝑢𝑟𝑏𝑖𝑛
493 𝑅𝑃𝑀 𝑃 𝑔𝑒𝑛𝑒𝑟𝑎𝑡𝑜𝑟
3418 𝑅𝑃𝑀
= 1041 𝑊𝑎𝑡𝑡
493 . 1041
Pgenerator =
3418
Pgenerator = 150,1 Watt
d
Lampiran 2. Pengujian Sensor Frekuensi
f
Lampiran 5. Pengujian Hari Ke-1 Dengan Cuaca Hujan
g
Lanjutan Tabel 4.7
Tegangan
Beban Frekuensi Tegangan Kecepatan Daya beban
beban
No Utama Generator Generator Generator Komplemen
Komplemen
(W) (Hz) (Vac) (RPM) (W)
(Vac)
8 105 50,1 234 3005 119 47
9 120 50,1 234 3005 99 33
10 135 49,9 230 3000 65 14
11 150 49,9 230 3000 24 2
h
Lampiran 8. Pengujian Hari Ke-2 Dengan Cuaca Cerah
i
Lampiran 9. Skematik rangkaian sistem kontrol
1 2 3 4
R8
220K (RSYNC)
ATMEGA128 SOCKET +12 VAC_IN LOAD
1 1
10 51 FUSE
PB0 (SS) PA0 (AD0) PA0 R9 2 2
11 50 470nF
16
PB1 PB1 (SCK) PA1 (AD1) PA1 D10 MOC3021
12 49 10K TCA785 R13 1 6 R14
13 PB2 (MOSI) PA2 (AD2) 48 PA2 C22 5 14 TCA785 56 330
16
A PB3 (MISO) PA3 (AD3) PA3 VSYNC Q1 1N4148 R16 A
14 47 EXP PORTD 11 4 D11 2 4
PB4 (OC0) PA4 (AD4) PA4 V11 Q1 BTA40 330
15 46 6 15
PB5 (OC1A) PA5 (AD5) PA5 1 PD0 D8 D9 INHIBIT Q2 MOC3021
16 45 13 2
PB6 (OC1B) PA6 (AD6) PA6 2 PD1 L Q2 1N4148
17 44 12 3
PB7 (OC2/OC1C) PA7 (AD7) PA7 3 PD2 C12 QU
18 1N4148 1N4148 C23 10 7
GND
TOSC2/PG3 4 PD3 C10 QZ
19 35 +5 ADC2 2.2uF Tant 9 8
TOSC1/1PG4 PC0 (A8) 36 PC0 5 PD4 R9 VREF R15 C27
PC1 (A9) PC1 6 PD5 1 330
25 37
PD0 PD0 (SCL/INT0) PC2 (A10) PC2 7 PD6 2
1
26 38 R10 150pF 47nF R12
PD1 PD1 (SDA/INT1) PC3 (A11) PC3 8 PD7 3 TCA785 22K
27 39 2k2
PD2 PD2 (RXD1/INT2) PC4 (A12) PC4 9
1
2
28 40 Header 3 C25 C26
PD3 PD3 (TXD1/INT3) PC5 (A13) PC5 10 R11
29 41 GND +5
PD4 PD4 (IC1) PC6 (A14) PC6 10K
30 42 V_SENSOR Vr1
PD5 PD5 (XCK1) PC7 (A15) PC7
31 100nF 100K GND
PD6 PD6 (T1) 1
32 54
PD7 PD7 (T2) PF7 (ADC7/TDI) 55 2 C24
GND
PF6 (ADC6/TDO) 3
2 56
PE0 RXD-TXD PE0 (RXD0/PDI) PF5 (ADC5/TMS) 4
3 57 +12 +9
PE1 TXD-RXD PE1 (TXD0/PDO) PF4 (ADC4/TCK) R17
4 58 GND
PE2 (XCK0/AIN0) PF3 (ADC3) TCA785
5 59 +12 R5 330
PE3 (OC3A/AIN1) PF2 (ADC2) 10K
6 PE4 (OC3B/INT4) PF1 (ADC1) 60 +5 GND REFERENSI D12
B 7 61 +9 B
PE5 (OC3C/INT5) PF0 (ADC0) S_F Zener
7
8 U3 8 U4
PE6 (T3/INT6) LF351N
9 L1 Res L1 0805 14 4 2
PE7 (IC3/INT7) VREF(+) I0
+5 10 µH 10 µH R3 15 VREF(-) 6 1
AC5V D5
33 21 10K 1 3
PG0 (WR) VCC R4
10K NC 2 1
34 52 5 +5 5 GND L2 +5
PG1 (RD) VCC PA7 A1 2
43 64 6 13 1 DAC D6
PG2 (ALE) AVCC PA6 7 A2 VCC
4
R1 62 1 2
AREF PA5 A3 AC_IN VIN OUT
20 100 nF 100 nF 100 nF 8 2 5 4
1K RST 1 RESET 22 PA4 9 A4 GND 3 ON/OFF FB
PEN GND PA3 A5 GND 100mH
53 100 nF D7
GND C1 C2 C4 PA2 10 A6 COMP 16
23 63 11 C13 LM2576T C14 C15
XTAL2 XTAL2 GND PA1 A7
XTAL1 24 XTAL1 PA0 12 A8 VEE 3
C12-12 GND
DAC0808LCN AC0
GND
+12 GND GND 1
2
P? GND GND GND
IN_OUT? GND GND
1
2 1 AC_IN
GND +12
3 2 S_F
C VUSB AC+-12 D1 IC1 C
Header 3 GND Header 2 VUSB 1 3
GND
100nF 4.7uF 1 IN OUT
+5 -12
20
2
4
U2 D2 C16 C17
4K7 R2 0.1uF 17 1 FT232RL-Tray C18
RST XTAL1 XTAL2 3V3OUT TXD RXD-TXD
VCC
VCCIO
2
5 C? C? LM7812
47 μF RXD TXD-RXD
1 2 22pF XTAL 22pF 2
2 C11 DTR
3 4 16 9 VUSB D3
1 C5 C6 USBDM DSR
SW C7 3 GND
RTS
1
RST 15 11 GND
USBDP CTS R6
10 D4 C19 C20 -12
DCD
GND
GND 6 1k 2 3 C21
6
RI IN OUT
CRYSTAL CLOCK VUSB
GND GND 19 23 USB IC2
GND
RESET CBUS0 10nF 1 USB-B Through-Hole
22 VBus LM7912
27 CBUS1 13 LED1 2
OSCI CBUS2 3 D-
+5 +5 14 D+
CBUS3 C10 4
GND
12 GND
CBUS4
1 2 +5 LED2 28
PE0 OSCO
AGND
3 4 1 2 1k 8
GND
GND
GND
PC0 PC1 R7 NC
5 6 3 4 26 24 GND GND
5
RST PC2 PC3 TEST NC
D 7 8 5 6 D
PB1 PC4 PC5
9 10 7 8 Title
PE1 PC6 PC7
25
7
18
21
Main.c
#include "device_init.h"
#include "voltSensor.h"
#include "freqSensor.h"
#define DAC PORTA
int SettingPoint=50;
unsigned int dacOUT,dac8;
unsigned int adcv, adcf;
float tun_KP;
float vac, frek;
float E,DE,out,outlalu,out_a,setakhir,a;
float KP=0,KI=0,KD=0;
float error_sblmI=0, error_sblmD=0, errorI, outP, outI, outD;
float NB_E,NS_E,Z_E,PS_E,PB_E; //MF Error
float NB_DE,NS_DE,Z_DE,PS_DE,PB_DE; //MF DE
float SK_KP,K_KP,S_KP,B_KP,SB_KP; //MF KP
float SK_KI,K_KI,S_KI,B_KI,SB_KI; //MF KI
float SK_KD,K_KD,S_KD,B_KD,SB_KD; //MF KD
float RP[25], RI[25], RD[25], small[25];
float Mn_RP,Mn_RI,Mn_RD, Mn;
char buffer[33];
char buffv[33];
char buff_adcv[33];
char buff_f[33];
char buff_adcf[33];
char dac[33];
char buff_pid[33];
char buff_kp[33];
char buff_ki[33];
char buff_kd[33];
char buff_e[33];
char buff_sp[33];
void display()
{
lcd_gotoxy(0,0);
sprintf(buffv, "%0.1fV", vac);
lcd_puts(buffv);
lcd_gotoxy(9,0);
sprintf(buff_f, "%0.1fHz", frek);
k
lcd_puts(buff_f);
lcd_gotoxy(0,1);
sprintf(buff_kp, "KP=%0.3f", KP);
lcd_puts(buff_kp);
lcd_gotoxy(0,2);
sprintf(buff_ki, "KI=%0.3f", KI);
lcd_puts(buff_ki);
lcd_gotoxy(0,3);
sprintf(buff_kd, "KD=%0.3f", KD);
lcd_puts(buff_kd);
lcd_gotoxy(9,1);
sprintf(buff_e, "E=%0.1f", E);
lcd_puts(buff_e);
lcd_gotoxy(9,2);
sprintf(buff_pid, "PID=%d", PIDout);
lcd_puts(buff_pid);
lcd_gotoxy(9,3);
sprintf(buff_sp, "SP=%d", SettingPoint);
lcd_puts(buff_sp);
}
float MF(float u, float a, float b, float c)
{
if (u < a) return 0;
else if (u >= a && u <= b) return(u - a)/(b - a);
else if (u >= b && u <= c) return(c - u)/(c - b);
else if (u > c) return 0;
}
//Membership Function Error
void F_Error()
{
NB_E = MF( E, -10, -6, -2);
NS_E = MF( E, -6, -2, 0);
Z_E = MF( E, -2, 0, 2);
PS_E = MF( E, 0, 2, 6);
PB_E = MF( E, 2, 6, 10);
}
//Membership Function Delta Error
void F_DError()
{
NB_DE = MF( DE, -1.5, -1, -0.5);
NS_DE = MF( DE, -1, -0.5, 0);
Z_DE = MF( DE, -0.5, 0, 0.5);
PS_DE = MF( DE, 0, 0.5, 1);
l
PB_DE = MF( DE, 0.5, 1, 1.5);
}
//Nilai Center KP, KI DAN KD
void MF_Out()
{
SK_KP = 0;
K_KP = 1.96;
S_KP = 4.06;
B_KP = 6.16;
SB_KP = 8.26;
SK_KI = 0;
K_KI = 2.5175;
S_KI = 5.035;
B_KI = 7.5525;
SB_KI = 10.07;
SK_KD = 0;
K_KD = 0.925;
S_KD = 1.85;
B_KD = 2.775;
SB_KD = 3.7;
}
//Fungsi nilai terkecil
float minimal(float inp1, float inp2)
{
if(inp1 > inp2) return inp2;
else return inp1;
}
//cari nilai small terkecil
void smallest()
{ //E DE
small[0]= minimal(NB_E , NB_DE);
small[1]= minimal(NS_E , NB_DE);
small[2]= minimal(Z_E , NB_DE);
small[3]= minimal(PS_E , NB_DE);
small[4]= minimal(PB_E , NB_DE);
small[5]= minimal(NB_E , NS_DE);
small[6]= minimal(NS_E , NS_DE);
small[7]= minimal(Z_E , NS_DE);
small[8]= minimal(PS_E , NS_DE);
small[9]= minimal(PB_E , NS_DE);
small[10]= minimal(NB_E , Z_DE);
small[11]= minimal(NS_E , Z_DE);
small[12]= minimal(Z_E , Z_DE);
m
small[13]= minimal(PS_E , Z_DE);
small[14]= minimal(PB_E , Z_DE);
small[15]= minimal(NB_E , PS_DE);
small[16]= minimal(NS_E , PS_DE);
small[17]= minimal(Z_E , PS_DE);
small[18]= minimal(PS_E , PS_DE);
small[19]= minimal(PB_E , PS_DE);
small[20]= minimal(NB_E , PB_DE);
small[21]= minimal(NS_E , PB_DE);
small[22]= minimal(Z_E , PB_DE);
small[23]= minimal(PS_E , PB_DE);
small[24]= minimal(PB_E , PB_DE);
}
//Rule KP
void RuleKP()
{
RP[0] = small[0] * SB_KP;
RP[1] = small[1] * B_KP;
RP[2] = small[2] * SK_KP;
RP[3] = small[3] * B_KP;
RP[4] = small[4] * SB_KP;
RP[5] = small[5] * B_KP;
RP[6] = small[6] * S_KP;
RP[7] = small[7] * SK_KP;
RP[8] = small[8] * S_KP;
RP[9] = small[9] * B_KP;
RP[10] = small[10] * SB_KP;
RP[11] = small[11] * S_KP;
RP[12] = small[12] * SK_KP;
RP[13] = small[13] * S_KP;
RP[14] = small[14] * SB_KP;
RP[15] = small[15] * B_KP;
RP[16] = small[16] * S_KP;
RP[17] = small[17] * SK_KP;
RP[18] = small[18] * S_KP;
RP[19] = small[19] * B_KP;
RP[20] = small[20] * SB_KP;
RP[21] = small[21] * B_KP;
RP[22] = small[22] * SK_KP;
RP[23] = small[23] * B_KP;
RP[24] = small[24] * SB_KP;
}
//Rule KI
n
void RuleKI()
{
RI[0] = small[0] * SB_KI;
RI[1] = small[1] * B_KI;
RI[2] = small[2] * S_KI;
RI[3] = small[3] * B_KI;
RI[4] = small[4] * SB_KI;
RI[5] = small[5] * B_KI;
RI[6] = small[6] * S_KI;
RI[7] = small[7] * SK_KI;
RI[8] = small[8] * S_KI;
RI[9] = small[9] * B_KI;
RI[10] = small[10] * K_KI;
RI[11] = small[11] * K_KI;
RI[12] = small[12] * SK_KI;
RI[13] = small[13] * K_KI;
RI[14] = small[14] * K_KI;
RI[15] = small[15] * B_KI;
RI[16] = small[16] * S_KI;
RI[17] = small[17] * SK_KI;
RI[18] = small[18] * S_KI;
RI[19] = small[19] * B_KI;
RI[20] = small[20] * SB_KI;
RI[21] = small[21] * B_KI;
RI[22] = small[22] * S_KI;
RI[23] = small[23] * B_KI;
RI[24] = small[24] * SB_KI;
}
//Rule KD
void RuleKD()
{
RD[0] = small[0] * SK_KD;
RD[1] = small[1] * K_KD;
RD[2] = small[2] * S_KD;
RD[3] = small[3] * K_KD;
RD[4] = small[4] * SK_KD;
RD[5] = small[5] * K_KD;
RD[6] = small[6] * S_KD;
RD[7] = small[7] * SB_KD;
RD[8] = small[8] * S_KD;
RD[9] = small[9] * K_KD;
RD[10] = small[10] * B_KD;
RD[11] = small[11] * B_KD;
o
RD[12] = small[12] * SB_KD;
RD[13] = small[13] * B_KD;
RD[14] = small[14] * B_KD;
RD[15] = small[15] * K_KD;
RD[16] = small[16] * S_KD;
RD[17] = small[17] * SB_KD;
RD[18] = small[18] * S_KD;
RD[19] = small[19] * K_KD;
RD[20] = small[20] * SK_KD;
RD[21] = small[21] * K_KD;
RD[22] = small[22] * S_KD;
RD[23] = small[23] * K_KD;
RD[24] = small[24] * SK_KD;
}
//Fuzzyfikasi
void COA()
{
unsigned char n;
for(n=0;n<25;n++)
{
Mn = Mn + small[n];
Mn_RP = Mn_RP + RP[n];
Mn_RI = Mn_RI + RI[n];
Mn_RD = Mn_RD + RD[n];
}
KP = Mn_RP / Mn;
KI = Mn_RI / Mn;
KD = Mn_RD / Mn;
}
void FUZZY()
{
MF_Out();
F_Error();
F_DError();
smallest();
RuleKP();
RuleKI();
RuleKD();
COA();
}
void tunning_KP()
{
tun_KP = read_adc(2)/4;
p
KP = tun_KP/10;
}
void only_PID()
{
KP = 7.08;
KI = 43.17;
KD = 0.29028;
}
void PID()
{
outP=KP*E; //nilai Kp ditentukan melalui tuning
errorI=E+error_sblmI;
outI=KI*errorI/0.1; //nilai Ki ditentukan melalui tuning
error_sblmI=errorI;
DE=E-error_sblmD;
outD=(KD*DE)/0.1; //nilai Kd ditentukan melalui tuning
error_sblmD=E;
}
void cobaTCA()
{
dacOUT = read_adc(2)/4;
DAC = ~dacOUT;
}
void system()
{
Hitung_Tegangan();
Hitung_Frekuensi();
a=SettingPoint-setakhir;
setakhir=SettingPoint;
E=(SettingPoint-frek)*(-1);
FUZZY();
//tunning_KP();
//only_PID();
PID();
out=(outP+outI+outD);
if(out >= 255)out = 255;
if(out <= 0) out = 0;
//if(E<=0.5) out=0;
//cobaTCA();
PIDout = out;
DAC = ~PIDout;
}
void main (void)
q
{
setting();
lcd_gotoxy(0,0);
lcd_putsf(".......ELC......");
lcd_gotoxy(0,1);
lcd_putsf("RECTA TIDAR W...");
lcd_gotoxy(0,2);
lcd_putsf("4_D4_ELKA_A'13");
lcd_gotoxy(0,3);
lcd_putsf("1110131030");
delay_ms(2000);
lcd_clear();
while (1)
{
if(rx_counter0>=3)
{
if(getchar()=='s')
{
int s;
scanf("%d",&s);
SettingPoint=s;
}
}
system();
display();
printf("$/%0.1f/%d/%d/\n", frek, SettingPoint, PIDout);
};
}
freqSensor.h
#ifndef freqSensor.H
#define freqSensor.H
#include "device_init.h"
#pragma used+
/*****deklarasi variabel*****/
int fi,fm,fk,fs;
int i,k=0,m,s;
unsigned int adcf,count=0;
unsigned long int adc0=0;
float frek;
void Hitung_Frekuensi()
{
for(count=0;count<2000;count++)
r
{
adc0=adc0+(read_adc(0)/4);
}
adcf=adc0/2000;
frek = (adcf-1.0909)/2.5643;
adc0=0;
count=0;
}
#pragma used-
#endif
voltSensor.h
#ifndef voltSensor.H
#define voltSensor.H
#include "device_init.h"
#pragma used+
//*****deklarasi variabel*****/
unsigned int z,zm,zk,zs;
int i,k,m,s;
unsigned int adcv;
int values[400];
float vac;
void Hitung_Tegangan()
{
// sampling
for(i=0;i<300;i++) {
values[i] = read_adc(1);
if (values[i] >= z) {
z = values[i];
}
}
for(k=0;k<300;k++) {
values[k] = read_adc(1);
if (values[k] >= zk) {
zk = values[k];
}
}
for(m=0;m<300;m++) {
values[m] = read_adc(1);
if (values[m] >= zm) {
zm = values[m];
}
s
}
for(s=0;s<300;s++) {
values[s] = read_adc(1);
if (values[s] >= zs) {
zs = values[s];
}
}
if((z >= zk)&&(z >= zm)&&(z >= zs)){
adcv = z;
vac = (z - 512.30)/0.3802;
// itoa(z,temp);
// itoa(vac,temp);
}
if((zk >= z)&&(zk >= zm)&&(zk >= zs)){
adcv = zk;
vac = (zk - 512.30)/0.3802;
// itoa(zk,temp);
// itoa(vac,temp);
}
if((zm >= z)&&(zm >= zk)&&(zm >= zs)){
adcv = zm;
vac = (zm - 512.30)/0.3802;
// itoa(zm,temp);
// itoa(vac,temp);
}
if((zs >= z)&&(zs >= zk)&&(zs >= zm)){
adcv = zs;
vac = (zs - 512.30)/0.3802;
// itoa(zs,temp);
// itoa(vac,temp);
}
//kembali ke nilai awal = 0
z = 0;
zk = 0;
zm = 0;
zs = 0;
}
#pragma used-
#endif
t
Lampiran 11. Tampilan GUI untuk keperluan tuning PID
u
Lampiran 13. Dokumentasi pengujian ELC pada plant mikrohidro
(beban komplemen)
v
Lampiran 16. Bendungan dan pipa pesat
w
Lampiran 18. Panel Electronic Load Controller
x
BIODATA PENULIS
Riwayat Pendidikan :
SDN 1 Pronojiwo Tahun 2001 – 2007
SMPN 1 Pronojiwo Tahun 2007 – 2010
SMAN 3 Lumajang Tahun 2010 – 2013
Politeknik Elektronika Negeri Surabaya Tahun 2013 – 2017