Basic DC motor speed control - toasted potentiometers

Hi all,

As much as I’m enjoying the vibrant smell of burning potentiometers, I figured I should probably seek help before I nixed a third. I’m attempting to create a very simple speed control for a non-PWM 120mm 12v 1.4A DC fan. After running through many guides on the internet all that had different approaches, I must be confusing something very basic in terms of the wiring setup that’s causing the 10k potentiometers I’m using to act more like an LED with bonus smell. The idea is to use a TIP120 transistor (and protective diode) combined with a potentiometer to control the fan in the following setup:

Is there something glaringly obvious here that I’ve overlooked?


Hi James
The first thing that is obvious is no current limiting resistor in between the pot and transistor base.
The base of the transistor will only be 0.6V above the emitter (until the transistor fails) so there would be quite a large current flowing in a part of the pot. The wattage rating of the pot is the power dissipated OVER THE ENTIRE length of the resistive track. Not only a bit of it. Because the base is only 0.6V above the emitter when you get the slider closer to the positive voltage there might be quite a large current flowing in only a small segment of this resistive track and burn it up. Not to mention destroying the transistor.
Cheers Bob

1 Like

Appreciate the help Bob, with what you’ve said in mind if I were to drop the current on the base of the transistor to ~1mA with a 10k ohm resistor placed as it is in this picture, would this resolve the issue without constraining the output of the fan itself?


Hi James
I would have a bit of a rethink here. I think this transistor is unsuitable for this application. It is a Darlington type and usually this type of device is used as a switch. It is on or off with only a small change in base current. What you are trying to do is make a transistor act like a resistor which I suppose is valid but the transistor will get just as hot as a physical resistor.

This is not exactly the best way to control motor speed as the torque will rapidly reduce as the resistance of the transistor increases. The most common way these days is PWM control but that is a bit more complicated.

By all means try this method if it suits but you need a power transistor with a bit flatter base current/collector current curve.

I would suggest a better unit the BJE3055. A pretty high power silicon bipolar transistor in a similar package. This is a spin off from the old 2N3055 and was linear enough for power audio amps. Reduce the base resistor to 1k to try it as the hfe is quite low at about 70 - 100. Check if it is getting too hot, if so you may need a bit of a heat sink. The simple method used to be if it does not fry your spit it is OK.
Cheers Bob


Hi Bob,
You’re definitely right - I tried the 10k ohm resistor on the base of the transistor and whilst it worked as you’d expect (no fire/smoke and potentiometer controls fan speed), the transistor started getting really hot. Whilst I have heatsinks that would fit, I’m more interested in a proper solution, so I’ll have a rethink as you’ve suggested. Thanks for the heads up on the BJE3055 - it’s a shame I can’t get them through Core but I’ll see what I can do. The smart idea really would’ve been to get some PWM fans and run it through the pre-built packages for managing fan speed like the ones sold through Core, but honestly I’m more interested in the learning experience (and am also not a smart man).

Appreciate your help Bob!

Sorry should have been MJE3055, Jaycar ZT2280, Altronics Z1129. Readily available Jaycar or Altronics depending on where you live.

This transistor is likely to get hot also but it can be very hot to the touch and still be OK and if it needs a heatsink a small one might do, as long as it can have some ventilation.

There is nothing special about the fan motor. Any brushed motor can be controlled with PWM. Brushless motors are another beast again and require a different approach. You are not using one of these are you. Should be obvious as these have more than 2 wires out of them.
Cheers Bob

Ah found them at Jaycar, I might swing by tomorrow and see if they have any stock, ta!

I might actually be okay with ventilation since the idea behind all of this was to build a basic air filter - by design it can have quite a bit of air passing over it if the transistor itself is supposed to be that kind of hot. The fan itself is definitely nothing special, just a standard PC 120mm fan that had stupidly high static pressure due to it being 4000 RPM (thus the want for a speed control) - I just snipped the 12v molex connection off:

I take it adding PWM might be a bit fiddly compared to trying the ultra basic potentiometer/transistor approach, unless I’m missing something?


Hi James (great name btw),

It can be a little fiddly, but transistors vary a lot when not saturated and used as switches (I don’t use them like that enough to retain the knowledge), so I’d put it a little below your method.

I had a similar problem to you a while back, getting gentle negative pressure (take away the smells) on my enclosed 3D printer without introducing too much cold air, and settled on a 555 controlling a “PWM” (4-pin PC fan):

All a 4-pin fan is, is a 3-pin fan (power, ground, tacho) and a transistor and supporting circuitry on the fan PCB that handles switching. You could incorporate the transistor (probably a MOSFET) into your own circuit. A flyback diode shouldn’t be needed (most PC fans are brushless with internal diodes), but a gate resistor might be a good idea, though 555s are a lot beefier than microcontroller pins.

Alternatively, the modern solution is just to chuck a microcontroller at your problems, having it read an analog pin and write that to a PWM pin.

Let me know your thoughts!

1 Like

Hi James!

I think I might be getting a bit out of depth for my lack of experience with transistors as well as building my own PWM circuit, but throwing a microcontroller into the mix might be a good idea since I was planning on doing that anyway to go with a few of the air particulate and VOC sensors sold on Core. That way I can simply read the potentiometer value and push it out to a properly PWM-controlled fan, as well as being able to manipulate the ranges of fan speed through code. It’s a bit of a shame since that also adds to the cost as similar spec PWM fans like the 4000RPM one here are pretty pricey, but I also may have misinterpreted how “easy” it was according to the Amazon seller to adjust the speed of non-PWM fans :sweat_smile:

I’ll have to try Bob’s MJE3055 (TIP3055?) transistor approach with a heatsink to see if I can operate it at a temperature I’m comfortable with before throwing in the towel and going for the expensive approach! Failing that, I’ve found modules similar to what I’m trying to accomplish manually on amazon that simply output motor +/-, would this achieve what I’m after?:


1 Like

Hi James,

To clarify, there is nothing special about a 4-pin fan, you can control your 2-pin fan with a microcontroller, you just need a MOSFET or the like in between to handle controlling the 12V at decent currents.

Hi James

I thought speed control of brushless fans was a whole new ball game. The usual PWM switching techniques applied to brushed motors will not work. You require a dedicated “brushless” driver. Not unlike a stepper.
Might be wrong but that is how I read it.
Cheers Bob

Hi Robert,

You’re right in that they need some control circuitry, but PC fans have that built in:

Thanks James, I’ve done a bit of reading and have found the following appropriate MOSFET through core: N-channel power MOSFET - 30V / 60A | Adafruit ADA355 | Core Electronics Australia

Which seems to slot into place of the TIP120 in my diagram above, keeping everything else the same (as well as the added 10k ohm resistor now leading to the gate) - am I understanding this correctly? Whilst this isn’t introducing PWM or using any microcontroller, it seems to act similar to the TIP120/potentiometer initial approach whilst handling the dissipation of heat much better? Or am I running in circles here…

I see nothing wrong with the original circuit. Just no protection. The potentiometer is burning up probably because as Bob says there is no current limiter so turning the shaft to the wrong position draws too much current. If the pot was set to mid point, it should work. That’s equivalent to having a 5k resistor with maximum 12V across it, 2.5mA * 12V = 30mW. Should be OK.
An MJE3055 does not have sufficient gain. A gain of 100 feeding a motor drawing 1.4A requires 14mA. That would put the pot at the limit of its travel and for sure would burn up. The darlington is OK with a gain >1000. It will need a heatsink. Assume mid point, 6V and 0.7A across transistor, and across motor. That’s 4.2W - too much for no heatsink. It is rated for 75W with case temperature of 25C so doesn’t require anything massive.
To limit current, I’d put a resistor between the +ve input and the pot, not between the pot and the darlington. 10kohm may be a bit high to allow the fan to run flat out, it depends on the gain. The curves say 3000 @ 1A in which case 10k would work. It may need a bit of experimentation. Too high, the fan can’t run at maximum. Too low, and control is only part of the pot rotation.


Whew I’m learning a lot today

So, retrying the same circuit this time with the TIP120 in a TO-220 style heatsink - the heatsink itself is still becoming too hot to touch which is concerning me. With the 10k resistor into the 10k pot, I’m still seeing ~50% of the lower-resistance side of the pot be useless in controlling fan speed, whereas the middle 5% of the pot contains all of the “control”, then going below a certain point the fan is unable to continue spinning and slows eventually to a stop. I assume I need to tweak resistor values to help smooth out that useless lower-half of the pot? I understand the lower limit of the speed is relying on the fan’s minimum ratings and cannot be helped. Would switching to a MOSFET help avoid things heating up to uncomfortable extremes or is heat just one of those things I’m going to have to get used to?

Appreciate the responses!

1 Like

Hi James
Mosfet, Darlington or bipolar transistor. You are operating the device as a variable resistor so to get the same speed result with all 3 devices the series resistance of the device will be the same with the same current and voltage drop and therefor the same dissipation (heat) so I would expect all 3 of these device types to be approximately the same temperature.

The difference is the degree of pot rotation for control. I think the darlington and Mosfet would have a smaller portion of the pot for full control while the transistor might be more linear and spread out a bit more. I take Alan’s comments re gain on board and agree with them. You may do better with more gain. In reality I have never tried to control a motor speed this way so I could not be sure. One thing I have noticed is that no one (myself included) has considered inrush current at start up. This would be about the same as the fan stall current and could be a few amps. One easy check is to measure the DC resistance across the winding with the fan un powered. Rotate the fan VERY SLOWLY (as it will become a generator) and pick the lowest reading obtained (not while rotating, the fan has to be stopped) and use ohm’s law to calculate the stall current.
Cheers Bob


The problem here is the speed of a DC motor is proportional to the voltage applied across it. This circuit controls the current, not the voltage. With a fixed resistor, the current and voltage are proportional (current = Voltage divided by resistance). A motor does not look like a fixed resistance so adjusting the current is not as effective.
A “fix” would be to replace the potentiometer with an op amp (eg LM741). Use the potentiometer to supply a voltage 0 to 12V to the +ve op amp input and the voltage across the motor to the -ve op amp input. But this would require some design work so maybe beyond the scope of this thread.
Re: heatsinks. The aim is to keep the guts of the device below a particular temperature, typically 125C. So the sink can get uncomfortably hot but still well within limits. Higher temperatures usually mean less reliability but that could mean shortening the life from 10 million hours to 1 million so who cares. If you know the maximum heat generated (in Watts - Volts x Amps) the device will have a rating [device to case] temperature drop (degrees C per Watt), and may have a [case to ambient air] value as well. The two are added together to get the temperature rise per watt above ambient. Heatsinks also have a similar rating, so adding the [device to case], and [heatsink to ambient] will give the temperature rise (assuming a good bond of case to heatsink). So it is not difficult to calculate a suitable heatsink, and the values for heatsinks are usually in the catalogues.
Picking a TO-220 heatsink at random from Jaycar catalogue, rated 19C/W - the TIP120 is 2C/W. From calculation in a previous post, max dissipation is 4W so rise is 4*(19+2) =84C. Take ambient as 40C so device could go as high as 124C which is still within spec but no margin. Better to choose a heatsink below 10C/W to be safe.
Too much information?


There’s never too much information, only the lack of brain cells to process said info! :sweat_smile:

Thanks Bob/Alan, sadly 125 degrees being in spec doesn’t do much for the PLA printed plastic housing I’d be mounting all of this inside of unless I can mount it all in the direct path of airflow. I do appreciate you taking the time to fully lay out how the temperature calculations work though, that’s handy knowledge to have! I’ll read up a lot more on the op amp Alan specified and see if I can make something of it, thank you for the example.

I ended up ordering one of those little DC voltage control/governor modules - since those boards are relatively simple themselves (and cheap), I’d like to see if they solved anything to do with heat and maybe come to a better understanding of how I went wrong. Chances are high that I’ll be back here when it doesn’t work!


If a heatsink doesn’t work, get a bigger heatsink. (paraphrasing “if a hammer doesn’t fix it …”). There are heatsinks as low as 1 degree C per watt (the sort of thing on the back of a PA amp for instance). Also in your application you are looking at passing fan air over the heatsink so it changes the rating. Calculating how much is a bit complex, simpler to build a prototype and use an infrared thermometer.
I only mentioned the LM741 because it is a very common op amp. Many others will do the job. It will need a resistor network to limit its gain. Otherwise it will swing quickly from full on to full off and nothing in between.
Maybe the control/governor module will do the trick without complexity of designing your own. Any scheme that acts as a resistor between the supply and the fan will need to dissipate heat. The alternate is a variable buck converter (basically a PWM followed by a filter). If the control/governor module works this way it will run much cooler and is more efficient. Hope that’s the case.