Controlling a DC Motor (Mabuchi FA-130)


I'm trying to run a Mabuchi FA-130 (#18100) DC Motor, it uses 3V and 2.1A when stalled. However, I did some measures and when I forced the motor to stall it consumed nearly 4A, but I think this was some sort of coincidence since It has never happened again.

I'm using a circuit similar to this one posted by Simon Z in his post:


(By Simon Z and taken from

The difference being that after reading the comments on that post I'll use a BD139 transistor. Anyway, I'm studying Computer Science so I'm very bad with circuits, and I have some very basic that I'll appreciate if could be answered.

  1. The BD139 transistor has a maximum current of 1.5A, won't it burn with my motor? If so, I couldn't find a 2.1A transistor, anyone know one? or can you make an equivalent one with some sort of transistor's grouping?
  2. Is there a simple way to limit the motor current so it will never burn the transistor?
  3. How do you choose the value of that resistance of 500 ohms and what is it for?
  4. I searched and read somewhere that the diode is used to protect the motor from the transistor on-off changes, is that correct? If so, how do you know which diode to use?

If at least one of these questions could be answered I'll appreciate it, thanks.

1. That means it can supply

1. That means it can supply up to that amount.

2. Look at 1

3. Limits the draw of the transistor to turn on. Multiply the current supplied by the resistor by the gain of the transistor for your current output limit.

4. it prevents backflow of the motor when you turn it off. You would probably want one with a higher ampereage rating. 4n4003 is good.

NPN Transistors

Hi tatofoo,


Just did a google for NPN transistor 5A and pulled up pages of hits - try this and check which available from your local suppliers

Darlington Pair

You can also look at using two transistors together as a Darlington pair.

Transistors can act as a switch, but also as an amplifier. By running the emitter output of one transistor into the base of another, you can develop a tremendous amount of gain, therefore providing more current.

You can buy a Darlington driver IC like the ULN2803A that comes with the Picaxe starter kit, or you can use two discrete transistors.



Thanks for all the answers. After reading what PeteH suggested I’ve managed to find two possible transistors: 2N6497 (5A) and TIP120 (5A). I found TIP120 after looking at a similar schematic at [1] and [2].

For the diode, I couldn’t find the diode that Krumlink suggested, but I’ve read in [3] that the snubber diode should support the stall current of the motor, so I searched and found the 1N5400 or 1N5408 which handles up to 3A.

The only thing which I couldn’t understand from Krumlink answer is how to limit the maximum current of the motor?



It diddnt limit the current
It diddnt limit the current of the motor, just how much power the transistor can pass through. The 4n4003 is a typo. I meant to say 1N4003.

I just went through an

I just went through an exercise in curiosity for figuring out how to drive a motor with a BJT. The basic idea is you want to run the transitor in saturation mode. You can pick any transistor that can handle > 2.1A. I happened to choose a TIP3055 which is a BJT that handles 10A continuous (!). Should work fine for your application, however you’ll need a 2nd transistor to interface it to the MCU, most likely, because the big transistor will require quite a bit of base current.

BJT’s have 3 modes… cutoff (off), active (on, but with Ic proportional to Ib), and saturation (really, really on; where increments in Ib don’t really add any significant current to Ic). The transistor enters saturation under certain conditions. For an NPN, essentially when Vcb = 0 and where Ib > Beta * Ic. Under active mode Ib = Beta * Ic. Beta is essentially the in-circuit gain for the transistor.

So in short you’re choosing the base resistor (Rb) to ensure that Ib is quite a bit higher than the desired steady state current through the motor. You can figure out Ib because you know Vbe is ~ 0.7V and you know the voltage of the signal into Rb. So you use Kirchoff’s voltge law to figure out voltage across Rb and then Ohm’s law to calculate Ib. So let’s say you want 2A steady state thru Ic (thru the motor), you pick Rb so that Ic = Beta * Ib / 10. Or Ib = 10 * Ic / Beta. Look up hFE for the current/voltage involved. That’s beta. Say it’s 100. So Ib is 2A/10 = 200mA.

I’m oversimplifying and maybe being a little sloppy in explaining – just giving you an idea of how it’s done. I actually did a post on my blog about this. Can send / post link if it’ll help.

Now, if you instead use a MOSFET those don’t require a lot of current to drive them, unless you’re using PWM at a high frequency (long story). The only trick is the N-channels have to have their gate voltage above Vcc by some amount, which means some extra drive circuitry. I haven’t played with P-channels so I don’t know if you need high gate voltage to turn them off, but 0V turns them on as far as I am aware.