Go Down

Topic: Can I Connect a DC Motor to the Transistor's Emitter? (Read 2477 times) previous topic - next topic


Most (all?) tutorials on driving a DC motor (with an Arduino) connect the motor between the power source (battery) and the transistor's collector pin. The transistor's base pin is connected to an Arduino output pin and the emitter is usually connected to Ground. There is also a diode that is connected in parrallel to the collector and emitter of the transistor. Something like this (without the diode):

Code: [Select]

  Battery (+) --------> Motor ----> Collector Pin
     |                                 Base Pin <------ Pin 9
     | (-)                            Emitter Pin ----> GND

My question is: Can I connect the motor to the Emitter Pin and then to GND? In other words, the Battery connect to the Collector Pin. When the base is activated, current will flow from the collector to the emitter into the motor. Is this sound?



Feb 12, 2013, 10:25 am Last Edit: Feb 12, 2013, 02:07 pm by Krodal Reason: 1
Yes, that's also good.
But if the output of the Arduino is only 4.5V and the Vbe (voltage drop from base to emitter) of the transistor is 0.7, and the voltage drop over the resistor is 1V, the motor gets only 2.8V.

You also can't use a 12V motor.


Feb 12, 2013, 06:20 pm Last Edit: Feb 12, 2013, 06:23 pm by awawda Reason: 1
Thank you for the reply. Sorry, I don't understand why the motor would only receive 2.8V? The motor is being powered by a battery (external power source). I understand that if I put a resistor between the Arduino output pin and the base lead (of the transistor) then only 2.8V may reach the base, but that shouldn't impact how much voltage reaches the motor, right? I was under the impression that the transistor can drive a larger load (from collector to emitter to motor) using a small load (Arduino output pin to resistor to base lead of the transistor).


If the motor is connected to the emitter (and ground), the voltage could be that low.
Also, if you use a battery for the motor, it is best to connect the motor to the collector (and battery plus).

You can try for yourself, and measure the voltages.
But use a resistor of about 1k at the output of the Arduino. That way the Arduino output is protected in case you connect something wrong.


Here's my two pence...

If you need the motor to be attached to GND (so that the voltage across the motor can be easily measured, for instance)  you can use a PNP transistor to drive the motor.

It is best to drive the motor with the collector as it approximates a current source.

I would use an opto-coupler (such as the 4n35) to isolate the 5V Arduino from the motor.

Take a look at the attached schematic.


NPN sinking PNP base is sufficient isolation. Opto is overkill.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.


Thanks a lot. I don't have any specific reason why I need to connect the motor to the emitter (instead of the collector). I was curious whether or not it would work. I didn't realize that there would be such a big drop in voltage from the collector to the emitter?


It depends on the transistor.
If you use a PNP transistor, it likes to act as a current source.  However, the base has to be pulled up to the source voltage to turn it off, and the base gets pulled low to turn it on.  NPN likes to act as a current sink, and the base only goes about 0.7V above the emitter to turn it on, and is independent of the voltage on the collector.  The voltage drop across the collector-emitter varies by part, from as low as 0.3V for low voltage/current parts to >1V for  high voltage/current parts.
If you want really low voltage across the transistor, consider a Logic Level, N-channel, low Rds (like 0.03ohm or 30milliOhm) MOSFET to sink current to ground.
For example
Example: Ohms law V = IR, with 3A of current and 0.039 ohm, the voltage drop will be just 0.117V.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.


The main problem with your approach,  is that you have to have a different ground potential for the arduino and your power circuit,   and then you have to go down the path of isolation.    You can do it the other way,  but it is more complication.   
If you want to learn more about it,  look at how the drivers for three phase brushless motors work.


"Could you do the egg bacon spam and sausage without the spam then? "

No PMs for help please.
DO NOT power servos from Arduino 5V: give them their own power and connect the grounds.


Feb 23, 2013, 11:05 pm Last Edit: Feb 23, 2013, 11:08 pm by MarkT Reason: 1
The reason for connecting the motor to the collector is _nothing_ to do with it being a current source.

When you use a transistor in a switching circuit it is not in the linear region and it is not even remotely
like a current source.

The reason the common-emitter circuit is invariably used is to reduce power dissipation in the transistor.
To get the lowest heat wasted in the transistor you must saturate it - which brings the collector-emitter
voltage down to between 0 and 0.2V or so typically.  [thus making it a rather good _voltage_ source]

The emitter follower circuit _cannot_ saturate without running the base circuit from a higher voltage than
the collector.   You get at least 0.7 to 1.1V across the collector-emitter terminals, thus wasting many times
more heat in the device.  In practice the voltage drop on the base resistor makes this worse.

The common-emitter configuration is _trivial_ to saturate, just pass enough current into the base.  Some
modern transistors can saturate down to a few 10's of millivolts with a reasonably large load BTW.
[ I won't respond to messages, use the forum please ]


Not Getting why mine is not working or where i'm doing wrong....

Well one thing you're doing wrong is piggy-backing on this thread... maybe you should start a new one and delete the posts in this thread. Mayb e then you'll get a response?
"Could you do the egg bacon spam and sausage without the spam then? "

No PMs for help please.
DO NOT power servos from Arduino 5V: give them their own power and connect the grounds.

Sorry i'll try to put in new thread....

Thanks for advise and reading that site for more knowledge so that i can find out ways myself as much as possible with me.

Sorry again for wrong way of getting help.


Sorry again for wrong way of getting help.

It's just that you're more likely to get more response if your question isn't jumbled up in the middle of something else...
"Could you do the egg bacon spam and sausage without the spam then? "

No PMs for help please.
DO NOT power servos from Arduino 5V: give them their own power and connect the grounds.


Dec 02, 2013, 09:13 pm Last Edit: Mar 10, 2014, 01:29 pm by Tzimitsce Reason: 1
I don't know if anyone still follows this topic; but I'm writing here just to make it a reference to those who question this behaviour.

Now, if you chose to connect your circuit element (say, it's a motor but it doesn't matter) to your emitter output, you are actually causing that element to be "shared" between your base-emitter circuit, and collector-emitter circuit. Considering a transistor, in a simplistic manner, two diodes together; the circuits happen like attached image.

Now, left side of that image is the Base-Emitter side. Notice the load there? Yeah, it's there, because you decided to place that to the "common emitter" line. Ergo, you caused the load to affect the base current. Now, if you do read about transistors, there is an equation as follows:
Ic = B * Ib

"B" in this equation (also knows as Hfe) is the "current gain" of the transistor. Simply put, it's the ratio of the current that goes from collector to the emitter to the current that comes from the base to the transistor - that means, a transistor can only allow to pass "B times Ib" amount of current from it's collecter-emitter circuit (Ic). Why so? It's because of how diodes and semiconductors do work there.

There is also another very trivial but important equation:

Ie = Ic + Ib

which means that the emitter current is dependent of the collector and base current. Putting the first eq. into the second, we get:

Ie = B * Ib + Ib = B (1 + Ib)

Now, this is very important in our case! By putting the load to the common emitter line; you increased the resistance (or should I say, impedance?) of the base-emitter circuit; ergo decreased the total current that circulates at the base-emitter loop. Because of this, emitter current automatically decreases, even though there is a current coming from the collector base and transistor working (not efficiently, though). Due to Ohm's law; if current decreases; voltage decreases (if the resistance is constant - we assume it to be so); thus you measure much less voltage on the pins of the engine if you connect it to emitter line.

Trying to saturate a transistor (i.e. making it work efficiently) in this condition is virtually impossible without increasing the collector voltage, because as you try to saturate the transistor, the B value changes, so the transistor behaviour changes... It's like a dog, trying to catch it's tail :)

On the other aspect; due to the Kirchoff's Law; you cannot measure any voltage higher than the Vb in the emitter line - even if there is no load - anyway, because the base-emitter circuit is a loop and there is nothing to increase the voltage there!

Sorry, this has been a kind of long one; but I hope it makes it simpler to understand.

As a side note: These keywords are the key here: "common emitter circuit", "common  base circuit", "common collector circuit", "transistor biasing".

Go Up