By turning the driver quickly on-and-off a number of times, you can access special functionality. Watch for the light show to indicate you’ve reached the click threshold, then stop clicking and keep the driver powered on.
The programming menu is self-driven. If you enter it by accident, just let it finish (without turning the driver off) and it’ll exit all on its own. Only turn the driver off in the programming menu if you want to change a setting.
Turn the driver off while on a certain menu item to change that setting. When you turn the driver back on, it will re-enter the programming menu at that setting, and display the new value you’ve set.
# of outputs
Set number of outputs from 1-4.
Output 1 Brightness
Select brightness from 24 values.
Output 2 Brightness
Same as above. Only appears if # outputs > 1.
Output 3 Brightness
Only appears if # outputs > 2.
Output 4 Brightness
Only appears if # outputs > 3.
Style of mode memory (none, classic, hybrid)
Programming Menu Details
Number of outputs The number of outputs the driver will cycle through as you turn it off and on. Most production drivers have 3: low, medium, high.
Brightness For each output, choose the brightness from a ramp of 24 possible values. Turn the driver off and on to start ramping. Turn it off and on when you reach the desired output to save it. There is a double-blink at the top of the ramp to indicate when you’ve reached the highest setting, then it rolls back around to the bottom. Ramps twice. If you don’t turn it off at all during those two ramps, no changes are made to brightness.
Mode Memory Mode memory determines which output slot the driver will power up at during normal use. There are 3 possible values for mode memory. The driver will blink the following number of times to show you which style is currently set:
Always powers up at Output Slot #1
Powers up at last saved Output, cycles upwards to next slot. (e.g. 2 -> 3 -> 4 -> 1 -> 2 ->3 -> 4 -> 1)
Powers up at last saved Output but next cycle starts at 1. (e.g. 2 -> 1 -> 2 -> 3 -> 4 -> 1 -> 2 -> 3)
Flashes out the current version of firmware installed on the driver. Different firmwares may behave differently, so this will help you identify which you have so you can find the appropriate documentation.
Flashes firmware numbers in the following pattern: MAJOR – pause – MINOR – pause – REVISION
So if you click 75x on firmware version 4.7.2 it’ll display: 4 flashes – pause – 7 flashes – pause – 2 flashes
Resets the driver to its delivered state. A last-ditch attempt to save a problematic driver, or a quick(ish) way to undo undesired programming changes.
For a white power LED (Nichia 219, Cree XP-L, etc) on firmware version 4.7.2, the 24 output levels in the ramp equal approximately the following LED currents:
PCB’s are manufactured in a large sheet (panelized) and connected to each other via little snap-away ‘sprues’. The sprues leave little holes on the edge of your board (mouse-bites) so a swipe over a file is needed to smooth the edges.
We’ll be reflow soldering the tiny surface-mount (SMT) components in a toaster oven and the solder dries quickly. Organizing each part into a labeled storage bin makes populating the board quick and precise.
Some components have their legs hidden completely beneath the part. Others have hair-thin legs < 0.5mm wide. Soldering these by hand is quite literally impossible. A company called OSHStencils can cut you a beautiful stainless-steel stencil to apply your solder paste for reflow soldering.
Solder paste is a mix of tiny balls of metal (in this case, lead) and flux. The flux is an acid which scours the PCB pad clean so that the lead can flow smoothly across it. If you look closely in the pictures you’ll see the tiny balls of lead suspended in the flux. Once the paste has been squeegee’d through the stencil, the components are carefully placed on top.
The boards are placed on a baking sheet and slid into a small convection toaster oven. By carefully managing the heat we can reflow all our solder without burning the boards or any components. After reflow, the board is inspected under a magnifying glass to ensure all solder joints are sound.
At-home reflow soldering can only do one side of a board, lest all the components fall off when you flip it over and heat it again. As a result, the other side needs soldered by hand.
Soldering by hand took me 54 minutes, but thanks to this convenient timelapse video, you can follow along in far less. 🙂
With the soldering complete, we can connect a AA power source and take the converter for a test-drive.
Assembling the Programming Interface
Unlike 15VP versions 1-3, the new v4 uses an ATtiny45 microcontroller which cannot be programmed using a SOIC clip. Instead, contact pads have been created and pogo pins will be used to flash the firmware into memory. To aid in this endeavour, a custom ‘programming harness’ has been designed to precisely position the driver and make flashing firmware as easy as pushing a button.
After working with so many tiny surface-mount components, these feel downright enormous to solder. It’s wonderful.
It’s time to add the 2nd, 3rd and 4th boards to the stack. I’m using 2-56 threaded stand-offs to hold everything together.
Pogo pins are little spring-mounted contacts that we’ll use to connect our programmer to our driver. They are needle-sharp and quite long. Our stack of PCB’s is designed to keep them from flexing side-to-side while keeping them at the perfect height to contact our PCB.
Not much to do now but test that it works!
Following assembly and programming, some rudimentary measurements were taken.
LED Current (mA)
LED Lumens (approx. /w XP-L Hi V2)
The good news:
The converter circuit works
The programming interface works
All levels are constant-current regulated (no PWM)
The bad news:
Performance is no better than most AA boost drivers from 4 years ago. With the Manker T01 able to reach 700 lumens for 30 seconds, I’d like to try harder for our initial 450mA goal
Upgrading the Test Power Supply
I noticed an interesting behaviour during testing: wiggling the wires to the battery changed the brightness. This got me questioning exactly how much resistance my power supply setup was introducing into the driver circuit, and whether it would perform better with a lower resistance supply.
The old power supply was built in ~15 minutes back in 2013. Featuring a AA battery holder and an unknown clicky switch, it was wired up with very thin 24 gauge wire and held together with solder and electrical tape. The LED is an old XP-G2 floating in thin air on a wafer-thin aluminum MCPCB (again sporting 24 ga. wiring).
The new power supply makes a few changes: thicker 18ga. wiring, a different switch, brass terminal posts and features the triumphant return of the stained oak base from 15VPv1. The Nichia 219 LED sits on a thick copper Sinkpad MCPCB which is mounted to an aluminum heatsink. Both assemblies have integrated heavy-duty alligator clamps.
Side-by-side, you can see the beefier components of the new build, which should (hopefully!) return improved performance during testing.
Hooking the 15VPv4 driver up to these test components resulted in the high mode increasing from 320mA to 415mA – a near 30% increase in performance and stability just by ditching my 4 year-old test rig.
The new power supply puts us above ~400mA, but I’d still like to squeeze a bit more power out of the battery. To that end, a few revisions were made and we now have 15VP v4.1.
The boards arrived and a test driver was constructed. I have good news and bad news.
The bad news is that v4.1 suffers from a candlelight flicker at low drive currents. It’s tough to capture on video so I’ve included the multimeter to show the fluctuating milliamp drive current (tap to play).
The oscilloscope shows the likely culprit:
Yellow is LED voltage. The wavy center line is expected and averages ~30mV. That waveform is not likely to be causing the flicker. The tall spikes are a different story. Those are high-frequency noise and average ~150mV. I suspect they are the culprits.
That entire image occurred in 1.2 milliseconds. If we increase the monitoring window to 6 seconds, it looks like this:
The solid yellow core is our wavy line (albeit compressed). I’m not overly worried about it – we simply can’t avoid a bit of ripple in a boost converter, especially at low current. The ragged yellow lines extending above and below though – that’s bad. It’s switching noise being transferred through the LED and (most likely) manifesting as the flicker in the video.
A few weeks were spent further modifying the PCB layout and switching components. 15VP v4.2 has now been sent to fab and I hope to have it back soon. Fingers crossed the changes eliminate some of the noise and flicker!
But not all is lost as I did say there was some good news. 😉
A bit better than 400mA eh? Now we just need to make sure we heatsink this bad boy, because after a couple seconds the board gets too hot to hold.
15VP v4.2 should arrive soon. Thanks for reading and check back later!
15VP v4.2 (and 4.3)
Apologies for the long delay between updates! Life’s been busy so I’ve been plunking away at 15VP as I’m able.
Being as the circuit is 90% complete (the only remaining issue is the flickering on low) I don’t have much to show! Troubleshooting the flicker hasn’t been very interesting. I did hire an EE to take a look but he wasn’t able to correct it either, sadly.
I can show you a couple things! After 10 years I’ve replaced my trusty Weller with a Hakko iron. It’s a luxurious soldering experience. 🙂
A pretty little shot from the oscilloscope. Dark blue is the LED voltage. It needs to be a touch more flat than it is now.
The next step is to switch a couple connections around on the board and send it to fab. Check back (hopefully not too much) later to find out how that goes.
Cheers for now!
I once again have good news and bad news.
The bad news first: I’ve given up on trying to use the boost IC that offers such amazing performance on High. I’ll be switching the circuit to a different boost IC which will likely not reach the same high output levels.
The good news: I’m totally ok with it! I’ve learned an enormous amount troubleshooting this issue. Every other component in the circuit is working perfectly, so I’m pretty comfortable saying that this IC is a poor fit and moving on. It feels good.
The cause of the ripple is pretty simple. At low drive currents, the boost IC automatically enters “PFM” mode (Pulse Frequency Modulation), which gives greatly increased efficiency at the cost of unpredictable switching waveforms. The ripple can be minimized through filters and capacitors, but only so much: the chip has a hysteresis window that appears to be exactly 100mV. This much ripple is visible in the LED, which needs only a tiny voltage change to flicker at such low brightnesses.
The picture below illustrates the issue. Even with a perfect feedback waveform (yellow), the output voltage (blue) is still swinging by 100mV between 2.67V and 2.57V. It wouldn’t be a big deal at 2Mhz, but at a frequency like 6kHz, it’s noticeable in the LED output.
The next step will be to swap out the boost IC (and some minor circuit changes that come with that) and see how a different chip will fare.
Thanks for following along and stay tuned!
Swapping the boost IC has improved stability and reduced output, exactly as expected. I’m moving on to tackle the last big problem with the circuit: it pre-flashes briefly when turned on, just as the early 47’s lights did.
You can see the issue in the picture below: the yellow peak on startup is a full 0.5V higher than it’s supposed to be. This is because the boost circuitry is coming online before the control circuitry. That extra half volt manifests as nearly 100mA across the LED so it’s quite the little flash.
I’ve made a small change to the circuit that should eliminate the pre-flash. Unfortunately it requires nearly 5 new components so the board has been very slightly expanded from 14mm to 15mm diameter to accommodate.
As soon as the 15VP v4.6 boards arrive in the mail I’ll post here, so check back later!
New boards arrived and the pre-flash fix mostly works. Certainly a lot better than it was. That fix uncovered an underlying issue however: the circuit does *nothing* for 300ms after powering on. It’s only 1/3rd of a second, but it’s noticeable. You can see it in the image below (the flat blue line just before the squiggles):
I removed most of the “extra” components from the board trying to isolate the issue and couldn’t. It was time to dig into the datasheets, where I eventually found this little gem of a chart:
There it was! 300ms are spent “calibrating” before the device goes to full output. I guess the lesson is to carefully read every single chart in every datasheet – a tall order when those documents can number 300+ pages. The 300ms delay simply isn’t going to work for the finished driver, so I’ve removed it and replaced it with a similar device (with no start-up calibration) that I hope will work.
Onwards, to version 4.7!
Version 4.7 of the 15VP driver has two major changes:
[SUCCESS!] Swap the chip with the 300ms startup delay for a different one
[ALMOST!] Remove any remaining pre-flash
The new chip works wonderfully. It now powers up so quickly that a different part of the circuit has introduced a slight pre-flash. It’s barely noticeable and only present at sub-mA drive levels though so I can live with it. Did I mention this chip has pins smaller than the point of a pin? Easily the smallest and hardest part I’ve ever had to solder.
The aforementioned tiny pre-flash can be seen in the scope image below. It’s 1ms long, only at sub-mA drive currents, and I think I have an idea how to squash it. If not, I can live with it.
Performance is pretty good. Output ranges from 500uA to 415mA, though on high without heatsinking the output quickly sags to 350-375mA.
As a coworker is fond of saying: “Perfect is the enemy of good”. The circuit is good enough at this point that I’m moving on to building some housings for it. I have two projects planned for it currently: a new revision of the Spyglass flashlight and something a bit different. Check back once in a while to see how they go!
Focus on Firmware
With the hardware in a pretty good place, I’ve been focusing on the firmware a bit. One of the annoying issues during testing is accidental mode-changing. When the light is bumped hard or the tailcap not screwed down fully, the circuit sometimes changes modes. Dealing with this is known as debouncing. I believe I have a decent firmware solution in place that accepts purposeful mode changes and ignores accidental ones. Here’s a little video of testing the solution by jiggling the connectors. Notice that the circuit stays on low output during the jiggling but goes high when a purposeful mode change is initiated.
——————————————————————————————– EPILEPSY WARNING: THIS VIDEO CONTAINS FLASHING. DO NOT CLICK. ——————————————————————————————–
A few other quality-of-life improvements made it in as well, including a smoother ramp when setting brightnesses and decreased pre-flash. It’s wonderful being able to reflash firmware in-circuit without dismantling the pill, so the next step will be to reflash a couple prototypes and ensure the debounce timing is good. Stay tuned!
Welcome to my longest running and most obsessive build: The 1.5 Volt Project.
The 15VP project started in 2012 as an attempt to build a 1.5-volt AA-powered flashlight from scratch. With no formal education in any of the required fields, I’ve spent 5 years of my evenings and weekends learning a little bit of everything: electronics, mechanical engineering, drafting, machining and small business administration. It’s been a wild journey that continues to this very day, so follow along by clicking on any of the pictures below!
This ongoing project is aimed at organizing the critical mass of electronic components rapidly overflowing onto all surfaces of my workspace.
I previously organized components by project: each batch of parts for a project was stored in their static bags in the cardboard box they arrived in. I later switched to a plastic drawer cabinet. When that cabinet filled, it was back to cardboard boxes, then fishing tackle boxes, then more cardboard boxes…
I eventually had no idea what parts I had or how many. I’d order resistors from Digikey just to find 3 identical bags of them downstairs. Into a cardboard project box they’d go, which I’d gingerly stack on top of 2 similar boxes.
I’ve seen other hobbyists use binders to organize their components and that seems to provide a high-density, low-size, easily-navigable solution, so I’m going with that.
I started with all the smaller surface mount components: transistors, resistors, MOSFETs and IC’s.
Once all the tiny SMT components were nestled in their static bags, I moved on to any small-ish reels of components. If they could still fit in a folded anti-static bag, they went into one. A lot of the reels needed re-wound by hand to tighten them up.
Finally, the large reels of components with 1000+ pcs. These were far too large for the business card sheets, so plastic trading card sheets were used instead.
The 5″ binders proved necessary – some of the plastic sheets are quite thick. They are still quite easy to navigate and parts are very easily identifiable by their stickers.
The end result is fantastic. I started out with…
11 medium-sized cardboard boxes full of static bags
3 fishing line reel boxes full of resistors
4 large drawer cabinets
… and finished with two 5″ binders that sit neatly in less than 1 sq.ft. on my workbench.
It’s a great start to organizing my workspace and I’m very satisfied with the result. I’m far from done though, so check back later!
A Christmas 2014 gift for my wife, these earrings are fully-functional light engines from the Spyglass v1 project. The rings and clasps are .999 silver. The custom jewelry box was manually machined from C660 bearing bronze.
This was a Christmas 2016 gift to my brother-in-law. The material is aluminum bronze (85% copper, 15% aluminum). The compass is a 20mm grade AA button compass. Start-to-finish it took 12.5 hours to complete.