Close
0%
0%

Lampion

a tiny solar harvesting (faint) ever light

Similar projects worth following
Lampion is a tiny solar harvesting (faint) ever light.
It's a small cosmetics box containing a LED that turns on at night forever, even when kept indoors as long as there is some natural light during the day.

Designing lampion

This writeup documents (in depth) what I have learned and the decisions made during the design and manufacturing process of lampion, a tiny solar harvesting (faint) ever light.
It’s a small cosmetics box containing a LED that turns on at night forever, even when kept indoors as long as there is some natural light during the day.
Disclaimer: things may be wildly incorrect here, so act accordingly (or even better, let me know so we can all learn).

Inspiration

I came across Ted Yapo’s TritiLED project and probably read the project log entries 5 times before I started understanding what I was reading, and then I decided to make my own. I went straight into designing a board using a STM32L0 which is what I had experience with (and in my spare MCUs drawer) and I basically failed - could not reflow solder the thing, or could not program it, not sure.
Then I forgot about it and moved on to other projects more within my reach.
I eventually stumbled upon a remake of Ted’s project using a ATtiny85. At the same time I was exploring ways to harvest indoor light to power super low power projects, and I found Armalamp and other projects from bobricius. I decided to try and combine the two and it looks like I will manage this time.

Requirements

Must haves:

  • produces light which is bright enough to easily see at night
  • manufacturable
  • not too expensive (total costs not more than £10 a pop in a small-ish production run)
  • should survive several days in total darkness, and basically forever under realistic natural light conditions
  • fits in a 3g cosmetic jar (⌀ 29.5mm, height 16mm)
  • I should learn new things in the process, and spend my time/energy on what I enjoy doing

Nice to have:

  • no lithium-based battery (because shipping is a pain)
  • no over-reliance on a miracle magical part or IC

Oh, and the most important: done is better than perfect. Too easy to never finish hobby projects like this one.

Hardware design

The overall idea is to:
(1) use photodioes to harvest ambient light
(2) charge up some form of energy storage
(3) use that to power a MCU
(4) which generates brief pulses to light up a LED
(5) and use the famous trick of charging an inductor and letting that light up a flyback LED to reach higher light intensity per W than when directly under-powering the LED - read Ted Yapo’s notes if you’re confused here

Microcontroller

The original TritiLED uses a low power PIC, Everled uses a ATtiny85, and I had STM32L0s around so I tried that first. Long story short, I did not manage to make it work. Between soldering it manually (a UFQFPN-20 package - 0.5mm pitch) and having a cheap connector to program/debug it, I never made it work.
Besides, low power modes on ARM are a massive pain to get to work, resume from low power modes was slow, and frankly a fully Cortex-M0+ and 32bit was way overkill for what I needed: a periodic wakeup every ~20ms or so to pulse a high signal for ~1us before going back to sleep. And maybe read the voltage produced by the photodiodes once in a while.
So I went with ATtiny85s I also had lying around and got working. The low power modes and watchdog timer configuration and related interrupt handling are MUCH simpler - the program is about 10 lines of actual code only.
The ATtiny85 is not exactly a low power microcontroller, but it does spend the overwhelming majority of its time asleep, during which it consumes ~4uA. It’s not perfect (see current/power budget explained later in the doc), but it’s a good start.

ATtiny95 power down current draw

I program it using the good old avr-gcc + avr-objcopy + avrdude combo and an Arduino Uno as a programmer, and voilà.

LED and inductor

Here I only validated what had been done previously by Ted Yapo and picked a small 0603 bright green led (525nm), the Kingbright APTD1608LZGCK.
APTD1608LZGCK

I picked a small (1007 package or 1.8mm x 2.5mm) 470uH inductor: TAIYO YUDEN LB2518T471K
enter image description here

Photodiodes

The choice of photodiodes, energy storage...

Read more »

  • Round lampions

    atelierlelu09/06/2024 at 20:07 0 comments

    I received panelised PCBAs the other day after making a few modifications:

    - new 1.5F supercaps (the ones I was using before are discontinued)

    - smaller attiny25 MCU

    - 1.8V LDO in a bid to drastically reduce MCU current draw at higher voltages

    I finally programmed them, and they work :)

  • Supercapacitor self discharge and leakage current

    atelierlelu09/06/2024 at 20:03 0 comments

    I suspected that the supercaps I am using were draining fast, and that connecting the photodiodes to them was actually draining the caps when they were not charging them.

    The supercapacitors are charged using photodiodes in a 2s10p configuration, each string protected by a Schottky diode. See schematic.

    I knew from extrapolating the datasheet that the Schottky diodes would not drop a lot of voltage at tiny currents (a few dozens uA max), and I confirmed this with measurements. But I was not clear whether when Vcap > Vphotodiodes, the reverse Schottky diodes would leak come current the other way, therefore discharging the supercaps, and undoing what the solar charge was doing!

    The graph confirms this: regardless of the supercap used, when the photodiodes are connected, they deplete much faster then when the photodiodes are disconnecting (~200mV/day v. <100mV/day, see the blue and green lines). Yes, the discharge is not linear but empirically the difference is noticeable regardless.  The graph also confirms that the slightly bigger caps are much better when it comes to self discharge! Compare the blue and orange lines: ~100mV/day v. ~40mV/day (that includes the Zener diode too).

  • Tracking supercaps voltage

    atelierlelu06/28/2024 at 20:56 0 comments

    I'm building a quick voltage monitoring system to keep track of the voltage in the supercaps over time.

    I'll post more about it but in short here's the setup:

    - Battery-powered ESP32 reading voltages from time to time

    - Posting these values over Wifi to a flask server which adds this to a local database (a CSV file for now)

    - Another flask page plots the value using bokeh

    The most interesting thing I discovered is how crappy the ESP32 built-in ADCs are, just these the difference between the values coming from them and the ones coming from a ADS1115 module:

    I know it's news to nobody but it cam as a shock nevertheless.

    Now that I have new test boards with some issues with the photodiodes fixed (see here: https://x.com/AtelierLelu/status/1806791392288543119) I'll be able to do more tests.

    I'm also revisiting the daytime detection mechanism using  low power voltage supervisors.

View all 3 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

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