Arduino 中国 | Flamingo EDA

TAG | ds18b20

DS18B20是DALLAS公司推出的单线数字温度传感器,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内的精度为±0.5°C,由于其优越的性价比,因此在实际项目中被大量采用。同基于热敏电阻的温度传感器不同,使用数字温度传感器避免了复杂的换算,可以直接从传感中读出温度的数值。

由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,这对硬件上并不支持单总线协议的单片机来讲可是一个不小的麻烦,因为只能采用软件的方法来模拟单总线的协议时序,从而完成对DS18B20芯片的访问。听起来有点复杂,好在Arduino上已经有了相应的实现,并封装好了相应的库来让我们直接读出DS18B20的数据。

我们提供了DS18B20的电子积木模块,以方便在Arduino上的使用:

连接上依然使用的是通用传感器连接线和Arduino专用传感器扩展板V4,此处我们将数字温度传感器连接到了数字I/O第12号引脚上了:

硬件准备好之后,首先下载相应的软件包,并将其解压缩到Arduino安装目录下的hardware\libraries目录下:

重新启动Arduino之后,就可以在代码中使用这一为DS18B20量身打造的库了,下面是我测试时所使用的代码:

#include <DallasTemperature.h>

DallasTemperature tempSensor;

void setup(void) {
  Serial.begin(9600);
  tempSensor.begin(12); // DS18B20接在数字I/O第12号引脚上
}

void loop(void) {
    // 检查温度传感器是否正常工作
    switch(tempSensor.isValid())
    {
        case 1:
            Serial.println("Invalid CRC");
            tempSensor.reset(); // 重置温度传感器
            return;
        case 2:
            Serial.println("Not a valid device");
            tempSensor.reset(); // 重置温度传感器
            return;
    }

  // 从DS18B20读取温度值
  Serial.print(tempSensor.getTemperature());
  Serial.print("C");
  Serial.println();
}

在将代码下载到Arduino中并运行起来之后,打开Arduino的串口监视工具,我们就可以看到从数字温度传感器DS18B20中读出来的温度值了:

Hide

Find it!

Theme Design by devolux.org