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
- Assembling the Programming Interface
- Upgrading the Test Power Supply
- 15VP v4.1
- 15VP v4.2 (and 4.3)
- 15VP v4.4
- 15VP v4.5
- 15VP v4.6
- 15VP v4.7
- Focus on Firmware
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.
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.
|Version||Battery||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!