Pengujian Sensor Warna TCS230

Untuk menghidupkan sebuah LED, maka pin yang terhubung ke LED tersebut harus diberi nilai high 1. Sebaliknya, pin yang mendapat nilai low 0, maka LED- nya akan mati. Pengujian dilakukan dengan memberikan program sederhana pada mikrokontroller AT89S51. Berikut adalah program untuk pengujian rangkaian mikrokontroler AT89S51: Loop: mov p0,55h P0 0 1 0 1 0 1 0 1 acall tunda mov P0,0AAH P0 1 0 1 0 1 0 1 0 acall tunda sjmp Loop Short jump to loop tunda: mov r7,255 tnd: mov r6,255 Djnz r6, Djnz r7,tnd ret Program di atas akan menghidupkan LED yang terhubung ke pin P0.0, P0.2, P0.4 dan P0.6, berhenti sesaat lalu menghidupkan LED yang terhubung ke pin P0.1, P0.3, P0.5 dan P0.7, berhenti sesaat kemudian kembali lagi menghidupkan LED yang terhubung ke pin P0.0, P0.2, P0.4 dan P0.6. Demikian seterusnya. Rutin tunda berfungsi sebagai waktu berhenti sesaat sebelum LED lainnya dihidupkan. Dengan mengisikan nilai yang berbeda pada port 0, maka tampilannya juga berbeda. Pengujian yang sama juga dilakukan pada port 1, port 2 dan port 3.

4.2 Pengujian Sensor Warna TCS230

Output yang dihasilkan oleh sensor warna adalah frekuensi atau sinyal kotak. Output frekuensi tidak dapat langsung digunakan sebagai pembanding data dalam mikrokontroler, sehingga tidak dapat digunakan sebagai acuan dalam alat. Oleh karena itu, output frekuensi sensor warna TCS230 harus diubah dalam bentuk data- Universitas Sumatera Utara data digital. Untuk mengubah frekuensi menjadi data digital, program yang diisikan ke mikrokontroler adalah sebagai berikut: ; ========================================== ; ; program pembacaan data frekuensi ; ; ========================================== ; S2 bit p3.4 ;skala filter S3 bit p3.5 ;skala filter out bit p3.7 ;sinyal output start: mov r0,0 call RED call GREEN call BLUE call CLEAR mov p0,r0 jmp start RED: clr S2 clr S3 call scan ret GREEN: setb S2 setb S3 call scan ret BLUE: clr S2 setb S3 call scan ret Universitas Sumatera Utara CLEAR: setb S2 clr S3 call scan ret Scan: jnb out, jb out, inc r0 call interupt jnb out,Scan ret interupt: Mov r7,125 int: Mov r6,5 Djnz r6, Djnz r7,int Ret end. Program dimulai dengan mengosongkan isi register 0 r0 . Selanjutnya pada pemfilter merah RED S2 diset low0 dan S3 juga diset low0 dengan memberikan perintah clr . Lalu selama selang waktu pada rutin interupt , program scan dibaca dan sinyal ditambahkan pada r0 . Program dilanjutkan pada pemfilter hijau GREEN dengan menset S2 pada logika high1 dan S3 pada logika high1 yaitu dengan perintah setb . Lalu selama selang waktu pada rutin interupt , program scan dibaca dan sinyal ditambahkan kembali pada r0 . Lalu program dilanjutkan pada pemfilter biru BLUE dengan menset S2 low0 dan S3 high1. Lalu selama selang waktu pada rutin interupt , program scan dibaca dan sinyal ditambahkan lagi pada r0 . Kemudian diteruskan pada pemfilter tanpa warna CLEAR dengan menset S2 high1 dan S3 low0. Lalu selama selang waktu pada rutin interupt , program scan dibaca dan sinyal ditambahkan juga pada r0 . Selanjutnya sinyal atau data digital r0 dicopykan pada p0 untuk menampilkan data 8 bit pada led yang terhubung pada kedelapan pin. Universitas Sumatera Utara Program scan digunakan untuk membaca nilai frekuensi atau sinyal kotak. Pembacaan sinyal dimulai dengan jnb out, yang artinya jika sinyal out tidak bit maka baca sinyal sampai habis atau sinyal dengan pulsa low dibaca sampai habis. Kemudian jb out, yang artinya jika sinyal out bit maka baca sinyal sampai habis atau sinyal dengan pulsa high dibaca sampai habis. Atau dapat juga diartikan perintah jnb out, dan jb out, adalah baca frekuensi atau sinyal out sampai habis. Sinyal out tersebut kemudian ditambahkan pada r0 dan dilakukan selama selang waktu interupt . Jika setelah selang waktu interupt sinyal out kembali bit maka dilanjutkan pada program berikutnya. Rutin interupt adalah selang waktu pengambilan data. Atau dengan kata lain nilai frekuensi akan dibaca oleh mikrokontroler selama waktu tunda yang diberikan oleh interupt . Pembacaan dapat dihitung dengan perhitungan sebagai berikut : Mikrokontroller AT89S51 memerlukan 12 clock untuk mengeksekusi 1 siklus perintah dan pada rangkaian. Kristal yang digunakan adalah kristal 12 MHz, sehingga 1 siklus mesin membutuhkan waktu = Mhz clock 12 12 = 1 mikrodetik. Dari keterangan di atas diperoleh: Mnemonic Siklus Waktu Eksekusi MOV Rn,data 2 2 x 1 μd = 2 μd DJNZ 2 2 x 1 μd = 2 μd RET 1 1 x 1 μd = 1 μd interupt: Mov r7,125 int: Mov r6,5 Djnz r6, Djnz r7,int Ret Universitas Sumatera Utara Perintah Mov r6,5 dan Mov r7,125 masing masing terdiri dari 2 siklus mesin. Perintah djnz juga terdiri dari 2 siklus mesin. Sedangkan perintah ret terdiri dari 1 siklus mesin. Perintah Djnz r6, maksudnya adalah mengurangi nilai pada r6 sampai bernilai 0, berarti perintah djnz r6, pada program di atas dilakukan sebanyak 5 kali atau 5 x 2 = 10 μ d . Setelah nilai r6 bernilai 0 maka nilai pada r7 berkurang 1 nilai karena adanya perintah djnz r7, kemudian program akan kembali mengurangi nilai pada r6 sampai bernilai 0 kembali ke interupt sehingga perintah ini dilakukan sebanyak 125 kali. Dengan demikian dapat diketahui hasilnya adalah 10 x 125 = 1250 μ d . Hasil dari perkalian ini kemudian ditambahkan dengan 5 siklus berikutnya mov r6 = 2 siklus, mov r7 = 2 siklus, dan ret = 1 siklus sehingga hasil akhir didapatkan 1250 + 5 = 1255 μd . Jadi waktu yang diberikan untuk membaca data yang frekuensi input oleh mikrokontroler adalah selama 1255 μd.

4.3 Hasil Pengujian Sensor