Portable Luxmeter
This project is about making portable luxmeter. It can be used in schools, where children can measure different kinds of light sources.
Functions:
1. measure intensity of light in lux.
2. calculate solar irradiation from lux to watts/m2 (factor 112)
3. charging battery using USB port
Total cost is around 13 $ without case. Luxmeter take 15 mA, so it will works long time on one Li-Ion battery.
BOM
- For project you need this components(affiliate links, if you want to support me):
Arduino Pro Mini 5V
MAX44009
- Wide 0.045 Lux to 188,000 Lux Range
VCC = 1.7V to 3.6V () - ICC = 0.65µA Operating Current
- -40°C to +85°C Temperature Range
- Link
OLED display
-
Diagonal Screen Size:0.96"
-
Number of Pixels:128 x 64
-
Color Depth:Monochrome (Yellow&Blue)
-
Dimension:27.8 x27.3x 4.3 mm
-
Working Voltage: 3.3~ 5V DC
-
Power: 0.06W
-
MaxViewing Angle: >160 Degree
-
Duty:1/32Brightness ( cd/m2):150 (Typ) @ 5V
-
Interface: I2C
TP4056
- need USB to micro USB cable for charging
- input 5V
Li-Ion battery
- 3 - 4.2 Volts
- Link
18650 holder
Switch jumper
Cables and header
- female to female
- female and male header
- Link to cables
- Link to pin headers
Circuit
You need of course 5V Arduino to power it with Li-Ion battery (4,2 V!)
Connections:
Arduino - MAX44009 (same for OLED display)
A4 - SDA
A5 - SCL
VCC - VIN
GND - GND
TP4056 - Arduino Pro Mini
OUT+ - VCC
Arduino - battery
VCC - plus terminal (max 5 V for Arduino 5V)
Arduino - switch jumper
GND - first switcher
TP4056 - switch jumper
OUT - - second switcher
Battery - switch jumper
minus terminal - first and second switcher
Code
#include <Wire.h> #include <Adafrfuit_SSD1306.h>
#include <Adafruit_GFX.h>#include <Fonts/FreeSerif9pt7b.h>
#include "MAX44009.h"
MAX44009 Lux(0x4A);
float lux; float watts; // OLED display TWI address #define OLED_ADDR 0x3C Adafruit_SSD1306 display(-1); // restart display with reset button on arduino void setup() { Lux.Begin(0, 188000); display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); display.display(); // display a line of text display.setTextSize(1); display.setTextColor(WHITE); display.setFont(&FreeSerif9pt7b); display.setCursor(1,15); display.print("MAX44009"); display.display(); } void loop() { lux=Lux.GetLux(); // get luxs watts =Lux.GetWpm(); // get watts/m2, only for SUN source display.fillRect(1, 20, 100, 100, BLACK); // create black rectangle on values position display.setCursor(1,40); display.print(lux); display.setCursor(80,40); display.print("lux"); display.setCursor(1,60); display.print(watts); display.setCursor(80,60); display.print("W/m"); display.setCursor(115,55); display.print("2"); display.display(); delay(1000); }
Solder
I create on prototype board socket for Arduino Pro Mini and pins for connect other things. I also build simple case from plywood. Use Plastic Zip Cable Wire for mounting display to door, also for joints.
Charging
I mount charging module - TP4056 to luxmeter. Red light showing charging, blue light not connected usb cable (micro usb). With switch jumper, I can switch on/off charging.
Formal Lesson Plan
1. Teacher describe what are luxs, watts and describe how to work with luxmeter.
2. Students will have task, to measure luxs:
a, choose light sources, and measure distance from source using length gauge
b, measure intensity of light source
c, write all values to table.
Own Measurement
- Street lamp gives 5 - 25 lux, probably depend on height of light source.
- Daylight gives 80 000 - 100 000 lux, depend on angle between sensor and sun beams.
- Sun under cloud during sunny day 15 000 lux
- LCD monitor give me 78 lux (0 cm distance), 63 lux (10 cm), 50 lux (20cm)
- smartphone 60 lux (0 cm)
- inside room during sunny day retracted blinds 60 lux
For calculation Watts/m2, you need to know luminous efficacy (in lumens per watt ).
For Sun it is around 110 lumens/W (on horizontal plane), 96 lumens/W ( on direct Sun beams).
So for Sun I get direct 700 - 900 W/m2 intensity.
Lux to watt/m2 calculator https://www.rapidtables.com/calc/light/lux-to-watt-calculator.html