In the AM2302 datasheet at page 3, table 4, it gives min, typ and max values for Rpu (that the pull-up resistor as it says verbatim) being 30K, 45K and 60K ohm respectively.

Elsewhere in the same table it gives figures for Rp (no u) < 25K ohm.

What is the difference between Rpu and Rp here, and how should the two rows be interpreted?

1 Answer 1


The datasheet is as inaccurate as the sensor itself and it is even worse than you think!

In that datasheet is also written: "usually require an external about 5.1kΩ pull-up resistor".

In the datasheet is also mentioned that the output signal can go up to 8 mA for a high output and minimal 10 µA low output. The 10 µA means that the pullup resistor should be 500k or more. That is not correct.

In this datasheet is a picture with 1k.
In this Chinese datasheet is a picture with 5k.
I ran that Chinese datasheet through Google Translate, but that did not help.

Conclusion: The datasheet is not reliable.

You can do as everyone else: use a 10k resistor for short wires, and try 4k7 for longer wires.

That is not the only problem. Some DHT libraries create a shortcut on the data signal.

The AM3202 is not accurate for measuring the humidity. If you want to avoid trouble, then use a better sensor.
A sensor from Bosch is a good choice (for example the BME280 or BME680). Bosch makes datasheets that are reliable. Those sensors from Bosch operate at 3.3V, if you are going to connect that to a 5V Arduino board, then you need level shifters for the signals.

  • Thanks @Jot. Any idea on the accuracy on the figure of 2s between reads? Instead of the "default" Adafruit library, I've looked at this and this which have much cleaner code for my project which is not accuracy critical.
    – Tom Hale
    Feb 12, 2019 at 9:06
  • Any reason not to use INPUT_PULLUP instead in this case? Actually, I asked this as a separate question: Using a pull-up resistor vs INPUT_PULLUP / OUTPUT_PULLUP
    – Tom Hale
    Feb 12, 2019 at 10:19
  • @TomHale Those sensors are not getting better with more than 2 seconds in between. You should ignore everything that is written in the datasheet about accuracy, it is a bunch of nonsense. It is the sensing element that is unreliable. As far as I can tell, both of the libraries that you mention do not put the data line as output and high (that creates a shortcut). So both are okay. The internal pullup resistor of the arduino is between 30k and 50k, that value is too high to be reliable, and the value is different for different arduino boards. You can use it for a test, it will probably work.
    – Jot
    Feb 12, 2019 at 10:53
  • Cheers. FYI, the datasheet says 20K-50K, as shown the pull-up question.
    – Tom Hale
    Feb 14, 2019 at 10:23

Not the answer you're looking for? Browse other questions tagged or ask your own question.