Thumbnail Sensor Warna TCS230

Cara mengakses module sensor warna TCS230 menggunakan Arduino

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

Bagian - bagian Sensor Warna TCS230

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

Blok diagram prinsip kerja Sensor Warna 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

  1. Arduino Uno
  2. Sensor TCS230
  3. Module Led RGB
  4. Resistor 220Ω @3pcs
  5. Kabel jumper
  6. Komputer + Software Arduino IDE

Skema yang perlu dirangkaikan

Rangkaian Sensor Warna TCS230 dengan arduino Uno.

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 <<

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *