I'm using a cooler (=fan) to conduct heated air through a hose to a closed chamber using an Arduino UNO PWM . A PID system controls the current across an array of resistors to target the setpoint temperature at the chamber. The purpose of the cooler (12V - 2.9 W) is to generate an air flow.

I started out using this circuit (for the cooler only) using exactly the same components:

Arduino UNO cooler speed control

At the same time I'm running a user interface using a 20x4 LCD and a rotary encoder, a PID control system to control the temperature in a box. The arduino and the PID system are powered by a 12V 10A switching power supply.

At the beginning the thing worked well, when in the interface you hit 'Start' both the cooler and the PID system started (I do not know the voltage across the fan). After a few assays the cooler started running a bit slower or delaying the start and when measuring the voltage it resulted in approximately 10 V. I do have cables conecting the cooler's + and - to the PCB board but the voltage drop is less than 0.1 V. I supposed that the transistor was damaged or something and replaced it with a TIP122 transistor which can deal with more power and has high gain. After this, I tried running a new assay but the cooler didn't even move, the voltage across it was 7.5 V! I then proceeded to replace the 1k Ohm resistor to a 220 Ohm one hoping that I would get a higher voltage in the base. The cooler started moving buy really slowly. After the last mentioned change, I ran a new assay and measured everything:

  • Voltage across cooler: 9 V
  • Arduino's PWM (255): 4.6 V
  • Voltage drop across 220 Ohm resistor: 3.4 V
  • Vbe: 1.2 V
  • Vbc: 1.9 V
  • Vec: 3.1 V
  • Power Supply: 12.8 V

After this, I'm out of ideas. It's pretty weird that the circuit used to work and started losing power with time (I'm no genius but it's a pretty simple circuit) .

If you look at the BD139 datasheet it doesn't make much sense that it was damaged due to power overload.

TIP 122 Datasheet

BD139 Datasheet

EDIT: After the previously mentioned assays the cooler was connected to the 12V power supply and worked perfectly well.

Cooler used

  • \$\begingroup\$ I don't understand your thinking. It appears that you have a PWM output from the Arduino that feeds to an RC low-pass filter. This filter output drives the base of a transistor. But what's the plan here? Is the "cooler" a "fan" as the picture shows? Or is it something more complex and requires 12 V operation? Is it your idea to control the current using the analog output of your filter? Or did you want on/off control using the PWM directly? Or what? Explain your design thinking (it's too early to look over your numbers.) \$\endgroup\$
    – jonk
    Jun 25, 2020 at 22:20
  • \$\begingroup\$ The cooler (=fan) is supposed to conduct heated air through a hose to a closed chamber. The PID system controls the current across an array of resistors to target the setpoint temperature at the chamber. The purpose of the cooler is to generate an air flow. At the beginning the idea was to use a PID controller for the cooler's speed as well but was the abandoned. What I meant with on/off control was to turn it on when the user hits the 'Start button'. ( I will add this information to the post) Thanks \$\endgroup\$
    – Shupper
    Jun 25, 2020 at 22:28
  • \$\begingroup\$ I'd like to see a mechanical diagram of this system. I'd also like to know what kind of chamber temperatures we are talking about, how much above or below the set point you are allowing (once it heats up, I suppose.) And any other pertinent details. \$\endgroup\$
    – jonk
    Jun 25, 2020 at 22:35
  • \$\begingroup\$ What kind of cooler is this? Part number or datasheet? It could be a BLDC fan, and "PWMing it" or running at too low of a voltage killed it. \$\endgroup\$
    – rdtsc
    Jun 25, 2020 at 22:37
  • \$\begingroup\$ The chamber is a 100 ml glass box. The setpoint is usually 37 C. The system has been tested over 50 times and worked well. I don't reckon the problem has to do with this \$\endgroup\$
    – Shupper
    Jun 25, 2020 at 22:38

1 Answer 1


Sounds like there is something wrong with the fan. According to the datasheet, the fan should start with 4.5V across it.

See if the fan blades spin freely or if there is some binding. Maybe there is something in the operating environment that is affecting the fan.

In linear operation, worst-case power dissipation of the transistor is around 0.75W, so about 100’C rise above ambient for a TO-126 sans heat sink, which is pretty hot. You also have marginal base drive to get it to saturate- maybe review how you calculated that 1K was adequate.

The TIP122 is a Darlington pair so it has higher voltage drop than a BJT when fully turned on, perhaps 750mV with 1mA base drive and <250mA collector current.

Anyway, my main point is that the fan should be spinning with >4.5V. Secondary points are that the BJT has marginal or inadequate base drive, both transistors should have a small heat sink, and both transistors appear to be behaving within the range of expectations.

If you just want to turn the fan on and off (or drive it on/off with PWM) replace the R,C,and transistor with a small n-channel logic-level MOSFET such as AO3400, which will drop less than 10mV when on.

  • \$\begingroup\$ Hi! thanks for the reply. I found this very helpfull. After measuring the high voltage drop caused by the TIP122 I went back and replace it for the BD139 BUT left the 220 Ohm resistor. This resulted in 11.2 V across the fan, so it's working just fine. Anyways I'm still wondering, will the transistor be damaged? I ignore how to do the calculations for current draw from the Arduino pin and current through the transistor \$\endgroup\$
    – Shupper
    Jun 26, 2020 at 15:09
  • \$\begingroup\$ Probably not damaged, but a small heatsink would be a good idea. \$\endgroup\$ Jun 26, 2020 at 15:14
  • \$\begingroup\$ Great! Thank you very very much. I'll probably replace the 220 Ohm resistor for a 470 Ohm one to prevent drawing too much current from the Arduino. I'll add a small heatsink as well \$\endgroup\$
    – Shupper
    Jun 26, 2020 at 15:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.