MASIGNALPHAS2101
6680671983845063762

Cara Membuat Alat Pendeteksi Warna dengan Sensor LDR dan RGB

Cara Membuat Alat Pendeteksi Warna dengan Sensor LDR dan RGB
Add Comments
4/09/2020
LDR (Light Dependent Resistor) merupakan salah satu komponen elektronika yang dapat berubah resistansinya ketika mendeteksi perubahan intensitas cahaya yang diterimanya, sehingga LDR dapat juga dikatakana sebagai sensor cahaya. Karakteristik dari LDR ini ialah LDR akan berubah resistansinya / tahanannya ketika terjadi perubahan cahaya yang dideteksinya. Biasanya LDR terbuat dari cadmium sulfida yaitu merupakan bahan semikonduktor yang resistansnya berupah-ubah menurut banyaknya cahaya (sinar) yang mengenainya
Introduction
Sensor cahaya adalah sebuah alat yang digunakan untuk mengubah besaran cahaya menjadi besaran listrik. Alat ini memungkinkan kita untuk melakukan pendeteksian cahaya dan kemudian untuk melakukan perubahan terhadapnya menjadi sinyal listrik dan dipakai dalam sebuah rangkaian yang memakai cahaya sebagai pemicunya. Sensor ini dapat mengalami perubahan resistansinya apabila mengalami perubahan penerimaan cahaya. Besarnya nilai hambatan pada Sensor Cahaya LDR (Light Dependent Resistor) tergantung pada besar kecilnya cahaya yang diterima oleh LDR itu sendiri.

Lihat video dibawah untuk melihat Cara Kerja dari sensor ini.
Hardware
Beberapa komponen yang digunakan dalam pembuatan alat ini adalah:
  1. Arduino Uno
  2. Sensor RGB
  3. LED RGB
  4. Resistor 220 ohm dan 4.7K ohm
Characteristics
Karakteristik Sensor Cahaya LDR (Light Dependent Resistor) Sensor Cahaya LDR (Light Dependent Resistor) adalah suatu bentuk komponen yang mempunyai perubahan resistansi yang besarnya tergantung pada cahaya. Karakteristik LDR terdiri dari dua macam, yaitu Laju Recovery dan Respon Spektral :
  1. Laju Recovery, Laju recovery merupakan suatu ukuaran praktis dan suatu kenaikan nilai resistansi dalam waktu tertentu. Nilai ini ditulis dalam K/detik, untuk LDR type arusnya lebih besar dari 200 K/detik (selama 20 menit pertama mulai dari level cahaya 100 lux), kecepatan tersebut akan lebih tinggi pada arah sebaliknya, yaitu pindah dari tempat gelap ke tempat terang yang memerlukan waktu kurang dari 10 ms untuk mencapai resistansi yang sesuai dengan level cahaya 400 lux. 
  2. Respon Spektral, LDR tidak mempunyai sensitivitas yang sama untuk setiap panjang gelombang cahaya yang masuk. Bahan yang digunakan sebagai penghantar arusnya yaitu tembaga, alumunium, baja, emas, dan perak. Dari kelima bahan tersebut tembaga merupakan penghantar yang paling banyak digunakan karena mempunyai daya hantar yang baik.
Schematich
Berikut ini adalah rangkaian schematich Sensor LDR dan RGB:

Single LED RGB
Single LED RGB adalah tiga warna light (red, green, blue) yang disatukan mejadi satu. Pada Single LED ini hanya membutuhkan 1 resitor untuk men-supply tegangan ground pada kaki LED. Berikut adalah rangkaiannya:
Download: Rangkaian Sensor LDR dan RGB.fzz
Rangkaian diatas menggunakan Single LED RGB seperti ini:
Single LED RGB - image by: https://learn.sparkfun.com/
Kemudian susunlah rangkaian diatas menjadi seperti pada gambar berikut:
Rangkaian sensor LDR pada PCB
Tata letak LED harus lebih rendah dari LDR, supaya cahaya bias dari LED tidak mengganggu sensor LDR saat mengkalibrasi objek. Agar pengkalibrasian sensor LDR lebih stabil, kamu bisa membungkusnya dengan selongsong pembungkus kabel dan hanya di tampakan pada permukaanya saja.

3 LED RGB
Selain rangkaian diatas, ada juga rangkaian yang menggunakan 3 LED RGB seperti pada gambar berikut:
Rangkaian Sensor LDR dengan 3 LED RGB
Secara prinsip/cara kerja rangkaian sensor LDR yang menggunakan single LED dengan 3 LED adalah sama, yang membedakan adalah kaki ground pada rangkaian 3 LED ini membutuhkan 3 resistor. Kedua rangkaian dapat dioperasikan dengan program arduino yang sama. 

Kemudian susunlah rangkaian diatas PCB bolong seperti pada gambar dibawah ini:
Tata letak sensor LDR 3 LED pada PCB bolong
Source Code
Setelah menyusun dan memahami rangkaian diatas, selanjutnya adalah memasukan program dibawah ini kedalam arduino.
/* Program sensor warna dengan LDR dan RGB
   web    : hestech.id
*/
#include <Servo.h> 
Servo myservo; 
int sensorPin = A0;
int LedBiru =3; // Led warna biru digital pin 3
int LedHijau=4; // Led warna hijau digital pin 4
int LedMerah=5; // Led warna merah digital pin 5
int hasil,hasilb,hasilm,hasilh;
int k=8;  // toleransi warna

void setup() {
// declare the ledPin as an OUTPUT:
  pinMode(LedBiru,OUTPUT);
  pinMode(LedMerah,OUTPUT);
  pinMode(LedHijau,OUTPUT);  
  digitalWrite(LedBiru,LOW);
  digitalWrite(LedMerah,LOW);
  digitalWrite(LedHijau,LOW);
  myservo.attach(6);  // motor servo pin digital 6
  myservo.write(90);      
  delay(100);       
  Serial.begin(9600);
  delay(1000);
}

void loop() {
  // nyalakan LedMerah
  digitalWrite(LedMerah,HIGH);
  //delay 150 ms agar LDR baca stabil
  delay(150);
  // baca data sensor
  hasil= analogRead(sensorPin);
  hasilm=map(hasil,0,1023,0,255);
  Serial.print("R,G,B = ");
  Serial.print(hasilm); 
  digitalWrite(LedMerah,LOW);    
  delay(150);

  // nyalakan LedHijau
  digitalWrite(LedHijau,HIGH);
  //delay 150 ms agar LDR baca stabil
  delay(150);
  // baca data sensor
  hasil= analogRead(sensorPin);
  hasilh=map(hasil,0,1023,0,255);  
  Serial.print(",");
  Serial.print(hasilh); 
  digitalWrite(LedHijau,LOW);    
  delay(150);
  
  // nyalakan LedBiru
  digitalWrite(LedBiru,HIGH);
  //delay 150 ms agar LDR baca stabil
  delay(150);
  // baca data sensor
  hasil= analogRead(sensorPin);
  hasilb=map(hasil,0,1023,0,255);  
  Serial.print(",");
  Serial.println(hasilb); 
  digitalWrite(LedBiru,LOW);  
  delay(150);

  // cek warna dibandingkan dengan nilai hasil kalibrasi
  if(abs(hasilm-208)<k && abs(hasilh-203)<k && abs(hasilb-177)<k){
    Serial.println(" -> WARNA PUTIH!\n");
    myservo.write(10);    } else
  if(abs(hasilm-209)<k && abs(hasilh-165)<k && abs(hasilb-139)<k){
    Serial.println(" -> WARNA MERAH !\n");
    myservo.write(30);   } else
  if(abs(hasilm-135)<k && abs(hasilh-182)<k && abs(hasilb-147)<k){
    Serial.println(" -> WARNA HIJAU !\n");
     myservo.write(50); }  else  
  if(abs(hasilm-138)<k && abs(hasilh-163)<k && abs(hasilb-166)<k){
    Serial.println(" -> WARNA BIRU !\n");
    myservo.write(70);   } else
  if(abs(hasilm-156)<k && abs(hasilh-184)<k && abs(hasilb-172)<k){
    Serial.println(" -> WARNA CYAN !\n");
    myservo.write(90);   } else
  if(abs(hasilm-199)<k && abs(hasilh-159)<k && abs(hasilb-170)<k){
    Serial.println(" -> WARNA UNGU !\n");
     myservo.write(110); }  else  
  if(abs(hasilm-209)<k && abs(hasilh-214)<k && abs(hasilb-223)<k){
    Serial.println(" -> WARNA KUNING !\n");
    myservo.write(130);   }  else  
  if(abs(hasilm-210)<k && abs(hasilh-206)<k && abs(hasilb-211)<k){
    Serial.println(" -> WARNA PINK !\n");
    myservo.write(150);   } else
  if(abs(hasilm-165)<k && abs(hasilh-197)<k && abs(hasilb-205)<k){
    Serial.println(" -> WARNA HIJAU MUDA !\n");
    myservo.write(170);   } else
  if(abs(hasilm-209)<k && abs(hasilh-204)<k && abs(hasilb-210)<k){
    Serial.println(" -> WARNA KUNING MUDA!\n");
   myservo.write(180); } else
    Serial.println(" -> ???\n");     
    
  delay (2000);
}
Setelah diupload, kemudian bukalah serial monitor untuk mengambil nilai objek yang ingin dikalibrasi. Misalnya yang akan di kalibrasi adalah warna merah. Letakan objek warna merah tersebut di depan sensor, lihatlah hasil diserial monitor, maka akan tampil seperti gambar berikut:

Kemudian nilai RGB diatas dituliskan pada program seperti ini:
Upload ulang program diatas kedalam arduino. Kode program diatas adalah untuk kode warna merah, jika nanti sensor LDR mendeteksi warna dengan nilai diambang batas 157, 165, dan 134, maka serial monitor akan menampilkan warna seperti berikut:
Hasil kalibrasi sensor LDR
Nilai angka pada hasil kalibrasi diatas menunjukan warna merah terdeteksi. Namun, angka kalibrasinya kok berbeda...? Hal itu dikarenakan toleransi yang dibuat adalah 8. Jadi, jika nilai warna yang terdeteksi berada diambang batas 8. Status warna masih bisa dikenali. jika ingin merubah ambang batas nilai toleransinya, Rubahlah nilai ini sesukamu. 

Tapi ingat...! semakin kecil nilai toleransi, maka semakin akurat sensor mendeteksi objeknya.
Agar sensor akurat mendeteksi objek, diperlukan penambahan cover yang dibuat sedemikian rupa. Agar cahaya bias dari LED ataupun cahaya dari luar tidak mengganggu kerja sensor LDR.
SELESAI
Hestech Indonesia

Innovasi di bidang Teknologi, Listrik, Teknik Komputer dan gaya Hidup. Info lainnya tentang praktik konservasi berbasis Sains, inovasi, dan kearifan lokal