LEDs are the indicator of choice these days, and they also happen to be very straightforward components—or at least they can be straightforward. A basic on/off LED circuit requires nothing more than a typical digital output pin and a resistor.
As you have surely noticed, though, LEDs are not limited to basic on/off functionality. In fact, high-performance LED implementations are complicated enough to justify the use of dedicated controller ICs, such as the STP16CPC26 from STMicro, the MAX6969 from Maxim, or the newly released LP5030 from Texas Instruments.
If the intensity of an LED does not need to be variable, the typical voltage-source-plus-resistor arrangement is adequate. The desired intensity can be achieved by selecting the proper resistance. Variable intensity is more complicated: precise intensity control cannot be achieved by means of a variable voltage source, because the brightness of an LED is more directly related to current than to voltage.
One option for LED dimming is a variable constant current source; a couple years ago I designed a project that included a three-channel variable-intensity LED driver.
This is the one-channel version of my variable-current LED controller.
In general, though, pulse-width modulation is the more practical approach. If the LED is turned on and off at frequencies above approximately 100 Hz, humans won’t notice the flicker, and intensity can be varied by changing the duty cycle.
One LED generates one color (though the exact wavelength does vary somewhat according to forward current). Monochrome displays are not particularly popular these days, and even basic indicators may need a variety of colors. Thus, in many applications we will need multiple LEDs that can work together to produce the desired effect.
I don’t carefully track all the new LED-driver ICs, but I have the impression that the LP5030 offers a combination of features that is not particularly easy to find.
First of all, the device can control 30 LEDs. (There is also a 36-channel version.) This may seem like overkill, but remember that we need a red, a blue, and a green LED to produce a full range of colors. Thus, if each indicator must have full-color functionality, a 30-channel capacity translates to only 10 indicators.
Diagram taken from the LP5030 datasheet. Note that this depicts the 36-channel version.
I think that there are probably quite a few applications that could benefit from this abundance of LED channels, especially since the device is controlled via I2C. This allows two microcontroller pins to precisely control 30 LEDs, and since the LP5030’s I2C interface supports fast-mode operation (with transfer rates up to 400 kbits/s), I wouldn’t expect functionality to be seriously impaired by the delay associated with the serial-communication transactions.
Integrated PWM and Color Mixing
As you can see in the block diagram, the only interface available to the user is the I2C bus. The idea here is that the complicated details involved in precise intensity control and color mixing are handled by the IC, not by custom firmware.
The datasheet goes so far as to say that this leads to “incredibly straightforward” firmware development for this specific portion of the design. That seems like a rather generous description, but I don’t doubt that this IC would be helpful for engineers who have little or no experience in advanced LED control.
As you can see in the following diagram, the LP5030 is specifically designed for color effects. The output channels are organized into RGB modules; the overall color is chosen using the color-mixing registers, and then one brightness register controls the intensity of the overall module.
Diagram taken from the LP5030 datasheet.
The control circuitry supports both logarithmic and linear intensity control, and it implements the logarithmic control in such a way as to mitigate color distortion.
Another interesting feature of the control functionality is the use of a 29 kHz PWM frequency. This is much higher than necessary to avoid human perception of flicker, and apparently this frequency was chosen to eliminate audible noise associated with switching frequencies that are in the audible range.
It seems to me that the LP5030 really does introduce quite a bit of user-friendliness into the task of advanced LED control. If you have experience with another part that offers comparable functionality, please let us know in the comments section below.