Heatsink Tester


It’s quite a common problem when building electronics that some components need cooling which is usually done through some sort of heatsink and optional fans. Choosing the right cooling solution can be a difficult task because the real life behavior of the system is hard to predict or model. In my case I have faced the simple question quite a few times: how much heat can a cooling system dissipate? The thermal resistance of a particular heatsink may vary quite a lot depending on the surroundings or it can simply be unknown to start with. The aluminum side wall of an enclosure made me build this thing.


This is why I have made this little device: a thermometer, a transistor and a microcontroller with a simple command line interface. I could have answered my questions in quite a lot of simpler ways, but since I made a simple thermometer not much else is needed to control the transistor when a DAC is available in the microcontroller.

The device works in a simple way: a specific power is dissipated on a transistor while a DS18s20 temperature sensor measures the temperature on the heatsink as close as possible to the transistor. The circuit uses a serial connection and is controlled via the terminal. A few preset values are available for the power to be dissipated.

The micro at the center of the project is an ATXMEGA32A4U and I am using a small board I designed for another project and another proto board which contains a current sensing resistor and a voltage divider to measure the supply. A TL431 is used as a 2.5V reference. The circuit uses two supplies, one for the micro which also contains a 3.3V LDO and one for the dissipating transistor. The schematic is shown below:


The reason for leaving the supplies separate was to be able to use a wide range of supplies for the dissipating transistor; the circuit is designed to measure up to 52V input. Such a supply is too high for a normal regulator for the micro. If the allowed maximum is lowered, a regulator can power the micro as well. In practice it turned out the low power levels (0.5 – 5W) are regulated better when a low voltage supply is used for the transistor (3V). For higher output power (5W to 50W) a 19V laptop power supply worked just fine. The limit simply comes from the ADC precision and the value of the current sensing resistor.

An IRL540 transistor is chosen as the dissipating element due to its low threshold value. This is necessary to allow driving from a 3.3V DAC, considering the voltage drop on the current sensing resistor as well. This was chosen as 0.1 ohm, which corresponds to about 0.25V of drop while dissipating 50W from a 19V supply.


Due to the high thermal inertia of the system, a very simple regulating method was chosen: if the dissipated power is too low, the DAC output is increased, otherwise it is decreased. This produces some oscillations around the set value, but if the power is averaged over one second a very stable value is obtained. The control loop runs a few hundred times a second, data averaging and display is controlled by the RTC.

The microcontroller calculates the thermal resistance of the heatsink assuming that the start of the experiment is at ambient temperature. The circuit needs to run until the temperature of the heatsink stabilizes to the new value. The time required depends on the system, but in practice I found 1h to be sufficient.

The software allows for very simple functions, but I found it to be sufficient: choose the power to be dissipated and start and stop the experiment. The software is available for personal use. Data is sent out through the serial port and can be viewed in a terminal, the supply voltage, current, calculated power, DAC set, temperature and calculated thermal resistance are sent out.

NOTE: there is no protection for the overheating of the transistor, since its temperature is not measured directly. It is up to the user to make sure the dissipated power is chosen appropriately for the heatsink size. When mounting the temperature sensor it is important to have it thermally coupled to the heatsink and insulated from the ambient. 

Experiment 1

A small heatsink is placed in a small box and 5W are dissipated. Other components are added around to mimic airflow restrictions. After half an hour the temperature stabilizes around 72°C indicating a thermal resistance close to 10K/W. This is pretty good, considering that the manufacturer rates it at 14K/W.




Experiment 2

This experiment is actually the real value I was interested into. The side of the enclosure is made of aluminum and it allows for transistors to be easily mounted. But neither the seller nor the producer were able to say anything about the dissipating capabilities.  By dissipating 20W the final temperature reaches 52°C which indicates about 1.3K/W thermal resistance. In practice such a high temperature is uncomfortable to the touch but does not burn, so a circuit should dissipate lower, depending on the application. Plotting the data gives out a nice curve with the temperature variation. The output log is available here. 




Future work

The whole thing is build as fast as possible using a PCB I already had. A next iteration would include a dedicated PCB, with its own LCD and with a nice PC application. A case would also improve the project.

Bookmark the permalink.


  1. Pingback: Web interfaces « Electro Bob

  2. Pingback: Heatsink Tester -Use Arduino for Projects

  3. Great project very interesting. I will try it myself.
    Greetings from Argentina.

  4. Pingback: ATxmega32A4U powers this heatsink tester

 | Bits & Pieces from the Embedded Design World

  5. Looks like a great circuit to create a constant current load with software control

    • Yes, but depending on the application you might want to use a faster method for setting the current, such as PID.

      • Or a opamp with the output connected to the gate, the plus input connected to the DAC and the 0.1 Ohm connected to the minus input.

        • In that case the op-amp will be the control loop, the DAC will just set the reference. Be careful about the supply if you will allow up to 3.3V on the sense resistor(the full swing of the DAC): you will need something higher to be able to drive the transistor.

  6. Pingback: Tester Disipador Muestra Resistencia térmica no es inútil - | Noticias de seguridad informática, ¿qué es la seguridad informática?

  7. Pingback: Heatsink Tester Shows Thermal Resistance Isn’t Futile — Blog of MPRosa

  8. Pingback: Belgaum news | About Belgaum | Belgaum information | Belgaum district | Belgaum city | Belgaum Hotels | Belgaum People | Belgaum tourism | Belgaum entertainment | Belgaum students | Inside facebook | Hack | make use of | technical news | | Heatsink Tester

  9. Pingback: rndm(mod) » Heatsink Tester Shows Thermal Resistance Isn’t Futile

  10. Pingback: Heatsink Tester Shows Thermal Resistance Isn’t Futile

  11. Nice project and documentation!

    Have you tried using different thermal compounds between the transistor and the heatsink?

    • I have used regular thermal compound from the electronics shop. The result should not be influenced by this, since I am measuring the heatsink to air thermal resistance.
      Junction to case and case to heatsink resistance are usually given in the part datasheet.
      Still, a better compound will ensure that the silicon in the transistor is colder for the same dissipated power.

Leave a Reply to Christopher Cancel reply

Your email address will not be published. Required fields are marked *


This site uses Akismet to reduce spam. Learn how your comment data is processed.