Monthly Science: Hard Drive Mood Light Thermal Coefficient

Having that knockoff Neopixel fail from overheating prompted me to measure what was going on. Because the LEDs sink most of their heat into the package leads, the back of the LED strip should be the hottest part of the package and the Mood Light’s central pillar should be pretty nearly isothermal. Despite that, I figured I should measure the temperature closer to the back of the strip, sooo I drilled a hole for the thermocouple…

Clamp the whole Mood Light to the Sherline’s tooling plate with the pillar sides mostly square to the axes and line up the spindle 2 mm behind the LED strip:

Mood Light - aligning thermocouple hole

Mood Light – aligning thermocouple hole

The two clamp pads are CD chunks, under just enough pressure to anchor the Mood Light.

Screw the cap in place (to match-drill both holes at once) and drill a 2 mm (#46, close enough) hole down past the top LED:

Mood Light - drilling thermocouple hole

Mood Light – drilling thermocouple hole

I tucked the Mood Light into a box to ward off breezes, jammed one thermocouple into the new hole, let another float over the top platter, then forced the Neopixels to display constant grayscale PWM values (R=G=B) while recording the LED and air temperatures every five minutes:

Hard Drive Mood Light - temp vs power data

Hard Drive Mood Light – temp vs power data

That was easier and faster than screwing around with automated data collection. The data has some glaring gaps where I went off to do other things during the day.

I turned those numbers into a graph, printed it out, puzzled over it for a bit, then annotated it with useful numbers:

Hard Drive Mood Light - temp vs power data - graph

Hard Drive Mood Light – temp vs power data – graph

That first little blip over on the left comes from a minute or two at PWM 32; the cooling time constant works out to be a bit under 10 minutes. The warming time constant looks to be somewhat longer, but not by much.

Eyeballing the endpoint temperatures for each PWM value, feeding in the current measurements, and creating a small table:

Current 0.057 A
Package 0.285 W
Total 3.42 W
PWM Duty Nom Power Failed LEDs Net Power °C Rise
0 0.00 0.00 0 0.00 0
32 0.13 0.43 0 0.43 6
64 0.25 0.86 0 0.86 12
85 0.33 1.14 1 1.04 16
128 0.50 1.71 1 1.62 24
192 0.75 2.57 1 2.47 35
255 1.00 3.41 4 3.03 42

The same blue LED that failed earlier dropped out again, plus another package (on a different strip) went completely dark shortly after I clobbered the LEDs with full power at PWM 255. The Net Power column deducts the power not used by the failed LEDs, under the reasonable assumption that the total heating depends on the number of active LEDs.

All the failed LEDs worked fine when they cooled to room temperature, so, whatever the failure mode might be, it’s not permanent. The skimpy WS2812B datasheet says bupkis about a protective thermal shutdown circuit, although it specs an 80 °C maximum operating junction temperature. I’ll stipulate a 20 °C temperature difference from junction to thermocouple at PWM 255, but that doesn’t explain the first blue LED failure at PWM 85.

Methinks these knockoffs will be much happier operating in the mid-30s.

Turning the last two columns of that table into a graph (minus the PWM 0 line to let the intercept float around) looks like I’m faking it:

Hard Drive Mood Light - Temperature vs Power

Hard Drive Mood Light – Temperature vs Power

The Y intercept is off by less than 1 °C, which seems pretty good under the circumstances. The  kink at PWM 85 shows that I probably didn’t allow enough time for the temperature to stabilize after the blue LED failed.

So, in round numbers, the thermal coefficient for a dozen knockoff Neopixels on a plastic pillar inside a stack of hard drive platters works out to 14 °C/W.

The raised sine waves in the Mood Light produce a long-term average PWM half of their maximum PWM. They’ve been perfectly happy with MaxPWM = 64 pushing them barely 6 °C over ambient, so they should continue to work fine at PWM 128 for a 12 °C rise… except, perhaps, during the hottest of mid-summer days.

Obviously, I should jam a thermistor inside the column and have the Arduino wrap a feedback loop around the column temperature…