A realistic way of driving LEDs.

One concept which has existed for some time is, that LEDs can produce a variable amount of light, and this will be the case, regardless of whether that amount of light needs to be constant, modulated slowly, or modulated at very high frequencies. But, LEDs have as a property which many other components do not have, that they tend to produce a fairly constant, forward voltage drop (like any diode), but that, as the voltage increases only slightly past a certain point, current increases rapidly. And, in the History of Electronics, this has often caused circuit designers to put a resistor in series with the LED, to regulate its current accurately.

One big drawback of doing this is, that power gets wasted, as current flows through the resistor, and gets transformed into heat. The amount of power that gets wasted in that way, most strongly depends on what fraction of the supply voltage appears across the resistor, instead of across the LED. Another drawback is the fact, that the current which flows through a resistor, which has simply been connected between a supply voltage and an unpredictable component – such as the LED – is itself not constant, And, when supply voltages are low – such as 5V – small changes in supply voltage are large, in comparison to the only slightly smaller voltage-drop across the resistor. And so, technology does offer as alternative, a chip, with active components to regulate the current more precisely, and often, while wasting less energy. In principle, such a chip can also be installed by the manufacturer of LEDs, into the same package as the LED.

According to the schematic below, I have demonstrated such a circuit…




What is happening here is, that A presumed control current is fed in to a presumed input pin, and this circuit actually doubles that current, resulting in an amount of current which will be drawn from the cathode of the LED. Additionally, more than one LED could be connected in series, to the current-sink.

The way this can bring advantages is, that the control current can be smaller than the load current by a factor of more than 2 – 2 was only chosen as an example – and, the heavier current can then flow through the LEDs from a lower and much-less-predictable supply voltage, than the supply voltage which the control current was drawn from. In fact, the control current could be drawn across a resistor, from a regulated voltage source, such as a Zener Diode – thereby making it very reliable.

This is the Netlist of the circuit and the simulation I ran, using the Open-Source application named ‘NG-Spice':


These are the modelcards of the components which I defined:



Note how the components were arbitrary. More realistic components can lead to better results. And, the following is a screen-shot of the DC Sweep I carried out, using NG-Spice:




Here, the voltage across R1 represents the number of Milliamperes of control current, because NG-Spice does not allow me to input currents directly in such circuits. The voltage across R2 represents the number of Amperes, which would flow through the LED.

There is a slight discrepancy in the load current that results, and I think it has to do with my pushing the transistors – which are modelled according to some arbitrary IC MOSFETs – beyond the current-range they are supposed to work within. And because of that, channel-length modulation sets in, in these transistors. With properly chosen components (geometries on a chip), this would not happen.

The MOSFETs I chose are used to having 40-100kΩ resistors connected to their Drains, not, 1kΩ.


An interesting observation to add about this circuit could be, that it can be transformed into a symmetrically equivalent circuit operating from the positive supply voltage, if the N-channel MOSFETs are replaced with P-channel MOSFETs. This is potentially interesting, because an array of LEDs might be driven, to drain their current into more than one negative reference voltage. Hypothetically, a 12V supply voltage could be bisected, so that 2 sets of LEDs are draining their current, one set to a negative voltage of +6V, and the other to a negative voltage of 0V.

In such a case, an initial problem would result, from the need to send an equal amount of control current, relatively to each negative reference voltage. However, this control current can be determined once, from the presumed +12V supply voltage to the most-negative reference voltage with a resistor, and then mirrored twice from the same, +12V supply voltage, so that an equal amount of control current will flow, once to the +6V negative reference voltage, and again to the 0V negative voltage, of separate instances of the present circuit, to act as positive control current twice.


(Update: )

Based on the idea that the culprit which was initially creating a discrepancy, between twice the control current and the (negative) output current, was channel-length modulation, I have re-run the simulation with MOSFETs, that have a slightly different geometry. These MOSFETs have a (simulated) Gate region which is 4μM long as opposed to merely 1μM long, but remain as having a Gate width of 100μM. Additionally, for testing purposes, I have reduced the supply voltage, such that only 2.0V would appear at the Drains of M2 and M3. This would be important if D1 was ever replaced with visible-light LEDs, or pairs of them in series.








What the highlight within the plot suggests is, that in this configuration, the circuit is capable of mirroring a control current of 2mA much more accurately than was possible before, suggesting that the approach is actually viable.

If greater amounts of output current are desired, the way to achieve that would be, just to repeat M2 and M3 to as high a multiple of the control current as needed.





Print Friendly, PDF & Email

One thought on “A realistic way of driving LEDs.”

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>