ds18b20温度传感器温度转换的代码逻辑
时间: 2023-07-09 19:08:02 浏览: 158
DS18B20温度传感器的温度转换包含以下步骤:
1. 发送启动转换命令:主机向DS18B20发送启动转换命令,即发送一个低电平脉冲,然后拉高总线,等待转换完成。
2. 等待转换完成:DS18B20开始进行温度转换,需要一定时间完成。转换时间取决于精度设置,一般为750ms,但也可以设置为更短的时间。
3. 发送读取命令:转换完成后,主机向DS18B20发送读取命令,即发送一个低电平脉冲,然后拉高总线。
4. DS18B20返回温度值:DS18B20将温度值以序列化方式返回给主机,主机通过解析序列化数据获取温度值。
以上是DS18B20温度传感器温度转换的基本流程,具体代码实现如下:
```c
#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)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
// After we got the temperatures, we can print them here.
// We use the function ByIndex, and as an example get the temperature from the first sensor only.
float tempC = sensors.getTempCByIndex(0);
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(tempC);
}
```
其中,使用了OneWire库和DallasTemperature库来读取DS18B20温度传感器的温度值。具体实现过程为:
1. 在setup函数中,启动串口通信并初始化sensors对象。
2. 在loop函数中,调用sensors.requestTemperatures()函数发出温度请求命令,并等待转换完成。
3. 调用sensors.getTempCByIndex(0)函数获取温度值,并通过串口输出。
阅读全文