I'm looking to build an 3.3V Arduino Pro Mini based LED driver that drives 3 (possibly 6) super bright 10mm LEDs (R, G and B).

I intend to use this 3.7V LiPo battery and these LEDs. The LEDs have the following specs (units are V, A and Ohm). I've calculated the required resistor values based on a 3.7V supply.

        Max Fwd Cur     VDC Drop    VDC delta   Req'd Resistor
RED     0.08            2.2         0.1         18.75
GREEN   0.08            3.2         0.2         6.25
BLUE    0.08            3.2         0.2         6.25

I want to drive this with a ULN2803A Darlington Array (DA).

I have a few questions.

  1. Have I calculated the required resistor values correctly above?
  2. Will PWM work for the LEDs when wired into the low EDIT:[I mean't HIGH] sides of the DA?
  3. Do I need to regulate the voltage into the common pin of the DA, or can I wire this into the RAW (VIN) pin of the Arduino or directly into the battery? As the battery's voltage drops, I appreciate that the lights might get dimmer -- this is okay (up to a point) as long as the DA continues to function? As an aside, if I used an unregulated wall wart, rather than a battery, would the ripple cause a problem with the DA's operation? Am I being lazy here and should I regulate the high side voltage as a matter of good practice anyway? If I was running it at 5V, say, rather than 3.7V, would the answer be the same?
  4. Do I risk the Arduino by drawing too much current if I wire the DA common pin directly into the 3.3V VCC pin of the Arduino?
  5. I see everywhere that GNDs should be wired together. Is this true in this case, for both the low and the high sides of the DA? Even if the high side is unregulated?
  6. Will picking a higher voltage battery be a better option in terms of brightness, power dissipation, and battery life? Even if the mAh rating of the battery is comparable?
  7. Is there a better way to do this (e.g. a shift register, MOSFETs, etc)?

I want to have the LEDs be able to be as bright as possible without risking the Arduino, and minimising on power loss wherever possible. Physical space is also at a bit of a premium but SMD chips scare me from a soldering perspective.

  • 2
    \$\begingroup\$ Take a look at the datasheet, it states that \$V_{CE(sat)} \approx 1\text{V}\$ at 100mA. This means that when using a single 3.7V battery, only 2.7V is left for the LED. Green and blue will not light up according to the specs you gave. Therefore a single 3.7V supply will not be a viable option. Many options left though, don't get discouraged. Unfortunately I don't have time to elaborate on that right now, hence a comment and not an answer. \$\endgroup\$
    – jippie
    Commented Mar 20, 2013 at 22:39
  • \$\begingroup\$ Ok. I always read the datasheet. Understanding it is sometimes more difficult, however... So would a MOSFET-based solution be better, or a higher voltage battery? Thanks \$\endgroup\$
    – Brad
    Commented Mar 20, 2013 at 22:42
  • \$\begingroup\$ The challenge with a MOSFET is to drive it reliably from a 3.3V controller. I believe there are MOSFETS that can do it, but changing from a Darlington driver to a single bipolar transistor may be more reliable/easier. Or increase the supply voltage. \$\endgroup\$
    – jippie
    Commented Mar 20, 2013 at 22:45

1 Answer 1


NOTE - these answers were in the process of being given before Jippie's comments were apparent. His comments I agree with.

1) Resistance = (3.3 -Vled)/0.08 and for a Vled of 2.2v R = (3.3 - 2.2)/0.08 = 13.75 ohms.

You got 18.75 ohms so someone is wrong; either you or me.

2) The darlingtons are an array that "grounds" a load connected to the 3.3V rail so basically no, the LEDs are connected in the "high-side" BUT yes, they can be PWM'd

2a) Darlingtons are probably not the best choice because they "drop" about 0.6V when driving a load and you haven't got all that much to play with looking at the green and blue LED specs you have in your post

2b) Best to use conventional transistor, not those configured as darlingtons

3) the common pin on the DA is grounded, the LEDs via resistors (see (1)) connect to 3V3

4) Don't do that - do (3)

5) digest this advise and decide if (5) is a relevant question

6) possibly not but digest the other answers first

7) you can use a shift register to save on IO and you can use fets

  • \$\begingroup\$ I used 3.7, not 3.3 -- so seems my formula and yours agree... agree? I'm presuming I go unregulated onto the battery with all of this (ie, not the 3.3)... \$\endgroup\$
    – Brad
    Commented Mar 20, 2013 at 23:04
  • \$\begingroup\$ I'm thrown by some of your points. My thinking is that all the PWM arduino pins go into the LOW side - a simple wire from the ardruino pin number straight into a low side on the DA. On the opposite, high, side, I wire in an LED, a resistor and then to GROUND. The common pin gets a voltage -- the question is whether it's 3.3 regulated, o 3.7 unregulated... A bit like this: uni-weimar.de/medien/wiki/images/… \$\endgroup\$
    – Brad
    Commented Mar 20, 2013 at 23:19
  • \$\begingroup\$ @Brad The ground connection on the DA is obviously ground. The common connection won't be required when driving LEDs so leave it open-circuit (nb it's used when driving relays). The cathode of each LED connects to a "C" pin. The LED anode connects thru a resistor to +3.7V \$\endgroup\$
    – Andy aka
    Commented Mar 21, 2013 at 8:05
  • \$\begingroup\$ @Andyyour comment above seems to imply, therefore, that it's okay to use an unregulated 3.7V supply on the high side. Are you explicitly saying that, then? Thanks for your input so far... \$\endgroup\$
    – Brad
    Commented Mar 21, 2013 at 13:20
  • \$\begingroup\$ @Brad It's better to use 3v7 but then it's worse to use it because it's unregulated. It's better than 3v3 because with 3V3 there isn't much headroom to calculate your series resistor value and a small error could damage the LED. But it's worse than 3V3 because you have to take into account it may be as high as 3.8V and this is the point where you calc your LED resistor value. Also as it drops from 3V7 your LEDs get dimmer \$\endgroup\$
    – Andy aka
    Commented Mar 21, 2013 at 15:08

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