I'm brainstorming an electronics project where an Arduino (ATMega32U4 chip) will control this Noctua NF-A12X25 5V fan. I thinking of getting the 3-pin non-pwm version over the 4-pin pwm version and pwm the 5V signal to the motor instead. However, I'm not too sure whether to use a BJT or a Mosfest between the motor power line and the Arduino signal line. Below is a schematic of the two option I'm looking into: enter image description here enter image description here

Based on the specs of the fan, the motor will draw a max current of 0.35A so both the BJT and MOSFET should be able to handle it. But, I want the "transistor switch" to have as low of a voltage drop (i.e power consumption) as possible between the collector/drain and emitter/source when the motor is on. Thus, there should be more available power to the motor.

My electronics knowledge is still very limited and I looked at the datasheet for both the BJT and MOSFET. The BJT datasheet had a On-characteristic Vce(sat) of 0.2-0.3V while the MOSFET datasheet had different Vds values. This left me a bit confused.

If someone can explain which option is the better one and why, that'd be great.

  • 1
    \$\begingroup\$ Given the two options you have, the BJT will result in less voltage loss to your load. That MOSFET has (typically) 1.2ohm resistance (with 10V G-S --- You'll probably come in lower VGS than that so your resistance would be even higher...) That would be 0.35A * 1.2 ohm = 0.42V. The BJT loss will be 'fixed' at about 0.2V However there are very affordable MOSFETs available with vanishingly small resistance (such as AP2306 which has about 35 m-ohm resistance - thats 0.035 ohms!!!) Your voltage loss there would be about 0.35A* 0.035 = 12mV \$\endgroup\$
    – Kyle B
    Commented Jun 16, 2020 at 1:27
  • 2
    \$\begingroup\$ Whoa ! You are using a small signal BJT for a power switch. Hmmmm maybe not a good idea. Spec for the Onsemi 2n3904 is rated at Collector current max of 0.20 amps and you say that your fan draws 0.35 amps ! \$\endgroup\$
    – xstack
    Commented Jun 16, 2020 at 1:32
  • \$\begingroup\$ @xstack thanks for pointing that out. For some reason, I saw the Ic notation as base current on the datasheet (stupid me). \$\endgroup\$
    – Kuan
    Commented Jun 16, 2020 at 1:43
  • \$\begingroup\$ @KyleB I'll take a look at the AP2306! One of my other concern is the Vgs. From what I know/assumes is that Vgs eats into the 5V of power supply. So if Vgs is say 3V, then there is only 2V going across the motor. If that's true, then the motor will be less slower. \$\endgroup\$
    – Kuan
    Commented Jun 16, 2020 at 1:45
  • 1
    \$\begingroup\$ @KyleB It seems now that PWMing the power is not a viable option with the fan's onboard circuitry. But your knowledge and contribution is very helpful! I'll definitely keep it in mind for future projects and designs :D \$\endgroup\$
    – Kuan
    Commented Jun 16, 2020 at 2:27

2 Answers 2


My up-front advice is to use the 4-wire version. It is much easier to work with, and widely available nowadays in any form factor you want (especially a big 120mm one like you're proposing.) Because the chop rate is so high (25KHz or so) they don't have acoustic noise problems.

You should only consider 3-wire or 2-wire if your design has to be extremely low-cost.

2 Wire

If you use 2-wire, you can use low-side chop. I'd lean towards a pair of 2n7002's in parallel - that should be plenty for this fan. If you use a BJT you need to make sure that there is adequate base current when the PWM pin is high - not a given thing. Check the ATMega datasheet. Consider a 2N2222 instead of 2N3904.


If you use 3-wire (that is, one with a tach) there's a couple of issues:

  • You cannot use low-side chop. This will mess up the tach signal. Use high-side chop (P-channel FET is easiest).

  • Even with high-side chop, the fan voltage can't go completely off: it will need smoothing so the BLDC controller chip will still make the tach signal. Add a cap across the switch device; its value will depend on your PWM switch rate and how much control you want.

One more thing: with a brushless DC fan, the catch diode is not necessary.

  • \$\begingroup\$ I agree 4 wire is easier to work with but not necessarily cheaper overall. When I designed for 10k units with twin 1U high fans 18 yrs ago cheapest solution was 2 wire Nidec fans and $2 LDO linear speed + thermistor auto speed control at 45~50'C XFRM temp \$\endgroup\$ Commented Jun 16, 2020 at 3:12
  • \$\begingroup\$ It isn’t the cheapest to use 4 wire. But this kind of fan is common enough now that it is not outrageously expensive either. It’s the standard type for a PC chassis (except those are 12V) so there’s economy of scale. Especially for the 120mm size. \$\endgroup\$ Commented Jun 16, 2020 at 7:32
  • \$\begingroup\$ Thanks a lot. The 4-pin is the direction I'll be heading towards now. The 2 and 3 pin does not seem worth the headache for my skill level. One thing I did read is that the Arduino PWM frequency is 490Hz. Wikipedia said frequency under 22KHz might cause audible coil whine. I know there is a way to increase the Arduino PWM frequency. From the initial looks of it, it does not look fun. \$\endgroup\$
    – Kuan
    Commented Jun 17, 2020 at 4:06

Let's Get back to basics using Ohm's Law. Then you can decide for yourself.

Using impedance ratio of switch to load and understand that the resistance goes down with bulk power rating of device. SMT parts have the advantage for lower cost, size and resistance in FETs but tend to cost more. For BJT type switches it demands a ratio closer to Ic/Ib=10 to achieve rated Vce(sat) but you can compute the saturated resistance and now compare it to load R for voltage drop =I*R as both the BJT and the Fan type motors (BLDC+Hall sense+Cct) behave more like linear R.'s The fan load makes the BLDC incremental impedance look nearly constant in the steady-state above stall speed. But acceleration lowers impedance.

All you need is a low loss switch where the switch resistance is say < 2% of your load or better for efficiency. (e.g. 10% loss poor but works, 1% or better is excellent)

Remember, Pd loss and chip size are inversely proportional to R in BJT's , but your cost, reliability and temp rise are the important specs. with features. FETs are a wiser power choice here, but cost depends on wise choices is far better in SMT.

Load = 5V x 0.35A = 1.75W or 5/0.35A = 14.3 Ohms on avg. Thus you want a switch < 280 mOhm (2%)

Transistor switches are based on Ic/Ib=10 for Vce(sat) @ ___ A.

The BJT effective switch resistance is usually inverse to its Pmax rating (with heatsink) :

  • for Vce(sat) max @ Ic in the datasheet, the Collector-emitter bulk resistance is defined as follows:


For the 2N3904 under-rated at 200mA , Rce = 0.3Vmax/50mA = 6 Ohms
A power transistor with a current rating of >= tbd Amps

e.g. PN2222A — NPN General-Purpose Amplifier
Vce(sat) = 300mV @ 150mA = 2 Ohms & 1V @ 500mA = 2 ohms (No good).

So how does Rce vary with power ratings on a transistor? Examples to follow:

KSC2328AYBU TRANS NPN 30V 2A TO-92L 1000 mW Rce= 2Vmax /1.5A = 1.3 Ohms (no good)

MJE243G TRANS NPN 100V 4A TO225AA 15W max Rce= 300mV max @ 500mA = 0.6 Ohms ( closer ...)

2SC4511 TRANS NPN 80V 6A TO220F 30W max Rce = 0.5V max @ 2A = 250 mOhm (Good) $2.46 (1pc)

It may be more cost-effective to choose an SMD FET of ~ 100 mOhm @ 4.5V or less... if you can use SMD ...

RTR025N03HZGTL NCH 30V 2.5A SMALL SIGNAL MOSFET $0.79 Digikey (1pc) Rds On (Max) @ Id, Vgs
92mOhm @ 2.5A, 4.5V Best bet or equivalent Nch FET rated at 4.5V or less


for Ic/Ib=10 in BJT's
2N3904 = 6 Ohms
PN2222A = 2 Ohms
KSC2328AYBU = 0.6 Ohms
2SC4511 = 0.25 Ohms

FET ($0.79 1pc) RTR025N03HZGTL = 0.1 Ohms @ 4.5V They can put FETs inside 4 wire fans much cheaper in volume than you.

All Engineering choices can be make vs buy at every level of design and component level.

  • \$\begingroup\$ Thanks on the 2% rule of thumb Tony. I'll keep that in mind for future project. I drew the schematics myself in a quick rush based on my limited knowledge. \$\endgroup\$
    – Kuan
    Commented Jun 16, 2020 at 2:03
  • \$\begingroup\$ It would be better to find out more on the fans what they can tolerate. Last Time a design a thermal fan controller for Avaya, PWM interfered with my 1U muffin fans , so I made a linear control. You can also use 10'C junction temp rise for a starting spec instead of 2% loss , but it comes down to cost andreliability in the end \$\endgroup\$ Commented Jun 16, 2020 at 2:24

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.