Anda di halaman 1dari 21

LAPORAN PRAKTIKUM

LABORATORIUM SENSOR DAN TRANSDUSER


SENSOR WARNA TCS230
EK-2C

Dosen Pengampu :

Achmad Fahrul Aji, S.ST., M.T.

Disusun Oleh :
1. Ahmat Japar Sodiq (3.32.22.2.01)
2. Azra Tiarani (3.32.22.2.03)
3. Firda Pramesthi (3.32.22.2.06)

PROGRAM STUDI D3-TEKNIK ELEKTRONIKA


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2023
I. TUJUAN
1. Mahasiswa dapat mengetahui prinsip kerja dari Sensor Warna TCS230.
2. Mahasiswa dapat mengetahui cara mengukur dan mengidentifikasi warna menggunakan
sensor suhu Warna TCS230 serta menampilkannya pada LCD.
3. Mahasiswa dapat mengetahui pemahaman tentang potensi aplikasi sensor warna TCS230
dalam berbagai bidang, seperti industri, robotika, pengenalan warna otomatis, dan
sebagainya.
4. Mahasiswa dapat mengetahui karakteristik setiap warna (mendeteksi warna) dan mencatat
nilai RGB ,sehingga bisa membuat pendeteksi warna.

II. DASAR TEORI


1. Sensor Warna
Sebelum memahami dan menerapkan penggunaan sensor secara rinci, perlu
dipelajari sifat-sifat dan klasifikasi dari sensor secara umum. Sensor adalah komponen
listrik atau elektronik, dimana sifat atau karakter kelistrikannya diperoleh atau diambil
melalui besaran listrik (contoh: arus listrik,tegangan listrik atau juga bisa diperoleh dari
besaran bukan listrik, contoh: gaya, tekanan yang mempunyai besaran bersifat mekanis,
atau temperatur bersifat besaran thermis, dan bisa juga besaran bersifat kimia, bahkan
mungkin bersifat besaran optis).
Sensor dibedakan sesuai dengan aktifitas sensor yang didasarkan atas konversi
sinyal yang dilakukan dari besaran sinyal bukan listrik (non electric signal value) ke
besaran sinyal listrik (electric signal value) yaitu: sensor aktif (active sensor) dan sensor
pasif (passive sensor). RGB (Red Green Blue) adalah ruang warna asli yang digunakan
pada system grafik computer yang merupakan system warna untuk menangkap gambar.
RGB digunakan karena mata manusia sensitif terhadap warna merah, hijau, dan biru
2. Sensor Warna TCS230
Sensor warna TCS230 adalah sensor warna yang sering digunakan pada aplikasi
mikrokontroler untuk pendeteksian suatu object benda atau warna sari objek yang
dimonitor. Sensor warna TCS230 juga dapat digunakan sebagai sensor gerak, dimana
sensor mendeteksi gerakan suatu object berdasarkan perubahan warna yang diterima oleh
sensor. Pada dasarnya sensor warna TCS230 adalah rangkaian photo dioda yang disusun
secara matrik array 8 x 8 dengan 16 buah konfigurasi photodioda yang berfungsi sebagai
filter warna merah, 16 photodioda sebagai filter warna biru dan 16 photodioda lagi tanpa
filter warna. Sensor warna TCS230 merupakan sensor yang dikemas dalam chip DIP 8 pin
dengan bagian muka transparan sebagai tempat menerima intensitas cahaya yang
berwarna. Gambar 2.3 menunjukkan bentuk fisik sensor warna TCS230, dan skema pin
sensor tersebut.
Sensor warna TCS230 bekerja dengan cara membaca nilai intensitas cahaya yang
dipancarkan oleh led super bright terhadap objek, pembacaan nilai intensitas cahaya
tersebut dilakukan melalui matrik 8 x 8 photodioda, dimana 64 photo dioda tersebut dibagi
menjadi empat kelompok pembaca warna, setiap warna yang disinari LED akan
memantulkan sinar LED menuju photodioda, pantulan sinar tersebut memiliki panjang
gelombang yang berbeda – beda tergantung pada warna objek yang terdeteksi, hal ini yang
membuat sensor warna TCS230 dapat membaca beberapa macam warna.
Panjang gelombang dan sinar LED yang dipantulkan objek berwarna berfungsi
mengaktifkan salah satu kelompok photodioda pada sensor warna tersebut, sehingga
ketika kelompok photodioda yang digunakan telah aktif, S2 dan S3 akan mengirimkan
sinyal ke mikrokontroler untuk menginformasikan warna yang dideteksi.

Semakin besar temperatur koefisien yang diperoleh dari photodioda, maka semakin
jauh panjang gelombang yang dihasilkan oleh sensor, dimana besar atau kecil temperatur
koefisien tersebut dipengaruhi oleh keadaan panjang gelombang atau pencahayaan, hal ini
menunjukkan bahwa sensor TCS230 memiliki karaktersitik panjang gelombang yang
linear.
3. Arduino UNO
Arduino adalah suatu jenis mikrokontroler dengan platform open source hardware
yang berdasarkan pada perangkat keras dan perangkat lunak fleksibel dan mudah
digunakan. Arduino tidak hanya sekedar sebuah alat pengembangan, tetapi ia adalah
kombinasi dari hardware, bahasa pemrograman dan Integrated Development Environment
(IDE) yang canggih. IDE adalah sebuah software yang sangat berperan untuk menulis
program, mengkompilasi menjadi kode biner serta mengirim dan menyimpan ke dalam
memori mikrokontroler Arduino. Arduino UNO terdiri dari sebuah papan mikrokontroler
yang mempunyai 14 pin digital input-output (6 di antaranya dapat digunakan sebagai
output PWM), 6 input analog, sebuah osilator kristal 16 MHz, sebuah koneksi USB,
sebuah power jack, sebuah ICSP header dan sebuah tombol reset.

Pin digital pada Arduino UNO yang berjumlah 14 buah dapat digunakan sebagai
input dan juga sebagai output dengan menggunakan fungsi pinMode(), digitalWrite() dan
digitalRead(). Fungsi-fungsi tersebut beroperasi di tegangan 5V. Setiap pin dapat
memberikan atau menerima arus maksimum 40mA dan mempunyai sebuah resistor pullup
(terputus secara default) sekitar 20 hingga 50kΩ.

4. LCD (Liquid Crystal Display) 16x2 dengan I2C


LCD (Liquid Crystal Display) adalah suatu jenis media tampilan yang
menggunakan kristal cair sebagai penampil utama. LCD (Liquid Crystal Display) bisa
menampilkan suatu gambar/karakter dikarenakan terdapat banyak sekali titik cahaya
(piksel) yang terdiri dari satu buah kristal cair sebagai titik cahaya. Walau disebut sebagai
titik cahaya, namun Kristal cair ini tidak memancarkan cahaya sendiri. LCD 16x2 dapat
menampilkan sebanyak 32 karakter yang terdiri dari 2 baris dan tiap baris dapat
menampilkan 16 karakter. Pada LCD 16×2 pada umumnya menggunakan 16 pin sebagai
kontrolnya, tentunya akan sangat boros apabila menggunakan 16 pin tersebut.
Karena itu, digunakan driver khusus sehingga LCD dapat dikontrol dengan modul
I2C atau Inter-Integrated Circuit. Dengan modul I2C, maka LCD 16x2 hanya memerlukan
dua pin untuk mengirimkan data dan dua pin untuk pemasok tegangan. Sehingga hanya
memerlukan empat pin yang perlu dihubungkan ke NodeMCU yaitu :

GND : Terhubung ke ground


VCC : Terhubung dengan 5V
SDA : Sebagai I2C data dan terhubung ke pin A4
SCL : Sebagai I2C data dan terhubung ke pin A5

III. ALAT DAN BAHAN


1. Software Arduino IDE
2. Arduino Uno 1 buah
3. Kabel LAN 1 buah
4. Sensor Warna TCS230 1 buah
5. Liquid Crystal Display + I2C 1 buah
6. Kabel Jumper secukupnya

IV. LANGKAH PERCOBAAN


a. Percobaan 1
Mengukur Kalibrasi Warna pada Warna Terang dan Gelap dengan sesnsor warna TCS230.
1. Hubungkan sensor warna TCS230 ke arduino dengan kabel jumper. Pastikan telah
terhubung pin output sensor (misalnya, S0, S1, OUT, dll.) dengan pin arduino yang
sesuai
2. Buatlah program yang sesuai dengan pengukuran Kalibrasi Warna pada Warna Terang
dan Gelap dengan sesnsor warna TCS230.
3. Untuk kalibrasi warna terang Tempatkan objek dengan warna terang (misalnya, putih
atau kuning) di depan sensor. Baca data keluaran dari sensor warna TCS230 dan catat
hasilnya. Ini akan menjadi referensi warna terang
4. Untuk kalibrasi warna gelap gantilah objek dengan warna yang lebih gelap (misalnya,
hitam atau biru gelap). Baca data keluaran dari sensor warna TCS230 dan catat
hasilnya. Ini akan menjadi referensi warna gelap.

b. Percobaan 2
Mengukur RGB dari setiap Warna yang ditentukan dengan jarak 0-2 cm menggunakan
Sensor warna TCS230
1. Pastikan sensor TCS230 masih terhubung ke Arduino Uno dengan benar, seperti yang
telah dilakukan pada percobaan pertama. Siapkan objek yang akan diukur, misalnya,
benda berwarna merah, hijau, dan biru. Pastikan objek tersebut telah dikalibrasi sesuai
dengan langkah-langkah percobaan pertama.
2. Buatlah program yang sesuai dengan pengukuran RGB dari setiap Warna yang
ditentukan dengan jarak 0-2 cm menggunakan Sensor TCS230.
3. Tentukan jarak antara sensor dan objek yang akan diukur. Jika ingin mengukur RGB
dari objek pada jarak 0-2 cm dapat menggunakan alat seperti penggaris untuk
mengukur jarak ini.
4. Pada setiap jarak yang diatur, aktifkan pemancar cahaya pada sensor dan baca nilai
PWM (Pulse Width Modulation) yang dihasilkan oleh komponen warna merah, hijau,
dan biru (R, G, B). Catat nilai-nilai ini untuk setiap komponen warna pada setiap jarak
yang diukur.
5. Setelah selesai mengukur nilai RGB pada berbagai jarak, dapat menganalisis data
yang telah terkumpul. Hal ini dapat membuat grafik atau plot untuk melihat
bagaimana nilai RGB berubah seiring dengan jarak dari objek. Analisis data ini dapat
membantu memahami bagaimana sensor merespons warna pada jarak tertentu
6. Selain merah, hijau, dan biru, juga dapat mengulangi percobaan ini dengan warna lain
yang relevan. Pastikan objek yang digunakan telah dikalibrasi sebelumnya.
c. TUGAS 1
Membuat Program pada Arduino untuk menebak Warna yang sesuai menggunakan Sensor
warna TCS230
1. Pastikan sensor TCS230 masih terhubung ke Arduino Uno dengan benar, seperti yang
telah dilakukan pada percobaan sebelumnya. Pastikan telah melakukan kalibrasi
sensor TCS230 sesuai dengan percobaan sebelumnya.
2. Buatlah program yang sesuai dengan percobaan pengukuran menebak warna yang
sesuai menggunakan sensor warna TCS230
3. Program harus melakukan pengukuran warna menggunakan sensor TCS230. Ini dapat
dilakukan dengan cara mengukur nilai PWM (Pulse Width Modulation) yang
dihasilkan oleh sensor untuk komponen warna merah, hijau, dan biru (R, G, B).
4. Berdasarkan hasil pengukuran warna, program harus memiliki logika untuk
menentukan warna yang sesuai. Juga dapat menggunakan aturan berdasarkan nilai-
nilai R, G, dan B yang sesuai dengan warna tertentu. Misalnya, jika R > G dan R > B,
maka warna adalah merah.
5. Hasil penentuan warna harus ditampilkan kepada pengguna. Jika menggunakan LCD,
dapat menampilkan warna yang terdeteksi pada layar. Jika tidak menggunakan
tampilan fisik, dapat mengirimkan hasil ke Serial Monitor pada Arduino IDE.
6. Program harus terus berjalan dalam loop dan mampu mendeteksi warna berulang kali
sesuai dengan perubahan objek yang ditempatkan di bawah sensor. Dapat
menambahkan interaksi pengguna, misalnya, meminta pengguna untuk meletakkan
objek berwarna di bawah sensor.

V. SKEMATIK RANGKAIAN
VI. DATA PERCOBAAN
A. Percobaan 1
Mengukur Kalibrasi Warna pada Warna Terang dan Gelap dengan sesnsor warna
TCS230.
1. Program
// Program Untuk Mencari Nilai R, G, dan B Dari Suatu Warna
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 2
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dan ukuran LCD


(16x2)
// max = gelap, min = terang
int redMin = 22;
// nilai diperoleh dari kalibrasi
int redMax = 353;
// nilai diperoleh dari kalibrasi
int greenMin = 26;
// nilai diperoleh dari kalibrasi
int greenMax = 506;
// nilai diperoleh dari kalibrasi
int blueMin = 22;
// nilai diperoleh dari kalibrasi
int blueMax = 425;
// nilai diperoleh dari kalibrasi
int redPW = 0;
int greenPW = 0;
int bluePW = 0;
int redValue;
int greenValue;
int blueValue;

void setup()
{
lcd.init();
lcd.backlight();
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
pinMode(sensorOut, INPUT);
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);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("R:");
lcd.setCursor(2, 0);
lcd.print(redValue);
lcd.setCursor(5, 0);
lcd.print("G:");
lcd.setCursor(7, 0);
lcd.print(greenValue);
lcd.setCursor(10, 0);
lcd.print("B:");
lcd.setCursor(12, 0);
lcd.print(blueValue);

lcd.setCursor(0, 1);
lcd.print("Warna:");
lcd.setCursor(6, 1);
if (redValue>=200 && redValue
<=255&&greenValue>=140&&greenValue<=170&&blueValue>=150&&blueValue<=1
90)
{
lcd.println("Merah");
}
else if (redValue>=130 && redValue
<=190&&greenValue>=160&&greenValue<=255&&blueValue>=150&&blueValue<=2
00)
{
lcd.println("Hijau");
}
else if (redValue>=110 && redValue
<=190&&greenValue>=180&&greenValue<=240&&blueValue>=190&&blueValue<=2
55)
{
lcd.println("Biru");
}

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;
}
2. Hasil Percobaan
Warna Gelap Terang
R 304 18
G 350 21
B 292 22

B. Percobaan 2
Mengukur RGB dari setiap Warna yang ditentukan dengan jarak 0-2 cm menggunakan
Sensor warna TCS230
1. Program
#include <LiquidCrystal_I2C.h> //memasukan library LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); //Setting alamat I2C dan
ukuran LCD
//Program Untuk Mencari Nilai R, G dan B Dari Suatu Warna
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

int redMin = 23;


int redMax = 278;
int greenMin = 31;
int greenMax = 378;
int blueMin = 30;
int blueMax = 411;
//nilai diperoleh dari kalibrasi int redPW = 0;
int redPW = 0;
int greenPW = 0;
int bluePW = 0;
int redValue;
int greenValue;
int blueValue;

void setup() {
lcd.init();
lcd.backlight();
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
pinMode(sensorOut, INPUT);
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 : ");

if(redValue > greenValue && redValue > blueValue){


lcd.setCursor(0,1);
lcd.print("MERAH");

if(greenValue > redValue && greenValue > blueValue){


lcd.setCursor(0,1);
lcd.print("HIJAU");
}

if(blueValue > redValue && blueValue > greenValue) {


lcd.setCursor(0,1);
lcd.print("BIRUU");
}
if(blueValue <= 208 && blueValue > 175 && redValue <= 225 &&
redValue > 192 && greenValue <= 216 && greenValue > 178 ){
lcd.setCursor(0,1);
lcd.print("COKLAT");
}
if(greenValue <= 261 && greenValue > 211 && blueValue <= 258 &&
blueValue > 210 && redValue <= 263 && redValue > 209){
lcd.setCursor(0,1);
lcd.print("kuning");
}
if(greenValue <= 261 && greenValue > 211 && blueValue <= 258 &&
blueValue > 210 && redValue <= 263 && redValue > 209){
lcd.setCursor(0,1);
lcd.print("kuning");
}
}

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;

lcd.clear();
}

2. Hasil Percobaan
Jarak (cm)
Warna Pengukuran
0 1 2
R 238 231 206
MERAH G 149 166 144
B 169 180 149
R 254 247 248
KUNING G 249 250 238
B 248 240 232
R 222 198 177
HIJAU G 232 214 189
B 213 191 166
R 207 183 168
BIRU G 239 224 209
B 242 228 207
R 255 241 230
COKELAT G 239 224 208
B 226 205 193

C. TUGAS 1
1. Program
#include <LiquidCrystal_I2C.h> //memasukan library LCD I2C

LiquidCrystal_I2C lcd(0x27, 16, 2); //Setting alamat I2C dan


ukuran LCD
//Program Untuk Mencari Nilai R, G dan B Dari Suatu Warna
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
#include <Wire.h>

int redMin = 23;


int redMax = 278;
int greenMin = 31;
int greenMax = 378;
int blueMin = 30;
int blueMax = 411;
//nilai diperoleh dari kalibrasi int redPW = 0;
int redPW = 0;
int greenPW = 0;
int bluePW = 0;
int redValue;
int greenValue;
int blueValue;

void setup() {
lcd.init();
lcd.backlight();
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
pinMode(sensorOut, INPUT);
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);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("R:");
lcd.setCursor(2, 0);
lcd.print(redValue);
lcd.setCursor(5, 0);
lcd.print("G:");
lcd.setCursor(7, 0);
lcd.print(greenValue);
lcd.setCursor(10, 0);
lcd.print("B:");
lcd.setCursor(12, 0);
lcd.print(blueValue);

lcd.setCursor(0, 1);
lcd.print("Warna:");
lcd.setCursor(6, 1);

if(redValue > greenValue && redValue > blueValue){


lcd.setCursor(0,1);
lcd.print("MERAH");

if(greenValue > redValue && greenValue > blueValue){


lcd.setCursor(0,1);
lcd.print("HIJAU");
}

if(blueValue > redValue && blueValue > greenValue) {


lcd.setCursor(0,1);
lcd.print("BIRUU");
}
if(blueValue <= 208 && blueValue > 175 && redValue <= 225 &&
redValue > 192 && greenValue <= 216 && greenValue > 178 ){
lcd.setCursor(0,1);
lcd.print("COKLAT");
}
if(greenValue <= 261 && greenValue > 211 && blueValue <= 258 &&
blueValue > 210 && redValue <= 263 && redValue > 209){
lcd.setCursor(0,1);
lcd.print("kuning");
}
if(greenValue <= 261 && greenValue > 211 && blueValue <= 258 &&
blueValue > 210 && redValue <= 263 && redValue > 209){
lcd.setCursor(0,1);
lcd.print("kuning");
}
}

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;

lcd.clear();
}

2. Hasil Percobaan
Pada tugas 1, kita diminta untuk membuat program yang dapat menebak warna
berdasarkan pembacaan sensor TCS230. Program ini harus mampu mengenali
beberapa warna seperti merah, hijau, biru, coklat, hitam, putih, dan kuning.
VII.PEMBAHASAN
Pertama, melakukan kalibrasi pada sensor warna TCS320 menggunakan warna yang
beerbeda-beda serta menguji pembacaan nilai RGB pada variasi warna yang berbeda.
Putih untuk nilai minimum dan hitam untuk nilai maksimal, seperti pada tabel berikut:
Warna Gelap Terang
R 304 18
G 350 21
B 292 22
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
percobaandi atas, pembacaan nilai RGB akan mengalami perbedaan dan cenderung
menurun, jika jarak objek semakin jauh. Meskipun ada beberapa warna yang stabil.

VIII. KESIMPULAN
Akhirnya dari percobaan sensor warna TCS230 merupakan nilai pembacaan yang
cukup baik. Semakin jauh sensor terhadap warna objek, maka nilainya semakin turun.
Namun ada juga yang stabil terhadap jarak.

IX. LAMPIRAN
Percobaan 1
GELAP
TERANG
Percobaan 2
RED

KUNING
Biru

Anda mungkin juga menyukai