18B20作为用途最广精度不错的热传感器常常被用在各种应用和实验中,当然,也因为其价格低廉,否则,想用也不是很方便,至少做实验的时候成本不能太高。关于热传感器的介绍可以参看《Arduino传感器专题
在这里插入图片描述
在这里插入图片描述
传感器18B20的中间管脚为信号,一定要在信号与高电平之间接一个1K以上的电阻(这里给的电阻是4.7K)。
实物连接图
在这里插入图片描述
程序结构如下:
在这里插入图片描述

代码如下:

#include "OneWire.h"
#include "DallasTemperature.h"

OneWire onewire;
DallasTemperature ds18b20(&onewire);

void setup(){
  Serial.begin(115200);
  onewire.select(4);
  ds18b20.begin();

}

void loop(){
  ds18b20.requestTemperatures();
  Serial.println(String("Temp") + String("=") + String(ds18b20.getTempCByIndex(0)));
  delay(1*1000);

}

通过上述代码我们知道,主要参与驱动的是DallasTemperature.h,其中OneWire.h只是为生成oneWire对象,为DallasTemperature的初始化提供一个OneWire类型的参数而已。
DallasTemperature在后续使用中必须通过begin方法和requestTenperatures方法开启获取温度参数模式。最终通过getTemp?CByIndex来获取指定设备序号的温度值。

#include "OneWire.h"
#include "DallasTemperature.h"

#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup(void)
{
Serial.begin(9600);
Serial.println("Begin get temp!");
Serial.println();
sensors.begin();
delay(5000);
}

void loop()
{
sensors.requestTemperatures();
Serial.print("Temperature : ");
Serial.println(sensors.getTempCByIndex(0));
delay(1000);
  }

用手指触摸改变温度,效果如下:
在这里插入图片描述
别看这个电路简单,程序简单,可应用的场景是比较丰富的,许多常见的温控电路都可以利用它来完成,比如米酒发酵的温度控制、鸡鸭禽类的孵化器温控都可以用上面的控制来实现。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐