I'm trying to do a pwm amplifier in order to control 3 fans with one pwm signal. Since there are three fans and according to the pwm specs allowed current per each is 5-8mA, I expect current load of around 30mA at max. But my pwm generator (raspberry pi) has 16mA limit, so I need some sort of amplification.


simulate this circuit – Schematic created using CircuitLab

An idea to solve the problem is as follows: when pwm source is low (0V), then the base on the transistor is pulled to the ground, so the transistor's collector/emmiter should behave as an open circuit. When pwm source is high (+3.3V), then collector/emmiter should behave as a short circuit.

If all that is correct then high "pwm source" should pull down the "pwm output" to ground, thus giving low pwm output. And low "pwm source" should do nothing and fans on the receiving side are expected do the rest with pull-up to high (by default, as with no pwm control).

My question — is the schematic above is good and is there any caveats?

  • \$\begingroup\$ That's an inverter for one thing. And what pulls the output up to Vcc? Do you only need to sink current from your PWM inputs? \$\endgroup\$
    – user16324
    Commented Apr 19, 2016 at 10:15
  • \$\begingroup\$ Yes, it is an inverter, but I'm able to invert logic on the generator side, so this is not a big problem. About pull up — my thinking is as follows: without pwm signal fans are working on full speed, so there is already some pull-up by default and I can rely on that. \$\endgroup\$ Commented Apr 19, 2016 at 10:18

1 Answer 1


You will need to investigate the fan PWM input requirements. Most times they will need a bias to activate the input. If your fans are like this then you may need to add a pullup resistor from the NPN transistor collector to +5V.

The bias source for the fan PWM inputs for all the various fans that I've designed into server platforms use an open drain driver (equivalent to your transistor circuit) and a 5.1K ohm pullup resistor to +5V. There is no problem having the pullup to a +5V source despite the fact that the fan runs off +12V. The only requirement is that the PWM driver GND and the fan GND need to be one and the same.

You could derive the bias source from the fan +12V using a voltage divider but do know that the input impedance of different fans varies and the optimum voltage divider for one type of fan may not be ideal for another type of fan. This can be somewhat mitigated by making the resistors in the divider suitably small in value but then you would be consuming excess current from the 12V supply when the fan drive signal goes low.

  • \$\begingroup\$ Interesting. But will it be a problem if this pull-up resistor will be connected to 5V output which goes from raspberry pi (given that fans are feeding from 12V on external power source)? Or should I do a voltage splitter from fan's ground and 12V? \$\endgroup\$ Commented Apr 19, 2016 at 10:23
  • \$\begingroup\$ Also, how should I choose the pull-up resistance value? \$\endgroup\$ Commented Apr 19, 2016 at 10:30
  • \$\begingroup\$ I added comments to my answer. \$\endgroup\$ Commented Apr 19, 2016 at 15:27

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.