DS18B20:液体温度传感器

DS18B20

有各种湿度和温度传感器,例如 LM35。 一些内置于模块中的模块可用于Arduino。 但通常,它们将测量干燥温度,即空气温度。 但是有一个具体的模型适用于 测量液体中的温度,称为DS18B20。 对于一些更奇特的DIY项目,可能会派上用场,在这些项目中,您还需要使用某种类型的液体,因此您需要了解此参数。

实际上,DS18B20不仅可以测量液体内部的温度,而且可以非常有效地测量液体中的温度。 潮湿的环境以及一些液体下。 因此,如果环境中充满了湿气,您也可以使用它来测量空气温度。 正如我所说,将其浸入液体中以测量其温度的功能是使其实用性极高的功能之一。

什么是DS18B20?

好吧,我认为它已经很清楚了,它是一种能够测量气体或液体介质温度的电子传感器。 此外,还有 不同的封装或DS18B20的封装,例如您在主图片中看到的基本图片,也可以将其集成到某些PCB,潜水探头等中。 对于您的项目,您应该根据需要选择最合适的格式。

例如,除了典型的TO-92外,还有microSOP。 可能整合 使用Arduino最合适的是TO-92 由于具有三个销钉,因此很容易插入面包板进行连接。

引脚

DS18B20引脚

El DS18B20引脚排列 很容易识别。 例如,以最受欢迎的Dallas TO-92封装为参考,您会看到它具有三个引脚。 如果从正面放置,即将圆角部分向后看标记出现的平面,则左侧的针脚为1,右侧的针脚为3。因此,1表示GND。或接地,2表示数据,3表示电源电压。

在这里,我们不得不说, 您应该知道的价值观:

  • 引脚1:您必须将其连接到Arduino的GND引脚,即0v。
  • 引脚2:该引脚是DQ或数据,该引脚将通过称为1-Wire的特定协议将传感器测得的温度发送给Arduino,并且需要Arduino IDE的特殊库和功能。 这将只允许使用一个Arduino引脚以该协议连接多个传感器...
  • 针脚3:可以从3到5,5v供电,因此您可以将其连接到Arduino的5v输出。

DS18B20技术特性和数据表

一如既往 有趣的是知道技术特征 传感器要知道它是如何工作的,以免损坏它,最重要的是让我们知道它的测量极限在哪里,因为如果我们要测量的值不在它们之间,将无济于事您应该寻找另一种选择。

为此,最好下载一个 制造商数据表就像达拉斯的那个 你可以在这里看到。 在那里,您将找到所有必要的信息。 请记住,尽管所有DS18B20可能都相似,但根据制造商或包装的不同,您可能会发现一些变化...

但是,不管有什么怪癖,这里有一些 基本技术数据:

  • 温度范围:-55至125ºC,因此它可以在非常低的温度和高温下以气体或液体形式进行测量。
  • 失误:DS18B20对可能会在测量中给出错误值的外部噪声或干扰敏感。 误差范围为正负2ºC,尽管在-10ºC至85ºC之间的温度下,也就是说,当我们未接近极限时,误差可能仅为半度。
  • 决议:您可以使用Arduino模拟引脚检测到的几种分辨率或最小变化。 支持9位,10位,11位和12位(默认)。 也就是说,它的测量范围为半度到半度,四分之一到四分之一度,0,125至0,125ºC或0,0625ºC。 您可以通过编程代码更改此编程。
  • 电源电压:3至5,5v
  • 价格:1至3€

与Arduino集成

Arduino连接图-ds18b20

虽然有 各种连接方式,最合适的是您在此图中看到的那个。 这很简单,在Arduino板的相应连接中使用GND引脚,电源相同,然后将数据发送到您在Arduino IDE的编程代码中选择的Arduino模拟信号。 但是,最好设置一个4,7k的上拉电阻(如果传感器探头电缆的距离较大,则电阻应较低,例如对于5m的3,3k,10的2,2、XNUMXk等)。用于数据引脚,因此始终保持高电平。

在Arduino IDE中进行编程 以及与DS18B20的良好集成以及非常特殊的协议,建议您下载库 达拉斯温度 y 单线 来自环境。 和基本代码一样,我可能会显示以下示例:

#include <OneWire.h>
#include <DallasTemperature.h>

// Pin donde se conecta el bus 1-Wire (DQ)
const int pinDatosDQ = 9;

// Instancia a las clases OneWire y DallasTemperature
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);
 
void setup() {
    // Iniciamos la comunicación serie a 9600 baudios
    Serial.begin(9600);
    // Iniciamos el bus 1-Wire del sensor
    sensorDS18B20.begin(); 
}
 
void loop() {
    // Indicamos que tome la temperatura
    Serial.println("Midiendo temperatura");
    sensorDS18B20.requestTemperatures();
 
    // Lee y muestra la temperatura (recuerda que puedes conectar más de uno con 1-wire)
    Serial.print("La temperatura del sensor 0 es de: ");
    Serial.print(sensorDS18B20.getTempCByIndex(0));
    Serial.println(" C");
    Serial.print("La temperatura del sensor x es de: ");
    Serial.print(sensorDS18B20.getTempCByIndex(1));
    Serial.println(" ºC");
    
    delay(1000); 
}

更多信息 - Arduino编程手册(免费PDF)


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。