测量温度和湿度非常普遍 在许多电子制造商项目中。 在DIY中,通常必须测量这些参数以控制某些系统。 例如,要能够创建在温度或湿度达到一定值时启动的制冷,植物护理或空调系统。 但是,要做到这一点,您需要像DHT11这样的传感器。
在市场上 有很多传感器 不同的温度范围,支持的温度范围或精度不同。 一个例子是 LM35,最受欢迎和在电子产品中使用的之一。 还有其他湿度传感器会通过改变电导率起作用,例如Analog Devices的AD22103KTZ。 但是,如果您想同时测量这两个参数,那么也许我们今天在本文中讨论的设备会引起更多关注...
什么是DHT11?
El DHT11是一种简单的传感器,可测量温度和湿度, 一体。 A)是的 您将不必购买两个传感器 分别地。 它的价格约为2欧元,因此相当便宜,尽管您也可以将其安装在模块上(安装在PCB上以便于使用),这与Arduino的此类电子组件一样。 就板子而言,它包括一个5千欧的上拉电阻和一个向我们发出警告的LED。
DHT11有 经过校准的数字信号,具有很高的可靠性和稳定性。 另外,如果您查看它的数据表,将会发现它具有有趣的功能,如以后的部分所述。
同类产品
您可能会对与DHT11类似的产品感兴趣。 这是 DHT22。 它也是一个集成的温度和湿度传感器,但在这种情况下,它的价格要高一些,约为4欧元。 与DHT5一样,温度测量的精度也有11%的变化,但与之不同的是,它的测量范围超出了20%至80%的湿度范围。 因此,对于需要测量22%到0%湿度的项目,您可能对DHT100感兴趣。
La 数据采集频率 它也是DHT11的两倍,在DHT22中每秒采集2个样本,而不是DHT1每秒11个样本。 至于温度,它可以测量从-40ºC到+125ºC的精度,因为它可以测量几分之一度,特别是它可以欣赏正负0,5ºC的变化。
引脚排列,功能和数据表
您可以找到有关 数据表中的DHT11。 该设备的每个制造商都可以提供一些可能有所不同的值,因此我总是建议您阅读所购买设备的特定制造商的PDF。 尽管大多数值对您来说看起来都是一样的,但彼此之间可能会有一些细微的差异。 其最重要的技术特征是:
- 3,5v至5v电源
- 2,5mA电流消耗
- 数字量输出信号
- 温度范围为0ºC至50ºC
- 25ºC下大约2ºC变化的温度测量精度
- 测量温度的分辨率为8位,1ºC
- 湿度可从20%RH到90%RH
- 在5-0ºC之间的温度下,准确地用于50%RH的湿度
- 分辨率为RH的1%,无法拾取低于该值的变化
- Mouser数据表
关于数据, 数字广播。 因此,没有必要像其他传感器一样从模拟转换为数字。 这使在Arduino IDE中编写代码变得很复杂,但是在这种情况下,则不需要它,并且变得容易得多。 尽管传感器本身是模拟的,但它包含执行转换的系统,可以直接连接到Arduino的数字输入。
来自传感器的模拟信号(电压的变化)被转换为数字格式,然后发送到Arduino微控制器。 传输到 40位帧 与DHT11捕获的湿度和温度信息相对应。 前两组8位用于湿度,即该帧的最高16位。 然后其余2个其余的8位组用于温度。 也就是说,它有两个字节用于湿度,两个字节用于温度。 例如:
0011 0101 0000 0010 0001 1000 0000 0000 0011 1001
在这种情况下,0011 0101 0000 0010是湿度值,0001 1000 0000 0000是温度。 第一部分是整数部分,第二部分是小数。 至于0011 1001,即 最后8位是奇偶校验 避免错误。 这样,您可以在传输过程中检查一切是否正确。 它对应于先前位的总和,因此,如果总和等于奇偶校验,它将是正确的。 在我所举的示例中,它不是,因为如您所见,它并不对应……这将指示失败。
一旦知道了这一点,DHT11的下一个技术水平就是引脚。 这 接触或引出线 该设备的配置很简单,因为它只有4个。 其中一个引脚用于电源或Vcc,另一个引脚用于I / O传输数据,一个不连接的NC引脚,以及一个GND用于接地。
与Arduino集成
一旦您知道了DHT11的引脚以及 Arduino开发板,连接非常简单。 请记住,如果您选择了集成到PCB中的DHT11模块,则引脚将为三个,因为去掉了NC,使事情变得更加容易。 您所要做的就是将接地引脚连接到Arduino的GND连接之一,如上图所示。
另一方面,电源引脚应连接到 来自Arduino的5v连接, 因此,传感器将通过GND和Vcc完全供电,但是现在数据丢失了。 要将数据从DHT11传感器传输到Arduino板,您可以使用任何数字输入,例如图像中显示的7。现在,一旦创建了必要的Arduino IDE,您就可以使用它了。代码...
如果传感器在您的项目中距离较远,并且您要使用长度超过20米的电缆,请使用5k上拉电阻,对于较大的电缆,它应成比例地更大。 请注意,如果您使用3,5v电源而不是5v,则由于电压降,电缆的长度不应超过20cm。
请记住,他们推荐的是 每5秒钟进行一次测量, 尽管DHT11可以工作的采样频率更高,但是如果更频繁地进行采样,则可能不那么准确。
Arduino IDE中的代码
直接进入代码,说 Arduino IDE 您可以使用许多具有DHT11功能的现有库,这些功能将使您的生活更轻松。 例如,其中之一是 提供Adafruit。 请记住,我们有一个以PDF格式的Arduino开头的初学者指南,您可以 从这里免费下载 它可以为您提供帮助。
一旦安装了相应的库,您就可以注释 输入验证码 使用Arduino控制您项目的DHT11温湿度传感器。 例如:
#include "DHT.h" const int DHTPin = 7; DHT dht(DHTPin, DHTTYPE); void setup() { Serial.begin(9600); Serial.println("Midiendo..."); dht.begin(); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Fallo en la lectura del sensor DHT11"); return; } Serial.print("Humedad relativa: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatura: "); Serial.print(t); Serial.print(" ºC "); }