Sensor Warna TCS230/TCS3200
Sensor Warna TCS230/TCS3200: Arduino dan Dunia Deteksi Warna
Dalam artikel ini, kita akan membahas dengan mendalam tentang Sensor Warna TCS230/TCS3200 dan juga akan membahas tentang bagaimana modul warna ini berfungsi sebagai sensor warna yang sangat berguna. Selain itu, Anda akan diajak untuk memahami cara mengaplikasikan sensor warna TCS230/TCS3200 untuk membuat peralatan pendeteksi warna berbasis Arduino yang efektif. Selain itu, dengan penjelasan yang jelas dan langkah-langkah praktis, Anda akan dapat mengoptimalkan potensi sensor ini dalam berbagai aplikasi deteksi warna yang menarik dan bermanfaat.
Dasar Teori
Sebelumnya, kita akan mengenal tentang Sensor Warna TCS230/TCS3200, yang merupakan konverter canggih untuk mengubah warna menjadi frekuensi dengan memanfaatkan silicon photodiode dan konverter arus ke frekuensi dalam IC CMOS monolithic tunggal.


Fungsi Pin Sensor Warna TCS230 :

Keluaran dari sensor ini berupa frekuensi gelombang kotak (duty cycle 50%), yang sejalan dengan intensitas cahaya (irradiance). Koneksi I/O dari modul sensor ini dapat langsung terhubung ke mikrokontroler atau sirkuit logika lainnya, yang selanjutnya akan memudahkan untuk integrasi dalam berbagai proyek. TCS230 memiliki 16 photodioda untuk setiap warna (biru, merah, hijau, dan tanpa penyaring), sementara TCS3200 memiliki 6 photodioda untuk setiap warna tersebut. Keunggulan dari sensor ini terletak pada kemampuan empat tipe warna photodiode yang berintegrasi, sehingga akan mengurangi efek ketidakseragaman insiden irradiance. Selanjutnya, semua photodioda dengan warna yang sama dihubungkan secara paralel, dengan bantuan Pin S2 dan S3 yang berfungsi untuk memilih grup photodioda yang aktif.
Karakteristik Sensor warna TCS230
IC TCS230 dapat dioperasikan dengan supply tegangan pada Vdd berkisar antara 2,7Volt – 5,5 volt, dalam pengoperasiannya sensor tersebut dapat dilakukan dengan dua cara :
- Dengan mode supply tegangan maksimum, yaitu dengan menyuplai tegangan berkisar antara 2,7volt – 5,5 volt pada sensor warna TCS230.
- Mode supply tegangan minimum , yaitu dengan menyuplai tegangan 0 sampai 0,8.
Sensor warna TCS230 terdiri dari 4 kelompok photodioda, masing – masing kelompok memiliki sensitivitas yang berbeda satu dengan yang lainnya pada respon photodioda terhadap panjang gelombang cahaya yang dibaca, photodioda yang mendeteksi warna merah dan clear memiliki nilai sensitivitas yang tinggi ketika mendeteksi intensitas cahaya dengan panjang gelombang 715 nm, sedangkan pada panjang gelombang 1100 nm photodioda tersebut memiliki nilai sensitivitas yang paling rendah, hal ini menunjukkan bahwa sensor TCS230 tidak bersifat linearitas dan memiliki sensitivitas yang berubah terhadap panjang gelombang yang diukur.

Alat dan Bahan
- Board Arduino Uno
- Modul Sensor Warna TCS230/TCS3200
- Kabel jumper
- PC/laptop + Software Arduino IDE.
- Kertas warna (Merah, Hijau, Biru, Putih, Hitam, Coklat)
Langkah Percobaan
- Pertama, susun rangkaian seperti pada gambar :
GB 2 Gambar Rangkaian Arduino – Sensor TCS230/3200
- Selanjutnya tulis Program seperti di bawah ini atau download .txt
—> Membaca nilai RGB dengan serial monitor// define color sensor pins #define S0 4 #define S1 5 #define S2 6 #define S3 7 #define sensorOut 8 int redMin = 16; int redMax = 291; int greenMin = 20; int greenMax = 340; int blueMin = 13; int blueMax = 271; int redPW = 0; int greenPW = 0; int bluePW = 0; int redValue; int greenValue; int blueValue; void setup(){ pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); pinMode(sensorOut, INPUT); digitalWrite(S0, HIGH); digitalWrite(S1, LOW); lcd.init(); lcd.init(); lcd.backlight(); Serial.begin(9600); } void loop(){ redPW = getRedPW(); redValue = map(redPW,redMin,redMax,255,0); delay(200); greenPW = getGreenPW(); greenValue = map(greenPW,greenMin,greenMax,255,0); delay(200); bluePW = getBluePW(); blueValue = map(bluePW,blueMin,blueMax,255,0); delay(200); Serial.print("Red = "); Serial.print(redValue); Serial.print("-Green = "); Serial.print(greenValue); Serial.print("-Blue = "); Serial.println(blueValue); } //Function to read red pulse widths int getRedPW(){ digitalWrite(S2,LOW); digitalWrite(S3,LOW); int PW; PW = pulseIn(sensorOut,LOW); return PW; } int getGreenPW(){ digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); int PW; PW = pulseIn(sensorOut,LOW); return PW; } int getBluePW(){ digitalWrite(S2,LOW); digitalWrite(S3,HIGH); int PW; PW = pulseIn(sensorOut,LOW); return PW; }
—> Menampilkan warna objek pada LCD I2C
// define color sensor pins #define S0 4 #define S1 5 #define S2 6 #define S3 7 #define sensorOut 8 #include #include LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display int redMin = 16; int redMax = 291; int greenMin = 20; int greenMax = 340; int blueMin = 13; int blueMax = 271; int redPW = 0; int greenPW = 0; int bluePW = 0; int redValue; int greenValue; int blueValue; void setup(){ pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); pinMode(sensorOut, INPUT); digitalWrite(S0, HIGH); digitalWrite(S1, LOW); lcd.init(); // initialize the lcd lcd.init(); // Print a message to the LCD. lcd.backlight(); Serial.begin(9600); } void loop(){ redPW = getRedPW(); redValue = map(redPW,redMin,redMax,255,0); delay(200); greenPW = getGreenPW(); greenValue = map(greenPW,greenMin,greenMax,255,0); delay(200); bluePW = getBluePW(); blueValue = map(bluePW,blueMin,blueMax,255,0); delay(200); Serial.print("Red = "); Serial.print(redValue); Serial.print("-Green = "); Serial.print(greenValue); Serial.print("-Blue = "); Serial.println(blueValue); if (redValue>236 && redValue<247 && greenValue>205 && greenValue<216 && blueValue>207 && blueValue<220) { Serial.println ("MERAH"); lcd.clear(); lcd.setCursor(0,0); lcd.print (" MERAH ");} if (redValue>240 && redValue<249 && greenValue>239 && greenValue<250 && blueValue>205 && blueValue<220) { Serial.println ("KUNING"); lcd.clear(); lcd.setCursor(0,0); lcd.print (" KUNING ");} if (redValue>196 && redValue<213 && greenValue>220 && greenValue<233 && blueValue>201 && blueValue<211) { Serial.println ("HIJAU"); lcd.clear(); lcd.setCursor(0,0); lcd.print (" HIJAU ");} if (redValue>190 && redValue<208 && greenValue>214 && greenValue<230 && blueValue>231 && blueValue<245) { Serial.println ("BIRU"); lcd.clear(); lcd.setCursor(0,0); lcd.print (" BIRU ");} delay(1000); if (redValue>191 && redValue<216 && greenValue>201 && greenValue<215 && blueValue>219 && blueValue<231) { Serial.println ("UNGU"); lcd.clear(); lcd.setCursor(0,0); lcd.print (" UNGU "); } delay(1000); } int getRedPW(){ digitalWrite(S2, LOW); digitalWrite(S3, LOW); int PW; PW = pulseIn(sensorOut, LOW); return PW; } int getGreenPW(){ digitalWrite(S2, HIGH); digitalWrite(S3, HIGH); int PW; PW = pulseIn(sensorOut, LOW); return PW; } int getBluePW(){ digitalWrite(S2, LOW); digitalWrite(S3, HIGH); int PW; PW = pulseIn(sensorOut, LOW); return PW; }
- Kemudian jalankan program, dan amati hasil pembacaan pada monitor untuk setiap warna kertas berbeda.
Hasil Percobaan
Data kalibrasi

Data pengujian dengan variasi jarak dan warna

Kalibrasi Sensor Warna TCS230/TCS3200
- Sebelum memulai pembacaan sensor, lakukan kalibrasi untuk Warna Putih
- Kemudian kalibrasi untuk Warna Hitam
Pengambilan Sample data RGB
- Hitam
Hitam 1 cm – 5 cm
- Kuning
Kuning 1 cm – 5 cm
- Biru
Biru 1 cm – 5 cm
- Hijau
Hijau 1 cm – 5 cm
- Merah
Merah 1 cm – 5 cm
- Putih
Putih 1 cm – 5 cm
Deteksi Warna
Pembahasan
Pertama, melakukan kalibrasi pada Sensor Warna TCS230/TCS3200 menggunakan warna yang berbeda-beda serta menguji pembacaan nilai RGB pada variasi warna yang berbeda. Putih untuk nilai minimum dan hitam untuk nilai maksimal, seperti pada tabel berikut :

Pada percobaan selanjutnya, tuliskan nilai minimum dan maksimum yang sudah terkalibrasi pada program berikutnya. Kemudian pada percobaan ini akan menampilkan nilai variasi warna yang berbeda pada serial monitor. Kemudian saat kita memberikan jarak yang berbeda sekitar 1-5 cm pada objek warna, dapat kita lihat pada tabel hasil percobaan di atas, pembacaan nilai RGB akan mengalami perbedaan dan cenderung menurun, jika jarak objek semakin jauh. Meskipun ada beberapa warna yang stabil.
Kesimpulan
Akhirnya dari Percobaan Sensor Warna TCS230/TCS3200 menghasilkan nilai pembacaan yang cukup baik. Semakin jauh sensor terhadap warna objek, maka nilainya semakin turun. Namun ada juga yang stabil terhadap jarak.