You are on page 1of 2

A Simple Technique to Measure the Light Intensity using Arduino and LDR

by realfinetime realestate | in transistor at 10:34
We have already seen the Circuit to Turn On an LED During Day and Turn Off the Same at Night Using LDR and BC 547. Here we will measure the light
intensity around light sensor using an arduino mega. Circuit is simple and is done as shown in the following diagram.

Connections are done as shown in the circuit diagram. Collector pin of transistor is given to the analog pin ( A0 ) of arduino to get an analog value for
light intensity. 5V for the working of transistor is supplied from 5V pin of arduino. Ground for the circuit is given from the Gnd pin of Arduino. Pinout diagram
of BC547 is given at the left side top in the diagram.
Transistor - BC 547 is the transistor used here. It is an NPN transistor and is suitable for small operations.
5V - Normally supplied from Arduino.
R1 - This is a current limiting resistor. It helps to switch the transistor between ON and OFF states by controlling the current through R1 and hence through
the base of transistor. If that resistor is not connected, there is a possibility that, base current will always remain high because, LDR alone cannot resist the
current considerably to turn off the transistor.
R2 - It is a pull down resistor. It will ground the base, if there is no external signals to the base of transistor. When an external signal is connected,
beginners confuse whether this signal get grounded through R2. But this signal will not get grounded because of high resistance of R2 ( 10K ).
R3 - If R3 is not connected, when transistor turns on, power supply get shorted through A,C,B,E and F due to the low resistance of transistor. This will
increase current abruptly which will damage the transistor as well as power supply.

Working of circuit
Current that flows through the transistor ( collector to emitter ) is directly proportional to the base current of the transistor. During night, resistance of
the LDR is maximum. Then minimum current will flow to the base of transistor and hence current through the transistor ( collector to emitter ) will be
minimum. Current at the collector point of transistor has two options, either it can flow to the analog pin of arduino or it can flow through the transistor to
ground. When the base current is small, current will flow to the arduino because of the large impedance of transistor. Then analog pin of arduino will read a
high value. During the day time, resistance of LDR is minimum. Hence base current will be maximum. Collector current will flow through the transistor to
ground. Then arduino will get a small current and the reading will be minimum. Value will be maximum at night ( 1023 ) and minimum at day ( 0 ). This
value will be in between minimum and maximum values, if the light intensity is between the light intensity of day and night.
Now upload the following program to your arduino board. This program will read the collector current through the analog pin 0 ( A0 ) and will display it
in serial monitor in 100ms delay.
int sensorPin = A0;

// select the input pin for the LDR sensor

int sensorValue = 0; // variable to store the value coming from the sensor
void setup() {
void loop() {
// read the value from the sensor:
sensorValue = analogRead(sensorPin);

If uploading is successfull, open your serial monitor. Don't forget to change the baud rate to 9600. Change the light intensity around LDR by some
methods. Serial monitor will print the value of varying light intensity.