Perancangan Sensor Warna dengan Algoritma Genetika
- Untuk membuat sensor yang dapat membedakan warna dengan mengkoleksi data yang dapat merepresentasikan warna.
a. Gambaran Umum
Sensor warna akan dibuat menggunakan infrared LED dan phototransistor, dan harus dapat memaksimalkan kapasitas Analog to Digital Converter (ADC) pada mikrokontroler yang akan digunakan. Kita asumsikan bahwa, mikrokontroler yang digunakan adalah Arduino Nano (ATMega 328p) yang memiliki spesifikasi ADC 10 bit dengan tegangan kerja 5 Volt. Sehingga, kita dapat menyimpulkan bahwa ADC pada mikrokontroler tersebut memiliki ketelitian hingga ~5 miliVolt.
b. Skema Rangkaian
Rangkaian di atas merupakan contoh model sederhana dari rangkaian infrared LED dan phototransistor yang akan digunakan. Akan tetapi, untuk analisa kali ini, kita dapat menghilangkan infrared LED.
Tegangan keluaran (Vout) merupakan tegangan yang akan diberikan ke ADC yang kemudian akan diproses oleh mikrokontroler. Vout harus bervariasi dari 0 - 5 Volt agar mikrokontroler dapat dengan mudah mengelompokkan warna (Disini kita menggunakan warna hitam, abu-abu, dan putih).
Vout dapat kita peroleh dari persamaan berikut :
Jika kita memasukkan nilai tegangan kerja (Vin) dengan nilai 5 Volt maka Vout :
Nilai dari R2 akan kita peroleh dari komponen phototransistor. Sedangkan R1 merupakan resistor tetap yang harus diatur agar Vout memiliki rentang nilai sebesar mungkin. Kita dapat mengasumsikan nilai minimal dari R1 adalah 8 KiloOhm, dan nilai maksimal dari R1 adalah 20 KiloOhm, sehingga :
Dari persamaan diatas maka, akan sangat mudah untuk memperoleh nilai R2 yang sesuai agar delta Vout maksimal, jika R2 yang dipakai adalah sebuah resistor yang nilainya dapat ditentukan. Dalam kasus ini, kita dapat mengasumsikan R2 adalah 10 buah resistor yang diserikan, sehingga :
Nilai dari R1 hingga R10 dapat kita anggap bernilai 100 Ohm hingga 56 KiloOhm. Nilai resistor-resistor dari R1 hingga R10 sangat sulit untuk dicari secara manual. Banyak sekali iterasi yang harus kita lakukan sehingga, akan ada kemungkinan iterasi akan terjebak dengan nilai maksimum lokal.
a. Algoritma Genetika
Dari pembahasan diatas, maka kita dapat menentukan :
- Fungsi Obyektif
- Jumlah populasi = 100
- Individu
Individu ini terdiri dari 10 kromosom yang kita representasikan oleh R1,R2,R3, ..., R10.
b. Program Matlab
Sekarang kita akan membuat fungsi fitness dengan menggunakan Matlab. Caranya adalah dengan mengklik New > Function lalu, simpan file dengan nama delta_tegangan.m.
Fungsi Fitness :
function tegangan = delta_tegangan(res)
total_res = res(1)+res(2)+res(3)+res(4)+res(5)+res(6)+res(7)+res(8)+res(9)+res(10);
tegangan = (5*total_res) / (8000+total_res);
tegangan = tegangan - ((5*total_res) / (20000+total_res));
tegangan = 5 - tegangan;
end
Selanjutnya pada Command Window pada Matlab kita ketikkan "optimtool". Sehingga akan muncul box "Optimization Tool" seperti yang terlihat pada gambar dibawah :
Selanjutnya, kita akan mengisi bagian-bagian yang kosong dengan nilai berikut :
- Fitness Function + @delta_tegangan
- Number of variables = 10
- Bounds (berfungsi untuk memberikan batasan, untuk dapat mendapatkan solusi yang lebih cepat dan lebih terpercaya)
* Lower = [100,100,100,100,100,100,100,100,100,100]
* Upper = [5600,5600,5600,5600,5600,5600,5600,5600,5600,5600]
- Population size = 100
- Pada Plot Functions, centang Best Fitness dan Best Individual untuk dapat menampilkan hasil dalam bentuk grafik.
- Setelah kita mengisi data-data yang kita perlukan, maka kita akan mengklik tombol "start" untuk menghitung.
- Maka, kita akan mendapatkan hasil
Berikut ini adalah video tutorial untuk simulasi:
Fungsi Fitness : DOWNLOAD DISINI
Video Tutorial : DOWNLOAD DISINI
HTML : DOWNLOAD DISINI