I am building some service light arrays, which I want to operate using the Arduino's PWM outputs.

This lighting is going to be powered by 5V OR 12V with a nominal current of 700mA per array. There will be 4 arrays total.

Elsewhere in my design I am using ULN2803s; I am thinking of again using this chip. There is obviously a problem though; as the datasheet notes, the maximum collector current is 500mA. However, since the ULN2803 happens to have 8 darlington arrays, I was thinking of putting the darlingtons into parallel pairs, giving me 4 pairs with a max current of an amp. I do know that one of the tradeoffs for the darlington's high current gain is a slow turnoff time, but I am reasonably sure that the accuracy of the PWM is not a very important consideration.

There are a few things on which I am hoping this question can answer for me:

  1. Does anyone know the total power dissipation that this IC can handle? I can see that the maximum Vce is 50V and the maximum collector current is 500mA, so is it safe for me to assume that the maximum power dissipation for the entire chip is 200W or thereabouts?
  2. I know there is going to be an issue with mismatched transistors leading to current hogging, as noted in this wiki article. I know it has something to do with the fact that the voltage drop across the darlington pairs will be different between transistors because of minute manufacturing differences, leading to different collector currents in each pair and worst case to a failure in one of the parallel pairs. I also have found that it can be solved by putting a small resistor on the emitter or collector of each darlington in the parallel pair. I'm not exactly sure which as it seems there is some conflicting information. Additionally, I'm not sure how to calculate this resistance given the datasheet and my parameters. Could anyone shed some light on the exact theory behind this, and how I would go about calculating this resistance?

Alternatively, is there another chip or collection of discrete components that you would recommend I use? I would prefer an array, if possible, to minimize assembly costs.


Not sure how you calculated 200W, but the ULN2803 is not capable of anywhere near that. We can work it out from the datasheets thermal resistance figures though - the datasheet gives a figure for the SOIC package of 73.14°C/W. Assuming a maximum operating temperature of 125°C and maximum ambient of 70°C, this gives us (125 - 70) / 73.14 = 0.75W.

To calculate how much power is dissipated by the chip at a certain current, we look at the saturation voltage for the outputs. If we select the 350mA Ic value, we see that it can be up to 1.6V. So the power dissipated will be 0.35 * 1.6 = 0.56W, which is pretty close to the package limit. At 500mA continuous we will need some heatsinking to meet a 70°C max ambient rating.

You don't say if the 700mA is for each string of LEDs or for the total of 4 arrays. Either way though, paralleling the ULN2803s is not a good idea. The darlingtons have a high saturation voltage and bipolar transistors are not good in parallel due to the possibilites of thermal runaway. EDIT - the above is for separate ICs, if you are using pairs from the same ULN2803 then (as m.Alin points out) the datasheet says this is okay (as the transistors are well matched and thermally linked) Still, the overall current level (I'm assuming 4 * 700mA = 2.8A) is too high for the ULN2803.

A better idea would be to use some MOSFETs - you can get logic level MOSFETs that can be driven directly from the Arduinos PWM outputs, and will have a very low Rds and hence low power dissipation. Something like this has an Rds of only 25mΩ at 4.5V gate drive, and can handle up to 6.7A drain current. At 700mA the dissipation will only be I^2 * R = 0.7^2 * 0.025 = 12.25mW.


EDIT - about using discrete bipolar transistors in parallel:

Because of their thermal characteristics (gain and leakage rise with temp) and variable gain, some form of control is needed when paralleling bipolar transistors. An emitter resistor to provide negative feedback is one scheme that is commonly used:

Bipolar emitter resistors

When a transistor heats up and draws more current, the voltage across the emitter resistor rises, stealing voltage from Vbe and keeping things from running away. You would size the emitter resistor according to the maximum current you want. Also, having all transistors mounted on the same heatsink is a good idea. In general though, unless there is a very good reason for using bipolars, use MOSFETs.

To demonstrate what the emitter resistor does, have a look at this circuit:

Parallel BJT

The input voltage (SIG) is 1V.
Both transistors are of a similar type, but we will sweep one's gain from 50 to 500. There are no emitter resistors (set to 1 nanoOhm so the effect is irrelevant)
This is a very crude representation of what might happen when one gets hotter than the other (it's difficult to simulate thermal runaway effects in SPICE, and I didn't have enough time to create/find an appropriate model to simulate it transiently)
Anyway, here is the simulation:

Parallel BJT Sim 1

We can see the collector currents are quite different (to be expected) and if uncontrolled the transistor drawing the higher current may go into thermal runaway, as more current -> more power disspated -> higher junction temperature -> higher leakage/gain -> more current -> repeats...

Now if we add a 10Ω emitter resistor to each transistor and simulate again:

Parallel BJT Sim 2

We get a much different result, the collector currents are within a few mA of each other. The emitter resistor adds negative feedback and limits the collector current. It does this because the higher the collector current, the higher the current through the emitter resistor and hence the voltage drop across the resistor increases. With the fixed base voltage, this "steals" voltage from the transistor V(base-emitter), which reduces the base current. The transistor collector current can only go so high.

We can calculate the emitter resistor pretty easily. Say we want a maximum collector current of 100mA, and the base-ground voltage is a maximum of 1V. The base-emitter drop is maybe ~0.7V, so there is 1V - 0.7V = 0.3V left for the resistor. So:

0.3V / 0.1A = 3Ω

The above is simplified, but should give you the idea. Thermal effects will alter various parameters, Vbe changes with temp/current, etc. Ultimately you just want to make sure that the process of thermal runaway cannot start, so limiting the gain in some way is necessary. Since the transistor gain is finite the lower the base resistor, the less of a "hard" limiting effect it has (however this is not too important for many applications as long as it stops runaway)

  • \$\begingroup\$ I calculated it based on the given maximum Vce (50v) and the maximum Ic (500mA) multiplied by the number of pairs in the array. Obviously this isn't correct though. An interesting chip - I'll have to check it out. Though obviously I would prefer if it was in an array, but I'll see what I can find. :) \$\endgroup\$ – AmazingHorse Oct 4 '12 at 18:45
  • \$\begingroup\$ It does says in the datasheet, though: "The Darlington pairs may be connected in parallel for higher current capability." \$\endgroup\$ – m.Alin Oct 5 '12 at 13:38
  • \$\begingroup\$ @m.Alin - Ah okay, didn't read that. I was actually thinking the OP was planning on using 2 ULN2803s, now I see the idea was to connect the 8 outputs into 4 pairs. This is different as being on the same chip they will be thermally connected and well matched. There is still the issue of 2.8A through one ULN2803, which is not possible without serious heatsinking. I will update though, thanks. \$\endgroup\$ – Oli Glaser Oct 5 '12 at 14:27
  • \$\begingroup\$ Yeah, I ended up going with the MOSFETS for the prototype. HOWEVER, I am still wondering about the theory behind selecting the balancing resistors for future incase I decide to go with a lower current - that's why I haven't selected your answer. \$\endgroup\$ – AmazingHorse Oct 6 '12 at 19:07
  • \$\begingroup\$ No problem, I added a bit on bipolars in parallel. You don't need them for the ULN2803 as the transistors are on the same substrate and the gains will be very well matched (this will generally be the case for similar ICs too) Two typical discrete transistors from the same batch may have a gain difference of 3 times. \$\endgroup\$ – Oli Glaser Oct 7 '12 at 10:12

200 W in the ULN2803 will make it shine so brightly that you need shades ;-), or, what's more likely, make it explode. You multiplied voltage and current, but they don't occur simultaneously: either the transistor is off, and then there's the 50 V maximum, but only a small leakage current, or there's the 500 mA, but then the voltage will be limited to the transistor's saturation voltage. In both cases one of the factors is low enough to keep dissipation low as well.

That doesn't mean power dissipation would be a negligible factor however. The datasheet says that the saturation voltage can be as high as 1.6 V at a 350 mA collector current, that's 560 mW per transistor. Times 8 is 4.5 W, way too much for the device; the DIL package has a 62.66 °C/W thermal resistance junction to ambient, which means that 4.5 W will make the junction 280 °C hotter than the environment, so that will be over 300 °C. Let's forget about it.

By the way, why does it give the saturation voltage for 350 mA, and not 500 mA? The 500 mA is specified as Absolute Maximum Ratings (AMR), not normal operating conditions. Also in AMR is specified that the total substrate-terminal current should never exceed 2.5 A, that the current for all outputs added together. 2.5 A / 8 outputs = 3.1 A / output.

The datasheet says that outputs may be paralleled for higher current, but I guess it was added by the marketing guys who finalize datasheet, and I wish they had left that line out. You can increase current that way, but it's not common arithmetic, like 1 output = 350 mA, then 2 outputs = 700 mA. Current may not be equally distributed, and even with 350 mA average one output may exceed the maximum allowed current.

In general BJT (Bipolar Junction Transistors) are not very good at driving high currents: there's the Darlington's high saturating voltage which causes high dissipation, or you need to supply too much base current if you want to avoid the Darlington.

MOSFETs are a much better choice. Oli gave you an NXP FET as an example, I often will refer to the FDC855: at 4.5 V gate voltage you'll have maximum 36 mΩ on-resistance. Agreed, that's more than Oli's PMN20EN, but that's not the point; I can easily knock down Oli (as a figure of speech, the FET doesn't even weigh a gram) with a 10 mΩ FET. You can go as low as 1 mΩ. Then why don't we? Cost. Lower on-resistance is more expensive, and we don't need it, like we can tell from Oli's calculations: 15 mW is absolutely negligible.

OK, FETs are great, why do we need BJT then? They're cheaper, and you don't have to worry about driving voltage; you usually have at least the 0.7 V for that. For FETs on the other hand you'll most often need a logic level gate FET which you can drive with the 5 V or 3.3 V from a microcontroller.

Final note: the DMG9926USD is a cheap FET, because it houses two of them in one package. 24 mΩ. See, it's not that hard to beat Oli's NXP :-).

  • \$\begingroup\$ Very informative - thanks for clarifying the various things on the datasheet for me! I ended up using a handful of these in the end - seemed to be the cheapest P-channel possibility on Mouser. Out of curiosity, would you recommend any 4/8-arrays of FETs? I notice that usually they offer them for transistors that supply mA instead of amps, but that was with only a cursory look at Digikey and Mouser. \$\endgroup\$ – AmazingHorse Oct 9 '12 at 14:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.