TEMT6000 Ambient Light Sensor

I am using a TEMT6000 ambeint light sensor connected to an Arduino Mega 2560, and I would like to convert the signal to a lux measurement.
On the Arduino forum, I found the following arithmetic to perform the conversion.

float volts = analogRead() * 5.0 / 1024.0;
float amps = volts / 10000.0; // across 10,000 Ohms (they claim that there is a 10k ohm resistor in series. I’m not sure if this is something they added to a breadboard, or if that resistor is internal to the circuitry on the board)
float microamps = amps * 1000000;
float lux = microamps * 2.0;

Or putting it all together:
float lux = analogRead() * 0.9765625; // 1000/1024

After performing the conversion, the values produced by the TEMT6000 were approximately 25% of the values produced by my lux meter ( PCE- L 100 Lux Meter).

Can anyone provide some advice as to what I should do to accurately measure lux with the TEMT6000?


The numbers that an arduino spits out aren’t automatically calibrated to real-world units–you need to develop a calibration curve if you want them to match up to some degree with those produced by a commercial meter.

Try bringing your reference meter and light sensor to a room with lights on a dimmer switch. Set them side-by side somewhere they’ll get light that’s more or less even. Record results from both instruments as you adjust the light level. Plot the two on an X-Y chart in excel, reference meter on Y axis, light sensor on X. Add a trendline to the data using whatever function type matches best, e.g. linear, exponential, polynomial, etc. and check the “show equation on chart” option for the trendline. Write code to calculate that function on your arduino, using whatever conversion result you’re getting at the moment in the place of X. The result you get for Y should then be a better match with your reference meter than the raw number from the conversion.