Selection Sort merupakan salah satu
algoritma pengurutan yang sederhana. Ide dasarnya adalah melakukan
beberapa kali pass untuk melakukan penyeleksian elemen struktur data.
Untuk sorting ascending (menaik), elemen yang paling kecil di antara
elemen-elemen yang belum urut, disimpan indeksnya, kemudian dilakukan
pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan
elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting
descending (menurun), elemen yang paling besar yang disimpan indeksnya
kemudian ditukar.
Selection Sort diakui karena
kesederhanaan algoritmanya dan performanya lebih bagus daripada
algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini
bekerja sebagai berikut:
Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah list
Menukarkan nilai ini dengan elemen pertama list
Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua
Secara efisien kita membagi list menjadi dua bagian yaitu bagian
yang sudah diurutkan, yang didapat dengan membangun dari kiri ke kanan
dan dilakukan pada saat awal, dan bagian list yang elemennya akan
diurutkan.
contoh simulasi algoritma selection sort sbb :
jika kita memiliki elemen array sbb : {5, 1, 12, -5, 16, 2, 12, 14}
Algoritma pengurutan selection sort ini termasuk algoritma sulit dibagi/ mudah digabung (hard split/easy join). Dari proses pengurutannya, Selection sort ini memiliki dua buah varian yaitu :
1. Maximum Sort
memilih data yang
maksimum dari suatu kumpulan data larik, lalu menempatkan data tersebut
ke elemen paling akhir atau paling awal sesuai pengurutan yang
diinginkan. Data maksimum/minimum yang diperoleh, “diisolasi” dan tidak
diikutsertakan pada proses pencarian data maksimum berikutnya.
2. Minimum Sort
memilih data yang
minimum dari suatu kumpulan data larik , lalu menempatkan data tersebut
ke elemen paling akhir atau paling awal sesuai pengurutan yang
diinginkan. Data minimum yang diperoleh, “diisolasi” dan tidak
diikutsertakan pada proses pencarian data minimum berikutnya.
Dalam pemecahan masalah algoritma selection sort , kita dapat memilih dua metode alternatif algoritma antara lain pemecahan dengan metode Brute Force dan pemecahan dengan metode devide and conquer.
Metode Pemecahan Brute Force
Kekuatan algoritma brute force
terletak pada kemampuannya untuk menemukan semua pemecahan masalah yang
mungkin, akan tetapi langkah yang dibutuhkan sangat banyak sehingga
tidak baik jika digunakan untuk memecahkan masalah yang memiliki masukan
yang cukup besar.
Pada alat ini menggunakan empat buah sensor peka cahaya LDR
yang dipasang sebagai pelacak arah fokus datangnya sinar matahari, di mana ke
empat sensor tersebut membentuk formasi layang-layang sama sisi dan di
tengahnya terdapat sebuah LDR lagi yang berfungsi sebagai pembanding kuat
cahaya yang diterima oleh masing-masing sensor pada kondisi terfokusnya. Pada
kondisi sebuah sensor mempunyai kepekaan terkuat maka tracker akan bergerak
menuju arah tersebut hingga didapatkan suatu kondisi kepekaan sensor terkuat
tersebut sama dengan kepekaan yang diterima oleh sensor yang ditengah sebagai
pembandingnya. Pada aplikasinya keempat sensor tersebut masing-masing
dihubungkan dengan komparator pada input inverting, sementara sensor yang di
tengah dihubungkan pada keempat komparator tersebut pada input non
invertingnya.
Gambar 2 Skematik
Posisi dan Sistem Rangkaian Sensor
Berdasar prinsip kerja LDR dimana pada kondisi mendapatkan
cahaya maka tahanannya turun, sehingga dengan metode rangkaian diatas pada LDR
yang mendapatkan kuat cahaya terbesar maka tegangan yang dihasilkan adalah
tertinggi. Masing-masing tegangan keluaran LDR terhubung dengan terminal
inverting rangkaian komparator. Sehingga dengan sistem rangkaian diatas,
komparator akan menghasilkan logika tinggi jika salah satu dari ke empat LDR
mempunyai tegangan keluaran lebih besar dari tegangan keluaran pembadingnya.
Logika keluaran rangkaian komparator inilah yang digunakan sebagai sinyal
informasi bagi rangkaian pemrograman untuk menggerakkan motor DC menuju arah
LDR dengan tegangan terbesar tersebut. Dengan demikian Tracker akan mencari
sumber cahaya terkuat hingga didapatkan kondisi tegangan keluaran LDR
pembanding sama atau bahkan lebih besar dari keempat LDR yang dituju tersebut.
Pada kondisi ini keluaran komparator berlogika rendah sehingga melalui
pemrograman pada mikrokontroller putaran motor DC akan dihentikan.
SISTEM MINIMUM MIKROKONTROLER AT89S52
Dalam menjalankan chip IC
mikrokontroler MCS-51 memerlukan komponen elektronika pendukung lainnya. Suatu
rangkaian yang paling sederhana dan minim komponen pendukungnya disebut sebagai
suatu rangkaian sistem minimum. Dalam perancangan Tugas Akhir ini, sistem
minimum mikrokontroler AT89S52 terdiri dari:
1. Chip IC mikrokontroler AT89S52 keluarga MCS-51
2. Kristal 12 MHz
3. Kapasitor
4. Resistor
Gambar 3
Sistem Minimum Mikrokontroler AT89S52
Gambar 4
Diagram Alir Mikrokontroller sebagai Penggerak Solar Tracker
Berdasar diagram alir yang disusun diatas maka dapat
dirancang suatu metode pemrograman berbahasa assembler sebagai proses
pengalamatan data komparator.
PERANCANGAN
RANGKAIAN DRIVER
Rangkaian driver dirancang untuk mengaktifkan motor DC sebagai penggerak solar
tracker. Kombinasi rangkaian driver ini dirancang supaya motor DC dapat
berputar forward-reverse, menyesuaikan input program yang bekerja berdasar
pembacaan sinyal dari LDR. Rangkaian driver ini diperlukan untuk memberikan
pemisahan tegangan kontrol sebesar 5 volt yang dihasilkan dari keluaran
mikrokontroller menjadi tegangan sesuai yang dibutuhkan oleh motor DC tersebut.
Untuk merealisasi ide ini dilakukan dengan menggunakan transistor yang
memanfaatkan tegangan kecil dari mikrokontroller sebagai pemicu dioda
masukannya dan memberikan tegangan yang relatif lebih besar pada transistor
keluarannya. Metode reverse-foreward pada cara kerja motor DC dilakukan dengan
membalik arah arus yang melalui motor, hal ini direalisasikan dengan
menempatkan empat buah relay sebagai pembentuk arah arus dimana relay
digerakkan dari sebuah driver BD 139 yang memicu transistor D 313.
Gambar 5 Rangkaian Driver
Driver pada rangkaian diatas menggunakan BD 139 untuk memicu
transistor D 313 pada rangkaian daya penggerak motor DC. Untuk setiap motor
dengan arah gerakan referse forward digerakkan dengan menggunakan empat buah
relay (C1, C2, C3, C4) sebagai saklar daya yang membentuk kuadrant arah arus
yang masuk pada polaritas motor. Dimana C1 dan C2 aktif bersama sebagai pemicu
forward motor DC, dan C3 dan C4 aktif bersama sebagai pemicu reverse motor DC.
Dengan konfigurasi rangkaian seperti pada gambar diatas maka dapat daiuraikan
prinsip kerja aliran arus sebagai penggerak motor sebagai berikut, saklar C1
dan C2 mengalami kondisi ON – OFF secara bersama-sama demikian juga saklar C3
dan C4 karena keduanya dipicu dari sebuah transistor. Pada saat transistor S1
mendapatkan pulsa maka relay C1 dan C2 ON menyebabkan masing-masing kontak nya
terhubung ke NO sehingga motor pada sisi “a” menuju C1 terhubung ground dan
motor pada sisi “b” menuju C2 terhubung tegangan VCC. Kondisi ini menyebabkan
motor berputar pada arah tertentu (sebut saja kanan). Pada saat transistor S2
mendapatkan pulsa maka relay C3 dan C4 ON menyebabkan masing-masing kontaknya
terhubung ke NO sehingga motor pada sisi “a” menuju C4 terhubung tegangan VCC
dan motor pada sisi “b” menuju C3 terhubung ground. Kondisi ini menyebabkan
motor berputar pada arah sebaliknya. Dengan demikian berdasarkan pemicuan pulsa
pada transistor 1 dan 2 akan mengaktifkan ke empat relay tersebut untuk membuat
suatu kondisi motor berputar pada dua arah yang saling berlawanan. Sedangkan
pada BD 139 sendiri memiliki cara kerja dimana ketika tegangan dari output
mikrokontroller memicu dioda led pada pin 1, dioda tersebut akan memancarkan
sinar yang diterima oleh fototransistor sehingga transistor pada sisi keluaran
BD 139 menutup, hal ini menyebabkan arus pada sumber (VCC) mengalir dari
Kolektor menuju Emitor dan memicu transistor.
Untuk memnggerakan solar cell nya itu sendiri dapat
juga menggunakan listing program menggerakkan motor stepper full step. Listing program
ini dimaksudka agar dapat bergerak
sesuai derajat yang diinginkan.
MOV dx,ff13
MOV al,80
Outbdx,al
Mov dx.ff10
MOV cx,32
* PUSH cx
MOV si,200
MOV cx,4
* Push cx
MOV al,[si]
Out dx,al
MOV cx,7fff
Loop A
Pop cx
Inc si
Loop
Pop cx
Loop
Int 85