Untuk mengukur intensitas cahaya dibutuhkan sensor cahaya yang peka terhadap perubahan intensistas cahaya. Salah satu sensor cahaya yang dapat digunakan adalah LDR atau Light Dependent Resistor. LDR mempunyai karakteristik berubah nilai resistansinya sesuai intensitas cahaya yang mengenainya.
Untuk mengukur intensitas cahaya menggunakan Arduino, Anda harus mengubah perubahan resistansi LDR menjadi perubahan tegangan (DC) karena Arduino hanya mengukur tegangan, tidak bisa mengukur resistansi. Oleh karena dibutuhkan rangkaian sederhana ‘pembagi tegangan’ yang komponennya adalah LDR dan resistor (variabel resistor) yang dihubungkan secara seri dan ditenggah-tengahnya diumpankan ke pin Analog Arduino. Untuk lebih jelasnya silahkan dilihat gambar rangkaiannya pada gambar di bawah :
Komponen yang dibutuhkan :
– LDR
– Variabel resistor (potensiometer atau trimpot) 10 KΩ
– beberapa kabel jumper
– Arduino (Uno atau tipe yang lain). Pada percobaan kali ini saya menggunakan Arduino Mega ADK, karena kebetulan Arduino Uno-nya sedang dipake project lain 🙂
– senter, untuk memanipulasi intensitas cahaya yang akan diukur (bisa menggunakan smartphone Android/iPhone yang sudah diinstal aplikasi ‘Flash Light’ atau sejenisnya)
– protoboard
Rangkai komponen di atas sesuai gambar rangkaian di protoboard. Kurang lebih jadinya seperti gambar di bawah
Dengan mengatur besaran VR (Variabel Resitor) Anda akan mendapatkan rentang tegangan dari 0V – 5V tergantung intensitas cahaya di LDR. LDR mempunyai sifat semakin banyak cahaya yang diterimanya (saat terang), nilai resistansinya semakin kecil. Dengan demikian, dengan rangkaian di atas, maka tegangan yang diterima pin analog Arduino akan semakin besar (ingat rumus rangkaian pembagi tegangan). Hal kebalikannya juga berlaku : jika intensitas cahaya yang diterima LDR kecil (saat gelap), maka nilai resistansi LDR akan besar, sehingga tegangan yang diterima pin analog Arduino akan mengecil. Dengan membuat program/sketch handler di sisi Arduino, tegangan tadi dapat diukur melalui besaran digital representasinya, karena pin analog Arduino memiliki ADC 10 bit di internalnya. Mengenai ADC internal ini dan cara mengukur tegangan analog menggunakan Arduino dapat dibaca di artikel ini.
Untuk lebih jelasnya, silahkan copy dan paste sketch di bawah ke Arduino IDE Anda. Setelah itu upload sketch ke Arduino. Aktifkan jendela Serial Monitor untuk melihat besaran angka digital sebagai representasi tegangan yang masuk ke pin analog A0.
int input=0; void setup() { Serial.begin(9600); } void loop() { input=analogRead(A0); Serial.println(input); delay(1000); }
Setelah sketch berhasil diunggah ke Arduino, dan sudah terlihat angka-angka di jendela Serial Monitor, manipulasilah cahaya yang mengenai LDR menggunakan senter (atau aplikasi Android/iPhone). Kemudian perhatikan angka-angka yang tertera di Serial Monitor akan naik turun sesuai dengan intensitas cahaya yang diterima LDR.
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
raspberri pi bisa gak mas?
bisa aja
Permisi, mau tanya untuk cara kerja rangkaian pembagi tegangan agar bisa menghasilkan tegangan untuk dimasukkan ke dalam arduino, bagaimana yaa??
terima kasih
silahkan di baca di sini mas http://saptaji.com/2016/11/29/sensor-tegangan-dc-untuk-arduino/
Mohon ilmu nya mas, bagaimana jika kita ingin pembacaan tegangan input nya cuma saat tertentu. Misal hanya saat pin 1 berlogika high, jika pin satu berlogika o pembacaan 0. itu sketch nya gimana ya mas. Terimakasih sebelum nya
Selamat malam gan.
Mau nanya gan tentang codingan sensor LDR. Misalkan saya punya 3 sensor LDR dengan satu output motor.
sensor LDR 1 mendeteksi cahaya matahari, Motornya HANYA bergerak beberapa detik lalu mati dan motor akan bergerak lagi setelah LDR 2 mendeteksi dan seterusnya, untuk codingan nya gimana iya gan ?
kurang lebih gini mas:
if (detect_LDR1) {
//function gerakkin_motor)
}
if (detect_LDR2) {
//function gerakkin_motor)
}
dst
Bagaimana iya mas, ketika sensor LDR nya ditempat pada tempat yang terang atau langsung terkena cahaya matahari.
sensor LDR nya diberi batas nilai, setelah sampai batas yang diinginkan motor bergerak dan diberi delay dan motor mati. Tapi kenapa meskipun sudah diberi delay, motor tetap bergerak dan delay baru aktif bila sensor LDRnya dibuat gelap. Masalahnya “Yang saya inginkan motor hidup sesuai dengan delay yang di inginkan dan kemudian mati, meskipun batas nilai yang diinginkan masih sama” , itu gimana iya mas?
karena nilai LDR terbaca di angka yang sama, jadi akan melakukan proses yg sama. Solusinya, waktu trapping program pake if ada dua kondisi yg harus terpenuhi kalo mau menggerakkan motor. Kurang lebih begini
if ((LDR==sesuai)&&(motor==sekali)){
//gerakkin motor
}
Perumpamaan saya pake 3 buah LDR dan 1led. Saya sudah mencoba dengan cara membandingkan ketiga nilai LDR dan led menyala sesuai yang diinginkan, tetapi kenapa led tetap menyala ketika selalu terkena cahaya matahari padahal sudah diberi delay untuk mati.
Permasalahannya “jika ketiga LDR “selalu” disinari cahaya matahari, bagaimana source code untuk membuat agar lampu ‘HANYA SEKALI’ menyala sekian detik lalu mati dan tidak menyala lagi. Lampu akan menyala kembali jika nilai LDR2 mencapai nilai yang diinginkan dan lampu HANYA SEKALI’ menyala sekian detik lalu mati dan tidak menyala lagi dan seterusnya. Itu gimana iya mas ?
Mohon pencerahannya mas
Makasih
Kalo mau menampilkan nilai lux ke lcd gmn mas?? Dengan menggunakan ldr…Terimakasih
mudah aja mas, tinggal pake library ‘LiquidCrystal.h. Setiap mau menampilkan teks ke LCD tinggal panggil function LCD.print(teksnya);
Nah, variabel ‘teksnya’ ini diambil dari nilai LDR-nya
Iya mas nanti tak coba, mau tanya lagi mas hehe misal mau mengatur intensitas cahaya lampu hingga 500 – 600 lux tapi nilai ldr-nya itu diambil dr lampu tersebut & lampu mencapai lux 500 – 600 gmn ya..
Terima Kasih
gmn apanya?
Untuk mengatur intensitas cahaya lampu dengan sumber cahaya-nya bukan dari cahaya ruang melainkan dri cahaya lampu itu sendiri bisakah??
mau nanya mas ajie. untuk program dasarnya, sensor ldr dan led. mohon bantuannya mas.
bagaimana cara ketika sensor ldr SUDAH mencapai nilai yang diinginkan, led menyala sekian detik lalu mati (“nilai ldr masih dalan nilai yang diinginkan”)
beri saya contoh programnya mas ajie.
makasih.
sama kayak kmr aja mas, cuma tambahkan delay sesudah menyalakan led, kmr baru matikan led, contoh:
if ((ldr==xx)&&(led==’mati’)){
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
}
mau tanya mas aji. sya menggunakan sensor hujan dan sensor ldr. sensor hujan sbg input dimisalkan sbg pushbutton dan ldr sbg output yg nilai ny di tmpilkan di lcd(input). msalahnya adl brpa nilai resistor dan intensitas cahaya (gelap) (terang) yg tepat utk bsa menggerakan motor dc putar cw dan ccw. terimakasih
di tes aja mas, nilai LDR tergantung dari rangkaian juga. Cara termudah bikin rangkaian LDR-nya dulu, pastikan tegangan output maksimal adl 5V, kemudian ukur pake arduino di pin analog. Habis itu tes di kegelapan dan saat terang, dan baca nilainya yg terbaca di serial monitor.
Sketch-nya juga mudah aja, contoh:
int ldr=analogRead(A0); //output ldr masuk ke pin A0 arduino
Serial.println(ldr);
mass saya menggunakan 1 ldr,esp8266 dan motor DC 12volt
ingin kalau ada cahaya terik dia nutup kalau agak mendung engga itu gmn ya mass
sebenarnya mudah aja itu mas. Langkah-langkahnya gini:
1. Bikin rangkaian LDR
2. Masukkan output rangkaian LDR ke pin analog arduino/ESP8266
3. Bikin sketch/program untuk membaca input analog
4. Baca nilai digital output LDR dan tampilkan di serial monitor
5. Lakukan percobaan saat terik/terang, mendung, gelap dst dan baca nilainya di serial monitor
6. Berdasarkan data no 5, bikin program jika nilai sekian gerakkan motor DC sekian derajat/langkah (saran sy pake motor servo jgn motor DC)
gan saya mau tanyak , hasil dari sensor ldr itu cara bacanya gimana ya gan ?
gan saya mau jawab, output sensor ldr berupa tegangan yang merupakan representasi dari intensitas cahaya yang diterimanya. Cara bacanya pake multimeter langsung aja diukur tegangannya, kalo pake arduino caranya seperti yang dijelaskan di atas
ada program adruino untuk menghitung nya gak gan ?
di atas kan udah ada contoh program arduino-nya gan
gan misalnya sensor ldr keluarin data 900 cara menghitung berapa intensitas cahaya nya gimana ya gan ?
dikalibrasi pake lux meter mas, kemudian dicatat di tabel
Mas aji mau tanya, untuk mengkonversi nilai intensitas cahaya sesuai tutorial di atas ke dlm lux gmn yahh??
paling pake metode experimental mas, yakni dengan membandingkan nilai intensitas cahaya terukur dengan luxmeter standar. Ntar bikin beberapa sampel pengukuran dan dicari rumus persamaannya
Iya mas…mau tanya lagi mas aji jika tutorial di atas tipe sensor ldr-nya menggunakan output digital bisa??
emang ada gitu mas? setahu saya sensor LDR outputnya berupa sinyal analog, kecuali ada konverter lagi di depannya
Mas tanya ya.
1 arduino.
2 sensor bh1750.
1tampilan pakai lcd 16×2
Skemanya dan Programnya gimana ya.
Terimakasih mas
ini nanya apa nyuruh dibikinin mas? 🙂
halo kakak,bisa bantu metode apa yang bisa membedakan terang dan gelap,rentang nilainya berapa.karena saya menggunakan sensor cahaya ldr
cara termudahnya dengan mensimulasikan kondisi terang kemudian cek output sensor LDR (bisa menggunakan Arduino) berapa, dan saat kondisi gelap outputnya berapa, kemudian bisa Anda rumuskan sendiri formulanya. Perlu diketahui bahwa LDR ini adalah sensor ya, bukan alat ukur. Jadi output yang dihasilkan akan sangat bergantung pada rangkaian yang Anda buat, jenis dan kualitas sensor (sama-sama LDR hasilnya bisa berbeda). Untuk hasil yang lebih teliti dan konsisten sebaiknya menggunakan luxmeter
Maaf mas.
Ya nanya…
Sekalian di ajarin dan dibikinin….
Harganya sampai berapa ?
Terimakasih.
saya ajari logika programnya aja ya 1. coba cek sensornya tipe analog atau digital (cek di datasheet sensor), kalo analog hubungkan dengan pin analog arduino, catat no pin-nya. Demikian juga kalo output sensor adalah tipe digital 2. Cari cara mengambil data dari sensor melalui pin analog/digital. Salah satunya bisa dibaca di artikel http://saptaji.com/2015/07/14/mengukur-tegangan-analog-di-pin-analog-arduino/ 3. Cari cara menampilkan karakter ke lcd via arduiono, salag satunya bisa baca artikel sbb : http://saptaji.com/2015/07/23/mudahnya-bikin-hello-world-di-lcd-16×2-dengan-arduino/ 4. Kalo cara handling input dan output sudah bisa sesuai langkah2 di atas, tinggal logika programnya aja, misalnya jika sensor menunjukkan angka sekian, maka akan melakukan apa? menampilkan ke lcd… Read more »
Terimakasih mas.
Saya coba dulu.
mas saya mau nanya,saya pngen mengaktifkan servo makai ldr,dalm batas range tertentu servo di aktifkan,if(ldr>=100&&ldr <=200){//servoaktif},saya pengen nanya,kalau pengen ditambah waktu gmn ya??misal gini jadi nilai ldr harus dalm batas range dan dalm waktu 5 detik,kalau kurang dari 5 detik maka servo tdk membuka
yg pertama, waktu 5 detik dihitung darimana?
yg kedua, tambahkan pengecekan waktu di klause ‘IF’ pake logika ‘AND’ (&&). contoh :
if(ldr>=100)&&(ldr <=200)&&(waktu>=5000){
//servo aktif
}
waktu 5 detik dihitung sejak nilai ldr masuk batas range,
ini maksudnya setelah nilai ldr masuk range, 5 detik kemudian servo membuka. Benar begitu ngga mas? Kalo bnr spt itu maka bisa pake library SimpleTimer.h
contoh:
if(ldr>=100&&ldr <=200){ timer.setTimeout(5000,bukaservo); } void bukaservo(){ myservo.Write(90); }
selamat malam , permisi mas ajie …
mau nnya mas gimana ya cara mengkonversi sensor ldr nilai serial monitor kesatuan lumen / lux? dengan sketch dengan batas nilai < 300. dan batas nilai awal tidak terkena cahaya yaitu 1021 dan jika terkena cahaya yaitu 38 . gimana ya mas mengkonversi nilai serial monitor bit ke lumen mas ? terimakasih mas ..
cara yg paling valid adalah dibandingkan dengan luxmeter standar. Kemudian ambil beberapa titik/sampel pengukuran. Catat di excel (luxmeter vs serial monitor), kemudian bikin rumusnya.
*catatan:
Cara mudah bikin rumus di excel bisa pake trendline
oh gitu ya mas .. jadi biar lebih simple kita bandingkan saja ya mas … oh ya mas kira2 cahaya api berapa lumen ya mas ukurannya ?
kalo lux nya belum pernah ukur mb, biasanya hanya versi pembacaan pin analog yang dipakai
oh terimaksih ya mas 🙂
ka… kalo nampilin nilainya di lcd beda lagi kan ka kodingannya
makasih ka
tinggal ditambahi kodingan buat lcd, contoh http://saptaji.com/2015/07/23/mudahnya-bikin-hello-world-di-lcd-16×2-dengan-arduino/
Maaf mas mau tanya . Mohon minta ilmu nya dong kalo kecerahan led nya tergantung dari input sensor ldr , codingan nya gimana ya
pake output pwm. Jadi setelah detect ldr dan didapat nilai digital ekuivalensinya, keluarkan output ke led pake metode PWM (Pulse Widht Modulator)
Mas mau tanya, untuk otomatisasi dimmer cahaya berbasis android bisa menggunakan arduino apa tidak,,?
bisa mas
Mas saya masih bingung untuk program menampilkan nilai intensitas cahaya ke lcd 16×2. mas tolong program nya kaya gimana kalo nilainya di tampilkan ke LCD. kebetulan TA saya ada kaitannya dengan in.trimakasih
pake library lcd aja mas, lebih mudah. Intinya ambil data dr port analog, kmd tampilkan di lcd pake library
jka coding dimasukkan untuk software Eclipse gimana ya mas
eclipse ini maksudnya yang buat bikin android?
numpang tanya mas, ada yg tau bagaimana menampilkan satuan lux(lumens dari hasil pembacaan modul LDR?
untuk rumus bakunya saya belum pernah menemukan, karena pada dasarnya LDR itu hanya menunjukkan nilai resistansi ketika ada perubahan intensitas cahaya. Dan yang perlu diketahui bahwa grafik resistansi terhadap cahaya itu tidak linier (bisa lihat di datasheet). Jadi cara terbaik adalah dengan membandingkan pembacaan LDR dengan alat lumen meter. Nanti bikin semacam tabel kemudian cari persamaan matematisnya. Semakin banyak data yang diambil, persamaan matematis akan semakin mendekati riilnya
kak mau nanya saya pakai sensor ldr 5 buah, untuk menampil nilai lux dan jam nya di lcd itu programnya gmna ya kak?
utk menampilkan jam perlu RTC, bisa dibaca di artikel 5 Menit Handling RTC DS3231/DS3232 dengan Arduino