VEML7700 Sensor Board
I received the light sensor PCBs from OSH Park and populated one to test it out. The sensor itself is in the clear package on the left side of the board.
Here's the schematic (click the image for an easier to read pdf version):
The design is basically my take on a breakout board you'll eventually be able to buy from your favorite two breakout-vendors before they're undercut by ebay. It's just the sensor, a 3.3V regulator, and a PCA9306 I2C level translator so that the interface is all 5V. There's not much to it; it's just meant to hold the sensor inside the test assembly. You can get the Eagle design files from the GitHub repo, or order boards from OSH Park.
To test the sensor and board out, I wrote an arduino-compatible library for the VEML700. It lives in its own GitHub repo, and supports all the features of the part, including polynomial non-linearity correction and an auto-ranging algorithm described in a Vishay application note
I started this project because I needed to measure some LEDs and laser diodes, so I had a number of tests in mind once the sensor was up and running. First up, I tested an LED for the #TritiLED project. I made a simple manual I/V curve tracer (which I'll discuss in the next log) and used it to drive the led-under-test coupled to the sensor with a 3D-printed mount. Here are the results of today's measurements.
I showed similar plots in a #TritiLED log, but these have been re-tested using using an improved auto-ranging algorithm. The data in these two plots is the same except for logarithmic current scale on the right. The cyan curve in the left image clearly shows the intensity "droop" with increasing current. The magenta curve represents the overall relative efficiency of the LED at converting electrical power into light. This particular LED, specified for use at 20mA, is actually 2x as efficient at 1mA. More interestingly for glow marker use, the efficiency at 1mA is more than 10x the value at 10uA. To sell smaller dies (and save money), vendors spec their LEDs at currents much higher than the maximum efficiency point, so you'll rarely see curves like this in the datasheet, and you can't rely on the nominal current ratings to know how to drive the LED most efficiently. If you want optimum efficiency, you have to measure the LEDs yourself. But, collecting this data manually is a pain in the ass! Automating the process will simplify my life considerably: I have about a dozen different LEDs at this point that I need to assess for use in glow markers.
I found some cheap laser diodes on ebay, and described them in a build log for my mid-air laser image display project. In the first phase of that project I need to quickly switch the lasers with a PWM signal, and will eventually need to drive them linearly. As you might expect, there was little data supplied with the LEDs from the ebay transaction. All I knew was that they were supposed to be driven from 3V, and output 5mW. Driving laser diodes can be a tricky business because they are easily damaged by over-current: the beam intensity inside the die is many times that escaping from the front facet, and can damage the diode at higher currents. In order to design a driver for these diodes, which don't contain feedback photodiodes, I needed to know more about them: where was the lasing threshold, how linear was the optical output with current in the lasing region, and how far could I push them before damaging the die. To find out, I tested one with increasingly higher current until it was damaged. Here's the laser, 3D-printed mount and sensor:
And the data I collected:
At the rated 3V, the diode draws 15.93mA. There is a 33-ohm resistor built into the diode package; I bypassed it for these measurements. The diode emits some very weak beam below 10mA (the lasing threshold) - this beam shows very little speckle, probably because it's mostly from spontaneous emission. Above the lasing threshold, the diode gets dramatically brighter and the emissions show clear speckle patterns. From 10mA to about 25mA, the beam grows fairly linearly with current. Above 25mA, funny things start to happen, as shown in the graph. As I increased current, the output would begin to drop. I let the output stabilize, then increased the current some more, raising the output until it dropped again. I repeated this until 40mA, then took a number of data points with decreasing current (cyan line). It's pretty clear that the drops in output were showing progressive damage to the laser die; after this over-stress, the diode emits about half the light it did before. I ran this experiment with two samples of the diodes, and saw the same pattern in both cases. These measurements can now inform a driver design (I'll probably stay between 10 and 20-25mA).
I made a simple manual tester to drive the I/V curves for these measurements. In doing so, I learned some more about what I really want in the automatic version; time to reflect on the original design ideas.