Kali ini saya akan sharing tentang interfacing module sensor warna tcs230 produksi parallax yang juga telah saya posting pada situs
avrfreaks. Dalam pembacaan data, sebenarnya sensor ini cukup rumit karena data outputnya berupa frekuensi pulsa kotak dengan duty cycle 50 %. Maka dari itu diperlukan suatu frekuensi reader. disini saya memfungsikan uC ATMega8535 sebagai pembaca frekuensi. saya tidak menggunakan timer/counter uC untuk menghitung frekuensi yang masuk, melainkan menghitung lama waktu high dan low satu gelombang penuh sebagai periode nya, maka tinggal 1/periode akan menghasilkan nilai frekuensi. pada sourcecode dapat dilihat count++ akan mencacah pada high dan low 1 gelombang penuh. jumlah cacahan tersebut dikalikan dengan lama waktu 1 kali pengulangan count++ sehingga diperoleh periodenya.
modul sensor warna tcs230
sensor ini mempunya 4 buah mode filter warna yaitu mode clear, mode filter merah,mode filter hijau,mode filter biru. disini filter yang dimaksud adalah range panjang gelombang atau lambda cahaya yang bisa diterima oleh photodioda. grafik range lambda bisa dilihat pada datasheet. output akhir dari sensor ini adalah komposisi warna Red-Green-Blue atau bisa dikenal dengan RGB. unuk bisa mendapakan RGB dari suatu object, maka sensor harus dikalibrasi dulu dengan warna putih sebagai referensinya. jarak pengambilan data harus 2 cm dari sensor. kalibrasi warna putih menggunakan kertas HVS putih.
kalibrasi dilakukan dengan cara mengganti mode filter. yang pertama filter diset mode merah kemudian frekuensinya dicatat dan perlakuan ini berlaku juga untuk filter hijau dan filter biru. nilai frekuensi yang diperoleh diasumsikan sebagai nilai maksimum atau 255 untuk R ,G dan B. frekuensi maksimum tersebut kemudian dibagi dengan 255 untuk mendapatkan resolusi 8 bit tiap warna. pada project ini, mode filter berganti terus-menerus secara otomatis dengan urutan R-G-B. untuk mengetahui setting dari filter silakan merujuk ke datasheet.
input yang saya gunakan adalah PORTB.1. tetapi anda bisa menggantinya sesuai dengan keinginan anda sendiri. secara berurutan S0,S1,S2,S3 dimasukkan pada PORTA.3 – PORTA.6 dari mikrokontroller. PORTA.7 untuk tegangan LED di sensor. data RGB tersebut akan ditampilkan pada LCD 16×2. sourcecode ditulis dalam bahasa C dengan kompiler CodeVisionAVR.
Berikut adalah potongan sourcecode yang bisa digunakan :
027 | #define redref (27795/255) |
028 | #define greenref (33066.7/255) |
029 | #define blueref (34720/255) |
033 | .equ __lcd_port=0x15 ;PORTC |
155 | sprintf (lcd_buffer, "R:%d G:%d B:%d" ,red,green,blue); |
0 komentar:
Post a Comment