Micro-Power 7-Segment LED Display

A silly idea to run LED displays with microamp currents for dark environments

Similar projects worth following
LCDs are always used when you need a really low-power display. They're great in bright light, but require a backlight for use in dark environments. What if there were a way to run LED displays on very low current for use in these cases instead? This project is an attempt to use ideas from the TritiLED project to do just that: so, just how low can we go (and still be useful)?

In #TritiLED, I've been experimenting with ways of making LED glow markers that run for years on a single lithium coin cell. Recently, Elliot Williams started playing with the idea on his #ATtiny45 EverLED project. This got me thinking - first, I should post some progress on TritiLED - but also about other uses.

The idea here is to see how little power is required to drive 7-segment displays to usable visibility in the dark. As a possible use case, imagine a night-table clock you only need to read in the dark (if it's too bright to read the display, you should be out of bed and hacking). Or, maybe a UTC clock for astronomy.

Another possibility I'd like to explore is driving an LCD backlight with an efficient circuit and LED - that would probably be the overall best solution, but you know, more LEDs = more cool.

I happened to have a couple of Kingbright SC10-21SRWA common-cathode displays left over from the #The Diode Clock, so I decided to start with one of these. This display is a 660nm "ultra-red" display with 120 mcd output typical at 10mA - that's a lot of photons, and these displays can look extremely bright when driven at "normal" currents. (Does anyone else remember when this red color was the only really bright LEDs available?). The disadvantage to this wavelength is that it's not very efficient at stimulating the human retina, in fact for scotopic (dark-adapted) vision, it's only 0.03% as efficient as 507nm cyan light! A second disadvantage to this display is that each segment is made of two-series connected LEDs, requiring a higher drive voltage.

I used this display because I had it. I've looked for high-efficiency 7-segment displays in cyan color near the 507nm visual peak, and they don't appear to exist. I might try making some of my own with discrete LEDs.

So far, I've assembled a prototype but haven't written any software to test it. I'll post the schematic after I get some initial results (in other words, after I draw it :-). You can see in the image that I've used (8) 1mH inductors and SOT-23 MOSFETs to drive the segments (and decimal point) in the same way TritiLED works. The MOSFETs are mounted on #Ugly SMD Adapters I ordered from OSH Park. I've chosen a PIC16F1718 as a test processor because I had some handy - it's not the 16LF version, which would be even lower power, but I suspect the PIC power consumption will be dwarfed by that required for the display.

That's all for now, except for one teaser: some initial experiments showed one of the segments was easily visible when driven with a TritiLED circuit consuming about 20 uA. For all 7 seven segments plus the DP, that would mean abut 160uA total, which would run for 2 months on a CR2032 or about 2.5 years on a pair of lithium (LiFeS2) AA's. But maybe we can do better?

  • Too Many Inductors

    Ted Yapo07/06/2017 at 00:18 0 comments

      The first test used an inductor per LED segment. This works, but would be bulky and expensive for larger displays. I simulated using P-channel MOSFETs to switch the LEDs using a common boost inductor:

      The LEDs and specific MOSFETs in the circuit were just conveniently in the LTspice library - I have no idea if they are actually suited to this application (I didn't check the Vgs vs Id curves, for instance). In this simple test, one LED is first enabled by pulling the gate of its respective MOSFET low, a current pulse is generated by the inductor, and the discharge flows into the first LED. The second LED is then enabled and receives its current pulse:

      This high-side switching could be used in two ways:

      1. A common-anode display could be driven directly with this circuit; the original test required a common-cathode display.
      2. High-side switching for common cathode displays combined with the original inductor-per-segment would drive multiplexed multi-digit displays. Since the duty cycle of the current pulses is already very low (0.025 - 0.05%), multiplexing can be done without affecting the perceived brightness.

      I haven't built a circuit like this yet, - I'm still waiting for some suitable P-channel transistors, but from the simulation, it looks like it is going to work.

  • First Test

    Ted Yapo07/01/2017 at 20:33 0 comments

    Here's a picture of the test board running off a CR2032 cell at 33.1 uA - but half of that is just being wasted in the PIC! (see below). This image was taken in a darkened room where the display is easily visible. It appears brighter in the image than in real life, though. In a brightly lit room, it can't be seen at all at these current levels, which are about the minimum the circuit can do as built. Overall, I would judge it to be too dim to be generally useful, unless you were only going to use it in the dark - a portable GPS-synched UTC astronomy clock, for instance (I keep thinking of this one, it might become a project).

    The interesting part of the circuit is shown here (not shown are decoupling capacitors):

    Each segment of the display is driven by a MOSFET and a 1mH inductor. The MOSFET gates are driven from PORTC of a PCI16F1718 microcontroller. To create a pulse of light from a segment, the corresponding MOSFET is driven, creating a ramp of current in the inductor. Once the desired current has been established in the inductor (just approximated by pulse length), the MOSFET is turned off, and the voltage across the inductor rises until the same current flows through an LED segment. This creates a sawtooth-shaped pulse of current through the display segment.

    I used the PIC16F1718 because I had it on hand. Unfortunately, this part has an internal low-dropout regulator that draws 15 uA even during sleep mode (datasheet typical number). In my first tests, periodically waking every 32ms to pulse the segments, the PIC draws 16.4uA even when lighting no segments. Although you can disable the LDO during sleep, you pay a penalty in the wake-up time. I haven't measured it, but the delay is long enough to make the display flicker in a very annoying way. I really need to use an "LF" PIC variant. I like the '1718 overall, so I'll probably pick up some LF's with my next DigiKey order.

    So, the first test was a simple assembly program that wakes every 32ms to create a current pulse of 8us. This is the lowest-power TritiLED mode. The code is a simple counter, incrementing the hexadecimal digit on the display every 255 timeouts of the WDT, or about every 8 seconds. This is long enough for me to measure the current draw with each digit displayed. Here are the results for digits 0-9:

    Digit Current (uA)
    0 34.6
    1 21.7
    2 31.6
    3 31.7
    4 26.4
    5 29.4
    6 33.1
    7 26.4
    8 36.8
    9 31.1

    I assume the current draw for digits with the same number of lit segments is slightly different due to the inductor tolerances. The average over all digits is 29.3 uA. Considering that over half of this is wasted in the PIC LDO during sleep, the results aren't that bad. It also means that you might get much more brightness for small incremental current increases.


    This is the lowest current I can run with this circuit. I will experiment with running higher currents. It looks like something in the 100 uA range would make this display usable.

    The red color isn't great for nighttime visibility. I found some very bright green displays (for $7.78 each!) on DigiKey. I think I will have to buy one. They're common anode, which will mean a re-think of the circuit - the easiest way might be to use P-channel MOSFETS. The green color should look much brighter to dark-adapted eyes, and these displays are about 2x brighter even in normal lighting.

    The display can't be seen in normal room lighting, unless you add a red contrast enhancement filter. The problem with filters is that even though they improve contrast in some lighting, they always make the display darker. In a dark environment, contrast-enhancement filters make things worse. They certainly do in this case.

    @Elliot Williams mentioned possibly just using a current-limiting resistor and PWM to drive LEDs at low brightness. This might be an easier alternative...

    Read more »

View all 2 project logs

Enjoy this project?



marcin wrote 07/06/2017 at 18:18 point

You mention building 7-segment displays from discrete diodes. And since you also mention Kingbright several times, I thought you might be interested in this little guy: KPHCM-2012ZGC

400mcd@20mA and near your wavelength sweet spot: 525nm

  Are you sure? yes | no

Ted Yapo wrote 07/06/2017 at 18:49 point

Thanks! that looks like a good one - I'll check it out.

I can imagine building the segments from a line of small SMD LEDs wired in parallel to achieve the equivalent of a large die area, which seems to be the key to keeping the optimal drive current near where you can easily create it with a microprocessor and semi-sane size inductor.

  Are you sure? yes | no

Elliot Williams wrote 07/06/2017 at 15:06 point

This is _not_ a silly project, this actually solves a real-world problem for me.  

My wife has wanted a night-time clock that wasn't so bright that it would keep you awake.  I've never gotten around to it b/c a) power supply and b) even w/ low PWM rates (and standard resistors) it's too bright.  Now I get to make one, with 4 digits and 1/2 million inductors.  :)

If I can make it run one year between charges, I'd be stoked.  Time to play around with LED panel efficiencies...

  Are you sure? yes | no

Ted Yapo wrote 07/06/2017 at 18:56 point

It's only silly/crazy until it works :)

I posted a log about multiplexing.  I think you could easily use either one inductor per digit or one inductor per segment in a multiplexed display, with appropriate choices of N-channel and P-channel MOSFETs.  Depending on the relative cost or size of the parts, one might be preferable over the other, but in any case, you don't need 28 inductors for a clock, not that there's anything wrong with that.

Efficient backlight panels and LCDs are probably the way to go for practical applications.  One inductor required :)

  Are you sure? yes | no

Dylan Brophy wrote 07/01/2017 at 00:39 point

You are trying to power LEDs for years, but what about powering something like a small, dormant MCU for like 30 years to refresh FLASH chips?  The data in those chips decay, maybe low-power usage refresh logic/MCUs can be used to mitigate this?

  Are you sure? yes | no

Ted Yapo wrote 07/01/2017 at 02:27 point

Well, you'd need an MCU that was programmed with a hard ROM, otherwise the MCU's code could decay just as easily...

Then, you'd need some sort of error-correcting code to detect and correct errors in the protected flash.  I guess you could just try to re-write the data periodically as a form of refresh, but that doesn't seem good enough.

Long-term storage is a hard problem.  I think the best solution today is the same as it was 1000 years ago - copy valuable data to new media periodically.  We just have server farms instead of monks doing it.

Oh, and there would be no glowing LEDs in the FLASH application.  Glowing LEDs are a requirement for any interesting project :-)

  Are you sure? yes | no

Dylan Brophy wrote 07/01/2017 at 05:15 point

Maybe you can solve the lack of glowing LEDs :-)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates