在本教程中,您将学习如何将DS18B20温度传感器与Arduino配合使用。
温度将打印在Arduino IDE的串行监视器上。
目录
第一步 材料准备
对于这个项目,您将需要:
- Arduino uno
- 面包板
- DS18B20温度传感器
- 4.7K电阻
- 若干导线
第二步 原理介绍
DS18B20通过1-Wire总线进行通信,根据定义,只需要一条数据线(和地线)与Arduino进行通信。它的工作温度范围为-55°C至+ 125°C,在-10°C至+ 85°C的温度范围内精确到±0.5°C。此外,DS18B20可以直接从数据线获得电源(“寄生电源”),无需外部电源。
每个DS18B20都有一个独特的64位串行代码,允许多个DS18B20在同一条1-Wire总线上运行。因此,使用一个微处理器来控制连接的多个DS18B20很简单。可以从此功能中受益的应用包括HVAC环境控制,建筑物内部的温度监控系统,设备或机器,以及温度控制系统。
基本特征:
独特的1-Wire接口仅需一个端口引脚即可实现通信
每个器件都有一个存储在板载ROM中的唯一64位串行代码
不需要外部组件
可以从数据线供电; 电源范围为3.0V至5.5V
测量温度范围为-55°C至+ 125°C(-67°F至+ 257°F)
±0.5°C精度-10°C至+ 85°C
第三步 电路连接
上面的电路连接可以连接到面包板上。
- 传感器的Vcc和GND引脚 – > Arduino的VCC和GND
- 信号(中间引脚) – > Arduino引脚2
- 信号引脚与4.7K电阻串接到5V引脚,如上图所示
第四步 编写程序
[scu name=”arduino-ide-post” platform=”arduino:avr:uno”]
/* Arduino DS18B20温度传感器教程
*/
//Include libraries
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600); //Begin serial communication
Serial.println("Arduino Digital Temperature // Serial Monitor Version"); //Print a message
sensors.begin();
}
void loop(void)
{
// Send the command to get temperatures
sensors.requestTemperatures();
Serial.print("Temperature is: ");
Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire//Update value every 1 sec.
delay(1000);
}
[/scu]
在上面的程序中:
Serial.println(sensors.getTempCByIndex(0)); 摄氏温度返回温度 Serial.println(sensors.getTempFByIndex(0)); 以华氏温度返回温度
第五步 上传与验证
程序上传之后,可以从串口监视器查看到当前测得的温度。
除了本教程的那种温度传感器,还有一种版本是防水的,可以用来测水温,如下图所示,如果没有也可以用下面的那种替代: