Re: Arduino PAR and LUX Meters
Posted: Mon Feb 08, 2021 4:39 pm
PeteR_1, thanks for your feedback.
The raw responses from TCS34725 and TCS34715FN for different wavelengths are very close: the difference is constant multiplier 1.7
The old versions of MultispeQ firmware (0_9) used Adafruit_TCS34725::calculateLux function to calculate light intensity:
illuminance = (-0.32466F * r) + (1.57837F * g) + (-0.73191F * b);
and report light intensity in Lux, not umol/m2/s
I mean the error in MultispeQ PAR equation came from this early version.
Last version do this:
lux_local = TCS3471.readCData(); // take 3 measurements, outputs in format - = 65535 or whatever 16 bits is.
r_local = TCS3471.readRData();
g_local = TCS3471.readGData();
b_local = TCS3471.readBData();
lux_average_forpar += lux_local / averages;
r_average_forpar += r_local / averages;
g_average_forpar += g_local / averages;
b_average_forpar += b_local / averages;
Serial_Print("\"light_intensity\":");
Serial_Print_Float(lux_to_uE(lux_average_forpar),2);
Serial_Print(",");
Serial_Print("\"r\":");
Serial_Print_Float(lux_to_uE(r_average_forpar),2);
Serial_Print(",");
Serial_Print("\"g\":");
Serial_Print_Float(lux_to_uE(g_average_forpar),2);
Serial_Print(",");
Serial_Print("\"b\":");
Serial_Print_Float(lux_to_uE(b_average_forpar),2);
function lux_to_uE convert raw values to umol/m2/s using calibration multiplier.
The true Lux calculation required all channels data as described in AMS appnote; but PPFD requires only clear channel (rgb may be used for minor correction).
Using Lux is OK for measuring sun, white LEDs or fluorescent tubes; I measure my DIY LED fixtures for reef tank and orchids, with 660nm and 450nm dominant wavelengths, and I need a PAR measurements in umol/m2/s to build it right.
The CCT and blue/red ratio are important for corals and plants, so I will impement it.
The raw responses from TCS34725 and TCS34715FN for different wavelengths are very close: the difference is constant multiplier 1.7
The old versions of MultispeQ firmware (0_9) used Adafruit_TCS34725::calculateLux function to calculate light intensity:
illuminance = (-0.32466F * r) + (1.57837F * g) + (-0.73191F * b);
and report light intensity in Lux, not umol/m2/s
I mean the error in MultispeQ PAR equation came from this early version.
Last version do this:
lux_local = TCS3471.readCData(); // take 3 measurements, outputs in format - = 65535 or whatever 16 bits is.
r_local = TCS3471.readRData();
g_local = TCS3471.readGData();
b_local = TCS3471.readBData();
lux_average_forpar += lux_local / averages;
r_average_forpar += r_local / averages;
g_average_forpar += g_local / averages;
b_average_forpar += b_local / averages;
Serial_Print("\"light_intensity\":");
Serial_Print_Float(lux_to_uE(lux_average_forpar),2);
Serial_Print(",");
Serial_Print("\"r\":");
Serial_Print_Float(lux_to_uE(r_average_forpar),2);
Serial_Print(",");
Serial_Print("\"g\":");
Serial_Print_Float(lux_to_uE(g_average_forpar),2);
Serial_Print(",");
Serial_Print("\"b\":");
Serial_Print_Float(lux_to_uE(b_average_forpar),2);
function lux_to_uE convert raw values to umol/m2/s using calibration multiplier.
The true Lux calculation required all channels data as described in AMS appnote; but PPFD requires only clear channel (rgb may be used for minor correction).
Using Lux is OK for measuring sun, white LEDs or fluorescent tubes; I measure my DIY LED fixtures for reef tank and orchids, with 660nm and 450nm dominant wavelengths, and I need a PAR measurements in umol/m2/s to build it right.
The CCT and blue/red ratio are important for corals and plants, so I will impement it.