T4, heatsink recommended?

Status
Not open for further replies.

Spyy

Well-known member
Hi,

this great piece arrived today….wow...i love it....started with blink etc.. to get a feeling how it works…

My endproduct where i want to use it will be "in a box" so i asked myself, due to there is a noticable amout of heat on the chip, is there a heatsink recommended? The T3.6 was cold even when i overclocked it.

Anyone who has experience on this topic already? Will the amount of heat change with the load of the prcessor? Or will it always stay the same?


Thank you

Torsten
 
It does tend to be a bit warmer but don't think we ever noticed that it really got too hot to touch. There is a tempmon that is always on. To call it to get the temp all you need to do is add this to your sketch: tempmonGetTemp() and print the value (its a float by the way). Some of us did put something like this on it https://www.amazon.com/gp/product/B01GM9EYQ8/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1 as a quick test and it did drop the temp. But you may have to trim it a bit. If you do a search in the beta thread you will probably find some more info. In all our testing don't think we ever left the heatsink on except to see what would happen.

Just as a note - if it hits the overtemp setting it will automatically shut down on you.
 
Unless your enclosure is very small, or very well thermally insulated, or has some other stuff dissipating a lot of heat, you can probably get by without a heatsink.

If you attempt extreme overclocking, like messing with the "// Danger Will Robinson" part in clockspeed.c, the chip does get very hot and probably needs a heatsink. But even with a heatsink, you can expect reduced life span if you drive the CPU beyond its maximum rated voltage (1.3V).

If you run at 528 MHz or lower, the CPU runs at a slightly lower voltage (1.15V instead of 1.25V), which really reduces the power consumption. If you're worried about high temperature, and if you can get by without the full 600 MHz speed, slowing down just a little to 528 MHz makes quite a difference in temperature rise.
 
I'm sure I'm not the only one operating these in a vacuum chamber occasionally to control experiments, so the possibility of overheating is well-worth considering. With the 3.6 running OC'd at 240 MHz there was no issue, but I never checked the temperature, either. I wonder if 600 will be too far to push these in vacuum and 528 might be safer.

Thanks for the tip on the temperature monitor, though; when my 4.0 shows up I'll check that out right away.
 
Hi,

i will use it in vacuum of outer space behind the van Allen belt for the next lunar mission (Apollo 18) they need a computer without error 1202 during lunar descent ;-)

Thank you for your feedback, i will add some air intake/outtake in my housing..to keep things moderate cool...

BTW: With the 3.6 i had the possibility to overclock it via the IDE via dropdown menu. This dropdown menu is not present anymore for the T4.....(I am using the Arduino extension for MS Visual Studio 2017/19)

Torsten
 
I'm sure I'm not the only one operating these in a vacuum chamber occasionally to control experiments, so the possibility of overheating is well-worth considering. With the 3.6 running OC'd at 240 MHz there was no issue, but I never checked the temperature, either. I wonder if 600 will be too far to push these in vacuum and 528 might be safer.

Thanks for the tip on the temperature monitor, though; when my 4.0 shows up I'll check that out right away.

FYI - In vacuum it took about five minutes for a Teensy 4 running a loop of floating point multiplication to reach 90C (per the internal tempmon) and shut itself down. It was straight of the box, without any headers installed, and hanging out in the open in a vacuum chamber, and running the default 600 MHz. A Teensy with headers installed on aboard might run slightly cooler with the thermal path added, but I suspect the MCU will still overheat. Looks like underclocking or running a thermal strap from the MCU to a thermal "ground" may be needed. Unfortunate, but not surprising given the power of this little guy.
 
Teensy 4 powers up and goes to 600 MHz with this in startup.c : set_arm_clock(600000000);

User can call that same func with an alternate number in setup() or after if not wanting to edit the cores - in beta I just jumped it hi/low by 100,000,000 and it picked the Hz +/- that worked out and adjusted the voltage as programmed by PJRC.

Needs this extern "C" prototype : uint32_t set_arm_clock(uint32_t frequency);

Looking at this will show what the result is :: Serial.println(F_CPU_ACTUAL);

Would be interesting to see the TempMon results in chamber starting at 100M and ticking up 100M with temp watch for change or stable each couple of minutes.


Paul - when you posted Benchmarks { RSA & CoreMark } I did a quick test with those 2 and another two sketches - 700 Mhz seemed to run them all on the one T4 I tested - and Coremark ran at 800 Mhz , RSA failed. The others 700 & 800 works for the Prime calc code from the other week. T4 can run the Multiple 5X Serial and 2X ST7789 displays at 700 – but dies early and loses Serial USB early at 800.
 
JUST COPIED THIS TO THE RIGHT THREAD ... https://forum.pjrc.com/threads/54711-Teensy-4-0-First-Beta-Test?p=213338&viewfull=1#post213338

>> Posting failed a few times due to size and it ended up here ...

Paul: loop() Code Mod to lps.ino - for a bit more stress that breaks here:
Code:
void loop() {
[B][U][COLOR="#FF0000"]  while (1) {[/COLOR][/U][/B]
    Serial.print("count=");
    Serial.print(count);
    Serial.print(", lines/sec=");
    Serial.println(count_per_second);
    count = count + 1;
    uint32_t msec = millis();
    if (msec - prior_msec > 1000) {
[B][U][COLOR="#FF0000"]      delay(1);[/COLOR][/U][/B]
      // when 1 second as elapsed, update the lines/sec count
      prior_msec = prior_msec + 1000;
      count_per_second = count - prior_count;
      prior_count = count;
    }
  [B][U][COLOR="#FF0000"]}[/COLOR][/U][/B]
}

IDE has this in the console: TOO LONG at 270K chars … see file - that had to be zipped for 80KB over limit ::
 
Last edited:
If you run at 528 MHz or lower, the CPU runs at a slightly lower voltage (1.15V instead of 1.25V), which really reduces the power consumption. If you're worried about high temperature, and if you can get by without the full 600 MHz speed, slowing down just a little to 528 MHz makes quite a difference in temperature rise.

Is there a straightforward way to adjust this at runtime rather than tinkering with startup.c?
 
Yes there is. This is curtesy of @defragster:
Code:
#if 1
#ifdef __cplusplus
extern "C" {
#endif

#if defined(__IMXRT1062__)
uint32_t set_arm_clock(uint32_t frequency);
#endif
#ifdef __cplusplus
} // extern "C"
#endif
#endif

Add this to the top of your sketch. Then in your sketch you can call set_arm_clock with the frequency you went to set. Example: set_arm_clock(528000000); for 528Mhz.
 
Post #7 gave notes on the explicit p#11 code.

In setup() just add :: set_arm_clock(300000000);

Pick the desired Hz and the code will pick the workable freq near that. Also in p#7 is this to use after to see actual current speed:: Serial.println(F_CPU_ACTUAL);

I did a Pull request #385 to add the Early and Late startup hooks that would allow this to be done in user code before the 300 ms wait time to get into setup() - called inline without needing to edit the startup.c file.
 
Post #7 gave notes on the explicit p#11 code.

In setup() just add :: set_arm_clock(300000000);

Pick the desired Hz and the code will pick the workable freq near that. Also in p#7 is this to use after to see actual current speed:: Serial.println(F_CPU_ACTUAL);

I did a Pull request #385 to add the Early and Late startup hooks that would allow this to be done in user code before the 300 ms wait time to get into setup() - called inline without needing to edit the startup.c file.

How did I miss that? Apologies for the unnecessary question, but thanks to you and mjs513 for the very clear responses. I'll give it a test today.
 
FYI - In vacuum it took about five minutes for a Teensy 4 running a loop of floating point multiplication to reach 90C (per the internal tempmon) and shut itself down. It was straight of the box, without any headers installed, and hanging out in the open in a vacuum chamber, and running the default 600 MHz. A Teensy with headers installed on aboard might run slightly cooler with the thermal path added, but I suspect the MCU will still overheat. Looks like underclocking or running a thermal strap from the MCU to a thermal "ground" may be needed. Unfortunate, but not surprising given the power of this little guy.

Just a followup note that the T4 ran great in a vacuum chamber at 600MHZ once it was installed on a PCB. The PCB had aluminum standoffs to mount on a large steel platform, and the holes for the standoffs were plated and tied to the PCB grouns. No thermal strap or active cooling, and it sat around 50-55C under load.
 
Status
Not open for further replies.
Back
Top