Prevent overheating BeagleBone?

This question came up on the Adafruit forum:
"Ubuntu 16.04 on Beaglebone Black Cpu Temperature "

The poster wants to detect when the TI Sitara AM3358 SoC has become too hot and activate a fan.

It appears that the temperature sensor in the SoC does not work accurately and TI has given up on the driver:

Has anyone used an external thermocouple to monitor temperature of their BeagleBone?

Any suggestions of where and how to place a thermocouple near the SoC?


HI Drew,

I have not used a thermocouple on the beaglebone it’s self. I have however used a SPI interface MAX31855, and they ramp up fairly quickly, and are reasonably accurate. We used this for a convection oven to reflow oven conversion. In testing, it seemed to work really well, but we never actually used that oven to flow boards. Instead we decided to change to an IR oven.

As far as placement, I think you would want to place the cable end directly onto the processor die, with a bit of heat sink grease between both.

Another option would be to use a 1-wire temperature sensor. I have one here connected to a beaglebone at this moment, but I could not tell you offhand what the part number is . . .

So it’s my understanding that these 1wire sensors in not as accurate as a thermocouple. However I think I could work well enough. As far as placement of these . . . well I’m not sure about that. A datasheet would need to be referenced. But perhaps directly on the processor it’s self as well with a bit of thermo grease between the two ? Not sure. They’re a similar package to a small transistor. Additionally, these are rather slow in response. I think the best 1-wire query “speed” is 750ms between reads. But I think if you need to read temperatures faster than this for this particular application . .something else is “wrong” :wink:

The DS18B20 is the 1-wire sensor I’m using. I knew that when I initially connected it, but have not bothered to remember that after looking at the datasheet . . .too much else going on right now. They’re really easy to read from using C, and C++( one or the other ), and probably any other language you’d care to use. Doing something similar in C++ I think I did in less than 75 lines of code, using no special libraries:

root@beaglebone:~# cat /sys/bus/w1/devices/28-*/w1_slave
f2 00 4b 46 7f ff 0e 10 f8 : crc=f8 YES
f2 00 4b 46 7f ff 0e 10 f8 t=15125

I use the MCP9808 for temperature monitoring. Simple I2C interface. Drops onto I2C-2 without device tree changes.
Adafruit has example code and breakout boards. Accuracy about 1 degree C, resolution to a fraction of a degree C.
I put one of the Adafruit breakout boards in the same airspace as the BBB, or whatever else I am monitoring.

I guess you could glue one (dead-bug) on top of the Sitara package.

I am not sure that cooling a BBB is a problem that needs solving, unless you are running it real hard, continuously, and have it bottled up.

— Graham

William and Graham: Thanks for the suggestions! I’ve passed your insights along to the user.