I want to light 1 red LED among 3 (or no LED at all; never 2 or 3 simultaneously), using 3 output ports of a micro-controller (PIC18LFxxx or so). The catch is that I'm operating from a low and variable voltage supply Vcc_IN of 2.2V to 3.1V, and want to avoid too much variation in the LED current (I'm content with like 2mA, give or take 25%). This simple solution won't cut it:


simulate this circuit – Schematic created using CircuitLab

Instead of R1, it looks like I need an ultra-low dropout 2mA current source. Also my application requires a low current consumption, especially when Vcc_IN is minimum (2.2V), for then I have barely enough current available for 2mA in the LED. What reliable, easily sourced, cheap, simple solution is there?

Clarification: A key issue is the very low voltage margin between the red LED's forward voltage @2mA (say about 1.7V) and the minimum Vcc_IN voltage (2.2V); these mere 0.5V must be enough for the dropout voltage in the Mx transistor (say about 0.2V) and the current source. Notice that if I adjusted resistor R1 experimentally to get an appropriate current at the low range of the supply voltage, the LED current would increase dramatically with power supply voltage.

I thought I had found a solution using one of the output of a MAX1916 (and reversing the polarity of the CPU output ports). The current regulator section of that IC (featuring a MosFET current mirror with x230 gain) would be quite nice for my use, unfortunately it seems that I do not have enough voltage to force the IC in ON mode.

  • \$\begingroup\$ Have a look at Adafruit's Neopixels -- they might address your problem. learn.adafruit.com/adafruit-neopixel-uberguide \$\endgroup\$ – Brad Nov 22 '13 at 23:37
  • \$\begingroup\$ @Brad: thanks, but their lower power supply voltage (5V nominal) is significantly higher than my 3.1V maximum, so we are facing different challenges. \$\endgroup\$ – fgrieu Nov 22 '13 at 23:54
  • \$\begingroup\$ Fgrieu, just checking, you realize your circuit above, the three leds if on at the same time, will share that 2mA between the three of them, right? \$\endgroup\$ – Passerby Nov 23 '13 at 1:23
  • \$\begingroup\$ @Passerby: I do. As stated, only one out of the three will be turned on at any time. \$\endgroup\$ – fgrieu Nov 23 '13 at 7:59

You can use a boost regulator to get a constant and higher voltage (e.g. 3V3), put a resistor in series with each LED, and turn on/off each LED with a MOSFET on the low side.

  • \$\begingroup\$ Op wants/needs 3 individually controllable leds. The ZXSC400 is single output. \$\endgroup\$ – Passerby Nov 23 '13 at 1:13
  • \$\begingroup\$ @Passerby Thanks, I misread, I've edited the answer to reflect this. \$\endgroup\$ – apalopohapa Nov 23 '13 at 1:20
  • \$\begingroup\$ I would need a 2.2V to 3.1V -> Vreg=3.xV boot or charge pump. Locally generating a stable voltage is a bit complex, but at least it works!. And as long as the unregulated Vcc_in is comfortably less than 4V (my case), I do not even need a discrete MOSFET on the low side (when the port is high, or high Z, its LED won't conduct). \$\endgroup\$ – fgrieu Nov 23 '13 at 8:37

This answer https://electronics.stackexchange.com/a/27470/17178 gives three options. 1) A lm317 as a current limiter, 2) a discrete 2 transistor + 2 resistor setup, or 3) a LM234, a dedicated adjustable current source.

Note, the LM317's datasheet states that the minimum load is 10mA, you could do this with a parallel resistor, or skip it, if your testing shows it to be stable enough. Since you are simply using it for leds, it's not too important. But it has a relatively high dropout (1.25V).

Another option is a relatively simple boost converter. A chargepump, inductorless boost converter like the Texas Instruments TPS60240 15mA Boost Converter would work. 4 1uf capacitors are all it needs. Or a higher current tps61097-33 (two caps, one inductor). Boost the VCC to a regulated 3.3v, then you don't have to worry about the VCC changing.

  • \$\begingroup\$ The LM317 eats 1.25V of dropout; that won't work. \$\endgroup\$ – fgrieu Nov 23 '13 at 8:10
  • \$\begingroup\$ The TPS60242DGKR (2.7V output) would be a solution, but double my input current at Vcc_in=2.2V: the expected efficiency is about 60% (figure 7), so 2mA in the LED now drains 2*2.7/2.2/0.6=4.1mA on the power supply, when an ideal linear current source would drains only about 2mA. \$\endgroup\$ – fgrieu Nov 23 '13 at 10:16
  • \$\begingroup\$ @fgrieu did you look at the lm234 datasheet? \$\endgroup\$ – Passerby Nov 23 '13 at 10:28
  • \$\begingroup\$ The LM234 eats 1V of dropout. That's too much, I need like 0.3V. \$\endgroup\$ – fgrieu Nov 23 '13 at 10:40

protected by Kortuk Nov 23 '13 at 6:30

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

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