I'm intending to use LEDs of 5mm, which have a max forward current rate at 30 mA, or a value of 100 mA, with 10% 1 kHz duty cycle, in a circuit like the one below except some changes:

  • STM32F103C8T6 instead of PIC
  • 2N7000's instead of UDN2981
  • 3 ULN2803 instead of 1, because they can only handle 500 mA
  • 15 rows instead of 8 (thus 3 x 5 = 15 2N7000's)
  • 8 columns, where each ULN2803 handles 5 rows

I have several questions:

  1. In the ULN280x datasheet on page 5 stands the thermal property:

    RthJA Thermal resistance junction-ambient 55 C/W

    If I do a calculation: 5 V * 100 mA * 5 leds = 2,500 mW = 2.5 W This means a temperature rise of 55 * 2.5 = 137.5 C. The junction temperature is max 150 C, so it will be not working.

    Or should I reduce the voltage used by the LEDs? (like e.g. 2 V forward voltage):

    (5 - 2) V * 100 mA * 5 leds = 1.5 W, resulting in 55 * 1.5 = 82.5 C

  2. Since I round robin over the ULN2803 array's, does this reduce the temperature maybe? Resulting in a lower temperature? (I think not, but I'm not an expert)

  3. I assume I would need heat sinks, but from what temperature this is needed?

enter image description here

  • 1
    \$\begingroup\$ Wow, do yourself a favor and get two MAX7219s instead. Be so much easier. ~$3 at taydaelectronics.com. Each will need a 0.1uF cap, a 10uF cap, and a resistor. 10K will do, read the datasheet to look at how other values will affect current. Here are 4 of them driving an 8 x 32 display as an example youtube.com/watch?v=hwYqgyMc5S4 \$\endgroup\$ – CrossRoads Mar 1 at 17:21
  • 1
    \$\begingroup\$ MAX7219 only needs 1 resistor, it uses internal current limiting. 8 LEDs in a column (or row, depending on how you look at it) are on at any on time, the 8 columns/rows are multipexed at 800 Hz, so all 64 can look on if that's the data you send to the data registers, or if you put in display test mode. What's nice is it does all the multiplexing for you, vs tieing up your processor to do it. \$\endgroup\$ – CrossRoads Mar 1 at 17:45
  • 1
    \$\begingroup\$ The 2N7000 is a very poor device should not be used if at all possibe. Imax 200 mA continuous, higher pulsed. OKish at 5V drive but even a little lower and Vds is nasty. \$\endgroup\$ – Russell McMahon Mar 1 at 21:22
  • 1
    \$\begingroup\$ The MAX7219 has 15 levels of dimming you can control via SPI commands. The resistor is used to set the max current that can be applied. datasheets.maximintegrated.com/en/ds/MAX7219-MAX7221.pdf \$\endgroup\$ – CrossRoads Mar 1 at 22:58
  • 1
    \$\begingroup\$ @MichelKeijzers They have their place & yes, they are widely used. If they work for you that's OK, but for more than low mA of load they are marginal at 5V Vgs and extremely marginal at 3V3 Vgs. See datasheet Fig 1: Note Id with Vgs = 3V. Better at 5V. Fig 2: Rdson of 2 Ohms at modest current and 3V curve not even shown. Fig 3: Just getting out of bed at 3V Vgs. Better at 5V. Page 3 Vds: Note Vds at various Id and Vgs. OK for low currents (10's of mA) but poor for higher current use. \$\endgroup\$ – Russell McMahon Mar 2 at 6:31

If you are driving your Darlington transistors into saturation, then the \$V_{CE}\$ is a maximum of 1.1V according to the datasheet. So, the power dissipated in the transistors is 1.1V times the current rather than 5V times the current. The temperature increase is proportional to current, so you have about a 30C rise, which is pretty manageable.

If you are time-multiplexing the LEDs (what you call a round-robin) faster than the thermal time constant of the Darlington packages (maybe a second?) then the average temperature increase will be proportional to the duty cycle times the power consumption.

I think the Darlingtons will get noticeably warm but a heat sink is probably not needed.

  • \$\begingroup\$ Thanks for this answer, although I don't understand everything. For the LEDs I need 10% duty cycle at 1KHz, since I have 8 sinks, I need a speed of 125 Hz. A second seems like an enormous time, in my calculation I think I took it into account, (by using only 500 mA: 5 leds * 100 mA, and not all 40 leds at the same time. \$\endgroup\$ – Michel Keijzers Mar 1 at 17:24
  • 1
    \$\begingroup\$ If your switching the LEDs at 1kHz, or even 125Hz, then it's the average power over time that matters for determining temperature increase. It sounds like your Darlington arrays might not even get warm. \$\endgroup\$ – Elliot Alderson Mar 1 at 17:28
  • \$\begingroup\$ Thanks, I would expect a higher increase, since per ULN one Darlington array is fully used (500 mA), than the next array of each ULN etc. There are always 15 LEDs on simultaneously (if the 'software brightness is set to 100% at least). \$\endgroup\$ – Michel Keijzers Mar 1 at 17:36

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.