BJT Selection Procedure

I have a component which has a load requirement of DC 12v, 230mA. I would like to control this signal using a HIGH output from an Arduino.

My idea is to use a BJT in a switch configuration. My question is, how do I properly size it?

That is the purest way to state the problem. The reality is that months ago we designed such a circuit. We selected the TIP31C BJT (NPN) as the switching component. For the 12v 230mA circuit, we chose a base resistor of 1kOhm.

This was all fine and well for quite a long time under brief loads. But today in a more formal test several BJTs were nonresponsive. The day before, we had run longer, sequenced loads (10s+ at a time, compared to only a few seconds in the past). The BJTs did not outright fail, but would become less and less responsive until they ignored switching commands.

Several hours of trying to understand the problem later, it was clear that the although there was no smoke, no cracking, and no swelling on the BJTs, there was a distinctive brown marking on the back of the ones which were being troublesome.

I come here to check my understanding and look for help in figuring out where we went wrong.

By my understanding the math shakes out like this:

The Arduino outputs a 5v signal (in practicality, more like 4.8v). Our resistor value of 1kOhm yields 4.8v/1000Ohm = 4.8mA of base current. The Hfe/Beta value of the transistor according to the graph in the datasheet is above 100 for such a low current. This means that our selected base current should be able to drive up to 4.8mA*100=480mA of collector-emitter current.

In the multimeter test, Hfe appears to be more like 150. As I understand it, this is not a reliable value, at all. The datasheet also says the minimum Hfe is actually 10.

We have another circuit, which drives 24v 1A. We chose a base resistor of 330Ohm, and have had no issues. 4.8v/330Ohm=14.5mA, 14.5mA*100=1.45A.

What is the proper methodology here?

Did the transistor collector emitter go short ?


When you put together a circuit like this, always confirm the BJT goes into saturation, use a volt meter to make sure Vce is less than .5v


That all said, use a logic level MOSFET.

BTW, Any inductive loads need kickback suppression.

No, we confirmed this several times.

We measured the Vce on non-problematic circuits to be 0.12v, and 4v on the misbehaving ones. It's one of the ways we confirmed the BJT was the problem point.

This makes sense to me.

By kickback, do you mean something like a flyback diode?

By the way, how do you insert those horizontal separators in your posts?

My question remains as to whether the math I used is sound to size the BJT initially.

Rule of thumb, your collector current divided by 10 should be a reasonable base current.

example, 230mA Ic would need 23mA base current.

But Vce voltage is the best way of confirming the maximum base resistor that can be accommodated.


Yes a Kickback/flyback diode.


***
3 asterisks gives a line.


FYI

With this rule of thumb, I wouldn't expect to be able to drive the 24V1A load, would I? But I can, and the transistor doesn't even blink—no temperature change at all.

Is it standard to use a variable resistor before putting a BJT into a circuit to find this value? How do people design these circuits without dozens of prototypes for many different BJTs?

Thanks, I'll look through this now.

The maximum safe current of an Arduino output pin is ~20mA

A common emitter switch circuit with a NPN transistor has a Vrb of 5v - .7v = 4.3v
4.3v / .02 A = ~215 Ω minimum base resistor, use 220 Ω.

An adjustable potentiometer can be used experimentally, but MOSFETS should be considered.

To achieve saturation in a switching application, you want the base current to be "much higher" than would be implied by "collector current/gain." The 2x in your original setup is weak. (I don't know why you're not having more problems with the 24V circuit...)

This suggests there is/was something external that destroyed your BJT.

I've gone through the document @LarryD posted and am considering using the IRLZ44N.

My understanding of the math is that for my 230mA@12VDC load:

P = I^2*R = (0.23A)^2 * (0.022Ohm) = 1.16mW. => 0.07C

This should generate almost no heat per the datasheet.

Similarly, for my 1A@24VDC load:

P = I^2*R = (1A)^2 * (0.022Ohm) = 22mW. => 1.36C


Right? Does the slow degeneration of the substrate theory track with reality in this case? We have measured the 1A load to sometimes be 0.7A, but it usually is close to 1A. Could the small margin be resulting in thermal runaway that degrades the part each time until true failure is reached?

I am going to replace all the BJTs with MOSFETs as suggested... very much do not want to experience another in-use failure. As @LarryD showed, BJTs are just inappropriate for the current-sourcing capacity of the Arduino digital pins.

Could that something be thermal runaway?

Hfe is irrelevant for switching.
Gain drops when collector voltage approaches or drops below base voltage.
See the 1:10 ratio mentioned inside figure 2 of the datasheet.
A 2N2222 or BC337 would do better at 230mA than a TIP31.
Still needs that 10% base current though.
Leo..

This is a good MOSFET for a LOW side switch application.

If the gate voltage was 4V the suggested MOSFET resistance is ~.035 ohms.

If you were sinking 1 amp, the voltage across the Vds is = .035R * 1A = .035 volts.

@1A and .035 Vds we get 35mW COLD operation :cold_face:

One thing I am curious about, the stated Vgs absolute maximum rating is ±16V.

For a 12VDC Drain-Source application with a 4-5V gate voltage, that seems fine, as 12-4 = 8.

But for my 24VDC circuit, with the same 4-5V gate voltage, that is exceeded, as 24-4=20.

Am I understanding correctly that I would need to use something else for this case?

The document you uploaded is an excellent starting point for this.

Vgs for an Arduino controlled low side MOSFET switch is +5V and 0V.

5V < 16V(max) so you are okay.

Oh, right. Because in my configuration source is GND.

Thanks very much for the explanations.

Circuit B1-2 is what is needed:

1 Like

Wound up going for the IRLB8721PBF to save a few cents. Thanks all!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.