This documentation is intended to cover the advanced functionality of the 15VP v5.2 flashlight driver. In normal use you shouldn’t need any of it, but it’s fun to have there should you want to customize things.
Physical Layout
Quick Reference Guide
Print out this double-sided PDF, cut out one of the guides, roll it around a AA battery, and insert it into the battery tube. Now anytime you want to customize your driver, you have the instructions readily available!
Quick access to common functions not requiring a trip to programming menu
Programming Menu
Setting
Light Show
Functionality
# of outputs
1 blink
Set number of outputs from 1-4
Output 1 Brightness
2 blinks
Select brightness from 24 levels
Output 2 Brightness
3 blinks
Same as above. Only appears if # outputs > 1
Output 3 Brightness
4 blinks
Same as above. Only appears if # outputs > 2
Output 4 Brightness
5 blinks
Same as above. Only appears if # outputs > 3
Mode Memory
6 blinks
Style of mode memory (none, classic, hybrid)
Debounce
7 blinks
Ignore accidental clicks (off, short, med, long)
Stepdown
8 blinks
Stretch runtime by lowering output (off, on)
3V Mode
9 blinks
Enable 3V battery support (off, on)
Click Length
10 blinks
Speed to tap button for click (slow, med, fast)
Less commonly used configuration options and advanced features
Factory Defaults
From the factory, your circuit ships with the follow defaults set:
Setting
Default Value
Notes
# outputs
4
Output 1 Brightness
Level 0
4mA (1.5V) / 4ma (3.7V)
Output 2 Brightness
Level 6
16mA / 16mA
Output 3 Brightness
Level 15
124mA / 124mA
Output 4 Brightness
Level 24
550mA / 925mA
Mode Memory
none
Debounce
Medium
Stepdown
Enabled
“Battery-stretch” to prevent strain on cell
3V Mode
Disabled
Click Length
Medium
Battery Protection
The following thresholds are configured for low-voltage protection:
Voltage Source
Low Voltage Warning
Low Voltage Shutdown
Notes
0.9 – 1.9V
0.950V
0.800V
1.91 – 3.3V
2.7V
2.5V
If 3V Mode enabled
3.31 – 4.5V
3.3V
2.9V
Thermal Protection
The 15VP circuit has built-in thermal protection. If the temperature of the microcontroller exceeds 330 Kelvin (57°C or 134.33°F) the circuit will step-down output by 2 brightness levels. Temperature is measured every 20 seconds and the circuit will continue to stepdown until the temperature limit is reached.
Light Shows
Your driver may decide to display a little light-show while you’re using it! Refer to this table to decode what it’s trying to tell you.
Light Show
Operation
Notes
0 blinks & tiny brightness decrease
Over-current stepdown
Current too high
1 very quick blink & brightness decrease
Thermal stepdown
Circuit too hot
2 very quick blinks & brightness decrease
Low-voltage stepdown
Battery low
2 slower blinks & brightness the same
Low-voltage notification
Battery low
3 hi-lo ramps to lo brightness; blinks every 5s
Low-voltage shutdown
Battery dead
Output Levels
The 15VP has 25 output levels with 2 output curves (1.5V and 3.7V). The approximate milliamp current for each driver level is as follows:
The nitty-gritty details of each setting can be found below!
Battery & Current Readout
The circuit measures both the battery voltage and LED current, then flashes them out.
User Interface
The 15VP v5.2 circuit features two different user interfaces (UI’s). You can switch between them at will. They allow you to control the brightness in different ways.
Firmware Version
Just as with the voltage/current readout, this function will flash out the current firmware version.
Moonlight Calibration
The lowest output of the circuit (Level 0 of 24) can be fine-tuned using this subroutine. The calibration value is remembered across battery changes. If you factory reset, you will need to do this again.
Primary LED Calibration
After a factory reset, you must calibrate the primary LED. This must be done twice:
Once with a fully-charged 1.2V Eneloop
Once with a fully-charged 4.2V lithium-ion cell
Calibration takes approximately 3 minutes – your light will ramp slowly down measuring LED current and setting values appropriately. When calibration is complete, a small light show (3 sets of 5 blinks) will occur. You can re-run calibration at any time from the Quick Access Menu.
The Leash Lantern utilizes a 15VP v4.8 driver, albeit with slightly different firmware options.
Instruction Manuals
Easy print & fold instruction manuals. Just print one out, fold it lengthwise, then width-wise to form a little 4-page book!
Instruction Manual (Standard Functions)
Instruction Manual (Advanced Functions)
Instructional Video
Quick Reference Guide
Print out this double-sided PDF, cut out one of the guides, roll it around a AA battery, and insert it into the battery tube. Now anytime you want to customize your driver, you have the instructions readily available!
Takes a reading at the current output level (this is important to note because battery voltage sags as LED current increases). Then flashes out the battery millivoltage followed by the LED current (in milliamps).
So if you tap 14x and keep the light on, the circuit might display:
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.
Setting
Light Show
Functionality
Output 1 Brightness
1 blink
Select brightness from 24 values.
Crosswalk Timer
2 blinks
Seconds at high output (15, 30, 45, 60)
Crosswalk Enabled
3 blinks
Allow crosswalk mode (off, on)
Debounce
4 blinks
Ignore accidental clicks (off, short, med, long)
Stepdown
5 blinks
Stay in regulation (off, on)
Voltage Monitoring
6 blinks
Monitor battery voltage (off, on)
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.
Crosswalk Timer How long the circuit should stay at high output for the crosswalk timer. Choose from 15, 30, 45, or 60s (1 – 4 blinks accordingly).
Debounce Debounce determines whether the driver will ignore a tiny power outage, such as banging the host on a table and rattling the battery. Can be used to customize the “feel” of a mechanical switch to ensure only purposeful mode changes actually occur, while ignoring accidental ones.
# Blinks
Debounce
Description
1
Off
All power outages count as a click.
2
Short
Tiny power outages ignored (couple milliseconds)
3
Medium
Brief power outages ignored (hundred or so milliseconds)
4
Long
Longer power outages ignored (few hundred milliseconds)
Stepdown Stepdown determines whether the driver will monitor LED current and attempt to stay in regulation (flat output). Maximizes runtime by intelligently decreasing output to prevent strain on the battery and LED.
# Blinks
Setting
Description
1
Off
Does not check or stepdown
2
On
Steps down 2 output levels every 8 seconds until regulated
Voltage Monitoring Whether the circuit should monitor battery voltage and notify when it’s getting low. Advance warning of low battery before you set out into the dark.
# Blinks
Setting
Description
1
Off
Do not monitor or notify when battery is low.
2
On
2 quick blinks every 30s if battery < 0.95V (at current output)
Firmware Version
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.8.1 it’ll display: 4 flashes – pause – 8 flashes – pause – 1 flashes
Factory Reset
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.
Output Levels
For a white power LED (Nichia 219, Cree XP-L, etc) on firmware version 4.8.1, the 24 output levels in the ramp equal approximately the following LED currents:
This documentation is intended to cover the advanced functionality of the 15VP v4.8 flashlight driver. In normal use you shouldn’t need any of it, but it’s fun to have there should you want to customize things.
Physical Layout
Quick Reference Guide
Print out this double-sided PDF, cut out one of the guides, roll it around a AA battery, and insert it into the battery tube. Now anytime you want to customize your driver, you have the instructions readily available!
Takes a reading at the current output level (this is important to note because battery voltage sags as LED current increases). Then flashes out the battery millivoltage followed by the LED current (in milliamps).
So if you tap 14x and keep the light on, the circuit might display:
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.
Setting
Light Show
Functionality
# of outputs
1 blink
Set number of outputs from 1-4.
Output 1 Brightness
2 blinks
Select brightness from 24 values.
Output 2 Brightness
3 blinks
Same as above. Only appears if # outputs > 1.
Output 3 Brightness
4 blinks
Only appears if # outputs > 2.
Output 4 Brightness
5 blinks
Only appears if # outputs > 3.
Mode Memory
6 blinks
Style of mode memory (none, classic, hybrid)
Debounce
7 blinks
Ignore accidental clicks (off, short, med, long)
Stepdown
8 blinks
Stay in regulation (off, on)
Voltage Monitoring
9 blinks
Monitor battery voltage (off, on)
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:
# Blinks
Memory Style
Description
1
None
Always powers up at Output Slot #1
2
Classic
Powers up at last saved Output, cycles upwards to next slot. (e.g. 2 -> 3 -> 4 -> 1 -> 2 ->3 -> 4 -> 1)
3
Hybrid
Powers up at last saved Output but next cycle starts at 1. (e.g. 2 -> 1 -> 2 -> 3 -> 4 -> 1 -> 2 -> 3)
Debounce Debounce determines whether the driver will ignore a tiny power outage, such as banging the host on a table and rattling the battery. Can be used to customize the “feel” of a mechanical switch to ensure only purposeful mode changes actually occur, while ignoring accidental ones.
# Blinks
Debounce
Description
1
Off
All power outages count as a click.
2
Short
Tiny power outages ignored (couple milliseconds)
3
Medium
Brief power outages ignored (hundred or so milliseconds)
4
Long
Longer power outages ignored (few hundred milliseconds)
Stepdown Stepdown determines whether the driver will monitor LED current and attempt to stay in regulation (flat output). Maximizes runtime by intelligently decreasing output to prevent strain on the battery and LED.
# Blinks
Setting
Description
1
Off
Does not check or stepdown
2
On
Steps down 2 output levels every 8 seconds until regulated
Voltage Monitoring Whether the circuit should monitor battery voltage and notify when it’s getting low. Advance warning of low battery before you set out into the dark.
# Blinks
Setting
Description
1
Off
Do not monitor or notify when battery is low.
2
On
2 quick blinks every 30s if battery < 0.95V (at current output)
Firmware Version
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.8.1 it’ll display: 4 flashes – pause – 8 flashes – pause – 1 flashes
Factory Reset
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.
Output Levels
For a white power LED (Nichia 219, Cree XP-L, etc) on firmware version 4.8.1, the 24 output levels in the ramp equal approximately the following LED currents:
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.
Setting
Light Show
Functionality
# of outputs
1 blink
Set number of outputs from 1-4.
Output 1 Brightness
2 blinks
Select brightness from 24 values.
Output 2 Brightness
3 blinks
Same as above. Only appears if # outputs > 1.
Output 3 Brightness
4 blinks
Only appears if # outputs > 2.
Output 4 Brightness
5 blinks
Only appears if # outputs > 3.
Mode Memory
6 blinks
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:
# Blinks
Memory Style
Description
1
None
Always powers up at Output Slot #1
2
Classic
Powers up at last saved Output, cycles upwards to next slot. (e.g. 2 -> 3 -> 4 -> 1 -> 2 ->3 -> 4 -> 1)
3
Hybrid
Powers up at last saved Output but next cycle starts at 1. (e.g. 2 -> 1 -> 2 -> 3 -> 4 -> 1 -> 2 -> 3)
Firmware Version
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
Factory Reset
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.
Output Levels
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.
The panelization process leaves “mouse bites” on the edges of the 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.
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.
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.
Preparing to swipe the solder paste across the stencil.Solder paste applied to PCB.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 on baking sheet awaiting reflow.PCB’s in the oven being reflowed.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.
Success!
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.
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.
All the components placed on the board for soldering.Soldering all the discrete components onto the board.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 threaded hardware to build up our PCB stack.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.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.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.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
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
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.
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:
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:
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 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.
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. 🙂
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.
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.
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.
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
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
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…
My "organization method" before embarking on this endeavour. All of these parts belong to a single project.
My "organization method" before embarking on this endeavour. All of these parts belong to a single project.
Reels of SMT resistors stored in plastic fishing line boxes.
Reels of SMT resistors stored in plastic fishing line boxes.
Plastic parts drawers can be used to hold components but they take up a lot of room.
Plastic parts drawers can be used to hold components but they take up a lot of room.
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.
ENOUGH!
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.
A couple 5 inch binders should provide enough storage space for sheets of components.
A couple 5 inch binders should provide enough storage space for sheets of components.
Business card holder sheets provide a space-saving method of storing electronic components in a 3-ring binder.
Business card holder sheets provide a space-saving method of storing electronic components in a 3-ring binder.
Static-resistant parts bags from Digikey. These are 2x3" with a zipper top.
Static-resistant parts bags from Digikey. These are 2x3" with a zipper top.
Digikey used to provide labels with all the key information about a part, but in 2014 switched to stickers. I cut them off the bag and reuse them in my binder sheets.
Digikey used to provide labels with all the key information about a part, but in 2014 switched to stickers. I cut them off the bag and reuse them in my binder sheets.
The 2x3" static bags can be folded in half and will fit perfectly in a business card holder sheet.
The 2x3" static bags can be folded in half and will fit perfectly in a business card holder sheet.
The labels with all key info is slipped on the other side so each static bag can be identified at a glance.
The labels with all key info is slipped on the other side so each static bag can be identified at a glance.
Front & back view of the business card sheets (with components & labels) in a 5" 3-ring binder.
Front & back view of the business card sheets (with components & labels) in a 5" 3-ring binder.
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.
Various reels of SMT components in their plastic storage bags.
Various reels of SMT components in their plastic storage bags.
This reel of 0402 resistors has been tightened to fit inside a small static bag.
This reel of 0402 resistors has been tightened to fit inside a small static bag.
A tightly-wound reel of SMT resistors stored in a small static bag.
A tightly-wound reel of SMT resistors stored in a small static bag.
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.
These trading card pages fit in a 3-ring binder and give 9 pockets for storing components.
These trading card pages fit in a 3-ring binder and give 9 pockets for storing components.
Re-tightening a reel of SMT resistors so it will fit in our binder pages.
Re-tightening a reel of SMT resistors so it will fit in our binder pages.
Tighten the reel just enough that it holds securely in the trading card pocket.
Tighten the reel just enough that it holds securely in the trading card pocket.
Larger reels of components may need slightly squished to get them to fit.
Larger reels of components may need slightly squished to get them to fit.
A couple fully-loaded sheets. Thousands of SMT resistors stored neatly and compactly for viewing.
A couple fully-loaded sheets. Thousands of SMT resistors stored neatly and compactly for viewing.
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.
A large 5" binder will hold a good number of sheets of SMT components.
A large 5" binder will hold a good number of sheets of SMT components.
Several pages of electronic components stored in a 3-ring binder.
Several pages of electronic components stored in a 3-ring binder.
5" 3-ring binders full of electrical components.
5" 3-ring binders full of electrical components.
The binder pages provide a convenient way to quickly navigate your parts collection.
The binder pages provide a convenient way to quickly navigate your parts collection.
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.
In 60 seconds the bandsaw makes a cut that takes 6 minutes with a hacksaw.
Beneath the ruddy exterior lies a luscious red metal.
Knurling scissors squeeze the soft metal up into diamonds. Knurling is done before drilling so as not to collapse the thin walls.
A scratch pass ensures the threads are setup perfectly before committing.
A parting blade is used to carefully separate the workpiece from the stock.
After parting off, the piece is flipped around and the face cleaned up.
For the next piece, a small pilot drill is followed by a much larger one.
A bore gauge has two spring-loaded hammers that fill the entire bore and lock in place.
Bore gauge are transfer tools - they do not measure directly but instead transfer the measurement to a tool that can (like this micrometer).
This depth micrometer is used to check the depth of a hole.
Test-fitting the threads.
The diameters have been carefully matched to leave a nearly invisible seam.