欢迎光临散文网 会员登陆 & 注册

Arduino DS18B20温度传感器测温实验

2023-06-16 12:06 作者:南冥的鸟  | 我要投稿

1.1 介绍: 

这是一个常用的18B20温度传感器,它主要采用DS18B20传感器元件。该元件是美国DALLAS公司生产的总线数字温度感测元件。它支持多点组网功能,即多个DS18B20可以并联在唯一的三线上,实现多点测温。DS18B20 的核心功能是直接数字测温,分辨率是 9,10,11,12 位,用户可配置的,对应的温度分度分别是 0.5°C, 0.25°C, 0.125°C, 和0.0625°C,上电后的默认分辨率是 12 位。它的测量结果以9-12位数字量方式串行传送,测温范围是55℃~+125℃。

1.2 模块相关资料:

程序例程前往下载链接:https://sourl.cn/WMrUjV

1.3连接图  

1.4测试代码     

Arduino IDE测试程序

#include <OneWire.h>

int DS18S20_Pin = 3; //定义数字口3

OneWire ds(DS18S20_Pin);

void setup(void) {

  Serial.begin(9600); //设置波特率

}

void loop(){

  float temperature = getTemp(); //调用函数计算温度值

  Serial.println(temperature); //显示温度值,并自动换行

  delay(100); //延迟0.1S 

 

}

float getTemp() {

  //returns the temperature from one DS18S20 in DEG Celsius

  byte data[12];

  byte addr[8];

  if (!ds.search(addr)) {

    //no more sensors on chain, reset search

    ds.reset_search();

    return -1000;

  }

  if ( OneWire::crc8(addr,7)!=addr[7]) {

    Serial.println("CRC is not valid!");

    return -1000;

  }

  if ( (addr[0] !=0x10) && (addr[0] != 0x28)){

    Serial.print("Device is not recognized");

    return -1000;

  }

  ds.reset();

  ds.select(addr);

  ds.write(0x44, 1); // start conversion, with parasite power on at the end

  byte present = ds.reset();

  ds.select(addr);

  ds.write(0xBE); // Read Scratchpad  

  for (int i = 0; i < 9; i++) { // we need 9 bytes

    data[i] = ds.read();

  }

  ds.reset_search();

  byte MSB = data[1];

  byte LSB = data[0];

  float tempRead = ((MSB << 8) | LSB); //using two's compliment

  float TemperatureSum = tempRead / 16;

  return TemperatureSum;

}


Mixly测试程序

 


scartch测试程序

 


1.5测试结果

按照上图接好线,烧录好代码,上电后,通电后,我们可在软件串口监视器中看到当前环境温度值,如下图。


 

 


Arduino DS18B20温度传感器测温实验的评论 (共 条)

分享到微博请遵守国家法律