NOTE: All of the experimentation detailed below stayed well within normal operating conditions of the LaserBee. After I concluded, I tested to make sure the hardware was not faulty and confirmed that everything was functioning exactly as designed.
I'd originally given up on figuring out the curve adjustment for lack of a laser that could run the whole 0-1000mW range. Then I realized - I can just feed the LaserBee a low voltage signal and pretend it's coming from the TEC!
The Logic: If the LaserBee takes a non-linear voltage and corrects it, then it would also take a linear voltage and de-correct it.
The Setup: I pitted the original firmware against Ellipsis.
Ellipsis is only scaling readings without a curve adjustment. The original firmware is both scaling and adjusting.
What I expected was some sort of exponential curve. What I ended up with actually changed slope several times - so I was slightly confused. After all, when I think of a "curve adjustment," I think of a mathematical formula applied to a datapoint to properly orient it.
Slight preface: I currently don't have anything that will generate a voltage of less than 65.6mV - so my graph starts there.
I went back to the areas where the slope change and collected data in a denser cluster of points, and made an interesting discovery.
There are knees in the curve. They fall between four distinct areas of the graph.
In the first part of the graph, the sampled reading is adjusted upward slightly:
In the second part of the graph, the lines basically fall perfectly on one another. This is where the 1W LaserBees are calibrated - for example, mine was calibrated at 500mW.
After the second knee in the curve, the readings are adjusted slightly downward:
And in the final part of the range, the readings are significantly adjusted downward:
I've got the exact numbers in an Excel sheet, but I don't have it handy at the moment.
So, it appears that the LaserBee does not use any sort of formula to adjust the curve - rather, it uses a few thresholds to determine what amount to add to or subtract from the reading.
I don't think that's ideal - since that's basically a linear correction to a non-linear function, but I suppose it was deemed "close enough" by the original developer...
At any rate, the important bit is now I know exactly what I need to do to make Ellipsis spit out exactly the same readings as the original LaserBee firmware!
Trevor