Skip to content

Thermal sensors

Lena Schimmel edited this page Mar 13, 2024 · 1 revision

Most of these modules will contain a temperature sensor, and a way to connect more temperature sensors to the bus. To avoid confusion with "color temperature", I try to use the word "thermal" as much as possible whenever it's about the actual amount of heat in some physical device.

Why have a thermal sensor at all?

The more obvious reason: in many LED designs, thermal is the limiting factor in how bright you can turn the light, or how long the lifespan of the device will be.

The DS18B20

The less obvious reason for a themal sensor: I started out with DS18B20 sensors by Analog Devices (originally from Dallas), which just need one pin for a bus with any number of sensors, and also have a globally unique ID that I could use to identify the board on which the sensor is placed.

Later, it turned out that with those sensors:

  • original ones are sometimes hard to get and/or rather expensive
  • fake ones do work, but are very, very, very inaccurate (I have one that is about 6 degrees (Celsius) off)

The TMP1075

I found an alternative: the TMP1075 from Texas Instruments. It's cheaper, and uses I2C instead of the Dallas one-wire bus. In theory, that's one more pin that I need, but if I already have other devices on an I2C bus, it's actually one pin less. But it does not have a unique ID. That's ok, even if I add another chip (2K Eeprom with unique ID), it's still less expensive and I also get 2K of writable memory. Win-win.

I'm still not sure about that alternative, because of the limited I2C-addresses (but the TMP1075 offers a stunning choice of 32 addresses).

I could not find a Rust driver that explicitly supports the TMP1075, but lm75-rs is compatible with various xx75 devices, and the TMP1075 also claims to be pin- and software compatible with that.

Other ones?

There are a lot of other I2C thermal sensors (see list), but I don't know which ones of those I could use without adding dozens of drivers.

Clone this wiki locally