HTU21D temperature read higher then normal


I am running into a problem with HTU21D temperature read being higher then normal. This happen when I turn on 2-3 relay at the same time or more activities on the board. It seem like the HTU21D heats up with the activities. The temperature difference is 5 degree or more with the activities. I am using the P1 module. I was able to display the temperature and humidity on the screen. So I believe my hook up to the I2C is correct. I have a 4.7K pull up on the DA and CL line of the HTU21D.

Have anyone encounter this before, it seem like with more activities the HTU21D get hotter? Could it be pulling more power from the Pullups? I also notice if I disconnect VDD while DA, CL, ground is still connected, the HTU21D still works. It look like HTU21D is pulling the power from the DA and CL pullups.


That’s most likely what’s happening. The other components probably heat up, in turn heating up your sensor. Other than physical isolation, there’s little that can be done about that I think.

How far have you got the sensor from any other components that might dissipate power and may heat up the air around your sensor?

@Moors7 and @ScruffR, its physical isolation on the corner of my board with cut out and enclose in a chamber once I put the casing on and with cut out for air flow. Its basically isolated, I use a temperature gun to check the surrounding, the surrounding is like 75 but the surface of the HTU21D is 80. I also test the temperature with out the casing in open air, as I turn on the relays the surface of the HTU21D heats up. So I am puzzle.

How fast, after you turn on the relays, does the HTU21D heat up? Are your pullup resistors connected to 3.3 volts or 5?

@Ric, the pullup resistors is connected to 3.3v regulated. Below are some pictures of the board and housing chamber. Could it be my layout of the HTU21D on my board? I will have to time the heatup but it happen with in a min.

That P1 heats up when ON and you have lots of copper on that PCB so the copper will eventually reach the same or close to the same temp as the P1 module and that will effect the temp sensor readings.

how often are you taking humidity readings?
do you leave it powered between readings?

maybe self heating…

This is where a FLIR camera would be great!

@BulldogLowell, temperature and humidity read is always on. I just base on what I found in the example file. Do HTU21D need to be turn on and off to let it cool down?

@peekay123, I wish I do have a FLIR camera so I would know exactly where is the heat coming from. Right now I am just base on what the sensor tell me and ir therm gun.

Just for kick, any other suggested I2C temperature and humidity sensor that is more accurate? I just want to isolate if its the sensor problem or its my board that’s creating the heat.

The sensor is generally accurate.

So how often are you polling the sensor?

I’d start with a reasonable (30 or 60 seconds) between reads to allow it to cool off.

You haven’t posted your code, but pseudo would be:

void everySixtySeconds(void)
  //sensor.begin();  // maybe needed!

Of course, if you have a power trace leading to the Vin of the sensor, you have to try it without powering down.

1 Like

@BulldogLowell, I am polling the temperature at 1/2 sec and humidity at 1 sec. I do have a power trace to the sensor. I will see how it go with the additional delay and I will also try clearing the copper around the sensor and see if that do the trick.

Maybe you should try to measure every 5 minutes and in the time between put the P1 into deepsleep.
like this: System.sleep(SLEEP_MODE_DEEP, 300);

The effect of this is that the P1 will not heat up itself and the HTU21D. I use this in my own setups and once you do this it is very accurate.

Give it a try

Here is a really good temp humidity sensor that there is a Particle library for.

I really like the BME280 as well.

1 Like

Here is a Hackaday Humidity Sensor Shootout testing which sensor works best :slight_smile:

1 Like


I notice the HTU21D library does not provide a function to turn off/on the sensor. Does this mean in your pseudo code powerHumiditySensor(On/OFF) is an extra control line for the Vin and pullup power to turn on/off? During my testing, I noticed even with out hooking up the Vin, the HTU21D still stay on by drawing power from the pullups. Is this normal? It seem in order to turn the sensor completely off I need to kill the vin and pullups power source.

Have anyone tried turn on and off the internal heater on the HTU21D before? According to the library, its always on by default. I think the heater is heating up the air inside my isolated chamber adding to the read temperature.

I don’t see this anywhere in the library. Where specifically, does it say that? The heater is only used to check the functionality of the humidity sensor (the relative humidity should go down as the temperature goes up), so it doesn’t make sense that it would be on by default.