LED Logger V3

Check out Part 1 and Part 2 of the project


I’ve previously wanted to know how much do cheap led strips last: turned out they don’t even pay for themselves over incandescent bulbs only decent quality, rather expensive ones which are sourced from reputable distributors do.

Here is the third incarnation of the experiment, after the second one failed and sat in a box for a couple of years. My motivation for fixing this was very low, as it already showed what I was interested in. As I received a few requests to resume the experiments from interested people and began to be interested in newer types of LED like the WS2812, here it is.

The logger has got some new updates to measure everything possible and benefits from a Wi-Fi connection.


As of June 2016 I have ended the experiment, once all the strips went over 10.000 hours. The previously drawn conclusions below are still valid (with updated graphs).

The third version of the Led logger has run without any major issues. Based on uptime logging there has never been any freeze or malfunction. As for the LEDs, I have identified a few types of strips based on the behaviour they manifested throughout the experiment. Careful about the axis scale of the graphs.

The terrible ones: strip 5 quickly dropped to very small brightness. It dropped to 7% of initial brightness after just 550 hours, talk about a waste of money. It even passed the threshold to be recognized as ON and the logger does not count the hours. Here is strip 5, a no name waterproof strip:


The fast droppers: Strip 1, 2 and 6 quickly (about 1000 hours) dropped to about 70% of initial brightness, but seem to be rather stable there, even after more than 10.000 hours. Here is strip 6, an initially bright PLCC LED strip from some Chinese on-line shop:


The good ones: Strip 3, 7 and 16 seem to slowly drop. They are the most expensive one: strip 3 is the Ikea ledberg, strip 7 is an Amazon bought strip for about 20 eur/5m and strip 16 is a WS2812 strip. Graph below shows strip 7, which has a very typical drop for a decent quality LED.



And below is the WS2812 strip, dropping to 76% of initial brightness after >10.000 hours. Pretty good result.


The excellent module strip number 4 is at 90% of brightness after more than 10.000 hours. Note that the graphic is missing parts from the previous versions of the LED loggers and has a wrong data point.


Some conclusions line up, but they should be taken with a grain of salt as the sample size is rather small. Obscure LED sources seem to have rather poor and unpredictable quality, so it is best to avoid them. The modules from reputable sources are more expensive, but seem to have better lifetime, while still being rather far from the desired 50.000 hours life time unless you count “there is light, it works” as acceptable. WS2812 LEDs are a pleasant surprise: even though they are cheap(for what they are and do) they seem to be holding their brightness pretty well (Yes, I know RGB LEDs have other ageing and failure modes).

Doing some sanity check, the power supply has been stable throughout the experiment, keeping within 5% of nominal:


The LEDs were kept at a good ambient temperature, which is not something you might expect in normal use


And of course, the uptime was measured. Very impressing, as at some point it has reached 4500 hours. Impressing for the power company, who never turned off the power for > 6 months.


This also proves that the ESP8266 module I used as a WiFi connection which is one of the first to hit the market, can function for a long time. I cannot say the same for later bought modules (~1 year), as 2 of them had died already.

 LED logger V 3

In short: 16 LED channels are measured, one is kept for control of the sensor. For each LED the power supply and current are measured. The temperature of the aluminium plate is measured as well. In total there are 16 light channels, 15 current channels***, 4 voltage channels and one temperature channel.

Power supply: The strips I am using are 12V operated, but there are some WS2812B LEDs powered from a 5V DC/DC converter, along with the electronics. The power supply is loaded to about 30%. Both supplies are monitored, and 2 more channels are available for the future.

Current: The current of each LED channel is measured along with the light intensity. The current measuring sensor along with the switching transistors are made to have a very low burden voltage, in the order of mV, using a 10mW shunt and a 40mΩ RdsON transistor. The voltage across the shunt is amplified with a MCP6V31 low offset amplifier.

Temperature: there is now a one wire temperature sensor. Even though there are a few more LED strips added and power dissipation is 2-3 larger, the temperature rise is only about 10C over ambient.

Sensor degradation: in order to verify that the sensor is still reporting correctly I have installed a strip that will only be lit for a short time at each measurement to check that the sensor has not changed. By measuring a strip identical to the first I have found that the sensor produces identical results, so there appear to be no degradation over the experiment.

***I designed the circuit to switch off the negative supply. It turns out that this is a bad idea for the WS2812 LEDs, as the first one breaks very soon after. So the current for the WS LEDs is not measured.

Current Data:

The current data is available here (or click the picture below), check under for description of each strip. I have decided not to plot the variation over time for now (it’s stored) and only show the running time and intensity of each led, reported as percentage of initial intensity as well. The temperature and supplies are monitored along with the current for each LED. As with the previous experiment there are fluctuations in the readings, but they seem to average out nicely over time.


Meet the candidates

The control strip is identical to the strip used in the first experiment, except that is has not been used. It turns out that it produces the exact same readout as the first strip, meaning that the sensor has not been degraded over the 1400 hours of initial test. The control strip and the original strip are the best aligned to the sensor.

Strip 1 is the strip used in the first and the second led logger. It starts with about 5500 hour usage.

Strip 2 is made by Optoflash, it’s similar to the others except that the light is cold white. It’s a bit more expensive, comes from TME and there are no details about lifetime in the datasheet, but at least there is some sort of datasheet. It starts with 4500 hour usage.

Strip 3 is an Ikea ledberg strip. It’s rated at 20.000 hours, but without any info as to how this time is measured. It starts with 4500 hour usage.

Strip 4 is actually a waterproof module from a local shop that I paid about 1 EUR for. I don’t know anything more.  It starts with 4500 hour usage.

Strip 5 is another waterproof strip.  It starts with 0 hour usage.

Strip 6 is a much brighter PLC LED chip strip.  It starts with 0 hour usage.

Strip 7 is similar with Strip 6, but encased in gel. It is also the most expensive one, bought from a more reputable online shop. Added on 28.03.2015.

Strip 16 is three WS2812B LEDs, which used to be 4 until I realized there is no easy way to measure the current on the WS2812 without breaking it. It starts with 0 hour usage.

Strips 7 to 14 will be determined and added later.


The logger

There is now a brand new, factory made PCB, schematic and layout available of course. Quite a lot of changes have happened: I switched the micro to a bigger XMEGA, added more channels, more voltage channels and current monitoring. Plus, now it is wirelessly connecting to the internet with the help of an ESP8266.

I have switched from the public data loggers and installed emoncms, the open source energy monitoring software on my website’s server. This has quite a few extra features and I have a sort of guarantee that once I get it working there will be no disruption due to domain changes, API changes etc. Plus, I own my data.


The software of the logger is quite a big mess, it is put together from many places which makes it far from optimal, but it does the job. Available on github.

Schematic is below. It’s grown a bit now, but there is nothing special about it.


Everything is built around the same box used in the previous projects, except that now the wire mess has grown significantly due to more channels and extra features. I move the controller on the inside to avoid disrupting the wires and stupid questions from visitors.


The ESP module sits on the outside, although it worked from the inside in the brief tests that I have performed. Still, I don’t want to risk any issues so outside it stays.

The temperature sensor is placed on the outside of the aluminium plate, in the centre where I expect the temperature rise to be maximum. It is placed in thermal contact with the plate and then some isolating foam and a few layers of tape disconnect it from ambient influences.

DSC_3795 DSC_3804


Interested in replicating the experiment and sharing your results? I will be happy to offer some PCBs for free (you pay the postage), but I will not have time to offer support. PCBs will be limited to 1 per person, I only have a few available.  Still all information to replicate the experiment is here. 

Bookmark the permalink.


  1. Well done, thanks for publishing!

    One thing I’m unclear on – as the light produced dropped over time, did the input current remain constant (= decreasing conversion efficiency) or did the current drop (= increasing “resistivity”)?

  2. Pingback: 1000.1000 Lessons learned « Electro Bob

  3. Pingback: LED logger « Electro Bob

  4. Pingback: Cheap China « Electro Bob

  5. Hi, I’m preparing a circuit to do about the same thing (I have 3 Chinese and 3 FlexFire strips, each one used at 100% power and at 50% current).
    I notice you use no resistors between uC and MOSFET Gate (to limit inrush current, it could damage the uC), and no resistor between MOSFET Gate and GND (to ensure a complete shut-down of the MOSFET). Is it safe to do so? I use two 74HC595 because my uC has not enough pins. Would it be safe in my case? I planned resistors only between Gate and GND, inrush should be no problem for the 74HC595.
    Also, is there a way to obtain graphs of your values instead of only the realtime values being measured? Also, the “uptime” is not clear, you mean your server or uC restart that often?

    Thanks and feel free to send me an email is you would like to check out my circuit and details.

    • Hi Olaf.
      There are no resistors because the microcontroller will handle the infrequent switching of the the transistors. If this was a circuit switching many times a second, they would be required.
      The resistor to ground is not needed either: the microcontroller forces the pin at 0V or 3.3V, you only need to make sure of that in software. It might make sense in some critical systems because it takes a while since startup to setup a pin as ouput, but not here. It would be the same if using the ‘595’.
      Yes there are graphs, emoncms allows you to plot the values over time. I did not do that in the dashboard because it became too full for 16 leds. I will soon draw some conclusions and post some graphs once the new strips reach 2000 hours.
      Uptime is a measure of how long has the circuit operated since power up. I wanted this just for myself, to see if it would ever fail. So far it never failed(max was >1000 hours), i had to restart it because i moved the box or changed some cables.

      If you want to share the circuit with me for some advice, i can try and do that, I just cannot make any commitment of answering on time.

      • Thanks for the explanation.

        I noticed you used several modules of each strip, is it to avoid one failing early? I planned to use only one per strip@voltage and to replace it when it drops below 50% or 70% emission.

        You also placed all of them horizontally and, given the length of your strings, it was your only choice. I was thinking about placing each module (they are about as long as your #6) vertically on a metal back located inside a dark cardboard box (I have no metal boxes ready), so that the natural convection cools each strip in the same way and no strip gets the warm air from another one. What do you think? it should produce more realistic measurements.

        As reference measurement, I will use the LED integrated in http://www.adafruit.com/products/1334 with a white reflector to bounce the light back and after a separate burn-in of about 10 hours of said LED, but as you said, I doubt the light sensor will change its performances quickly.

        I will share my circuit as soon as I have time to write an introductory article in my website, so that’s it’s easier to discuss it. Next weekend I hope.

        • I put several modules to average the effect over more leds and have a higher level of light(the sensor seems to have worse resolution at lower levels).
          Cardboard is a pretty good thermal insulator, it might overheat the LEDs, I am not sure how much heating by convection you will get. With the current setup I am already heating the aluminum plate by about 10 degrees C. Also, be careful with a box that is not rigid, small changes in the orientation between sensor and leds will screw up the measurement.

          • Even if I planned internal support and not LED on the inner side of the walls, I really didn’t think about the deformation of the cardboard, thanks! I will prepare a separate internal support.
            Concerning the temperature, I planned some openings to have warm air get out of the box while still avoiding light in. However I may look for a metal box as you did.

            I’ll let you know.

      • Hello Bogdan, I see at the end only 8+control LEDs survived. If it doesn’t take you too much time, I would appreciate either a static graph of the history so far (to be added after the static image you published) or a realtime graph on your emocms (probably not so useful, I think values are constant now).
        After all, they all reached over 2k hours.

        If you don’t mind and have a way to do it, would you please also set some of the same strips at 50% power? my project to compare lifespan at full vs 50% power is way behind schedule and you have everything already set up. To obtain (about) 50% power you only need 10.5V and a couple of diodes should give you about that.

        • I have updated the post with some static graphs, from where you can see the different types of behaviour. I will give it a though about the 50% brightness, my hunch will be that the life doubles, provided in both cases they don’t overheat.

  6. Pingback: Sit.Up « Electro Bob

  7. Pingback: Simple active/standby current measurement « Electro Bob

  8. Heya! Nice project!
    How the data gathered can be analysed? Have you made some little GUI?
    I noticed at V2 a upload system.

    If you still have spare PCB’s, I would like to get some!



  9. Pingback: LED logger V2 « Electro Bob

Leave a Reply

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


This site uses Akismet to reduce spam. Learn how your comment data is processed.