1
\$\begingroup\$

I'm working on a project that requires a DC motor, so I salvaged a PC fan from an old computer. The model is AVC DS08025R12U. It needs 12 volts for maximum speed and is rated to draw 700 milliamps. I'm planning to power the motor with a 12 volt 3 amp power brick, which will also help power an Arduino microcontroller and a breadboard power supply module. I'm planning on changing the speed of the motor with a PWM signal from the Arduino, but just to test, I set up the simple circuit that can be found on the sparkFun website. Instead of making a simple code, I am just plugging a wire into ground or 5V manually. I also have the Arduino removed from the circuit. Here's a schematic -

schematic

simulate this circuit – Schematic created using CircuitLab

Instead of powering the breadboard with the Arduino, I used an Elegoo breadboard power supply module.

I have a wire going straight from the DC jack (12 volts, 3 amps) to the Collector of an S8050 NPN Bipolar Junction Transistor, which, from the datasheet, is able to handle 12 volts and 700 milliamps. Although the power brick does supply 3 amps, the fan is only rated to draw 700 milliamps, which is the maximum amount of amps the BJT can take, after checking with a multimeter, it only draws a little over 500 milliamps, which should be nowhere near too much for that transistor. The datasheet for the S8050 NPN BJT is right here - http://electronics.se-ed.com/magic/s8050.pdf

Is the potential problem in the physical circuit? Am I incorrectly reading the datasheet? Is this normal?

Also, for some reason, when I use 5 volts to turn the transistor on and off, the fan doesn't spin very fast. Only when I plug the jumper cable connected to the base of the BJT to 12 volts does it reach maximum speed, in which case the BJT gets much hotter much faster.

Thanks so much!

\$\endgroup\$
  • 1
    \$\begingroup\$ Fritzing diagrams are frowned upon on this site. Please click edit, then click the schematic button in the editor, and draw us a proper diagram. You might be oversaturating the base of the transistor, but I can not possibly know if that is the case unless I go through the mental effort of converting that Fritzing diagram to a normal circuit diagram in my head, which I'm much too tired to do right now. \$\endgroup\$ – Dampmaskin Jul 28 '17 at 2:30
  • \$\begingroup\$ Hi Preston, welcome to EE.SE. Using a transistor rated for 750mA at 750mA is exactly like pushing the accelerator of a car to the floor and hoping it doesn't eventually explode. You can try a heatsink on the transistor, or consider a "logic level" MOSFET with low "RDSon" value. Lots to research! \$\endgroup\$ – rdtsc Jul 28 '17 at 2:45
  • 1
    \$\begingroup\$ Have you done the math yet? \$\endgroup\$ – Ignacio Vazquez-Abrams Jul 28 '17 at 2:45
6
\$\begingroup\$

From your description it sounds like you're doing "high-side switching", like this:

schematic

simulate this circuit – Schematic created using CircuitLab

THIS IS NOT WHAT YOU WANT!
Because, as you've discovered "the fan doesn't spin very fast", this configuration will never deliver the full 12V to your fan.
It doesn't matter if the Arduino is there or if you're just pulling that pin manually up to 5V.
In this configuration your fan will never get more than about 4.3V (5V - 0.7V Vbe), with the remaining 7.7V dropped across your transistor (just causing it to heat up - as you've also discovered).
The voltage at your NPN transistor's emitter can never get higher than the voltage you put on its base (minus the typical 0.7Vbe).

Rearranging your circuit to do "low-side switching" instead will improve things dramatically:

schematic

simulate this circuit

In this configuration with the emitter tied to ground, applying 5V to the base resistor (not directly to the base) causes the transistor to switch on 'hard', pulling its collector down to about 1V, which means that your fan now gets 11V - much better than before.

While this is a significant improvement, its still a bit less than ideal.
The low-ish current gain (probably around 40) means that your poor Arduino will have to source around 15-20mA to drive the transistor (and you would need to reduce the value of the resistor to 220R or less).

Replacing your S8050 NPN BJT with a small N-Channel logic-level MOSFET (also in the low-side configuration) should give an even further improvement.
You can do away with the resistor and connect the N-FET's gate directly to your Arduino while not worrying about the Arduino having to source any current, because the N-FET doesn't really require any. *simplification
IF you choose the right N-FET you'll also get closer to delivering the full 12V from your supply yo your fan.

\$\endgroup\$
  • \$\begingroup\$ unfortunately, I don't have any N-FETs, and I have to work with what I have for the time being. Maybe l'll switch them later. Thanks for the help! \$\endgroup\$ – Preston Jul 28 '17 at 15:49
  • 1
    \$\begingroup\$ I agree with your answer. I would just add flyback diode across the fan. \$\endgroup\$ – Chupacabras Jul 29 '17 at 4:46
2
\$\begingroup\$

S8050 BJT is rated for 700 mA but gets extremely hot when powering a 12 volt 700 mA PC fan

transistors don't get hot just because of the current. they get hot because of power dissipation. calculate the power dissipated in your case and check the device datasheet for thermal resistance and you will see how much temperature rise there is -> how hot the device will get.

edit: in your particular case, you are using the transistor as a current amplifier (aka linear device) -> it will dissipate lots of heat and may not deliver enough power to the load - the output voltage is the logic high voltage - 0.7v.

reconfigure it as a switch instead.

\$\endgroup\$
1
\$\begingroup\$

schematic

simulate this circuit – Schematic created using CircuitLab

I would design my fan controller this way. TO-92 BJT are normally use for low current application, they are not prefer to drive motor applications.

\$\endgroup\$
  • 1
    \$\begingroup\$ Darlingtons cannot enter hard saturation, from what I recall. \$\endgroup\$ – analogsystemsrf Jul 28 '17 at 3:11
  • \$\begingroup\$ There should have 2V drop across Vce, however 10V is still enough to power the relay. Another solution is to use PNP NPN pair. NPN Vce can reach near 0V and the PNP powered from 5V. \$\endgroup\$ – Jason Han Jul 28 '17 at 3:48
  • 2
    \$\begingroup\$ The OP is "planning on changing the speed of the motor with a PWM signal from the Arduino," so this circuit won't be of much use. \$\endgroup\$ – Andrew Morton Jul 28 '17 at 16:02
  • \$\begingroup\$ PWM signal can't off the fan, maybe he wants to off it. \$\endgroup\$ – Jason Han Jul 29 '17 at 0:54
  • \$\begingroup\$ Of course a PWM can turn the fan off. Just set the duty-cycle to 0%. \$\endgroup\$ – brhans Jul 17 '18 at 14:29
1
\$\begingroup\$

With your original circuit, the fan only sees 5-Vbe(~0.7V) Volts. That's why it's not spinning very fast. Also use another transistor. The ones in a TO92 are not capable to run heavy loads.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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