Teensy 108F normal?

I have a Teensy 4.1 driving about a thousand WS2812 pixels via octoWS2811 library (4 outputs of 250 each).
The CPU is hitting 108 F. Is that normal? This is for a wearable so anything over body temp is a concern.

I have the entire Teensy heat shrink wrapped which I know doesn't help.
Teensy is powered by USB port, and LEDs are powered by 2 usb ports (500 leds per port) each port pulls about 2.2 amps so 4.4 amps total + whatever the teensy is pulling. The LED plugs are also getting hot, can anyone recommend a better plug than what I'm using? (see attachments)


Complete code if needed:


Code:
#include <OctoWS2811.h>

const int numPins = 4;
byte pinList[numPins] = {0, 1, 13, 14};

const int ledsPerStrip = 250;

const int bytesPerLED = 3;  // change to 4 if using RGBW
DMAMEM int displayMemory[ledsPerStrip * numPins * bytesPerLED / 4];
int drawingMemory[ledsPerStrip * numPins * bytesPerLED / 4];

const int config = WS2811_GRB | WS2811_800kHz;

OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config, numPins, pinList);

int rainbowColors[180];
int BRIGHTNESS = 50; // 0-100

void setup() {
  for (int i=0; i<180; i++) {
    int hue = i * 2;
    int saturation = 100;
    int lightness = BRIGHTNESS;
    // pre-compute the 180 rainbow colors
    rainbowColors[i] = makeColor(hue, saturation, lightness);
  }
  leds.begin();
  leds.show();
}

void loop() {
  rainbow(10, 2500);
}
void rainbow(int phaseShift, int cycleTime)
{
  int color, x, wait;

  wait = cycleTime * 1000 / ledsPerStrip;
  for (color=0; color < 180; color++) {
    for (x=0; x < leds.numPixels(); x++) {
      int index = (color + x) % 180;
      leds.setPixel(x, rainbowColors[index]);
    }
    leds.show();
    delayMicroseconds(wait);
  }
}

int makeColor(unsigned int hue, unsigned int saturation, unsigned int lightness)
{
  unsigned int red, green, blue;
  unsigned int var1, var2;

  if (hue > 359) hue = hue % 360;
  if (saturation > 100) saturation = 100;
  if (lightness > 100) lightness = 100;

  // algorithm from: http://www.easyrgb.com/index.php?X=MATH&H=19#text19
  if (saturation == 0) {
    red = green = blue = lightness * 255 / 100;
  } else {
    if (lightness < 50) {
      var2 = lightness * (100 + saturation);
    } else {
      var2 = ((lightness + saturation) * 100) - (saturation * lightness);
    }
    var1 = lightness * 200 - var2;
    red = h2rgb(var1, var2, (hue < 240) ? hue + 120 : hue - 240) * 255 / 600000;
    green = h2rgb(var1, var2, hue) * 255 / 600000;
    blue = h2rgb(var1, var2, (hue >= 120) ? hue - 120 : hue + 240) * 255 / 600000;
  }
  return (red << 16) | (green << 8) | blue;
}

unsigned int h2rgb(unsigned int v1, unsigned int v2, unsigned int hue)
{
  if (hue < 60) return v1 * 60 + (v2 - v1) * hue;
  if (hue < 180) return v2 * 60;
  if (hue < 240) return v1 * 60 + (v2 - v1) * (240 - hue);
  return v1 * 60;
}
 

Attachments

  • 2.jpg
    2.jpg
    76.9 KB · Views: 34
  • 1.jpg
    1.jpg
    84.8 KB · Views: 35
Yikes, that's hot. Definitely not normal for free air convention cooling, but if tightly wrapped in an insulator, could happen.

Try reducing the speed in Tools > CPU Speed. If you can run at only 528 MHz or even 396 MHz, it should run quite a bit cooler.
 
Thanks for the prompt reply Paul!
Okay, so glad to know that's not normal, and there might be something I can do.
The heat shrink was really just to keep the wires in place, so if I move two of the outputs from pins 13,14,Gnd to 22/23/Gnd, I should be able to only heat-shrink the USB port side, and leave the CPU exposed. I will test and write back.

I had considered reducing the CPU, but I will need to test this extensively. The use case is that this would be worn on stage during a musical performance, where the LEDs must be responsive to the music, so framerate and responsiveness/timing is essential.
BTW, it won't be audio-reactive via a mic, we're planning on having a laptop running ableton which passes midi data to touch designer, which then creates patterns for the LEDs, and sends it to the Teensy over ethernet.
 
Okay so I tried all of the above, nothing worked. I replaced the Teensy 4.1 with another Teensy 4.1 I had on hand, and it's running at 85 F with the same code, same LEDs, same power supply, etc.
Looks like it may have been a defective Teensy.
 
Better soldering? No shorts of any kind (flux or solder whiskers or splatter?) on the high temp unit?
 
Back
Top