Home | pfodApps/pfodDevices | WebStringTemplates | Java/J2EE | Unix | Torches | Superannuation | | About Us

Forward Logo (image)      

High Power Torches

by Matthew Ford 1st June 2008 (revised 23rd May 2009)
© Forward Computing and Control Pty. Ltd. NSW Australia
All rights reserved.

This page links to a number of pages covering the torches I have build and some of the design aspects of them.
The current build is a 45W 12Led Torch/Lamp

Here is a review of cheap (US$50) digital storage oscilloscope that I purchased.

The Java based Multimeter Data Logging Software I use for my QM1358 is available for download from here. That page also covers software for other multimeters.

Other torch builds are a

45W 12Led Torch/Lamp

Design Criteria

High Power (without overheating)

Variable output

Rechargeable with long self life

Built-in recharger

Mains Power Option (Lamp mode)

Car Power Supply Option (Cigarette supply option)

approximate 2D M*g form factor + finning

Battery/Led Configuration

The choice of battery/led combination is driven by the design criteria of the torch being approximately a 2D M*g form factor. This limits the number of leds that can be used to 12 Cree XR-E leds which are currently the most efficient leds available (as at June 2008). It also limits the battery choices.

The Led controller is a linear buck regulator. This choice is set by my previous design experience and its simplicity of design (see Basic Driver below). In order to get high efficiency with this type of regulator it is essential to match the battery voltage to the led forward voltage. Led forward voltages vary from led to led and also vary with the current and temperature. A nominal value is around 3.6V. This is fortuitous as it matches 3 x 1.2V NiMH batteries or 1 x 3.7V Lithium-Ion rechargeable batteries.

When choosing the battery pack I eliminated Lithium-Ion batteries from my list due to fears they would burst into flames, either from a fault in my charger or my led controller. I have seen NiMH batteries glow and start to ooze from overcharging, but needn't worry about explosions or fire when using them.

So considering NiMH cells the choices of battery/led combinations are

Battery Pack (volts)

Leds (current)

3x1.2V D cells(3.6V)

12 Leds in parallel (12Amps)

6x1.2V AA cells(7.2V)

6 parallel sets of 2 leds in series(6Amps)

9x1.2V AA cells(10.8V)

4 parallel sets of 3 leds in series(4Amps)

12x1.2V AA cells(14.4V)

3 parallel sets of 4 leds in series(3Amps)

C Cells are not considered as they don't pack well in the torch barrel. So the basic choice is between D cells and AA cells. The D cells solution was rejected because of the high current drain. The 12Amps, needed to drive the leds at 1A each, results in large voltage drops in any resistance in the circuit.

Of the AA solutions the 12 cell one has a number of advantages

  1. 3 sets of 4 cells pack into the torch barrel better the 6 or 9 cells

  2. 12 x Eneloop cells provides 28.8Watts to power the leds for longer then the 6 or 9 cell solutions.

  3. The lower current (3 Amps) of the 12 cell solution reduces voltage drops.

  4. 15V-24V / 3Amp power supplies used for laptops can be used to charge the torch and power it in lamp mode and similar supplies are available for powering and charging it from a car's cigarette lighter socket.

  5. 3 groups of 4 leds in series gives a better current balance between the leds compared to the other options.

The disadvantage of the 12 cell solution is the higher voltage the controller/charger needs to handle. When charging, the input supply voltage needs to be >20V to push 2Amps into 12 almost fully charged cells in series. Care must be taken with the choice of Fets and voltage regulators to ensure they can handle this voltage. While Drain to Source break down voltages of Fets are normally sufficient, Gate to Source break down voltages are often much less and require carefully component selection or protection circuitry. Low power regulators to supply the 5V for the uC are also an not normally rated for these voltages and their power dissipation needs to be carefully checked due to the large voltage drop across them. These problems are solvable and the 12 cell solution is the optimum one in this case, however more then 12 cells would present challenges.

Circuit Design

The driver I uses is a linear buck driver. For the appropriate choice of batteries and leds (as discussed above) it is very efficient >90% at full power.

A Basic Driver

A basic driver circuit is shown below

R1 (0.025ohm) is the current sense resistor. The uC measures the voltage across this resistor to determine the current flowing in the led. If the current is below the required level the uC controller sets the uC output to +5V which charges C1 through R2 raising the gate voltage on the FET U1 this lowers the Fet's resistance and increase the current through the led. IRF3711 is an N-Channel fet which turns on as its gate voltage is increased compared to is source pin. When the current exceeds the required level the uC controller set the uC output to 0V and the discharges C1 so lowering the voltage on the Fet's gate and so increasing the Fet's resistance and reducing the current though the Led.

R3 is there to make sure the Fet gate has zero Volts (i.e. Fet is OFF) when the control uC circuit is powered down.

R2 and R3 form a voltage divider from the uC output to ground which limits the maximum voltage that can be applied to the gate of the Fet. With the values shown the maximum fet gate voltage is about 4.55V. Looking at the Fet specs shows at 4.5V gate voltage its resistance is 6.2 milliohms typical to 8.5 milliohms maximum. Add this to the sense resistor an the total “switch” resistance is less then 33.5 milliohms. At 2 Amps, which is the design current for this example circuit that equates to 67mV drop.

This is called BangBang control and is simple and effective. The capacitor, C1 smooths out the square wave output from the uC so the Fet gate sees only a small ripple.

A Faster Smoother Driver

The choice of the size of C1 and R2 and R3 in the basic driver is a compromise between speed of response to setpoint changes and smoothness of the light output (i.e. How small the voltage ripple at the gate of the fet is.) In the basic circuit above the time constant for charging the capacitor is about 47mS that is it will go from 0V to 4V in about 100mS (i.e. from zero to full brightness at least as far as the eye is concerned) . However the price you pay for this speed is larger ripple on the gate of the fet and hence more variation in the led brightness. Now at full brightness this variation is hard to see, but as you reduce the led's brightness the ripple becomes more noticeable as does any variation in the control output. The controller output can vary due to the controller doing some other task, such as measuring the battery voltage, or due to noise in the current measurement.

A solution to this is a two speed control, such as is shown below.

In this circuit the idea is once the led current reaches the required level, the uC fast output is set to high impedance (tri-state) and the uC slow output is used to drive the C1 but its time constant is 10x slower at about 0.47sec. This gives a very smooth light even at low levels of output. When the light output needs to be changed the uC fast output is used to drive C1 quickly to the new setpoint and then set back to high impedance. Notice R3 has been increased to allow the uC slow output to still drive the gate of the fet to 4.55V

Software Design

The uC's I use are from the Attiny series by Atmel. I started with the Attiny15 and then went onto the Attiny25 and the latest design uses the Attiny861. The Attiny861 has 8K of program memory, 512bytes of Eeprom and 512bytes of RAM. It also has a 10bit Analog to Digital converter (ADC) which has the option of single ended or differential inputs. The differential inputs can have an optional gain of 1x, 8x, 20x or 32x applied to the analog measurement. Because the Attiny861 is a surface mount device it needs to be able to be programmed in-circuit, hence the pin headers you can see in the pcb photos below.

I use a very basic program flow, shown below

This uses only one interrupt, the ADC conversion complete interrupt. It has the advantage of simplicity and low noise since there is no processing or output pin changes while the ADC conversion is running. It has the disadvantage of reducing the sampling rate of the ADC since all the input and output processing is done each ADC cycle. However my present code still has a sampling rate of about 5300 samples/sec which is more than enough for controlling a torch.

The Attiny861 has a number of built in timers. I don't use any of these. Instead I run my own counters from the ADC loop to generate timers of 1/100 sec and 1/10sec and 1/2sec. Because the ADC loop times vary depending on the processing being done these timers are only approximate but appear to be with in +/- 5%.

An outline of the code is shown below

//---- MAIN PROGRAM --------------------------------------------
.org 0x0000
   rjmp RESET

.org    ADCCaddr//      = 0x000b        ; ADC Conversion Complete
   rjmp  ADC_INT

// initialize uC here


  sei  // enable interrupts
    // set up for ADC conversion and then sleep
  ldi Temp, (1<<SM0) | (1<<SE)
  out MCUCR, Temp   // ADC noise reduction rest zero, enable sleep
  sleep     // goto sleep this starts the ADC  
  // wake up on ADC interrupt 
  // on completion of interrupt returns here
  rjmp E_LOOP  // loop for next ADC 
//----END MAIN PROGRAM --------------------------------------------

//----HANDLE ADC INTERRUPT -------------------------------------------------    
    // save ADC results
    in ADCLow,ADCL
    in ADCHigh,ADCH
// process the ADC measurement of current, voltage, etc
// all paths jmp to here
   rcall SWITCH_DEBOUNCE  // every ADC cycle about 5kHz
   rcall INCREMENT_100HZ_TIMER  // may set volts or temp flag
   rcall SET_ADC  // set up for next reading
reti  // return from interrupt, interrupts enabled here
//----END ADC_INT -------------------------------------------------

Thermal Design

Heat is always a problem in high powered torches which are run for more the a few minutes. Even the most efficient leds dissipate almost all their power as heat. So the thermal design is an important consideration. From my previous builds I had some idea of how much finning would be needed. To do the detail checks I used Natsink, (http://www.frigprim.com/frigus_natsink.html). The demo version models a simple finned heatsink with a fixed depth of 75mm. To estimate the performance of the torch head I first set up a simple model that has the same fin height, fin thickness and pitch as the torch head and determine the heat dissipation for a given temperature rise. Then the results are scaled up to the available surface area on the real torch head using the circular fins. Previous builds and tests have shown this scaling gives a good indication of the final result.

This torch design has a nominal voltage of 14.4V and a design current of 3Amps. This means it has to dissipate approximately 43Watts.

The Cree XR-E specifications project 70% for light output after 50,000 hours provided the led junction temperature is kept below 80C. When running at a junction temperature of 100C the output of the leds drops to 80% of the output at 25C. The maximum allowable junction temperature is 150C. When running at this junction temperature (150C) the output of the leds reduces to less the 70% of their 25C value.

As an initial design, I choose 80C as the operating junction temperature of the leds (which results in about a 15% drop in output). The thermal resistance of the led from the junction to the solder point is 8C/W. At 1Amp the led are dissipating about 3.6Watts, so the junction temperature will be about 29C above the temperature of the copper mounting disk the led is soldered to. This implies I want to keep the copper disk at or below 51C.

The Natsink model takes the thermal resistance of heat conduction throught the bulk aluminium into account and as a first approximation I am ignoring the thermal resistance of bolting the copper disk to the aluminium disk (with Arctic silver) and ignoring the thermal resistance of the press fit of the aluminium disk into the head of the torch as these resistances will be swamped by the thermal resistance between the fins and the air. For example the Arctic silver has a thermal resistance of <0.0045C-in^2/watt for a 0.001 inch layer. The copper disk is 3.04in^2 which implies a thermal resistance of 0.00148C/W for the Arctic silver layer. That is less than 0.06C rise for 43Watts. The modelling done here is not that accurate.

So the parameters for the simplified Natsink model are:- 3mm thick heat sink base (the wall thickness of the torch head); width 70mm, the length of the torch head. With an ambient air temperature is 25C and the heatsink temperature should be no more than 51C, so the temperature difference between the heatsink and the air should be less than 26C. A single heat source 10mm wide and covering the depth of the simplified heatsink is specified as being 20mm from one end of the heatsink. This is approximately where the 10mm thick aluminium disk will be pressed in to the torch head.

The final value that needs to be specified is the height of the fins to match the fin height on the actual torch. On the torch head I intend to taper the fins from 155mm dia. at the back of the head to 125mm at the front. So for the simplified model I started by using the mean fin dia. of 140mm. That is a fin height 40mm above the 60mm dia head tube that the fins are pressed. The error introduced using this mean will be check later.

There are a number of design questions the need to be answered

  1. What is the optimal number and spacing of the fins?

  2. How thick should the fins be?

  3. How will the performance change with changes in ambient temperature?

  4. What will the dissipation of the Torch head be?

  5. What is the error associated with using the mean height of the torch fins?

1. What is the optimal number and spacing of the fins?
The graph below show the temperature rise of the heat sink above an ambient of 20C versus the pitch of 2mm fins for a heat source of 9.3W. A finer pitch means more fins in the 70mm. Natsink says optimal number of fins is 8off x 2mm thick fins spaced at 9.7mm pitch which will dissipate 9.3W for a temperature rise of 26C.

2. How thick should the fins be.
Now lets investigate the effect of fin width on the temperature rise. Looking at 1mm, 1.5mm and 2mm width fins gives the following results. Again with a heat source of 9.3W

The 1mm fins are better, however I chose 1.5mm fins as being more robust and almost at good as 1mm fins. For the front fin I choose a 2mm thick fin for extra strength.

So far the design is 8 fins, each 1.5mm (except the front one) on a pitch of about 10mm. Which will give a rise of about 25.4C from an ambient of 20C when dissipating 9.3W.

3 How will the performance change with changes in ambient temperature?

As you can see air temperature variations from 20C to 60C have almost no effect on the temperature rise at the 10mm pitch point. Of course if the ambient at 40C then the temperature rise of 25.4C means the heatsink, and hence the copper disk, will have a temperature of 65.4C and the junction of the leds will be at about 94.4C. This is well above my target design temperature but still well below the maximum allowable led junction temperature of 150C.

4. What will the dissipation of the Torch head be?
This is the big question. To estimate the torch dissipation I calculate the fin area of the simplified Natsink model and then scale up the wattage dissipated to the actual torch fin area. The final torch will the same number of fins, fin pitch and fin thickness as the simplified model. Only the fin height and area will change. A mean fin height was used in the Natsink model (see discussion below for the effect of changing the fin height)

The total area of fins in the Natsink model is 8fins x 75mm x 40mm x 2sides = 48000mm^2. In the actual torch, where the fins start at 155mm at the back and graduate down to 125mm at the front fin, the total area when they are pressed onto the 60mm tube, is 202235mm^2. That is the area of the torch head is 4.21 times the area of the simplified model. That implies the torch head will dissipate about 9.3Wx4.21 = 39W for 25.4C temperature rise above ambient. This is a bit below the required 43W. So using the ration of 4.21 in reverse implies that the Natsink model needs to dissipate 10.2W

Updating the heatsource wattage figure in the Natsink model and re-running the simulation gives temperature rise of 27C instead of the previous 25.4C. This is only only one degC more then desired temperature rise implying the leds junction temperature will be about 81C instead of 80C. This design is acceptable.

5. What is the effect of using the mean height of the torch fins?

Finally since the size of the fins on the torch are going to taper from 155mm at the back of the head to 125mm at the front, I checked how the change in height of the fins would effect the heat dissipation in the simple model. So far the design checks have used a mean dia of 140mm (ie.40mm height above the 60mm dia head tube). However the back fins will be 155mm dia, that is 47.5mm high while the front fin will be only 125mm dia, that is 32.5mm high. The table below summarizes the results

Torch Fin dia (mm)

Model Fin height (mm)

Watts for
25.4C rise in Model

Model Area

Ratio to Torch fin Area
of 202235mm^2

Implied Torch Watts
for 25.4C rise







140 (mean)












This shows that the larger fins are marginally less effective in getting rid of the heat, but it is clear that using a mean height of 40mm will give an adequate estimate of the torch head's performance. Of course this is only an estimate which needs to be confirmed by measuring the final torch's performance.


Construction so far

Fig 1. 12 Led assembly with Lens assembly fitted - 12 Cree XR-E Q4 leds surface mounted to a copper disk.

Fig. 1

Fig. 2 12 Led assembly showing pcb which supplies the power connections to the leds.
The corners of each led have been clipped to remove the electrical connection between the top and bottom of the led.

Fig. 2

Fig.3 The copper disk to which the leds are soldered. The centre hole is for alignment.
The three small holes position the lens assembly.
The three larger holes around the circumference are to mount the disk to the torch head.
The other larger hole is for the charging led to shine through and flash when charging.

Fig. 3

Fig. 4 The controller pcb (double sided)

Fig. 4

Fig. 5 The top view of the completed controller.

Fig. 5

Fig. 6 The bottom view of the completed controller showing the Led controller fet and the Charger fet.
Also shown is the welded battery pack supplied to order by BatteryDoctor

Fig. 6

Fig. 7 Parts collected for assembly, less the base for the lamp. The white plastic part connects the barrel to the head and insulates the barrel from the heat generated in the head. The switch assembly is sealed using a standard M*g rubber switch cover.

Fig. 7

Fig. 8 Pressing the fins onto the head using a 12 ton press and spacers.

Fig. 8

Beam Shots

The following beam shots compare a Tesla 6, the 42W Torch and one Volvo V40 high beam (50W headlamp). Taken from 8 meters away.

Modified Tesla 6 Full Power

42W Torch at 3.3A

Volvo V40 one high beam

(Camera settings for all pictures ISO 200 F2.8 1/10")

Forward home page link (image)

Contact Forward Computing and Control by
©Copyright 1996-2017 Forward Computing and Control Pty. Ltd. ACN 003 669 994