Close
0%
0%

Chunky MTB Headlight

A meaty headlight for riding bumpy trails at night

Similar projects worth following
Mountain biking is a year-round sport in the PNW, as long as you don't mind getting a little wet. In the dead of winter, however, it can be tricky to fit a ride into your schedule when the sun starts getting low at 3PM. I decided to build a handlebar-mounted light so I could keep shredding after work even after PDT turns into PST.

Here's the specs of the current build:
- ~1700 Lumens
- 2 hour battery life on high
- 400g
- 15W USB-C charging, 0-100 in ~2.5 hours

Key Components

  • 5x Cree XP-L 4000K LEDs: These are wired in series and being driven at 1A by the boost converter.
  • Custom control board with a PIC16F1765 MCU and the boost converter circuit. Check out the project links for the firmware Github and protoboard design spreadsheet.
  • 2x Samsung 50S cylindrical Li-Ion cells (18Wh each), wired in series
  • USB-C 15W 2S battery charge and balance PCB (from eBay)
  • 3x 30-degree by 15-degree elliptical TIR optics: These provide an oval-shaped beam pattern that puts more light to the sides.
  • 2x 30-degree circular TIR optics: These provide a circular spot to give a bit of extra throw down the trail.
  • ABS enclosure with a clear TPU gasket and status LED/button window and charge hole plug.

Check out the Components section for a full list with part numbers.

Photos

The CAD model, missing the LEDs and heatsinks. You can view it in your browser in the project links.
Cross-section
Cross section of the enclosure and PCBs

In the cross-section above, you can see the components of the enclosure and the two PCBs that are in there with the batteries. Here's the stackup from right to left:

  1. The bezel, in dark blue on the right, is split into two pieces so that the side that touches the plexiglass lens can be printed directly on the bed so it's nice and smooth.
  2. The front lens, in transparent gray, is a sheet of 3mm plexiglass that I scored and snapped into a rectangle. I solvent-welded the lens to the smooth face of the bezel with acrylic cement, which works fine for ABS as well. That provides a strong bond and nice waterproof seal.
  3. The LED mounting plate, light blue on the right, is a 1/8" thick 2" wide flat aluminum extrusion. The LEDs, TIR optics, and optic holders get sandwiched between this and the bezel.
  4. The heatsinks aren't shown, but they're stuck to the mounting plate with thermal adhesive.
  5. The door, light blue on the left, slides in and out to provide access to the batteries and electronics.
  6. The USB battery charger PCB is the orange thing on the bottom
  7. The boost/UI PCB is orange on the left
  8. The dark gray thing is the transparent TPU window that lets you see the status LEDs and press the power button.
The LEDs sit on a 1/8" by 2" aluminum extrusion with heatsinks on the back
Putting it all together
The brains

    The LED driver is a standard boost converter topology, plus a 0.2-ohm current sense resistor between the LED- and ground. It takes 6.6V-8.4V from the battery and converts it to ~15V/1A for the power LEDs. It took me a few iterations to get to this point, and by the end it became clear that a custom PCB would have served me better than a protoboard. But hey, it works!
    The MCU switches the circuit at 150kHz, which is on the low side for a small boost converter, but keeping the frequency low was necessary to give sufficient PWM resolution to accurately regulate drive current. The PIC16F1765 has a couple pins with 100mA source/sink capabilities; these provide just enough current to directly drive the gate of the FET (in the upper right, on a Sparkfun SOT23-to-DIP breakout) without a dedicated driver IC.

    Check out the Components section of the project for the PCB BOM and component values.

Power button, current sense shunt resistor, and status LEDs are on the back side

Layout of the control board
Batteries! They have their own little press-fit printed holder to hopefully keep em safe in a crash

The naked back of the enclosure, sans mount and button window

Back view of the clicky mount mechanism. This took a few prints to dial in


The mount mechanism in action!

  • 5 × Cree XP-L HI 4000k White LED Old but still good
  • 2 × Samsung 50S 5000mAh 21700 Lithium-Ion cell
  • 3 × Carclo 10197 Elliptical TIR Optic 47 by 10 degree elliptical beam
  • 2 × Carclo 10003/15 Medium Spot TIR Optic 30 degree circular beam
  • 1 × PIC16F1765-I/P MCU to drive the boost converter and handle the UI

View all 13 components

  • DIY Corrugated Heatsink

    Colin Pate2 days ago 0 comments

    As soon as I got the light together, I realized the headlight was even chunkier than expected, coming in at almost exactly 400g. I'm no weight weenie, but almost 1lb is a bit on the hefty side to have hanging off the front of the handlebars. Plus, the more weight, the more stress on my 3D printed mount.

    Heat Sink Assorted (BGA, LGA, CPU, ASIC...) Aluminum Top Mount

    Original Hefty Heatsink


    The most obvious suspect was the LED heatsinks. These are two off-the-shelf aluminum 46mm x 46mm chip heatsinks that I placed on the back of the aluminum plate. This part was one of the few heatsinks that I could find with a spec'd thermal resistance @ 0 airflow, but unfortunately no weight info was provided in the datasheet. They ended up being about 24g each, making up 12% of the total weight of the headlight. These are farther from the handlebar mounting point than the batteries, which at 140g are the other main contributor to weight. This means the heatsinks will have a larger moment of inertia about the mount axis and the steer tube axis, which translates to more stress on the mount and heavier steering.

    I looked around at other commercially available heatsinks and it seems like there aren't many that are designed to optimize for weight. I figured most engineers working on weight-optimized designs end up designing their own heatsinks, so I decided to do the same! Here's the current status.

    New, lightweight heatsink!

    I did the math and figured that a folded sheet of aluminum or copper, at least 0.1mm thick, should be thermally conductive enough and provide enough surface area to match the performance of the heatsinks currently in use. I conveniently had some 0.1mm copper sheet laying around from spot-welding my eBike battery cells. It's not gonna be very durable out in the open, but thankfully it safely resides in the cavity between the LEDs and the enclosure.

    To keep my sponsors happy, I had to find a way to incorporate 3D printing, so I made a 3D printed die and stamping rig with leftover aluminum extrusions from the first version of the light.

    Once I'd turned my copper sheet into a weird cardboard looking thing, it was time to test it. I superglued a couple power resistors and a TMP36 analog temp sensor to the aluminum plate and put it all in a spare enclosure that I had.

    Don't worry, this was just for testing
    The test rig

    Thermal Resistance Measurement Results


    The data was pretty interesting. My number to beat was 5.4K/W, which was the spec'd thermal resistance of the two off-the-shelf heatsinks, and would give me a max LED junction temperature rise of around 120˚ C at 15W dissipated. Somehow, my DIY heatsink ended up measuring almost exactly the same as what I was replacing, at 1/3 the weight! 

    Heatsink typeSurface area (cm^2)Measured K/W
    Aluminum plate, bare
    529.5
    Aluminum plate with copper heatsink2175.6
    Aluminum plate with copper heatsink
    bonded with thermal compound
    2175.4


    Here's a google sheet with all my test data

    There were two surprises here:

    1. Thermal compound made almost no difference. I guess that either the coupling between the aluminum and copper is so poor that it couldn't be filled, or so good that thermal compound didn't help?

    2. The copper reduced the overall thermal resistance by less than half, implying that it has a higher thermal resistance than the bare aluminum plate, despite having more than 3 times the surface area.

    I have a few theories to explain the second surprise. 

    1. A significant amount of heat is radiating out the other side of the aluminum plate and through the front of the light. This would effectively give it more surface area.

    2. The thermal contact between the copper and aluminum is really bad. I might try thermal epoxy or adhesive to remedy this.

    3. The copper slows down the ambient air currents that keep the aluminum cool.

  • Component Selection

    Colin Pate12/16/2025 at 01:07 0 comments

    My criteria for this build were:

    Mechanical strength: It's gotta stay in one piece when I land 5 feet short on a tabletop jump and bottom out my suspension hard enough to pop both tires

     - Water resistance: PNW winter means muddy water everywhere, both from the sky and from my tires

     - Brightness: >1k lumens, ideally closer to 2k from what I've read online

     - Battery life: >2 hours on full brightness (I'm rarely descending for this long, but it's good to have a buffer)

     - Brightness levels: At least 2; full power for descending and sorta bright for climbing

     - Beam pattern: Wide so I can see around corners but with a decent throw for when I'm going fast

     - No sharp edges, to minimize danger in a crash

     - Easy to install and remove from handlebars

     - Easy charging (ideally USB-C)

    Weight: not too heavy I guess

    These requirements, and their implications for the mechanical and electrical design, made the project more involved than I initially expected. Not that I'm complaining.

    My choice of LED was mostly based on availability. There's plenty of white LEDs out there with tradeoffs between CRI, brightness, thermal resistance, and so on. The Cree XP-L HD is older but still holds up alright, and you can get it mounted on a star MPCB from LEDSupply for a decent price. Cree XLamp XP-L High Density LED Star For the battery, the choice of 21700 cells was easy. They're mechanically robust and readily available with excellent energy density.  Plus, I built a battery for my eBike with this cell format a couple years ago so I already had a spot welder from Maletrics. With the format selected, the Samsung 50S cell was a great choice - 5Ah/18Wh per 70g cell, for around 250Wh/kg!  Samsung 50S 21700 5000mAh 25A Battery Doing the math on power,  if I want 1500 lumens and assume I can get 100 lumens per watt, that means the LEDs would pull around 15 watts. Add a little extra for loss in the LED driver, and two 18Wh cells should give me right around 2 hours of light. I put the two cells in series because my original design was based around the Sparkfun Picobuck LED driver, which has a minimum input voltage of 6V. The annoying thing about this is that when you have Lithium-Ion cells in series, you should really have a way to keep an eye on the voltage of each cell and make sure they stay balanced. Luckily, I found this cool little charger board that can charge and balance 2 Lithium cells at 15W from USB-C! It's based around the IP2326 chip that handles the USB QC negotiation, voltage conversion, and charge monitoring. 15W 2S / 3S Type-C Li-ion Battery Charger Module Charging Board QC Fast Charging - Picture 1 of 20

View all 2 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates