I am from a programming background, so I dont quite know the theory, But I want to control a motor from a mictrocontroller. So I used a TIP 122 to do it. My circuit looks a bit like this:


simulate this circuit – Schematic created using CircuitLab

Why did the motor run when I connected the base of the transistor to gnd? also, the motor runs at full speed even if I apply base voltage as low as .2 volts. What is going wrong here ?

I even tried adding a 500ohm resistors to base, but it still doesnt have any change.

  • \$\begingroup\$ You probably have the pinout wrong, and the motor is connected base to emitter. I'm surprised it's moving at all with a 1V supply. \$\endgroup\$
    – Matt Young
    Aug 15, 2014 at 15:14
  • \$\begingroup\$ my connection is something like this:instructables.com/id/… \$\endgroup\$ Aug 15, 2014 at 15:15
  • \$\begingroup\$ Matt is referring to the transistor: you probably swapped base and collector. \$\endgroup\$ Aug 15, 2014 at 15:17
  • \$\begingroup\$ Tip122 has the base as the leftmost pin, right ?if thats the case, then I am quite sure of that part \$\endgroup\$ Aug 15, 2014 at 15:18
  • \$\begingroup\$ also, could anyone tell me if applying a base voltage of about 2V will make the motor run at full speed ? my motor runs at around 12v at full speed \$\endgroup\$ Aug 15, 2014 at 15:21

1 Answer 1


You can do this to drive your motor. The 1k resistor must be tuned based on your motor's expected current for a given voltage. Usually you have a spec like 500mA@12V or something of the like.

Basically, to get the 500mA spec, you want collector current of 500mA. The base current is always Ib=Ic/Hfe.

Tip122's Hfe is min 1000, so you get 500µA for Ib. You know on a BJT that Vbe is 1.3V for Tip122 at 500mA (see plot in datasheet). So if you have a GPIOs voltage of Vgpio, you have a voltage of Vgpio-2.5V across R1.

Using Ohm's law you can find out R1 => R1=(Vgpio-Vbe)/(Ic/Hfe).

For a 3.3V Gpio R1=(3.3V-1,3V)/(500µA) = 4K
For a 5V Gpio R1=(5V-1.3V)/(500µA) = 7.4K

Those resistor values are upper bound values to get your full 500mA. You should be using values around those.


simulate this circuit – Schematic created using CircuitLab

Now for your question about what is going on, I can't answer. It is not very clear about what you did and you look like you are mixing thing up a little.

  • \$\begingroup\$ why have you written micro ampere? \$\endgroup\$ Aug 15, 2014 at 16:29
  • 1
    \$\begingroup\$ because Hfe of transistor is the current gain: a BJT transistor is basically a current amplifier. Hfe defines by how much the base current is amplified, which is the very point of using a transistor to drive loads in the first place. TIP122 is darlington configuration and such configurations have very high gains such as 1000. 500mA/1000 = 500µA. \$\endgroup\$
    – Mishyoshi
    Aug 15, 2014 at 16:46
  • 1
    \$\begingroup\$ Great. You have intelligently chosen the motor symbol. Technically a speaker is a complex motor. \$\endgroup\$
    – Amit Hasan
    Aug 15, 2014 at 16:48
  • 1
    \$\begingroup\$ @Amit Hasan I must admit that I hadn't put much though in choosing the speaker, but why not ;) \$\endgroup\$
    – Mishyoshi
    Aug 15, 2014 at 16:53
  • \$\begingroup\$ why dont I get the praise too? ;) \$\endgroup\$ Aug 15, 2014 at 17:08

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.