【Arduino IDE】nodeMCU连接DS18B20数字温度传感器水温探测温线不锈钢封装防水型)

外观

在这里插入图片描述

测温原理

用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55摄氏度的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样初始化到-55摄氏度)的值增加,表明所测温度大于-55摄氏度。

1。温度系数振荡器是指一种振荡器,它的振荡频率与温度之间有一个特定的关系,即不同的温度对应不同的振荡频率。反之,测量出振荡器的输出频率,就可测量出温度值。
2.高温度系数振荡器:它的振荡频率受温度的影响很大,温度稍有变化,频率就会变化很多,即对温度敏感,多用于温度传感器。
3.低温度系数振荡器:它的振荡频率受温度的影响很小,即使温度变化很大,它的频率也基本不变。

同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到 0,如果门周期仍未结束,将重复这一过程。 斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。这是通过改变计数器对温度每增加一度所需计数的的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。

电路图

数据端——D4(GPIO口都可以,此处代码里面写的是D4)
负极端——GND
正极端——3V(本来应该用5V,但是我买的nodeMCU(天猫eixpsy)之前连5V的话就一直读不了参数,显示-127,查了很多资料,最后自己发现接3V的话就有信号输出)
一定记着上拉电阻10K
在这里插入图片描述

需要下载两个库

OneWire

在这里插入图片描述

DallasTemperature

在这里插入图片描述

代码

#include <OneWire.h>
#include <DallasTemperature.h>
 
#define ONE_WIRE_BUS D4

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);
 
void setup(void)
{
  Serial.begin(115200);
  Serial.println("Dallas Temperature IC Control Library Demo");
 
  sensors.begin();
}
 
void loop(void)
{
  Serial.print(" Requesting temperatures...");
  sensors.requestTemperatures(); 
  Serial.println("DONE");
 
  Serial.print("Temperature for Device 1 is: ");
  Serial.print(sensors.getTempCByIndex(0));  
  
  delay(1500);
}

效果

在这里插入图片描述

发布了151 篇原创文章 · 获赞 451 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/Caoyang_He/article/details/104633869