Raspberry Pi and LX1972 light sensor example

The LX1972 is a low cost silicon light sensor with spectral response that closely emulates the human eye. Patented circuitry produces peak spectral response at 520nm, with IR response less than ±5%, of the peak response, above 900nm.

The photo sensor is a PIN diode array with a linear, accurate, and very repeatable current transfer function.

High gain current mirrors on the chip multiply the PIN diode photo-current to a sensitivity level that can be voltage scaled with a standard value external resistor. Output current from this simple to use two-pin device can be used directly or converted to a voltage by placing it in series with a single resistor at either of its two pins.

Dynamic range is determined by the resistors (typically in the range of 10K to 100K) and power supply values. Typically the LX1972 needs only 1.8V of headroom to operate at 1000 Lux illumination.

Internal temperature compensation allows dark current to be kept below 200nA over the full specification temperature range (-40 to +85°), providing high accuracy at low light levels. Usable ambient light conditions range is from 1 to more than 5000 Lux.The LX1972 is optimized for controlling back lighting systems in low cost consumer products such as LCD TV, portable computers, and digital cameras.

FEATURES:
1. Near Human Eye Spectral Response
2. Very Low IR Sensitivity
3. Highly Accurate & Repeatable Output Current vs. Light
4. Scalable Output Voltage
5. Temperature Stable
6. Integrated High Gain Photo Current Amplifiers
7. No Optical Filters Needed

Layout

The LX1972 is an analogue device – so you cannot directly connect to a Raspberry Pi, a common solution is an MCP3008 analog to digital converter. The best way is to find a made up hat or module and for me I picked the RaspIO Analog zero as the perfect solution

You can read about it here – http://rasp.io/analogzero/

Using this fitted to your Raspberry Pi, you end up with something like this – I use channel 0 in this example

Code

import time
from gpiozero import MCP3008
adc = MCP3008(channel=0, device=0)
while True:
print(adc.value)
time.sleep(0.5)

Its a very simple device that simply returns a value depending on how light or dark it is. You can see in the image below the very low values where when I covered the sensor and the higher values of about 0.577+ where pointing the sensor at a desk lamp

 

Links

LX1972 Analog Light Sensor DIY Maker Illumination Sensor Module