thefreeman’s HDR Anduril 2 high efficiency drivers - update : FWxA boost driver

Post 163 - so this is what it looks like when enthusiasts flashlight history is being made.. nice! I must be feeling kind of what everyone was feeling a few years back when lexel was doing his thing too?

this is AWESOME. I cannot contribute anything but that. Thank you Freeman!

Do you mean that the resistor is underneath the button with the button led, rather than on the driver board? If this is the case, rather than trying to replace the resistor, I might ask Hank to use a bigger resistor in my next light. That would simplify things. Another idea is getting it with a deep red led. The one I have now is green, in retrospect not a great choice on my part.

I installed it in the D4v2 :

I cut a few traces and added a bridge to wire the MCPCB in 6V, I used sliced 2700K and 5000K (or 5700, not sure) LH351Ds :

I used thinner wires for the aux LEDs, I don’t know how they manage to fit such big wires originally.

They’re only for 110°C max though, probably OK but not for too much soldering, I think I’ll try to use enamelled wire like TTerev3 is using next time.

Quick video to show the ramping

Awesome!

Any idea where to get these stranded enameled wires commonly found in headphone cables or how they are called?

Freeman, you are new Lexel. That’s amazing!

TTerev uses magnet wire, which is a solid wire, but very thin, 34AWG IIRC, I think that’s better than stranded, I have some thin PTFE solid wire (32 or 34AWG I think) and the fact that it keeps the bend is IMO much better than the springy thin stranded silicone wire, the problem with PTFE is that the insulation is annoying to remove (and it can slide out of the whole wire).

Yesterday I reflowed a buck driver and tested it today :

6A, 1S to 1S, same 18mm clearance diameter and HDR of course, this one is 21.2mm for a H04.
It works very well and the efficiency is also very good for this small IC :

This is after I swapped the 0.9uH (8.8mΩ) inductor for a 0.47uH (4.6mΩ) one, but the efficiency was slightly higher with the 0.9uH at the two points I measured before swapping :
4Vin 1Aout : 97.2% vs 96.4%
4Vin 3Aout : 95.9% vs 95.5%

This is also with a quad SST-20 meaning a very low Vf and with a buck converter the higher the Voltage difference between the input and output the lower the efficiency.

The total resistance of the driver is ~37mΩ in dropout (100% duty cycle), not quite as low as a FET direct drive but still not too far from it.

This looks amazing! What is the value of the lowest current you tested? Is there a current level at which a limiting resistor (fixed or pwm) becomes more efficient? Wherever this crossover point is, is this above or below the floor of a “single stage” (non HDR) buck driver ?

40mA, take a look at the datasheet page 16 (PSM), the efficiency doesn’t decrease a lot at low current, here it decreases more due to the MCU’s consumption.

Thanks. I guess I’m not familiar with the typical range the MCU consumes. I’m thinking about ‘survival’ or ‘vampire’ types of runtime on super low outputs and if you could get better runtime using a bank of tinnyy fets and resistors and throw the mcu in a low power mode to stretch runtimes. Just thinking out loud. Sorry

I measured 2.4mA at VCC=2.8V and 10Mhz for the MCU alone, at moonlight levels the power consumption is mostly the MCU.
So yeah putting it into ULP would help, but then you have one output level per FET resistor channel, and if you put several you need a bunch of traces to route, something I don’t like very much :weary:

I think two/three well selected firefly moonlight levels would be good enough. With two channels, you get three modes 10 01 and 11. This would make the hdr dual sense circuit redundant. You’d be giving up ramping ultra lows for possibly drastic extensions in runtime.

Oh right of course :person_facepalming:

But the ultra long runtime can be achieved with the buck converter, Zebralight does it and the Attiny1616 is capable of it by using the TCD for running the PWM in ULP, or the DAC, but I can’t implement that in Anduril, this is a job for the software guys/girls.
That way there is no need to give up the ramping and especially the firmware adjustable levels, personnaly I don’t want to have to swap resistors to change a level.

At the present time though I can increase the efficiency a bit by lowering the frequency to 2.5MHz (1.1mA) for low modes (dynamic underclocking), I need to check how much ripple the lower PWM frequency (2.5kHz) produces with the RC values used.

I can’t speak for others but I’m happy to help with the software any way I can. I don’t currently have a t1616 test board though. I’ll post some general thoughts later about these low modes.

I’d love to give this buck driver a shot with using the t1616’s DAC. And I bet we could shoehorn the new Dynamic PWM functionality to switch Vref (0.55, 1.0, 1.5, and 2.5V) on the fly to support lower modes without needing a second current sense resistor.

You design the hardware to support the DAC output instead of LDO-PWM-RC and I’ll get the code working :wink: That should help reduce the part count and some of the complexity. Perhaps making single-sided possible?

Note that the hardware resolution is limited, this is the reason in the first place I’m using this dual sense resistor topology, going lower than 40~50uV Vsense is asking for trouble. (So with 50mV max Vsense that means 1000:1 i.e. 10bits), It doesn’t really matter that you can achieve a higher PWM or DAC resolution except for making the ramp smoother on the low end.

Mike C for his boost driver used the DAC with both 2.5V and 0.55V Vref in order to achieve a resolution slightly higher than 10bit, then switched to dual sense resistor because it achieves a much higher resolution.

BTW this one has only 3 passives on the back (+ the hardware delay components, because no software delay yet) which can be hand soldered.


(R3 R4 and R8, FF1 is not needed)

Is the 40-50uV issue a limitation with the op-amp range? I guess going with DAC vs LDO-PWM-RC does more to help with low-level flickering than it does with viable range, right?

Yes, we get too close to the Op-Amp offset voltage and the one I’m using is already very precise.
I already get a different curent value than expected at the lowest level due to this, roughly +–30%, if we go lower this error will increase a lot, and also sometimes it can flicker (filtered PWM or DAC has no effect on this).

BTW I believe the lowest level of the KR4 firmware use this uhm… ”effect”, the PWM level of the lowest ramp level is zero, so the op-amp should adjust the gate of the mosfet to get 0V at its inverting input, except with the offset voltage it might get 10uV (for example) at the inverting input, thus a current. And it’s not stable so it flickers, offset voltage also varies with heat.

Zebralight on their recent drivers use the internal op-amp of the MCU (PIC16F1705), it has a terrible precision, 1uV 1mV offset voltage, this is why they use three sense resistors and relatively high Vsense.

Correction : this was measured on my linear driver and it’s the total Iin at 4Vin and 5uA Iout, at 2.5MHz Iin is 1.1mA.

With the buck driver I get 2.44mA Iin at 4Vin and 6.4uA Iout, 2.52mA at 118uA Iout so the efficiency of this buck converter is really good at very low output.

I get 1.14mA at 2.5MHz 6.4uA Iout, as expected. It doesn’t change much at 3Vin, +~20uA.
So it should last something like 3 and half a month at 100μA Iout with 3000mAh, good enough for me.

The SC62 from this famous reddit post did 412 days, if it uses the same moonlight current as the SC/H600 II then it’s 100uA too.