DS18B20温度采集
时间: 2023-09-10 18:11:28 浏览: 89
DS18B20是一种数字温度传感器,可以通过一根3线的串口总线来进行通信。它的工作电压范围为3V-5.5V,测量范围为-55℃到+125℃,精度为±0.5℃。
下面是一个简单的DS18B20温度采集的程序示例:
```c
#include <OneWire.h> //引入OneWire库
#define ONE_WIRE_BUS 2 //定义数据线接口为2
OneWire oneWire(ONE_WIRE_BUS); //实例化OneWire对象
void setup() {
Serial.begin(9600); //初始化串口
}
void loop() {
byte data[12];
byte addr[8];
if (oneWire.search(addr)) { //查找DS18B20设备
if (OneWire::crc8(addr, 7) != addr[7]) { //校验地址
Serial.println("CRC is not valid!");
return;
}
}
else {
Serial.println("No DS18B20 found!");
return;
}
oneWire.reset(); //复位总线
oneWire.select(addr); //选中设备
oneWire.write(0x44); //启动温度转换
delay(1000); //等待转换完成
oneWire.reset(); //复位总线
oneWire.select(addr); //选中设备
oneWire.write(0xBE); //读取寄存器
for (byte i = 0; i < 9; i++) {
data[i] = oneWire.read(); //读取数据
}
int16_t raw = (data[1] << 8) | data[0]; //组合温度数据
float celsius = (float)raw / 16.0; //转换为摄氏度
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println(" C");
delay(1000); //延时1秒
}
```
需要注意的是,DS18B20的数据线需要连接到Arduino的数字引脚上,同时需要在程序中定义数据线接口的引脚。在程序中,我们使用了OneWire库来实现与DS18B20的通信。具体实现过程可以参考代码注释。
阅读全文