Mikrokontroler adalah sebuah chip yang berfungsi sebagai pengontrol rangkaian elektronik dan umunya dapat menyimpan program didalamnya. Mikrokontroler adalah sebuah chip yang berfungsi sebagai pengontrol rangkaian elektronik dan umunya dapat menyimpan program
1. LAPORAN PROJECT
PID IMPLEMENTATION ON OCTAVE
LUSIANA DIYAN NINGRUM
2210181051
3 D4 TEKNIK KOMPUTER B
PROGRAM STUDI D4 TEKNIK KOMPUTER
DEPARTEMEN TEKNIK INFORMATIKA DAN KOMPUTER
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA
2. BAB I
DASAR TEORI
1.1 Mikrokontroler
Mikrokontroler adalah sebuah chip yang berfungsi sebagai pengontrol rangkaian
elektronik dan umunya dapat menyimpan program didalamnya. Mikrokontroler adalah
sebuah chip yang berfungsi sebagai pengontrol rangkaian elektronik dan umunya dapat
menyimpan program did umumnya terdiri dari CPU (Central Processing Unit), memori, I/O
tertentu dan unit pendukung seperti Analog-to-Digital Converter (ADC) yang sudah
terintegrasi di dalamnya. Kelebihan utama dari mikrokontroler ialah tersedianya RAM dan
peralatan I/O pendukung sehingga ukuran board mikrokontroler menjadi sangat
ringkas. Mikrokontroler adalah sebuah chip yang berfungsi sebagai pengontrol rangkaian
elektronik dan umunya dapat menyimpan program did MCS51 ialah mikrokomputer CMOS
8 bit dengan 4 KB Flash PEROM (Programmable and Erasable Only Memory) yang dapat
dihapus dan ditulisi sebanyak 1000 kali. Mikrokontroler ini diproduksi dengan menggunakan
teknologi high density non-volatile memory. Flash PEROM on-chip tersebut memungkinkan
memori program untuk diprogram ulang dalam sistem (in-system programming) atau dengan
menggunakan programmer non-volatile memory konvensional. Kombinasi CPU 8 bit serba
guna dan Flash PEROM, menjadikan mikrokontroler MCS51 menjadi microcomputer handal
yang fleksibel. Mikrokontroler tersusun dalam satu chip dimana prosesor, memori, dan I/O
terintegrasi menjadi satu kesatuan kontrol sistem sehingga mikrokontroler dapat dikatakan
sebagai komputer mini yang dapat bekerja secara inovatif sesuai dengan kebutuhan sistem.
1.2 Arduino
Arduino adalah pengendali mikro single-board yang bersifat open-source, diturunkan
dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai
bidang. Hardwarenya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa
pemrograman sendiri. Banyak pemula yang belajar mengenal robotika dan elektronika lewat
Arduino karena mudah dipelajari. Tapi tidak hanya pemula, para hobbyist atau profesional
pun ikut senang mengembangkan aplikasi elektronik menggunakan Arduino. Bahasa yang
dipakai dalam Arduino bukan assembler yang relatif sulit, tetapi bahasa C yang
disederhanakan dengan bantuan pustaka-pustaka (libraries) Arduino.
Gambar 1.1 Arduino UNO
3. Arduino memiliki beberapa kelebihan, diantaranya tidak perlu perangkat chip
programmer karena didalamnya sudah ada bootloadder yang akan menangani upload program
dari komputer. Sudah memiliki sarana komunikasi USB, Sehingga pengguna laptop yang
tidak memiliki port serial/RS323 bisa menggunakannya. Memiliki modul siap pakai ( Shield )
yang bisa ditancapkan pada board arduino. Contohnya shield GPS, Ethernet,dll. Soket USB
adalah soket kabel USB yang disambungkan kekomputer atau laptop. Yang berfungsi untuk
mengirimkan program ke arduino dan juga sebagai port komunikasi serial. Input/output
digital atau digital pin adalah pin pin untuk menghubungkan arduino dengan komponen atau
rangkaian digital. contohnya , jika ingin membuat LED berkedip, LED tersebut bisa dipasang
pada salah satu pin input atau output digital dan ground. komponen lain yang menghasilkan
output digital atau menerima input digital bisa disambungkan ke pin pin ini. Input analog atau
analog pin adalah pin pin yang berfungsi untuk menerima sinyal dari komponen atau
rangkaian analog. contohnya , potensiometer, sensor suhu, sensor cahaya, dll. Pin pin catu
daya adalah pin yang memberikan tegangan untuk komponen atau rangkaian yang
dihubungkan dengan arduino. Pada bagian catu daya ini pin Vin dan Reset. Vin digunakan
untuk memberikan tegangan langsung kepada arduino tanpa melalui tegangan pada USB atau
adaptor, sedangkan Reset adalah pin untuk memberikan sinyal reset melalui tombol atau
rangkaian eksternal. Soket baterai atau adaptor digunakan untuk menyuplai arduino dengan
tegangan dari baterai/adaptor 9V pada saat arduino sedang tidak disambungkan kekomputer.
Jika arduino sedang disambungkan kekomputer dengan USB, Arduino mendapatkan suplai
tegangan dari USB, Jika tidak perlu memasang baterai/adaptor pada saat memprogram
arduino.
1.3 GNU Octave
GNU Octave adalah suatu perangkat lunak gratis (freeware) dan bahasa tingkat tinggi
untuk komputasi numerik dan visualisasi data. Octave dirancang sebagai tiruan dari Matlab.
Sumber informasi mengenai Octave dapat dilihat pada website www.octave.org. Pada
awalnya Octave dikembangkan oleh John W. Eaton (Universitas Texas) dan sekarang
pengembangan dan pemeliharaan Octave dilakukan oleh beberapa orang volunteer dari
berbagai penjuru dunia. Kelebihan utama dari Octave yaitu gratis (freeware) dan tersedia
untuk berbagai sistem operasi seperti Windows 98/2000/XP, Mac OS/X, Debian, Suse,
Fedora, RedHat Linux. Pada kebanyakan sistem operasi program GNU Octave dapat
dijalankan dengan memberikan perintah octave pada shell command. Setelah perintah
tersebut kita berikan maka akan muncul suatu jendela GNU Octave. Pada jendela tersebut
akan ditampilkan beberapa pesan singkat mengenai Octave dan kemudian di bawah pesan
singkat tersebut ditampilkan sebuah prompt, yang menandakan bahwa Octave siap untuk
menerima perintah yang akan kita berikan. Untuk keluar dari program Octave gunakan
perintah quit atau exit. Octave juga dilengkapi dengan dokumentasi yang menjelaskan
program Octave dengan cukup detail. Selain dari dokumentasi, untuk mendapat penjelasan
mengenai suatu perintah atau sjuga dapat dilakukan dengan menggunakan perintah help kata-
kunci, dimana kata-kunci adalah nama fungsi atau operator yang akan kita cari
penjelasannya.
4. Gambar 1.2 Tampilan Jendela Octave pada Sistm Operasi Windows
Salah satu kelebihan Octave yaitu kemampuannya dalam menangani berbagai macam
operasi manipulasi terhadap data yang berupa suatu matrik. Pada dasarnya semua data
numerik di dalam Octave dianggap sebagai suatu matrik. Vektor dan skalar merupakan
bentuk khusus dari suatu matrik. Vektor adalah suatu matrik yang hanya mempunyai satu
baris atau satu kolom saja, sementara itu skalar adalah suatu matrik yang hanya terdiri dari
satu elemen saja. Pembuatan data matrik dan vektor secara manual dilakukan dengan
menggunakan operator kurung siku ([ ... ]). Dimana elemen-elemen matrik atau vektor
dimasukkan diantara kedua kurung siku tersebut. Untuk memisahkan elemen yang satu
dengan elemen yang lainnya yang terletak pada satu baris dapat digunakan tanda koma (,)
atau tanda spasi. Kemudian untuk memisahkan antara baris yang satu dengan yang lainnya,
gunakan tanda titik koma (;) atau tanda ENT. Octave juga menyediakan sejumlah fungsi yang
dapat digunakan untuk membuat matrik-matrik khusus. Di dalam Octave, secara umum
operasi-operasi matematika terhadap obyek matrik dan vektor dapat dilakukan dengan sangat
mudah tanpa harus menggunakan suatu perulangan. Octave dapat digunakan untuk
melakukan visualisasi data, baik secara dua dimensi maupun tiga dimensi. Untuk membuat
grafik dua dimensi kita dapat menggunakan perintah plot, kemudian untuk grafik tiga
dimensi kita dapat menggunakan perintah surf, mesh, seperti yang diperlihatkan pada contoh-
contoh di bawah ini. Grafik yang dihasilkan oleh perintah-perintah grafis akan ditampilkan
pada jendela tersendiri, yaitu jendela grafik. Penjelasan detail mengenai pembuatan grafik
dapat dilihat pada sistem bantuan yang terdapat pada program Octave.
octave:55> % Contoh penggunaan fungsi plot (lihat Gambar )
octave:55> x = linspace(-1,1,61)';
octave:56> y1 = x.^2; y2 = 1 - y1; y3 = 2*y1;
octave:57> plot(x,[y1 y2 y3])
octave:58>title('Contoh penggunaan fungsi plot')
5. Gambar 1.3 Hasil Fungsi Plot
1.4 Kontroler PID
Kontroler PID (dari singkatan bahasa Inggris: Proportional–Integral–Derivative
controller) merupakan kontroler mekanisme umpan balik yang biasanya dipakai pada sistem
kontrol industri. Sebuah kontroler PID secara kontinu menghitung nilai kesalahan sebagai
beda antara setpoint yang diinginkan dan variabel proses terukur. Kontroler mencoba untuk
meminimalkan nilai kesalahan setiap waktu dengan penyetelan variabel kontrol, seperti posisi
keran kontrol, damper, atau daya pada elemen pemanas, ke nilai baru yang ditentukan oleh
jumlahan:
dengan Kp, Ki dan Kd semuanya positif, menandakan koefisien untuk term
proporsional, integral, dan derivatif, secara berurutan (atau P, I, dan D). Pada model ini,
P bertanggung jawab untuk nilai kesalahan saat ini. Contohnya, jika nilai kesalahan
besar dan positif, maka keluaran kontrol juga besar dan positif.
I bertanggung jawab untuk nilai kesalahan sebelumnya. Contoh, jika keluaran saat ini
kurang besar, maka kesalahan akan terakumulasi terus menerus, dan kontroler akan
merespon dengan keluaran lebih tinggi.
D bertanggung jawab untuk kemungkinan nilai kesalahan mendatang, berdasarkan pada
rate perubahan tiap waktu.
Karena kontroler PID hanya mengandalkan variabel proses terukur, bukan
pengetahuan mengenai prosesnya, maka dapat secara luas digunakan. Dengan penyesuaian
(tuning) ketiga parameter model, kontroler PID dapat memenuhi kebutuhan proses. Respon
kontroler dapat dijelaskan dengan bagaimana responnya terhadap kesalahan, besarnya
overshoot dari setpoint, dan derajat osilasi sistem. penggunaan algoritme PID tidak menjamin
kontrol optimum sistem atau bahkan kestabilannya. Beberapa aplikasi mungkin hanya
menggunakan satu atau dua term untuk memberikan kontrol sistem yang sesuai. Hal ini dapat
dicapai dengan mengontrol parameter yang lain menjadi nol. Kontroler PID dapat menjadi
kontroler PI, PD, P atau I tergantung aksi apa yang digunakan. Kontroler PI biasanya adalah
kontroler paling umum. Untuk sistem waktu diskrit, sering digunakan PSD atau proportional-
summation-difference.
7. 2.2 Desain Rangkaian Arduino
Gambar 2.2 Desain Rangkaian
Keterangan konfigurasi kabel :
1. Pin 5V pada Arduino dihubungkan ke kaki 1 Potensiometer
2. Pin A0 pada Arduino dihubungkan ke kaki 2 Potensiometer
3. Pin GND pad aArduino dihubungkan ke kaki 3 Potensiometer
4. Kaki 3 potensiometer di jumper ke resistor yang terhubung ke katoda LED
5. Pin 6 pada Arduino dihubungkan ke Anoda LED
Alat dan Bahan yang dibutuhkan :
1. Arduino UNO
2. Potensiometer 10K ohm
3. Resistor 330 ohm
4. LED
5. Projectboard
6. Kabel jumper
8. 2.3 Program Octave
pkg load arduino; #Load Arduino before any usage
arduinosetup #membuat Proyek Arduino sementara,
#dengan file toolkit Arduino disalin ke sana dan Arduino IDE
akan terbuka.
a=arduino; #mendeklarasikan variabel komunikasi arduino dengan octave
led_pin = "d6"; #mendeklarasikan pin yang terhubung dengan LED
vr_pin = "a0"; #mendeklarasikan pin yang terhubung dengan potensio
initTime = 0; #delay
#readTime = 200;
x = 0;
feedback = 0;
Kp = 0.05;
Ki = 0.05;
Kd = 0.05;
integral_error = 0;
derivatif_error = 0;
last_error = 0;
#PID Controller program
while initTime <= 250
adc = readAnalogPin(a, vr_pin); #inisialisasi pembacaan nilai potensio
value = adc/4;
#menghitung nilai error
error = value - feedback; #menghitung perbedaan nilai input potensio dengan
pembacaan output PID Controller
integral_error += error;
derivatif_error = error - last_error;
last_error = error;
#menghitung nilai proportional, derivatif, integral
proportional = Kp * error;
integral = Ki * integral_error;
derivatif = Kp * derivatif_error;
#menampilkan nilai proportional, derivatif, integral di komunikasi serial
printf("Proportional : %dn", proportional);
9. printf("Derivatif : %dn", derivatif);
printf("Integral : %dn", integral);
printf("n");
PID = proportional + integral + derivatif; #menghitung nilai PID
conv = PID/256; #konversi nilai PID
double(conv); #konversi type nilai
writePWMDutyCycle(a,led_pin,conv);
feedback = PID;
x = [x,PID]; #deklarasi matriks data output
plot(x); #membuat plot/grafik dari data output PID Controller
title("PID Value Plot"); #membuat judul grafik
xlabel("time"); #memberi label sisi x grafik
ylabel("Digital Value 0-256"); #memberi label sisi y grafik
grid ON #memberikan garis grid pada grafik
initTime = initTime + 1; #mengatur waktu yang digunakan untuk data grafik
drawnow; #menggambarkan grafik berdasarkan data output PID Controller
endwhile
2.4 Program Arduino
Gambar 2.3 Program Arduino
Program file yang terbuat di Arduino IDE, merupakan file program yang ter-build
secara otomatis ketika menjalankan perintah arduinosetup melalui software Ooctave.
Program ini dapat langsung diupload ke hardware Arduino tanpa memerlukan modifikasi
pada baris programnya.
10. BAB III
SCREENSHOOT IMPLEMENTASI
3.1 Rangkaian Arduino
Gambar 3.1 Rangkaian Arduino dengan LED dan Potensiometer
Gambar 3.2 Rangkaian Mikrokontroller dalam keadaan nyala
3.2 Grafik Data Output Mikrokontroller
Gambar 3.3 Grafik output rangkaian mikrokontroller
11. Grafik menunjukkan pembacaan nilai output PID Controller yang berasal dari trigger
potensiometer. Nilai PID ini diperoleh dari proses penghitungan PID = (Kp * kesalahan) +
(Ki * integralKesalahan) + (Kd * derivatifKesalahan). Plot diagram dari nilai PID Controller
seperti pada gambar 3.3
Gambar 3.4 Nilai PWM dari output PID Controller di Serial Komunikasi
Selain menampilkan nilai PID yang berasal dari input trigger potensiometer dalam
bentuk grafik plot sinyal, trigger input dari potensimeter juga dapat digunakan untuk
mengetahui nilai PWM dari output PID Controller di serial komunikasi sehingga akan
muncul nilai proportional, derivatif dan nilai integral.
Link youtube video demo :
https://youtu.be/GbFRjgZvaYQ
12. BAB IV
LIST REFERENSI
1. Arief. 2014. Fungsi dan Kegunaan Arduino. Diakses pada 24 September 2020.
(https://ariefeeiiggeennblog.wordpress.com/2014/02/07/pengertian-fungsi-dan-
kegunaan-arduino/)
2. Arief, Saifuddin. 2016. Pengenalan GNU Octave. Diakses pada 25 September 2020.
(https://id.scribd.com/doc/296788425/Sarief-Octave)
3. Elektronika Dasar. 2012. Pengertian dan Kelebihan Mikrokontroler. Diakses pada 24
September 2020. (http://elektronika-dasar.web.id/pengertian-dan-kelebihan-
mikrokontroler/)
4. Khumaidi S.ST.,M.T., Agus. 2019. Mikrokontroller Arduino. Diakses pada 24
September 2020. (http://lecturer.ppns.ac.id/aguskhumaidi/2019/09/05/mikrokontroler-
arduino/)
5. Naziq, Ahmad. Pengertian Mikrokontroler. Diakses pada 24 September 2020.
(https://sites.google.com/site/informasiterbarusekali/pengertian-mikrokontroller)
6. Viyan. Perangkat Keras : Arduino dan Raspberry Pi. Diakses pada 24 September
2020.
(http://viyan.staff.gunadarma.ac.id/Downloads/files/62856/7_Perangkat+Keras.pdf)
7. http://www.boarduino.web.id/
8. https://id.wikipedia.org/wiki/PID