电子说
步骤1:DS18B20的简要介绍数字温度传感器IC
DS18B20是一款能够测量温度并提供直接数字信号的温度传感器IC,即与LM35等其他温度传感器不同,它可以直接发送温度读数到任何微处理器,微控制器或个人计算机。
主要功能:-
****可测量-55°C至+ 125°C(-67°F至+257)的温度°F)±0.5°C -10°C至+ 85°C的精度
****可以在9位至12位数字信号之间设置测量精度(不影响读取时间) )。
**它具有警报功能,具有用户可编程的上下触发点,非易失性。即,当温度达到某个较低或较高的阈值设定点时,可以将其编程为触发外部警报或恒温器以分别指示或控制任何外部设备。即使传感器断电,这些设定点仍保留在其存储器中。
**它通过1-Wire®总线进行通信,根据定义,该总线仅需要一条数据线(和地线)即可与之通信。
**此外,DS18B20可以直接从数据线获取电源(“寄生电源”),而无需外部电源。
**如果要使用外部电源运行,则可以在+3.0 V至+ 5.5V之间运行。这使其与3.3V IC(如Arduino Due,esp8266等)以及5V IC(如Arduino Uno,Nano等)兼容。
**每个DS18B20都有唯一的64位串行代码,该代码可允许多个DS18B20可在同一1-Wire总线上工作。因此,使用一个微处理器控制分布在大面积上的许多DS18B20很简单。
**不需要外部电路,除了某些情况下需要10k上拉电阻。
可以从此功能中受益的应用包括HVAC环境控制,温度监控系统
步骤2:DS18B20引脚连接
DS18B20来了以不同的形式包装。它以IC或ebay,aliexpress等形式出现,我们可以找到非常便宜的封装版本。我使用的是从aliexpress.com订购的钢封装(在我的博客上提供的链接以及此说明的结尾)
**如果您使用的是TO-92封装,即显示的裸IC表格在附加的图像中,引脚排列为-左接地,中间DQ或数据,右VCC(我分别将这些行编码为黑色,黄色,红色以匹配封装形式的导线编码)
**通常,黑色线是接地线,红色是+ ve VCC(+3.0至+ 5.5V),黄色线是DQ或数据线。在我们的情况下,红色线将达到NodeMCU的+ 3.3V或外部电源具有3.3V稳定电压。
**在黄色DQ线和+ VCC之间连接了一个大约4.7K欧姆的上拉电阻(可以使用接近4.7K的任何其他值)(有时,
** DQ或数据(黄色)线应连接到我们的微控制器,即NodeMCU数字输入引脚。在我们的情况下,它连接到D1或GPIO 5 [注意-NodeMCU板和实际ESP8266 IC的引脚映射不同,请参阅我以前的说明以了解NodeMCU,ESP8266和Arduino IDE之间的引脚映射的详细信息]
另一个重要说明-避免将DQ或数据线连接到NodeMCU的D0引脚,我注意到,如果我们将DQ线与D0处的外部上拉相连,则在编程/上载代码时会出错针/GPIO16。
第3步:使用NodeMCU连接OLED显示屏(在SPI模式下)
最初,我在努力使自己的体积变得很小OLED显示器可与NodeMCU一起使用。经过大量的努力,终于找到了正确的引脚连接,如图所示。
我在这里和这里都使用了Adafruit OLED显示库。您需要首先安装这两个库才能使OLED显示器正常工作。
注-我尝试过几次将自己喜欢的U8GLIB库用于OLED显示器,但是失败了。最后,我在某处读到了使用arduino IDE与ESP8266接口的U8GLIB库存在一些问题。如果您正在使用ESPLORER之类的其他IDE,那么u8GLIB可以正常工作-如我的视频所示。
不要忘记在代码中调用的构造函数中插入正确的引脚号。
#define OLED_SDA D7//MOSI
#define OLED_SCL D5//CLK
#define OLED_DC D4//DC
#define OLED_CS 12//不需要将任何东西连接到此引脚,只需使用一些引脚号
#define OLED_RESET D3//RES
//这是构造函数来调用
Adafruit_SSD1306显示屏(OLED_SDA,OLED_SCL,OLED_DC,OLED_RESET,OLED_CS);
有关接口的更多信息,请参见我的博客文章和youtube视频。
步骤4:整个系统的电路图
最终的完整电路图如图所示。
我已经通过NodeMCU的3.3V输出为DS18B20和OLED显示器供电。您也可以使用外部电源。
一些有时会遇到问题的技巧-
因为,esp8266是耗电设备,如果您遇到无法上传草图的问题,只需断开DS18B20 VCC引脚,直到草图完全上传即可上载草图后再重新连接。
OR
我注意到,即使成功上传了草图几次,显示剂量仍会显示任何温度。一种解决方案是在上载草图后重新启动NodeMCU。可以通过按NodeMCU上的Reset(重置)按钮或仅移除VCC或USB电缆并重新连接来完成电源重置。
第5步:代码/草图,库和链接
在此处可以找到arduino IDE的工作代码(带有注释-解释)。我的博客文章或以下.ino文件附件。
该项目中使用的所有库也都附在
下的.rar文件中(或者您可以使用以下链接下载库)
可在此处获得最新的Arduino IDE
https://www.arduino.cc/en/Main/Software
------- -------------------------------------------------- -------------------------------------------------- -----------------
用于arduino IDE和DS18B20的库在此处作为达拉斯温度库提供。
https://github.com/milesburton/Arduino-Temperature 。..
Adafruit的OLED显示库可在此处和此处
https://github.com/adafruit/Adafruit_SSD1306
https://github.com/adafruit/Adafruit-GFX-Library
在上传草图之前安装所有这三个库
---------------------------------------- -------------------------------------------------- -
DS18B20购自banggood.com的aliexpress和nodeMCU
第6步:最终示例和与商用温度传感器的比较
我检查了我们系统测量的OLED显示屏上显示的温度,并将其与商用温度传感器读取的温度进行了比较。温度测量在很大的温度范围内都非常准确。显然,我无法达到极低的温度。
附带的图像是将传感器保存在盛有冰的碗中(1.1°C)的读数,当传感器使用点烟器加热(127°C)时显示温度。请注意,DS18B20的工作温度范围为-55°C至+ 125°C(-67°F至+ 257°F)
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !