15VP v4

Version 4 of the 1.5V Project (15VP) is a complete redesign using lessons learned from Version 3. It has the following design goals:

  • Utilize an existing IC (integrated circuit) to handle boost operations
  • Use a true current-control mechanism to regulate LED brightness
  • Performance goal is to provide 1mA – 450mA to the LED
  • Make it all happen on a single double-sided 14mm board

Jump to a Section

Assembling the Driver PCB

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.

Mouse bites on the edge of a PCB board.
The panelization process leaves “mouse bites” on the edges of the PCB.
Filing the edge of a PCB.
Filing the mouse bites off a PCB.

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.

SMT components organized in a plastic container.
SMT components organized in a plastic container.

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.

SMD stencil
Stainless steel stencil for surface mount 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.

Applying solder paste to stencil.
Preparing to swipe the solder paste across the stencil.
Solder paste applied to PCB.
Solder paste applied to PCB.
SMD parts on solder paste.
Surface-mount components placed on solder paste.

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.

PCBs awaiting reflow
PCBs on baking sheet awaiting reflow.
Reflowing PCBs in toaster oven.
PCB’s in the oven being reflowed.
Freshly-reflowed PCB
Freshly-reflowed PCB

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.

Testing the 15VPv4 LED driver.
Testing the 15VPv4 LED driver.


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.

Circuit boards and components.
All the components for building the 15VPv4 programming interface.

After working with so many tiny surface-mount components, these feel downright enormous to solder. It’s wonderful.

Components on PCB
All the components placed on the board for soldering.
Soldering components to board.
Soldering all the discrete components onto the board.
Soldering complete.
All components have been soldered to the PCB and the leads trimmed.

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.

2-56 mounting hardware
2-56 threaded hardware to build up our PCB stack.
Programming Interface built
All 4 boards have been built up and secured with the hardware.

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.

Looking through the PCB stack at the pogo pin holes.
Looking through the PCB stack at the pogo pin holes.
A bit of tape keeps them all level and at the perfect height to touch our PCB.
A bit of tape keeps them all level and at the perfect height to touch our PCB.
With the tape to catch them, we drop a pin into each hole.
With the tape to catch them, we drop a pin into each hole.
The bottoms of the pogo pins are soldered to form a sound electrical path and keep them in place.
The bottoms of the pogo pins are soldered to form a sound electrical path and keep them in place.
When the tape is removed, all pins are neatly level.
When the tape is removed, all pins are neatly level.
The nested boards keep the pins perfectly straight so they each hit their target.
The nested boards keep the pins perfectly straight so they each hit their target.

Not much to do now but test that it works!

Performance Testing

Following assembly and programming, some rudimentary measurements were taken.

Version Battery LED Current (mA) LED Lumens
(approx. /w XP-L Hi V2)
15VPv4 Eneloop (1.2V) 3 1.2
    33 13
    312 135

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).

Old battery holder with switch and LED
Old battery holder with switch and LED

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.

New power supply
New power supply

Side-by-side, you can see the beefier components of the new build, which should (hopefully!) return improved performance during testing.

Old test rig on left vs. new test platform on right.
Old test rig on left vs. new test platform on right.

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.

15VP v4.1

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:

Noise and voltage spikes in 15VP v4.1 circuit at 100us interval.
15VP v4.1 candle flicker waveform

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:

Noise and voltage spikes in 15VP v4.1 circuit at 500ms interval.
15VP v4.1 candle flicker waveform

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. 😉

15VP v4.1 max output current.
15VP v4.1 700mA output

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.

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. 🙂

Upgraded to a Hakko FX888D!
Upgraded to a Hakko FX888D

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.

Scope readings from 15VPv4.3
15VP v4.3 waveforms

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!

15VP v4.4

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.

15VPv4.4 Waveforms
15VP v4.4 PFM ripple

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!

15VP v4.5

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.

15VPv4.4 Waveforms
Pre-flash on 15VP v4.5 circuit startup

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!

15VP v4.6

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):

300ms pause on converter startup

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:

300ms calibration delay

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!

15VP v4.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.

Tiny GPIO pins (smaller than a pinpoint) on the top chip
Tiny GPIO pins (smaller than a pinpoint) on the top chip

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.

15VP v4.7 startup into sub-mA drive current
15VP v4.7 startup into sub-mA drive current

Performance is pretty good. Output ranges from 500uA to 415mA, though on high without heatsinking the output quickly sags to 350-375mA.

15VP v4.7 driving N219 @ 500uA
15VP v4.7 driving N219 @ 500uA
15VP v4.7 driving N219 @ 415mA
15VP v4.7 driving N219 @ 415mA

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.


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!