Problems with DHT33 self-heating (?)

I have reproducible problems with a DHT33 temperature and humidity sensor. The DHT33 is similar to the popular DHT22 or DHT11 sensors but a bit more accurate. I use this sensor in a project because the DHT33 uses internal a DS18B20 temperature sensor and I use other single DS18B20 in the same project also, so I can be sure to compare similar temperature vales because all relay on the same hardware.

My problem is that after a certain period of time, about 10 hours, the temperature rises to about 35° C, the humidity sinks and after this the whole stuff crashes. In the last trial I got the attached graph.

The board is a Seeeduino Stalker with a custom shield, the shield has some screw terminals and a ADS1231 chip for a load cell as well as a RFM96 module for wireless transmitting. The load cell is still working while this curious behavior of the DHT and also the DS18B20 and the RFM is working. So I think it is a problem with the DHT33.

I connected the DHT33 this way with the Arduino: I used a 4K7 resistor between data line and Vcc to be compatible with a DS18B20 to use this different sensors alternatively on the same screw terminal. The resistor is on the shield, the DHT is connected with a 40 cm cable to the shield.

I use the DHT lib to read the DHT33 values.

The whole system runs about 10 hours then it crashes, same behavior yesterday, but after the tempeerature rising and humidity falling both values went back to normal level but a time ago (some minutes to an hour, I do not have the data saved) the system crashed again.

My test code is very raw, I put some snippets form different libs together, just to see that it works, so be patient, it is attached also.

What could cause this heating and crash?

  • can the resistor size be a problem, some recommend a 10K
  • can the position of the resistor–on the shield–vs. directly on the sensor lead to problems
  • any other suggestions for this issue?

node_load_temp_hum.ino (6.48 KB)

Wild guess: your timing gets out of sync when some counter or variable overflows. Your heating code may wait forever for the next time, when the time counter is reset to zero after the last read. An "int" variable overflows after 2^15 ticks (milliseconds --> 32 seconds, seconds --> ~9 hrs).