欢迎光临
我们一直在努力

温湿度传感器DHT11 示例教程 适用于Arduino平台

1. 产品图片

2. 产品购买地址点我购买

3. 产品概述
此款传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。

4. 产品参数
工作电压 :3.3V-5v
尺寸大小:40mm x 28mm
重量大小:3g
信号类型:数字信号
供电电流:最大2.5mA
温度范围:0-50℃,误差±2℃
湿度范围:当环境温度在 0 ℃时为30-90%RH;当环境温度在25℃时为20-90%RH ;当环境温度在50℃时为20-80%RH
响应时间:1/e(63%) 6-30s
测量分辨率分别为:温度(8bit)湿度(8bit)
采样周期间隔:<1s

5. 引脚定义
DATA:信号引脚(接主控板数字引脚,示例中接2号引脚)
VCC:电源引脚(接主控板5V)
GND:接地引脚(接主控板GND)

6. 示例程序

//中贝斯特UltiRobot温湿度DHT11模块示例教程
//程序效果:串口监视器显示当前环境温湿度数值
//淘宝店地址:zhongbest.taobao.com
//专业Arduino资料网站:www.arduino365.com


double Fahrenheit(double celsius)
{
return 1.8 * celsius + 32;
}    //摄氏温度度转化为华氏温度

double Kelvin(double celsius)
{
return celsius + 273.15;
}     //摄氏温度转化为开氏温度

// 露点(点在此温度时,空气饱和并产生露珠)
// 参考: http://wahiduddin.net/calc/density_algorithms.htm
double dewPoint(double celsius, double humidity)
{
double A0= 373.15/(273.15 + celsius);
double SUM = -7.90298 * (A0-1);
SUM += 5.02808 * log10(A0);
SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
SUM += log10(1013.246);
double VP = pow(10, SUM-3) * humidity;
double T = log(VP/0.61078);   // temp var
return (241.88 * T) / (17.558-T);
}

// 快速计算露点,速度是5倍dewPoint()
// 参考: http://en.wikipedia.org/wiki/Dew_point
double dewPointFast(double celsius, double humidity)
{
double a = 17.271;
double b = 237.7;
double temp = (a * celsius) / (b + celsius) + log(humidity/100);
double Td = (b * temp) / (a - temp);
return Td;
}

#include <dht11.h>//程序中调用了dht11的库

dht11 DHT11;//定义一个名字叫做DHT11,类型为dht11的值。

#define DHT11PIN 2//定义DHT11的引脚号为D2。

void setup()
{
Serial.begin(9600);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
}

void loop()
{
Serial.println("\n");

int chk = DHT11.read(DHT11PIN);

Serial.print("Read sensor: ");
switch (chk)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}

Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);

Serial.print("Temperature (oC): ");
Serial.println((float)DHT11.temperature, 2);

Serial.print("Temperature (oF): ");
Serial.println(Fahrenheit(DHT11.temperature), 2);

Serial.print("Temperature (K): ");
Serial.println(Kelvin(DHT11.temperature), 2);

Serial.print("Dew Point (oC): ");
Serial.println(dewPoint(DHT11.temperature, DHT11.humidity));

Serial.print("Dew PointFast (oC): ");
Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity));

delay(2000);
}


串口监视器如果出现checksum error的报错,请下载并使用“修改后的库文件”文件夹里的库文件替换原有库文件。(注意:使用修改后的库文件,请保持您的电脑里只有这个库文件,其他DHT11的库文件都删除。不然会失效。)

7. 注意事项
1、 这个传感器资料上说可以读到小数位,可我怎么也读不出来哦?
答:DHT11无小数部分,读回数据只有低8位有效,且是整数,低8位的最高位表示负号。
2、 温度和度湿的精度是否是一样的呢?
答:温度的精度是1%,湿度的精度达不到1%,只有正负5%。分辨率和精度是两回事。

8. 相关下载
百度网盘:点我下载

未经允许不得转载:Arduino-Maker » 温湿度传感器DHT11 示例教程 适用于Arduino平台

支付宝扫码打赏 微信打赏

原创文章,若帮到您,欢迎打赏

分享到:更多 ()

评论 3

评论前必须登录!

 

  1. #3

    Arduino:1.8.2 (Windows 7), 开发板:”Arduino/Genuino Uno”

    C:\Users\Administrator\Documents\Arduino\DHT11A\DHT11A.ino:38:19: fatal error: dht11.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    为开发板 Arduino/Genuino Uno 编译时出错。

    在文件 -> 首选项开启
    “编译过程中显示详细输出”选项
    这份报告会包含更多信息。

    编译错误 请问 怎么解决?

    davy2年前 (2017-05-27)
  2. #2

    检查您自己的程序

    arron2年前 (2017-05-31)
  3. #1

    出现:dht11.h: No such file or directory,就是dht11的库文件没有安装,本教程的最下面那个下载链接里面有。先安装库文件,再编译程序。

    颠覆的灵魂2年前 (2017-07-10)

线上商城

中贝斯特创客空间蘑菇云创客教育