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%,温度-20度到+60度;可在arduino上使用。 可提供源程序以及原理图.

量产方案要注意防潮处理。虽然DHT11标称湿度范围5%-95%,但长期处于高湿环境会导致探针氧化。有个骚操作:在传感器表面涂覆纳米防水层(比如氟素涂料),实测可将使用寿命延长3倍以上。

最后提醒:别用杜邦线!别用杜邦线!别用杜邦线!重要的事情说三遍。量产时直接焊接到PCB上,信号线长度不要超过20cm。曾经有个血泪教训——某批次产品因为杜邦线接触不良导致返修率高达30%,都是泪啊...

(原理图及完整代码包请私信获取,评论区见)

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐