Electronic – arduino – Driving PWM lights with parallel darlington arrays

arduinopwmtransistors

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.

Best Answer

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.

PMN20EN

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)