Ultra low power LED

<1.5µA current consumption when continuously on, optional flashing mode

Similar projects worth following
Use case: baby retrieving its pacifier
Young parents don't like to get up three times a night to retrieve baby's pacifier. You could tie a short rope to the pacifier and connect it to the baby's clothes, but some babies always yank those loose.

Use case: finding flashlight:
When do you need a flashlight? When it's dark. So it's dark now. How will you find your flashlight? You know it must be in the drawer or your backpack amidst all your thrash. You want to find it fast, but how? Messing through your stuff until luck helps you? I would come in handy if the flashlight would be lit by a small light that is always on when you need it.


The luminance of the LED is 0.35 to 0.55 cd/m², measured with a Sekonic L-758CINE light meter.  According to Wikipedia, this is about 10x brighter than the Phosphorescent markings on a watch dial after 1 h in the dark.

On the pictures you can see how bright the LED is.  It's not easy to make pictures that give a good impression how bright the LED is at night.

This is bright enough to find your keys if you dropped them in pitch darkness, or to check on your baby without waking it.  1 cm high characters on a newspaper can be read without much difficulty.  However, there's hardly enough light to read the newspaper's small print.


The #TritiLED  project did a wonderful job in over-engineering a faint light.  The current consumption is in the single micro-amp range, depending on the revision and of the current settings.

This is the challenge : "Can we build a light that consumes even less current?"

Update : July 10 2020 : 1.36µA on a 3V power supply (1 LED, 3µs pulse width, 64Hz repetition rate).

Building blocks

The design consists of a power source, optional ambient light switch, optional timer, some kind of oscillator, a one-shot timer, a LED-driver and an LED.  The circuitry will be mounted in a housing.

Let's discuss these blocks a little more in detail

  1. Power source
  2. Ambient light switch
  3. low power timer
  4. Oscillator
  5. One-shot timer
  6. LED driver
  7. LED
  8. Housing

The ambient light switch has not found it's way to the schematic.  Adding it would only have saved a marginal amount of current.

You might wonder why a one-shot timer is needed, when you already have an oscillator.  It's only a matter of setting the desired duty cycle, right?  The problem is that the oscillator runs at 64Hz, while the needed output pulse width is 3µs.  That's a duty cycle of 0.0192%.  While it's not impossible to make such a precision oscillator (a micro controller can do this easily), it's hard to make one that is low power at the same time.  That's why in this design, generating the micro-second pulses is left up to the one-shot timer.


Revision R2 design files: Schematic, Assembly Drawing, BoM

Adobe Portable Document Format - 127.18 kB - 08/19/2020 at 18:50



Revision R1 design files: Schematic, Assembly Drawing, BoM

Adobe Portable Document Format - 128.23 kB - 05/16/2020 at 18:18


RCA ICAN-6230.pdf

Using the CD4047A in COS/MOS Timing Applications, by J.Paradise

Adobe Portable Document Format - 186.46 kB - 03/15/2020 at 18:30


RCA ICAN-6267.pdf

Astable and Monostable Oscillators Using RCA COS/MOS Digital Integrated Circuits, by J.A. Dean and J.P. Rupley

Adobe Portable Document Format - 143.15 kB - 03/15/2020 at 18:30


  • Board bring up & evaluation

    Christoph Tack06/24/2020 at 08:24 0 comments

    Revision 1

    In first instance, we'll try to compare the performance with the #TritiLED.  In order to do that, we'll assemble the following variant:

    1. Placing R8 instead of the TPL5110 circuit so that the LED doesn't flash.  This will make it easier to measure power supply current.
    2. Placing R11 and R4, effectively using only one LED.

    First of all: add a little bit of solder to the GND pad of the CR2032.  If you don't do it, you risk having an unreliable ground connection to your cell because the GND pad lies deeper than the surrounding solder mask.

    After soldering CN1 up to U2 by hand, we could start programming U2.  This went alright and now U2 outputs a 64Hz square wave on its CLKO-pin.

    I measured the power supply current by feeding the circuitry through a 100K-resistor to CN1.  In parallel with CN1 I put some elco's with a total value of around 10µF.  At power up, the 100K resistor needs to be short circuited.  After that, the short circuit can be removed to measure current : 56nA with a 3V3 power supply.

    Now U5 and its peripheral components could be soldered as well.  The package of U5 is too wide, but soldering the component is still possible.  C7 had to be increased to 22pF to get an output pulse of about 3.2µs.   The current consumption now is 73nA using a 3V3 power supply.

    The LED driver circuitry, the only circuit that hadn't been fully bread boarded beforehand doesn't perform well enough.  See the LED driver log for more info.

    The CR2032 clip needs a bigger outline.  If you insert the cell too deep, you could create short circuits with other circuitry.

    The RTC needs to be constantly on, because it takes 250ms for it to fully initialize.  During the initialization phase it likely draws much more current.  The TPL5110 will not be used to power the RTC and other circuitry on.  The TPL5110 will only enable the one-shot timer at regular intervals.

    Revision 2

    The 100nF for C5 and C7 were not enough to avoid the bright LED flash at power up.  C5 has been increased to 1µF.  C7 has been put to not-placed.

    The placement of L2 limits the viewing angle of the LED.  I placed L1 instead and shortcircuited L2 with the 0ohm resistor.


    1. The LED is too bright according to my wife.  This led her to covering the LED with paper tape.
    2. The device often lingers on the floor.  It happened twice that someone stepped on it, leading to a crushed housing.  A sturdier housing would be welcome.
    3. The big inductor is more fragile than expected.  In a few months time, I replaced three broken ones.  So I covered the inductor with hot glue.  2-component epoxy might work as well.

  • References

    Christoph Tack05/16/2020 at 18:42 0 comments

  • Power source

    Christoph Tack05/16/2020 at 18:31 0 comments

    Coin cell CR2032

    These really DO NOT like current spikes.  So a lot of buffer capacitance will be needed to buffer the LED current spike.  Data from Energizer:

    • 235mAh downto 2V, rated for 190µA load
    • Lithium / Manganese Dioxide (Li/MnO 2 )

    Battery life calculations show that the project could run about 1 year when ON-current is 5mA and OFF-current is limited to 1µA.

    3V CR123A Lithium cells

    store up to 1700mAh.  These will last a lot longer.  Unfortunately they're much bigger : 34.5mm x ⌀17.0 mm


    If a rechargeable solution is desired, then the 3.7V/120mAh LIR2450 can be used.  This cell tolerates current spikes much better.

    The dimensions are acceptable as well 5.0mm x ⌀24.5 mm

    Charger : charger

    Battery clip: MPD BK-880 & Keystone 3009

  • Design V1

    Christoph Tack05/01/2020 at 08:30 0 comments


    Schematic of R1

    Power & protection section

    The board is powered by a CR2032-cell inserted in CN1.  FU1 is a 50mA fuse, it could be replaced by a 100ohm resistor.

    Q3 is a reverse polarity protection to protect the circuit when the CR2032 is incorrectly inserted.

    C3 smooths out the current spikes from the LEDs.

    Flashing section

    If flashing is not needed, instead of this section, place R15.

    Functionality of this section is described in Testing the TPL5110.

    The TPL5110 requires about 35nA.

    Oscillator section

    The RV-3028-C7 is an RTC.  After its internal EEPROM is programmed, it will output a 64Hz square wave on the CLKO-pin.

    This RTC can be programmed using the debug connector CN2.  Any I²C-master could be used to program the RTC.  CN2 is designed for the WR-WST IDC connector.  It allows for easy connection and removal of a programming adapter.

    The RV-3028-C7 requires about 45nA.

    One-shot section

    The 74xx123 is a one-shot timer.  To reduce power consumption, its supply voltage is lowered to about 2V using Q1.  Because U2 drives U5, U2 also needs to run on this lower supply voltage to prevent over-driving the B-input of U5.

    The value of C7 requires some experimenting to fine tune.  R17 can be removed to connect a function generator to pin B of U5, which will make experimenting easier.

    The one-shot timer will produce a positive outgoing pulse when triggered.

    The pull-up resistors are all 6K8.  Their value isn't critical, so I reused the 6K8 from the flashing section to reduce the number of different BoM-items.

    The current consumption needs to be measured it.  At room temperature, it will only be a few hundred nA probably.

    LED driver section

    To drive the LEDs an NMOS with a low RdsOn could be directly connected to pin 5 of U5.  To limit the number of different components in the design, I opted for reusing the FDV301 and the SI3401 instead.  If this design would be produced in large quantities, the extra cost of logistics for an extra BoM-item would be far greater than the cost of an extra SI3401.

    The 0ohm resistors allow to choose the number of inductors or the number of LEDs.

    The inductors require a lot of PCB-space.  Keep in mind that two of these 1mH coils are cheaper than one 2mH inductor with comparable specs.  This is a design trade-off again: size for cost.


    The size of the PCB should match a TikTak-box.

    There are two diagonally placed mounting holes.  Their use is not defined yet.

    The 3mm mounting hole in the center if for mounting a neodymium magnet with a 3mm center hole.

    One LED is on bottom side.  The other one is on top side like the rest of the components.  So one LED will be visible at all times.

  • "One shot timer" aka "Monostable multivibrator"

    Christoph Tack04/13/2020 at 20:04 0 comments

    As #TritiLED does it on design V3.0, the MCU sleeps while two PWMs remain active.  The first PWM controls the power to the 74xx123, the second PWM initiates the pulse.


  • LED choice

    Christoph Tack04/11/2020 at 19:31 0 comments

    Lumileds Luxeon 3535L Lime

    • Digikey 1416-1440-1-ND
    • 184lm/W
    • optimum efficiency from 1mA to 30mA (didn't measure higher current because of lack of heatsink). 
    • Best efficiency at 5mA.  It's then 8% better than at 1mA or 30mA.  This has been measured with a TSL2591 connected to a Protrinket 3V and the LED mounted about 10mm directly above it.  A current source controls the LED current, while a DMM is used to measure the LED voltage.  A more decent setup can be found here.

    Osram Oslon Signal Verde

    Cree XLamp XP-E2 Green

  • Low power ambient light switch

    Christoph Tack04/08/2020 at 18:47 0 comments

    Not much use is it to light an LED when there's already plenty of light around?  So how to switch on the LED only when the ambient light level is low enough?

    The two circuits mentioned below have been built on breadboard to test the ambient light switch functionality.

    The current consumption of this ambient light switch adds considerably to the total current consumption of the design.  Let's do a quick calculation:

    • without ambient switch : assume 1.7µA continuous
    • with ambient switch : 
      • day : 1.5µA (LED off)
      • night : 2µA (LED on)

    So what should be the night/day ratio to benefit from the ambient light sensor?

    If there's less than 40% of night, then we start benefiting from this, but the gains are marginal. It doesn't weigh up against the extra cost, and required PCB area.

    Simplistic approach

    A photo transistor is connected across the drain-source of a PMOS.  The disadvantage is that the transition of light to dark is not hard.  There's a region where the PMOS isn't fully conducting.

    Pencil schematic on diary page

    Schmitt-trigger approach

    By adding an extra NMOS resistor we can improve this circuit.  The extra inverting effect of the FDV301 allows to make a feed-forward compensation with the 10Mohm resistor on the drain of the PMOS.  As such, there's a hard switching threshold for the PMOS.  The PMOS will be either OFF or ON, nothing in between.

    Current consumption is 1.5µA (3V / 2Mohm) during daylight.  At night, this drops to 300nA.

    Cutout from schematic, 3V cell is connected on the left, while the load is connected to the right.

    Solar cell

    The solar cell could actually generate power when being lit, instead of consuming current as the other circuits do.

    I haven't investigated yet how to use it as a switch.  Energy could be harvested and stored in a supercap.

    Interesting circuits to be found here.

  • Oscillators

    Christoph Tack04/04/2020 at 20:19 0 comments

    Three technologies have been investigated:

    1. RTCs
    2. MCUs
    3. Discrete implementation

    Real Time Clocks

    Real Time Clocks are low power components.  Some only consume 45nA on a 3V power supply.  They also provide a clock output which could be used to trigger the LED pulses.

    Let's investigate the RV-3028-C7 32.768KHZ 1PPM-TA-QC

    • 40nA @ 3V
    • 1 ppm @ 25°C, 20ppm from 0°C to 50°C, 140ppm from -40°C to 85°C (nope, this won't be used for industrial applications)
    • 64Hz clock output
    • €2.47/pce

    The idea would be to use an MCU that sets up the RTC and then goes to deep sleep forever.  The RTC then functions as a very stable, but expensive 64Hz oscillator.  As the clock setting in the RTC is stored in EEPROM, it only needs to be written once in the lifetime of the product.  The MCU is not even necessary on the finished product! 

    Remark that neither the ATtiny4, nor the ATtiny13A have built-in I²C-support.  After implementing a bit banged I²C library, I realized that it wasn't needed after all.  I'd better used an FT232H, RPi or STM32 to program the RTC.  I ended up doing it with an Adafruit Protrinket 3V.

    To measure the current consumption of the RV-3028-C7, a 1Mohm sense resistor has been put in series with the GND connection.  Short-circuit the sense resistor on power up.  Once the square wave is output, you can open the short circuit over the sense resistor and start measuring. 

    Be sure to take the internal resistance of your DMM into account.  If you have no clue what it is, put a 1Mohm resistor in series with your DMM and connect it to 3V3, while the COM-lead of your DMM is connected to GND.  If your DMM had an ideal infinite resistance, you'd still be measuring 3.3V.  In my case the voltage dropped to 3V0.  So my DMM has an internal resistance of 10Mohm.  This makes that the actual value of the sense resistor is 1Mohm in parallel with 10Mohm = 909Kohm.

    Current consumption was 46nA at a supply voltage of 3.3V and an ambient temperature of about 20°C.  Nothing was connected to CLKOUT.  Remember that connecting even your 10x scope probe will load the CLKOUT with 10Mohm, resulting in an extra current consumption of about 120nA.

    Breadboarding the RV-3028-C7 using a piece of breadboard, double sided tape, Roadrunner wiring pencil, a soldering iron and a microscope.

    Instead of breadboarding this yourself, you could buy the breakout board from Pimoroni or the breakout board from Sparkfun instead.  Remark that the Sparkfun board is a breakout to banana plugs, not to 0.1" pin headers.  Don't be mistaken by its size.

    Power up problem

    When connecting the battery, the LED flashes very brightly, as such wasting the energy we're trying to save so eagerly.

    Green trace : Q output of monostable, blue is VCC of monostable

    Upon startup, the RV-3028, first outputs 32kHz pulses for about 65ms, only afterwards it creates the programmed 64Hz pulses.  The monostable shouldn't drive the MOSFET as long as the pulse frequency is different from 64Hz. 

    This means that the monostable must be disabled during the first 250ms after power up.

    It also means that the RTC must be always on.  The flashing circuit must control an input of the one-shot timer.


    The Attiny13A is the preferred part in the AVR-family.  Attiny4 could have been possible as well. 

    Active @ 3V
    32KHz : 15µA
    100KHz : 50µA
    1MHz : 280µA
    8MHz : 1.2mA
    32KHz : 10µA
    100KHz : 50µA
    1MHz : 350µA
    8MHz : 2mA
    Idle @ 3V
    (PWM keeps running)

    32KHz : 1.8 to 2.1µA
    100KHz : 5µA
    1MHz : 40µA
    8MHz : 300µA
    Power down @ 3V
    WDT enabled

    5.5µA (@ -40°C)
    5µA (@ -40°C)
    Power down @ 3V
    WDT disabled

    25°C : 120nA
    85°C : 310nA
    25°C : 130nA
    85°C : 290nA
    • Remark that the ATTINY13A consumes less current when idle at 32KHz, than at...
    Read more »

  • Off Topic : Reverse engineering Smart Superflash 317R rear light

    Christoph Tack04/04/2020 at 15:40 0 comments

    This project log is a bit of a diversion.  I had to repair this bike light, because the momentary switch started failing again.

    Very bright and sturdy bike light, unfortunately protection to water ingress is not great.  The contacts on the push button start to corrode, which makes it hard to turn the light on or off.  Replacing the switch only temporarily solves the problem.

    There are two red 5mm LEDs inside and a red SMD3535 LED.  The Lumileds L135-A589003500000 might be a good replacement for the original 0.5W LED.

    Quickly drawn schematic

    The controller is fed through an RC-filter, probably to prevent it from resetting when enabling the 3535 LED when the batteries are running out.

    The 360K resistor determines the clock frequency of the controller.  Pin 6, 7 and 8 control the LEDs.  If you used a standard MCU, you would put a series resistor in any of these lines.

    Blue : 3535 LED cathode, green : 5mm LED cathode

    The controller works in a six burst mode.  During the first four bursts, only the 5mm LEDs are on, followed by two bursts where only the 3535 LED is on.  A 6-burst cycle takes 745ms.

    The 3535 LED burst is 30ms long.

    Zooming in on the bursts on the cathode of the 3535 LED (blue trace).

    125ms from the start of one burst to the start of the next one.

    A burst on the 5mm LEDs consists of 5 pulses

    The two 5mm LEDs are on simultaneously.  One pulse is 750µs ON, followed by 2.28ms OFF.

  • Housing

    Christoph Tack03/25/2020 at 21:07 0 comments

    Tic Tac® mint is delivered in a high quality container, unlike the old days.  The box is cheap, and readily available.  The box is currently made out of polypropylene (PP):

    • translucent but not transparent
    • PP floats on water
    • good resistance to chemicals and bacterial growth

    It's a shame to throw this wonderful box away once it served its original purpose.  Let's upcycle!

    Original casing with original contents

    In Belgium, Tic Tac® is delivered in at least two sizes : 49g and 16g.  The 16g will be used here.

    • Outer dimensions : 73.0 x 46.1 x 14.1 mm
    • Maximum PCB dimensions : 65.5 x 40.0 x 11.0 mm
    • Alternative PCB dimensions (will be fixed in lower part of the housing) : 40.0 x 42.4 x 11.0 mm

    A few months later

    Two of these tic-tac boxes are cracked because of accidentally stepping onto them.  In the future I might use the little PP-spice boxes as sold by Delhaize.  You can stand on them and they will not break.  The  lid comes off without the use of a screw driver.  The label can also easily be removed.  Outer dimensions : 84 x 50 x 21 mm

    Another option would be to use the Woogie mints Tutti Frutti 16g box (Asalam Supermarkt Kortrijk).  The PCB would have to be redesigned because the housing is quite small : 58 x 40 x 17 mm.  This box also withstands the impact of an adult stepping onto it.

View all 12 project logs

Enjoy this project?



Stephan Walter wrote 02/03/2024 at 15:45 point

Since you presumably don't need the 1ppm accuracy, you could use the Ambiq AM0805 or Abracon AB0805, which use 16nA for RC operation. As far as I can tell, these and the RV-3028-C7 have a similar internal circuit, the A*0805 just don't have an integrated crystal and are therefore cheaper. Of course you can connect an external crystal, but then you might as well use the RV-3028-C7.

But the Micro Crystal part somehow has an even lower consumption with 45nA @3V instead of 55nA for the A*0805 (with XTAL). I wonder what they're doing differently...

Another very similar part is EM3028 by EM Microelectronic-Marin.

#Nanosleeper - Sub 100nA Sleep Dev Board is another project which uses the same RTC.

  Are you sure? yes | no

Christoph Tack wrote 02/03/2024 at 16:33 point

Hi Stephan,
Thanks for the link to the A*0805 parts.  These would probably work just as well in this application.  I didn't check the whole datasheet. 
The RV-2028-C7 was selected at the time (2020) because it didn't take too much skill to solder using a standard soldering iron.  The A*0805 are 0.5mm QFN-packages which are harder to solder by hand.
In a future version of this board, I'd probably use the A*0805 parts: cheaper and 2nd source available and have the boards assembled by some overseas online service.

  Are you sure? yes | no

Dmitry Grinberg wrote 06/17/2021 at 21:36 point

I did something similar with a PIC12 a long time ago. you can get your current to below self-discharge current of a cr2032 easily with a pic and a lower part count.

  Are you sure? yes | no

Christoph Tack wrote 06/19/2021 at 18:18 point

Hi Dmitry, I listed projects using PICs and ATTiny in the References log section ( 

The implementation of a solution depends on the design goals.  If you want lower part count and smaller PCB: use an MCU.  If you want lower current consumption, then this solution is likely going to be better.
The self discharge current of a CR2032 is around 250nA.  If your design consumes less current than that while lighting an LED, I would be happy to learn more about it.

  Are you sure? yes | no

Jasper Sikken wrote 03/07/2021 at 19:11 point

Flashes shorter than 10ms are perceived by human eye with reduced brightness, shorter does not make sense. You could have used tpl5110 and a mosfet to drive the LED and feedback to the Done pin through a RC filter to set pulse duration. 

  Are you sure? yes | no

Christoph Tack wrote 03/07/2021 at 20:52 point

Hi Jasper, you might want to read this page :

  Are you sure? yes | no

Tim wrote 12/26/2020 at 17:02 point

Thanks, interesting, I'm new here.... hope I'm posting OK.

I was looking for something like this. A couple of observations.

1. The IRLML6244 is an NMOS Enhancement FET, not a PMOS Depletion as drawn.

2. The inductor could do with a specification, I have done a decent simulation (TINA) using a Wurth 220uH WE-PD2_5848_744774222 which peaks nearly 25mA to discharge through the LED with a 2us pulse and 16mA with a 1us pulse.

  Are you sure? yes | no

Christoph Tack wrote 03/07/2021 at 20:43 point

Hi Tim,  I must have overlooked your comment.  The design files for this project can be found on EasyEDA (see this page on the left).  I'm not using the IRLM6244, but the BSS806NH6327XTSA1 (Digikey BSS806NH6327XTSA1CT-ND).  The symbol used is for that FET should be correct.
Only a single inductor is used (Digikey 811-3598-1-ND), which is a 1mH inductor.
I think you probably should have posted your comments on @Ted Yapo 's #TritiLED  page.  He's the one that has done all the simulations.

  Are you sure? yes | no

Tim wrote 03/07/2021 at 23:09 point

Hi Christoph, OK... I am doing something similar, currently looking at NXP timer family (74AHC1G4208) <1uA plus the LVC1G123 for the short pulse. I'll post it when I've got it working. I'm currently using a 220uH inductor which does light up a medium bright 5mm LED with a 1.8us ish pulse

  Are you sure? yes | no

Ted Yapo wrote 06/25/2020 at 19:28 point

this is a very interesting project; I'm excited to see what you come up with!

  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