Arduino Nano v3搭配DHT11湿度传感器读数偏差的校准解决方法
廉价DHT11温湿度模块的校准踩坑记录
问题初现
最近我在eBay入了几款低价DHT11温湿度传感器模块,测试时却遇到了大问题:湿度读数严重不准,偏差足足有40个百分点!
一开始我换了两款不同的库(MySensors DHT库、Adafruit DHT库)测试,还先后换了两款传感器,结果湿度读数始终离谱,倒是温度读数一直正常——可我的项目偏偏需要准确的湿度数据。
MySensors库测试代码
#include "DHT.h" DHT dht; void setup() { Serial.begin(9600); Serial.println(); Serial.println("Status\tHumidity (%)\tTemperature (C)\t(F)"); dht.setup(2); // Data pin 2 } void loop() { delay(dht.getMinimumSamplingPeriod()); float humidity = dht.getHumidity(); float temperature = dht.getTemperature(); Serial.print(dht.getStatusString()); Serial.print("\t"); Serial.print(humidity, 1); Serial.print("\t\t"); Serial.print(temperature, 1); Serial.print("\t\t"); Serial.println(dht.toFahrenheit(temperature), 1); }
测试结果
我用其他设备和当地气象报告确认,实际环境湿度是82%,但传感器只显示40%。后来换了第三款传感器,依旧是40%左右的偏差;换成Adafruit库的测试代码后,读数还是和实际环境对不上。
解决:盐水化学校准
后来我参考了湿度校准的方法,尝试给传感器做化学校准:
- 先把传感器放在密封的浓盐水蒸汽环境中(没有直接接触盐水),放置6-8小时后,偏差还是有18个百分点;
- 加热盐水加速校准过程,传感器读数瞬间升到95%,静置1小时后,读数误差缩小到-3%,终于达到了项目的使用要求。
总结
原来这类廉价DHT11必须经过盐水化学校准,才能获得准确的湿度读数,这点在官方的校准资料里也有明确说明。
内容的提问来源于stack exchange,提问作者boobie
相关产品推荐
相关产品推荐

