DHT11量产方案,湿度为5%-95%,温度-20度到+60度;可在arduino上使用。 可提供源程序以及原理图.
玩过Arduino的小伙伴应该都接触过DHT11这个经典温湿度传感器。这货虽然便宜,但用起来偶尔会闹脾气——比如你正儿八经按照手册接线,它却给你返回个-999的蜜汁数值。今天咱们就来盘一盘怎么驯服这个倔强的小模块。
先上硬核干货,DHT11的工作电压3.3V-5V,数字信号输出,典型应用电路只需要在DATA脚接个4.7K上拉电阻。直接上代码:
#include <DHT.h> #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("读取失败!"); return; } Serial.print("湿度: "); Serial.print(h); Serial.print("%\t温度: "); Serial.println(t); }这段代码的关键在时序控制。DHT11采用单总线协议,启动时需要18ms的低电平唤醒信号。库函数虽然封装了底层操作,但实测发现延时设置直接影响成功率。有个野路子:在read函数前加个5ms的delay,能显著提升稳定性。
硬件连接有个隐藏bug点——当供电电压低于4.5V时,DATA脚可能会检测不到高电平。遇到过数据乱跳的同学可以掏出万用表量量电压,必要时在VCC和DATA之间加个1N4148二极管做电平匹配。
量产方案要注意防潮处理。虽然DHT11标称湿度范围5%-95%,但长期处于高湿环境会导致探针氧化。有个骚操作:在传感器表面涂覆纳米防水层(比如氟素涂料),实测可将使用寿命延长3倍以上。
最后提醒:别用杜邦线!别用杜邦线!别用杜邦线!重要的事情说三遍。量产时直接焊接到PCB上,信号线长度不要超过20cm。曾经有个血泪教训——某批次产品因为杜邦线接触不良导致返修率高达30%,都是泪啊...
(原理图及完整代码包请私信获取,评论区见)