4xNPN H-Bridge Questions

Hello everyone!

I have some questions about my current project. I’m trying to control a pretty robust 24V DC-motor with my Uno.

I decided to make a H-bridge using 4 x 2N3055 NPN-transistors that I had lying around. And i had some BD139 acting as darlington-transistors to control the 2N3055, according with my diagram posted here.

I would love to hear some opinion with this setup, regarding the transistors and the resistors. Do i need the resistors elsewhere? Googling around for the actual value for the resistors got me confused.

The symbol for the power is wrong, but it is 24 Volts, and the shorter lead is +.

h-briidge.pdf (383 KB)

Firstly your circuit has many mistakes - you need to understand things like what a common-emitter switching
configuration looks like, why you never use emitter-follower for power switching, and bootstrapped high-side
driving, level shifting, dead-time, base resistors, the prohibitive drop-out voltage of double-darlington stages,
I could go on, but you get the idea. Using all NPN is a harsh constraint for bipolar bridges, incidentally.

And 2N3055's? They need so much base current(*), so how are you going to provide that for the high side devices above the supply? You'll need a high-current extra floating supply just to supply the BD139's on the high-side!

For bipolar and 24V using PNP and NPN complementary darlingtons would be much easier to achieve
(although the heat dissipation would be worse typically).

4 n-MOSFETs are used in a bootstrapped configuration easily because the gate drive supply only
very light DC current, so a small diode+cap is plenty able to supply the current for the high
side gate drive. Look at drivers like the HIP4081 and FAN7388 to see how this is done - its pretty straight
forward. MOSFET H-bridges can be way more efficient, and need far smaller heatsinks too.

Anyway define "a pretty robust 24V DC-motor" for us, that could mean pretty much anything.
Provide model number, datasheet, stall current, pictures, whatever details you actually have.

(*) 20 to 30% of the load current, for good saturation at high current.

Thanks for the reply!

I cant give too much info about the motor http://www.ankarsrummotors.com/pdf/dc-motors_web08.pdf
without any load it draws about 0,65 A. I'm asuming it will be much more during load. But the starting current has fried my old H-bridges that was supposed to withstand 1A / 3Apeak, I'm going to gear it up for speed and it will lift a TV, so atleast a couple of amps and a high starting peak.
I found 4 2N3055 at home, so why not go big?

My old designs were with a typical 2 x NPN and 2 x PNP transistors and that worked perfectly on a smaller motor. And that was not a darlington, which im not very familiar with.

But, im curious what other transistors i could use for the darlington, i have tons of smaller ones. Like BC550, bc337 among many other small ones, that could drive a 2N3055.

But for what you suggest, using NPN and PNP with a darlington, how would a configuration like that look like?

It's true i don't know much about this, i couldnt understand most of your critics, but thanks again for the advices!

Its hard to say anything from those figures, that's not a motor datasheet worth having!

Given the size its probably 50W continuous rated, so a few amps, and stall current will be 10 times that or so,
20A maybe.

If you have the motor, measure the winding resistance and calculate the stall current - that's the only
figure you need for picking a motor driver, since that's the current that stresses the driver most.

I'm not sending a rover to Mars without the possibility to go back or anything like that. If it works half bad i'll take it, if it blows up, well that could be a hit on youtube, so win-win.

I basically wonder how i could make the circuit work, with 2N3055 transistors controlled by an arduino. What the motor will use is an unknown factor, we could say 4A to have something to go on, but when the TV is lowering its gonna use much less, i assume. And i want it just a little bit more fancy than with relays.

I would use a DPDT relay for motor direction (relay active when TV goes down).
And a single logic level mosfet to switch/PWM motor current to ground.

You can try to replace the mosfet with a bunch of ancient 2N3055, and BD139 drivers.

YT video describes how

Thanks for the replies!

I like that video. But actually, to save some time I think i'm gonna go with one DPDT relay. To make it a little bit less complex.

Thanks for the advices!

edit: i found a stash of BUZ11 that i'm gonna try instead of 2n3055

A BUZ11 is not a logic level mosfet.
It will be partially "on" with 5volt at the gate.
That could heat it up, and release the magic smoke.

Thanks for the input! I actually learned a few things from this thread!

From what I can see on this, if I interpret it correctly, at 5 volts i could have around 8 amps (figure 6, figure 5). And that sounds okay. Or am I reading it totally wrong?

Not saturating a mosfet fully is dangerous.
It will get hot (needs a heatsink) and specs will shift (higher 'on' resistance).
This BUZ11 really needs 10volt drive.
First image on this page is how you should connect it.

It looks as if they drive the mosfet on 5V on the picture, but anyway. Im not yet done with the schematic, but you get the idea from my attachement. Do Bc337 need a resistor? I’m not sure how that works, one part of me says yes, nothing prevents a short over that transistor, another part of me stares at my test, which works fine.
I tested that idea with the MOSFET having 12 volts driving a 100ohm resistor. and that gaved me around 117mA through the mosfet.

The circuit is not done yet, so try to not think about the relay-thingys.

Do you think this would work I connected it to 24v to the MOSFET?
Should i have a resistor before the mosfet gate?

Thanks for all the advices, again.

edit: i guess that diode will be problematic during polarity switch…
edit2: the mosfet has a huge heat sink

MosFet.pdf (430 KB)

You have drawn the BC337 as emitter follower.
Voltage at the emitter is always ~0.7volt lower than the base.
~4.3volt PWM left for the mosfet. Worse than without transistor.

Diode is in the wrong place.
Across the motor will be a short for the transistor when the motor (and diode) reverses.
Diode goes between drain and +24volt.

If you want motor braking, use two SPDT relays.
Motor connected between the two common contacts.
+24volt to the two NO contacts.
Drain to the two NC contacts.

I fixed some errors acording to your critics. I am getting a bit concerned for the safety of the arduino regaring to 24 Vdc. I am thinking about some kind of optocoupler. But we’ll see how that goes…

Even if everything is not perfect yet, you have been very helpfull, I’ve learned alot, and also realized how much I don’t know.

Dangerous diagram.
The fet is turned on properly now with 12volt at the gate.
But you have used a single DPDT relay.
That combination will turn the motor on, until the Arduino decides to turn the fet off.
The motor will move a bit every time you turn the power on.
Two SPDT relays (as explained in the previous post) could prevent that.
Then again, with two SPDT relays you don't need the fet, unless you want speed control.

If you insist on using that fet and a single DPDT relay, then use two small drive transistors.
A PNP to switch the gate, and an NPN level converter.

The diode across the fet is still in the wrong place. It does nothing there.

A relay also need a diode across, and a 5volt relay needs to be powered by 5volt.

Hey! I have changed alot now since I started this thread… You have all been very helpful, it’s been fun and I have learned atleast a few things.

I’m not yet done, but I have tried whats in my attachement now with just 12V and the fet driving a 100ohm resistor and it worked !
I have not yet tried the relay and the driving for the relay.

Btw it is a 24Vdc relay. Mostly because I found a package of 20 pieces at home, I want to put them in use.

I still want critics, hit me as hard as you can :slight_smile:

TvMotor_schem.pdf (902 KB)

I still want critics, hit me as hard as you can :slight_smile:

Be careful what you wish for...

R1 can go (BC327 emitter directly to 12volt).
That 10k resistor should go between emitter and base of the BC327 (bleed resistor).
R5 should be 10k (faster gate discharge).

Why 12volt. The Arduino might be happier with 9volt (on the V-in pin!), and 9volt should also be enough for the BUZ11.

I have altered after your recommendations now. But im not completely aware of the meaning of a "bleeding resistor).

The main reason for the 12 v is that it's whats lying around. There is no real thought behind it other that i've read that the arduino can take it, and the buz11 aswell.

I'm happy that you had nothing to say about the diodes :slight_smile:

Replace the MOSFET with a logic-level one, the no BJTs needed...

The BC337, when off, could leak a tiny bit.
That gets amplified a few hundred times by the BC327, and could result in some voltage on the gate.
The bleed resistor makes sure it doesn't get amplified.

The motor diode is wired correctly now.
Odd place though. I would have drawn it from the drain straight up.