DS18B20是一款高精度的单总线数字温度传感器,具体参数如下表所示:
参数名称 | 参数特性 |
测温范围 | -55~125℃ |
测量精度 | 在-10~85℃范围内的误差为±0.5℃ |
分辨率 | 9~12位数字信号,分辨率分别为0.5℃、0.25℃、0.125℃和0.0625℃ |
通信方式 | 测量结果直接输出数字温度信号,以“一根总线”串行传送给MCU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。每个DS18B20都有独立唯一的64位ID,此特性使得开发者可以将任意多的DS18B20挂载到一根总线上,通过ROM搜索读取相应DS18B20的温度值。 |
元件
接线
DS18B20 | Arduino Uno |
VCC | 5v |
DQ | 10 |
GND | GND |
开发环境配置
1.选择“Arduino Uno”开发板
2.安装OneWire和DallasTemperature库:
代码
#include <OneWire.h>
#include <DallasTemperature.h>// 数据输出脚接开发板数字引脚10
#define ONE_WIRE_BUS 10OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature ds18b20(&oneWire);void setup(void)
{Serial.begin(9600);ds18b20.begin();
}void loop(void)
{ ds18b20.requestTemperatures(); // 发送命令获取温度Serial.println(ds18b20.getTempCByIndex(0),4); delay(500);
}
现象
程序运行后,串口输出测得的温度值: