Penjelasan Singkat
Module sensor warna TCS230 adalah module sensor yang mempunyai fungsi mengkonversi warna yang akan dideteksi menjadi Frekuensi yang akan diolah oleh mikrokontroler.
Nama lain dari sensor ini yaitu Programmable Converter ‘Color Light’ Sensor to Frequency.
Yang dimana bahan pembuatannya berasal dari penggabungan antara Silicon Photodiode dan IC CMOS single monolithic yang berfungsi sebagai pengkonversi arus menjadi frekuensi.
Cara kerja sensor
Keluaran dari sensor warna ini yaitu berupa gelombang persegi dengan modulasi 50% yang dimana berbanding lurus dengan intensitas cahaya yang terbaca oleh sensor.
Bagian – bagian penting dari sensor warna TCS230 tertampil pada gambar dibawah
Pada sensor terdapat sebuah photodiode dengan array 8 x 8 yang mengkonversi warna menjadi frekuensi, yang terdiri dari :
- 16 dioda untuk filter merah
- 16 dioda untuk filter hijau
- 16 dioda untuk filter biru
- 16 dioda untuk clear (tanpa filter)
Dari kesemua dioda diatas terhubung ke dalam rangkaian paralel yang menggunakan metode switching pin (S0,S1,S2,S3).
Blok diagram TCS230
Pada tiap ke-16 fotodioda tersebut terhubung secara paralel, melihat gambar diatas dengan menggunakan 2 pin kontrol S2 dan S3 dapat memilih mana yang akan dibaca. Sehingga jika mendeteksi warna merah, dapat menggunakan 16 red difference photodiodes dengan mengatur dua pin ke tingkat logika rendah.
[irp]
Sensor memiliki 2 pin kontrol, S0 dan S1 yang berfungsi untuk mengukur frekuensi keluaran. Frekuensi ini dapat di adjust dengan 3 nilai preset yang berbeda yaitu 100%, 20% atau 2%. Penskalaan frekuensi bertujuan untuk berbagai penghitung frekuensi dalam optimimalisasi keluaran sensor.
Tutorial mengakses Sensor warna TCS230 dengan LED RGB
Komponen yang dibutuhkan
- Arduino Uno
- Sensor TCS230
- Module Led RGB
- Resistor 220Ω @3pcs
- Kabel jumper
- Komputer + Software Arduino IDE
Skema yang perlu dirangkaikan
Arduino program code TCS230
// www.nyebarilmu.com //Wiring PIN Sensor TCS3200 / TCS230 int s0=3;int s1=4;int s2=5;int s3=6;int out=7; // sebagai indikator Warna Object telah dideteksi const int LED=13; void TCS3200(){ pinMode(LED,OUTPUT); pinMode(s2,OUTPUT);pinMode(s3,OUTPUT);pinMode(s0,OUTPUT);pinMode(s1,OUTPUT); return; } void setup(){ //Prosedur pemanggilan fungsi sensor TCS3200 TCS3200(); //Setting output untuk LED RGB pinMode (10, OUTPUT); //Warna merah pinMode (11, OUTPUT); //warna hijau pinMode (12, OUTPUT); //warna biru Serial.begin(9600); delay(200); } void loop(){ Serial.print(detectColor(out)); delay(200); } unsigned int detectColor(int taosOutPin){ double isPresentTolerance=1; //range nilai tolerance yaitu 1 - 10 //Fungsi tolerance yaitu penghindar noise pembacaan sensor double isPresent=colorRead(taosOutPin,0,0)/colorRead(taosOutPin,0,1); Serial.print("isPresent:");Serial.println(isPresent,2); Serial.print("isPresentTolerance curently set to:");Serial.println(isPresentTolerance,2); if(isPresent<isPresentTolerance){ Serial.println("nothing is in front of sensor"); return 0; } double red,blue,green; double white = colorRead(taosOutPin,0,1); unsigned int maxColor = white; unsigned int red2, blue2, green2; //Mode pendeteksian warna merah red = white/colorRead(taosOutPin,1,1);red2=red*255/maxColor; //Mode pendeteksian warna hijau green = white/colorRead(taosOutPin,3,1);green2=green*255/maxColor; //Mode pendeteksian warna biru blue = white/colorRead(taosOutPin,2,1);blue2=blue*255/maxColor; Serial.print("red :");Serial.println(red2); if(red2>20){analogWrite (9, red2);} else {analogWrite (9, 0);} Serial.print("green :");Serial.println(green2); if(green2>20){analogWrite (10, green2);}else {analogWrite (10, 0);} Serial.print("blue :");Serial.println(blue2); if(blue2>20){analogWrite (11, blue2);}else {analogWrite (11, 0);} } unsigned int colorRead(unsigned int taosOutPin,unsigned int color, boolean LEDstate) { pinMode(taosOutPin, INPUT); taosMode(1); int sensorDelay=1; if(color==0){digitalWrite(s3, LOW);digitalWrite(s2, HIGH);} else if(color==1){digitalWrite(s3, LOW);digitalWrite(s2, LOW);} else if(color==2){digitalWrite(s3, HIGH);digitalWrite(s2, LOW);} if(color==3){digitalWrite(s3, HIGH);digitalWrite(s2, HIGH);} unsigned int readPulse; if(LEDstate==0){digitalWrite(LED, LOW);} if(LEDstate==1){digitalWrite(LED, HIGH);} delay(sensorDelay); readPulse=pulseIn(taosOutPin, LOW, 25000)/2; if( readPulse<.1){readPulse = 25000;} taosMode(0); return readPulse; } void taosMode(int mode){ if(mode==0){digitalWrite(LED,LOW);digitalWrite(s0,LOW);digitalWrite(s1,LOW);} else if(mode==1){digitalWrite(s0,HIGH);digitalWrite(s1,HIGH);} else if(mode==2){digitalWrite(s0,HIGH);digitalWrite(s1,LOW);} else if(mode==3){digitalWrite(s0,LOW);digitalWrite(s1,HIGH);} return; }
Hasil dari trial dapat dilihat di serial monitor arduino, dan dipraktekan dengan menyediakan kertas dengan warna merah, hijau dan biru. Yang dimana ketiga warna tersebut merupakan warna dasar dari semua warna.
[irp]
Selain itu program diatas dapat dikembangkan dengan penampil module LCD 16×2 serta data logging. Sehingga data yang terbaca dapat langsung tertampil sehingga tidak perlu membutuhkan komputer lagi.
Selamat mencoba!
Terimakasih sudah berkunjung, dan semoga bermanfaat. Salam nyebarilmu.com!
>> CMIIW <<