The open-source charge controller circuit contains a diode and a MOSFET, which could potentially have up to 20A flowing through them. In this case they will get hot and will eventually fail. We need to ensure that they will be kept within their specific working parameters by keeping them cool. This is done with a big lump of metal, usually called a heatsink.

Here are the basic theory and design calculations to design a heatsink for the charge controller.

The lifetime of all semiconductor devices is inversely proportional to their operating temperature. For reliable operation and long component lifetime, it is vital to ensure adequate removal of heat from the device. Within a switching device, there are two main losses: resistive and switching. Both will increase the temperature of the switching device. The resistive element is an I^{2}R loss due to the current through the device and its ‘on’ resistance. Heat is also generated each time the device is switched, due to its IV characteristic. This loss is proportional to the switching frequency.

There are a couple of very good application reports available which also show this process, I would suggest reading both:

- Texas Instruments "Understanding Thermal Dissipation and Design of a Heatsink"
- Electus Distribution "Heatsink Basics"

The heat generated within a device must be transferred through many layers for dispersal to ambient. This diagram shows the heat transfer paths and the equations to calculate the transfer rate:

(This diagram is taken from my PhD thesis)

The input current, voltage and the switching frequency are used to calculate the power dissipation requirements.

The heat transfer paths within the device can be obtained from the component data sheets. If the device must be insulated from the heatsink then an additional layer is introduced. Careful attention must be paid to the implementation of any applied insulation. Mylar insulators with a silicone heat-transfer compound or special silicone insulators can be used. The silicone heat-transfer compound must not be applied too thickly or it will add to the heat transfer resistance. Finally, the heatsink must be correctly sized for the required power dissipation. The temperature of the junction, Tj, must be kept as low as possible as it will affect the component lifetime. The data sheet specifies a maximum junction temperature of 150 ºC but a value of 100ºC was used in the calculations to allow some headroom.

The chrage controller circuit has the following components which need to be cooled:

- A diode, type VT2045BP
- A MOSFET, type PSMN015-60PS

They have up to 20A flowing through them.

We first need to calculate how much power is being dissipated in each device.

The diode power dissipation is due to the current flowing through the device and the forward voltage drop. To minimise the forward voltage drop I am using a Schottky Rectifier diode, which will have a lower forward voltage drop than other diode types.

According to the data sheet for this device the forward voltage drop is: 0.51V at 20A.

This equates to a power loss of 0.51V x 20A = 10.2W. (Note that at 12V DC, this would be 4.2% of the total power generated, (as 12V x 20A = 240W)).

MOSFETs dissipate power due to I^{2}R when they are on. I have chosen a MOSFET with a low value on resistance, which is, according to the datasheet: 14.8milliOhms.

This equates to a power loss of 20A^{2} x 0.0148ohms = 5.92W. (Note that at 12V DC, this would be 2.5% of the total power generated (as 12V x 20A = 240W)).

MOSFETs dissipate power as they move through the non-linear region of their VI characteristic. That means that each time they are switched on or off then they will dissipate some power. The amount of power dissipated will depend upon the switching frequency. More information on this topic can be found at:

From the Maxim application note we find that an approximation for calculating the switching losses (PD_{SWITCHING} ) (it is approximate as the actual value depends on lots of factors) is:

PD_{SWITCHING} = (C_{RSS} × V_{IN}² × f_{SW} × I_{LOAD})/I_{GATE}

where C_{RSS} is the MOSFET's reverse-transfer capacitance (a data sheet parameter), f_{SW} is the switching frequency, and I_{GATE} is the MOSFET gate-driver's sink/source current at the MOSFET's turn-on threshold (the V_{GS} of the gate-charge curve's flat portion).

From the datasheet we find that the and C_{RSS} = 95pFthat I_{GATE} = 0.5A (this was an approximation, from the Vgs of 5V at switch on). From out design parameters we know that the PWM switching frequency is 400Hz (from the Arduino output), I_{LOAD} = 20A, V_{IN} = 12V or 24V.

Hence the power dissipation due to switch is 0.0002W at 12V and 0.0008W at 24V. These are VERY small values. If the switching frequency is increased then these witching losses would become a much bigger proportion of the power loss. Or I have done the maths incorrectly.

So the total maximum power dissipation, P_{d}, is 10.2W + 5.92W + 0.0002W = 16.12W.

We will be using the equation: T_{j} = P_{d} (R_{jc} +R_{cs} + R_{sa}) +T_{a}, where T_{a} = 25C, T_{j} = 100C and the values of R_{jc} and R_{cs} come from the device data sheets.

We need to perform this calculation for the two different devices, the diode and the MOSFET, but with only one junction from the heatsink to the ambient, as we will be putting both devices onto the same heatsink.

The equation becomes:

T_{j} = P_{D Diode }(R_{jc} +R_{cs}) + P_{D MOSFET }(R_{jc} +R_{cs}) + (P_{D Diode} +P_{D MOSFET}) R_{sa} +T_{a}

We are trying to find the value R_{sa} which can be used to specify the heatsink.

From the data sheets we can find that, for the diode: R_{jc} = 1.5 C/W and for the MOSFET: R_{jc} = 1 C/W.

The value of R_{cs} depends upon the mounting method. For a T0-220 package:

- If mounted directly R
_{cs}= 1-1.3C/W - If mounted with heatsink compound R
_{cs}= 0.5-0.8 C/W - If mounted with mica insulator and heatsink compound R
_{cs}= 0.8-1.4 C/W

In the design I am working on, the case for the diode and the case for the MOSFET are at exactly the same potential, so it does not matter if they are electrically connected. I will be using heatsink compound, so the value of R_{cs} = 0.5-0.8 C/W, we will use the worst case which is R_{cs} = 0.8 C/W.

We now have everything we need to calculate the value of R_{sa} which can be used to specify the heatsink.

100 = 10.2(1.5 +0.8) + 5.92(1 +0.8) + (16.12) R_{sa} + 25

40.884 = (16.12) R_{sa}

For 100C max junction temperature: R_{sa} = 2.54 C/W

I re-did these calculations for a junction temperature of 150C, which is also OK for these devices:

150 = 23.46 + 10.65 + (16.12) R_{sa} + 25

90.89 = (16.12) R_{sa}

For 150C max junction temperature: R_{sa} = 5.63 C/W

Now we know the minimum R_{sa} value for our heatsink for two different temperatures. Any heatsink with a thermal resistance value * lower* than this will be suitable.

Heatsinks are quite expensive and heavy. I need it to work reliably, but there will not be many times the unit is operating at 20A. Hence I will design for a value of 5.63 C/W or lower. This should reduce the size and cost of the heatsink required.

When looking for heatsinks we need to look for a heatsink with a thermal resistance lower than our design value. this will ensure it can dissipate the required amount of heat.

In this case I am designing for 5.63 C/W. All heatsinks have a C/W (sometimes a K/W, but the same thing) rating. This can be used to decide which to choose.

Searching on a number of websites (typically RS, Farnell, CPC and Rapid) I found two from Farnell which I will test out and design the unit around:

*Note: This section has not yet happened (10/10/13).*

The design above is the correct process to design a heatsink. Sometimes it might not be possible to find a supplier of heatsinks with the correct parameters. It would be great if there could be some designs of simple, homemade heatsinks which have similar thermal properties.

This could mean affixing it to a lump of metal, such as a scrap piece of angle aluminimum.

*Note: This section is a work in progress (10/10/13). This section will require careful analysis of the charge controller.*