add dark frame calibration and add calculateLux method as per Si114x AN523 #4
+66
−8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
... aka make the SI1145 more useful on the Arduino.
The SI1145 datasheet is quoted as saying:
It's hard to determine exactly what the algorithm is until looking at their SI1145 AN523 application note. The lux calculation is given as such:
The dark readings are absolute minimums reported by the sensor in "absolute" darkness, and the coefficients are gleaned from the table in AN523.6. I have changed the Adafruit_SI1145 class to keep track of the absolute minimums of the VIS and IR channels and use them for dark frame subtraction. The initial dark values were determined by covering the sensor with a black cloth.
I have also exposed an API for adjusting the gain on the visible and IR channels.
I have a TSL2561, TSL2591 and SI1145 hooked up to my Arduino Uno's I2C bus and the EV calculations are in relative agreement.