Saturday, June 18, 2011

Petzl Zoom Headlamp Upgrade Revisited

Long-time followers of my blog (Hi Mom!) may recall a post from last October where I wrote about an upgrade for an old Petzl Zoom headlamp that I had started working on. The first version which I had completed last fall replaced the bulky 4.5 V alkaline battery with a thinner and lighter (2/3 of the weight) single-cell rechargeable Lithium Polymer (LiPo) battery and replaced the halogen bulb with a cluster of 4 high-output LEDs (along with some circuitry for stepping up the battery voltage to drive the LEDs and charging the battery from a 5 V wall adapter). The schematic for the first version is shown below (if you click on it you will see a larger version that is actually readable):

As you can see it is pretty simple, and the brightness of the LED cluster is set using a potentiometer. All of the electronics were put onto a circular PCB that fit into the "head" of the Petzl Zoom unit. While this was made for a clean design since everything was on one board that I just popped in to replace the halogen bulb, there were three problems with it:
  1. I ran into thermal issues: in the spirit of going overboard, I was trying to push as many watts through the LEDs as I could (about 9.5 watts to be exact) which of course generated some heat. The boost regulator that I was using to drive the LED also cranked out some heat since it was only about 85% efficient, and these two heat sources being on the same PCB meant that things got pretty stinking hot and the boost regulator would overheat and shut down.
  2. I wanted to use the headlamp for running in the dark on early winter mornings, and so for safety I thought it would be useful to have a flashing red LED in the back.
  3. 3. There was no intelligence built into the circuit (in the form of a microcontroller), which meant that it was a bit boring.
So, to rectify all of these problems, I decided to make a new version of the headlamp electronics that split the circuit into two PCBs with just the high-output LED in the "head" of the unit, and put everything else in a separate board in the rear battery enclosure of the headlamp. This allowed me to add a red LED at the back, split up the two big heat sources (I also added another boost regulator so that each one was only driving two LEDs), added heat sinking, and added a microcontroller (an Atmel ATTiny13) to run things.

I had to go through a couple revisions of the PCB to get everything dialed in (if anyone ever wants to get super cheap prototype PCBs made check out Dorkbot PDX), but I'll spare you the details of how things slowly progressed over the course of many months of sporadic effort and just describe the final product.

Here is the schematic of my final version (this is just the rear board, the front board is really simple and just has the LED cluster on it), note that it is more involved than the first one:
Schematics and layout were done using Eagle PCB Design software, which though it is a bit cumbersome to use, has the big advantage of being free (as long as your board is only 2 layers and within a specified area). Here is the rear PCB layout, also created in Eagle:

After the PCB was designed it was time to send it off to get made at bargain basement prices by the good folks at Dorkbot PDX. I can't say enough about how amazing the service that they provide is, it is shockingly cheap and they are super responsive and friendly. In the meantime I ordered the parts from Digikey, and once the boards were back I assembled everything in the Dorkzone.

I wrote the firmware in C using the open source and free WinAVR development tools, which include the GNU GCC compiler. This gave me a hex file which I needed to download to the microcontroller using an in-system programmer (ISP). You can buy expensive hardware and software to do this, but a much cheaper option is to load a $20 Arduino with the ArduinoISP sketch (this forms the hardware part of the ISP), and then use AVRDude on your PC to drive it. A fully functional AVR ISP for $20, awesome! So this is what I did, and after a bit (okay, a lot) of tweaking I had the firmware where I wanted it and was able to load it onto the assembled PCBs.

Here is the front of the main board where most of the components are mounted:

And here is the back of the main board where the red LED is mounted, this protrudes through a cut-out in the rear battery housing. The USB port also protrudes through the rear battery housing (I have it mounted on the wrong side of the PCB in the photo above - oops!) and is used for charging (since I have myriad other electronics which charge through USB and I wanted to be able to use those wall adapters).

And here is the front of the LED board that fits in the front compartment of the headlamp. You can see the 4 individual LEDs in that part if you look closely. Aside from the battery, this was far and away the most expensive part in the electronics assembly. You can see that there is a large plated area that is perforated with plated through-hole vias, this is to help with heat sinking for the LED. I have a similar set-up under each boost regulator in the photo above.

And finally, here is the back of the LED board with a heatsink mounted behind the LED cluster:

Here is a shot of the battery compartment. The battery compartment was just large enough to house the original 4.5 V battery, but luckily the LiPo battery that I replaced it with is much thinner which freed up space to house the main PCB:

And here is the open front unit of the headlamp with the LED PCB fitted inside of it. The original reflector unit then screws in and holds the PCB in place.

And finally, here is the complete finished unit:

You can see the LED cluster in the middle of the reflector, and on the battery compartment you can see the protruding USB connector (for charging) on the left, then the red LED (which appears as a white square since it is not illuminated), then two buttons. The yellow button is used to turn the unit on and off, and the red button is used to cycle it through different modes when it is on. The modes include three different brightness settings for the front white LED (varying from "I'd like to incinerate whatever is in my path" to "I'd like to read this nice book") and having the rear red LED either flashing or off. When the unit is plugged in and charging, the rear red LED pulses slowly, and then switches to a steady illumination when the charging is complete.

Here are some short videos showing the headlamp in operation. First, the pulsing behavior when plugged into the 5 V adapter and charging:

Second, here is one demonstrating the different modes and how they are accessed using the single button:

And finally, a brightness comparison to a Petzl Tikka 2 with fresh batteries:

For some quick stats, the upgraded Petzl Zoom headlamp consumes 8 watts of power and cranks out 750 lumens on the highest brightness setting, and the battery lasts 2.5 hours. On the lowest setting it is still pretty bright and the battery will last 50 hours.

So, I think that pretty much covers it. I have used it a few times already, once on Mount Shuksan in a previous iteration and once on Mount Adams in the current iteration and it has held up well and performed admirably. If you happen to have an old Petzl Zoom kicking around and want to convert it into a real barn-burner, send it to Seattle and I'll perform surgery on it and give it a second life!


  1. That's some pretty impressive work! What are the chances of sending a kit to Australia so I can trial a bit of surgery myself to retrofit my old zoom?

  2. Thanks! Sure, I would be happy to! I need to go through and total up the component costs, do you want to send a note to ctcharle at gmail dot com with your address and then I'll let you know the tally?

  3. Thank you so much for taking time to share your great experience and knowledge..Great job done keep it up....pcb suppliers