At Aug 2023, I announced the first reversion of my high efficiency 32mm Buck driver in BLF. At that time, that driver still have a lots of issue which I did not solve. The issue which is listed at below:
- Lacking of true moon light mode(the Current only goes down to 0.5Amps which is too bright actually)
- Lacking of Automatically Calibration and Qualification testing system(due to the Non-linearity of DrMOS)means I have to manually set calibration data for each driver
- original driver did not have database mechanic like FRU in server industrial to storage per-Flashlight information(Like LED Iccmax, thermal sensor calibration data and etc.)
- Did not support 6V LED
After 7 months of research, I finally come with a new revision of this driver and solving all of this issue and this is the result which I came with:
The picture shown above is the example flashlight build to show the capabilities of this driver, the spec is shown at below:
- Housing : DDH-D7D (Extended Edition which supports 3 7070 LEDs)
- Emitter : CREE XHP70.3HI 6500K 70CRI with flux bin of P2
- Driver : Xtern Ripper V3.0
- Battery : Molicel INR21700-P45B 3S1P(with Cell equaliser and 65W PD3.0 charging)
Solving moon light issue
In my original design, I use the main BUCK converter for the entire range(from moonlight to turbo) of operation, but this will introduce a problem causing by current slew rate(ÎIL). because we need to make sure the current inside the Inductor can rise fast enough to reach desired peak, that means current slew rate(ÎIL) will be too high for low current operation. At that time, I used a method called âVID quiverâ
which use a 20KHz pulse to modulate the current control input to get lower current. But this method canât get real moonlight and only goes down to 0.5Amps which is not low enough for a real moon light mode and also DrMOSâs internal IMON did not have enough dynamic range and SNR to sense low current,this will causing noise injection and cause flickering at low mode.
To solve this issue, the most simple way is implementing another converter to serve the lower current like 7135 Linear Regulator in FET drivers. but this is not an easy job due to lack of space. After about a month of thinking, I came with the new idea which is stacking another layer of PCB above the MCU subsystem board, And use LT3935 for Auxiliary outputs. And this is the topology of this method.
The main BUCK convertor located at bottom PCB will serve any mode from 3.9-33Amps, And the auxiliary BUCK convertor which I add will serve lower current modes from 0.05 to 3.9Amps. After I verified this idea is possible, I quickly lay the PCB out and it looks like this.
but now I have a huge problem is get the 12V Bus to the Moonlight PCB, in my original design, I did not put any pin header to carry power in signal BTB chains for safety reason(12V power is extremely dangerous for 3.3V weak signal rails),So I came with this innovative solution which uses a vertical Riser PCB to carry power and looks like this:
And here is the result of this Moonlight DLC board:
On the left is the flashlight that a build for my family, which using NightWatch BV1 Driver and runs at low mode(about 0.3A) and the right is the example flashlight use this driver and runs at 0.05A. At this point the moonlight issue is solved.
Also, due to no need for PWM, that means this driver can completely runs at DC-Dimming during entire operation. So I updated the dimming system as well. the new system which accomplished with two 16bit 2LSB INL DAC with internal 2PPM reference to archive extremely stable current regulation. The picture shown below is took at 1/20000 shutter speed when the driver is running at 0.05A moonlight mode.
As you can see, No any flickering at all(event 20Khz high frequency PWM).means this driver can use for photography lighting with HI-CRI LEDs.
Auto Calibration feature
In FlashLightOS V2, I added automatically calibration system to automatically calibrate the current output of the driver and generating calibration LUT which will permanently saved into driverâs Config ROM. here is the test-bench I build to do this calibration.
The test-bench is construct by a large heat sink and a 3P1S LED DTP(same one use inside DDH-D7D housing) with three SFQ75.3 6V LED(the LES was destroyed by accident so it only provide blue light) and a Calibration Module. After the driver is assembled, I will connect the driver to the test-bench and send 12V power to it. than you just need to connect the driver to PC and send âhwdiag -calâ command via console, the driver will automatically calibrate itself and post status to console.
After calibration process, the driver will save Calibration database to ROM and starts testrun. the testrun will post information and automatically generate CSV reports for drivers electrical statistic like picture shown below.
Also I wrote some Python script will read the CSV report and generate graph form report like this:
This system is a very powerful feature means you donât need to calibrate the driver manually and test the efficiency by manually tweaking output current and record electrical statistic by typing into a excel. Also this system can be used to automatically test LED and battery performance and directly generating graph report.
New support for 6V LED
the original version did not support 6V LED due to some limit of DrMOS and after I tweaking the loop comp. system and it can supports 6V LED now. here is the log(driving three XHP70.3HI inside DDH-D7D housing)from runtime statistic log system included in the firmware.
The driver is running at 32Amps output with 214.32W LED power, and system average efficiency is 97.3% and peak efficiency can up to 98.1%. Which is absolutely crazy for a high current BUCK driver in 32mm size and running at 1MHz switching frequency with power density up to 17W per cm^3.
Exterior look
This driver has three 4Layer PCB which stacking in vertical position to archive maximum space utilization. And I also designed an Copper heat transfer block to directly conduct heat from DrMOS/Inductor and Auxiliary buck converter ICs to the case. This block can make sure the component runs cooler for longer lifespan.

This is the exterior look of the back of this driver when installed into DDH D7D housing. The USB- Type-C ports doubled as firmware upgrade port and config console port to config directly. You just need to hold the side switch and plug it into PC via any USB Type-C to Type-C cable, than the driver will automatically boot to USB DFU mode and allow you to upgrade the firmware directly via upgrade utility. No flashing dongles or Adapter required.
About future feature in progress
Current firmware size is 130048Bytes which left zero spaces in MCUâs ROM and became a huge pain when try to fit more feature inside. So Iâm gonna to porting the firmware to STM32G4 series MCU with Cortex M4 core and much larger code spaces and better performance. At that time I will add BLE support and user can remotely control the flashlight or tweak the config via WeChat mAPP or Android App.
Open-Source Link
Currently this project is just finished yet and Iâm working on a English version of Docs. But now its accessible via Github. This project also used for my essay of high school so I wrote it completely in Chinese, Sorry about that.
Hardware(including all PCBs for this driver)
Firmware(including some util and full firmware code)