Sensor cahaya merupakan sensor yang dapat membaca kondisi kecerahan sebuah
ruangan. Intensitas cahaya dalam ruangan dapat bersumber dari lampu atau pantulan
cahaya matahari dari luar melalui jendela. Jenis sensor cahaya yang paling banyak
digunakan adalah sensor LDR, Photodioda dan Phototransistor. Meskipun bentuk dari
kedua sensor ini berbeda namun keduaya memiliki fungsi yang sama. Kedua sensor ini
sering digunakan pada robot line follower (robot pengikut garis).
Berdasarkan gambar di atas, dapat kita lihat bahwa sensor akan menerima lebih banyak
cahaya jika bila obstacle mendekati warna putih.
Apabila Garis terang, maka sinyal LED dapat dipantulkan. Bila cahaya LED memantul pada
garis dan diterima oleh basis fototransistor maka phototransistor menjadi saturasi (on)
sehingga tegangan output (Vout) menjadi sama dengan VCE saturasi atau mendekati 0
Volt. Sebaliknya jika tidak terdapat pantulan maka basis phototransistor tidak mendapat
arus bias sehingga fototransistor menjadi cut-off (C-E Open). dengan demikian nilai Vout
sama dengan VCC (5 Volt).
Agar dapat diinterfacekan ke mikrokontroler, tegangan output harus selalu berada pada
level 0 atau VCC. Output rangkaian gambar di atas masih memiliki kemungkinan tidak
pada kondisi ideal bila intensitas pantulan cahaya LED pada garis lemah, misalnya karena
perubahan warna atau lintasan yang kotor. Untuk mengatasi hal tersebut ditambahkan
rangkaian pembanding yang membandingkan output sensor dengan suatu tegangan
threshold yang dapat diatur dengan memutar trimmer potensio (10 K). Rangkaian
lengkapnya seperti pada gambar 5. LED pada output berguna sebagai indikator logika
output sehingga kerja sensor mudah diamati.
void baca_sensor()
{
lcd.setCursor(0,0);
lcd.print(‘Pembacaan Sensor’);
sensor[0]=analogRead(A0);
sensor[1]=analogRead(A1);
sensor[2]=analogRead(A2);
sensor[3]=analogRead(A3);
sensor[4]=analogRead(A4);
sensor[5]=analogRead(A5);
ref[0]=200;ref[1]=200;ref[2]=200;ref[3]=200;ref[4]=200;ref[5]=200;
if (sensor[o]>ref[o]) {Nilai[o]=Low;} if (sensor[o]<ref[o])
{Nilai[0]=High;}
if (sensor[1]>ref[1]) {Nilai[1]=Low;} if (sensor[1]<ref[1])
{Nilai[1]=High;}
if (sensor[2]>ref[2]) {Nilai[2]=Low;} if (sensor[2]<ref[2])
{Nilai[2]=High;}
if (sensor[3]>ref[3]) {Nilai[3]=Low;} if (sensor[3]<ref[3])
{Nilai[3]=High;}
if (sensor[4]>ref[4]) {Nilai[4]=Low;} if (sensor[4]<ref[4])
{Nilai[4]=High;}
if (sensor[5]>ref[5]) {Nilai[5]=Low;} if (sensor[5]<ref[5])
{Nilai[5]=High;}
lcd.setCursor(5,1);
if (Nilai[0]>Mid) {S[0]=1; lcd.print('1');} if (Nilai[0]<Mid)
{S[0]=0; lcd.print('0');}
if (Nilai[1]>Mid) {S[1]=1; lcd.print('1');} if (Nilai[1]<Mid)
{S[1]=0; lcd.print('0');}
if (Nilai[2]>Mid) {S[2]=1; lcd.print('1');} if (Nilai[2]<Mid)
{S[2]=0; lcd.print('0');}
if (Nilai[3]>Mid) {S[3]=1; lcd.print('1');} if (Nilai[3]<Mid)
{S[3]=0; lcd.print('0');}
if (Nilai[4]>Mid) {S[4]=1; lcd.print('1');} if (Nilai[4]<Mid)
{S[4]=0; lcd.print('0');}
if (Nilai[5]>Mid) {S[5]=1; lcd.print('1');} if (Nilai[5]<Mid)
{S[5]=0; lcd.print('0');}
}
void setup() {
lcd.begin(16,2);
pinMode (LDR1, INPUT);pinMode (LDR2, INPUT);pinMode (LDR3, INPUT);
pinMode (LDR4, INPUT);pinMode (LDR5, INPUT);pinMode (LDR6, INPUT);
lcd.setCursor(0,0); lcd.print(‘Program Sensor’);
lcd.setCursor(0,1); lcd.print("Cahaya");
delay(1000);
lcd,clear();
}
void loop() {
baca_sensor();
}
Pertanyaan Praktikum:
1. Listing program di atas telah kami ubah, silahkan mencari kesalahan program tersebut
sampai tidak ada error ketika dikompile!
2. Jelaskan prinsip kerja rangkaian sensor cahaya menggunakan Op-Amp!
3. Jelaskan fungsi penggalan program di bawah ini:
a. sensor[0]=analogRead(A0);
b. if (Nilai[2]>Mid) {S[2]=1; lcd.print('1');}
c. if (Nilai[3]<Mid) {S[3]=0; lcd.print('0');}
d. if (sensor[1]>ref[1]) {Nilai[1]=Low;}
e. if (sensor[4]<ref[4]) {Nilai[4]=High;}
4. Modifikasi Program sebelumnya agar dapat menampilkan data pembacaan analog
pada serial monitor!