I actually prototyped a Version 2.0 back in April. I got distracted by some other things - like starting to use hackaday.io - so dropped it for a while. Here's the ugly board:
As I discussed last time, simply replacing the high and low-side drivers with more efficient MOSFETs is likely to cause more problems than it solves, because the LED current will become difficult to control. But what about replacing the drivers and adding an inductor to regulate the current pulse? Here's the idea (but not what I actually prototyped):
Q1 and Q2 are low-Rds MOSFETS. L1 and D2 have been added around the LED. While Q1 and Q2 are conducting, current builds through L1 and D1. Once Q1 and Q2 turn off, the inductor current continues to flow through D1 and D2 until the inductor is de-magnetized. The LED current pulse will then be triangular, with the maximum value (and total LED power) a function of the pulse width (assuming the inductor is large enough to stay out of saturation). The integrated LED power is now a function of the square of the pulse width, which might make a variable-output version a little more difficult, but maybe some software on the PIC can handle that.
The four inputs are driven from four PIC output pins. Here are the proposed waveforms:
During the normal (non-pulse) state, C1 is charged through D3 and D4. Just before a pulse, the charge lines are switched to their respective "off" states to avoid any possibility of shoot-through (imagine what happens if charge_h and discharge_l are both high simultaneously). This "guard" time before the pulse need not be very long. After the guard time, the discharge lines are switched to their "on" states to start energizing L1. Current continues to build through L1 (and D1) until the discharge lines are switched "off" - this forms the first half of the current pulse. At that point, the second half of the pulse consists of the energy in L1 flowing through D1 and D2. A second guard time is shown in the diagram, but it's not strictly necessary, as there's no danger of shoot-through after the pulse.
I called energizing the inductor "charging" and de-energizing it "discharging". Are "magnetizing" and "demagnetizing" the proper words?
Back in April, when I built the prototype, I used ZTX618 and ZTX718 BJTs for the drivers, because I didn't have suitable MOSFETS. The problem with BJTs on both sides is that the base charge storage time stretches the pulse, making it difficult to control the pulse width. I ended up using some Schottky diodes across the base resistors to increase the turn-off speed, but stopped short of implementing full Baker clamps - at that point, it's time to use MOSFETs.
I ended up simulating the BJT circuit in LTspice. Here's how it looks there:
And the resulting simulated pulse:
The pulse width is somewhat arbitrarily set in this simulation run, but you can get the idea.
You can download the simulation file for LTSpice here.
I played enough with the prototype to see that it "worked," but not enough to get solid data. I figured that I'd switch to MOSFETs before really evaluating the idea. I have a test PCB with built-in instrumentation mostly designed, but I'm going to revisit it to use some more modern PICs in light of Jaromir's findings about the overall efficiency gain with newer devices. It's time to finish that PCB design and send it out.