yoyo 发表于 2012-2-25 22:18:22

DS18B20数字温度传感器的实验

本帖最后由 yoyo 于 2012-2-25 22:20 编辑

      基于DS18B20的数字温度传感器,可以用来对环境温度进行定量的检测。DS18B20数字温度传感器是美国DALLAS公司生产的总线数字温度传感器。其测温范围 -55℃~+125℃,固有测温分辨率0.5℃,支持多点组网功能,多个DS18B20可以并联组网,实现多点测温,测量结果以9~12位数字量方式串行传送。DS18B20数字温度传感器与Arduino专用传感器扩展板结合使用,可以非常容易地实现与环境温度感知相关的互动效果。

      (1)DS18B20与Arduino扩展板的连接
      DS18B20是数字温度传感器,所以要连接在数字口,数字口中间是VCC

      (2)DS18B20的开发与使用
      DS18B20使用1-Wire总线协议,只需一条数据线(加上地线)与MCU通信,因此要实现1-Wire总线协议,网上已经有开源实现提供。需要下载的两个库文件包:
      1、OneWire库:http://www.pjrc.com/teensy/td_libs_OneWire.html
      2、DallasTemperature库:http://milesburton.com/Dallas_Te ... ol_Library#Download
      将库文件下载后,解压到Arduino的\libraries目录下,重新启动Arduino开发界面后,就可以一起来测试DS18B20了,Arduino测试代码:

#include <OneWire.h>
#include <DallasTemperature.h>

//DS18B20传感器连接在Arduino的2号数字口
#define ONE_WIRE_BUS 2

// 创建oneWire实例
OneWire oneWire(ONE_WIRE_BUS);

// 传递oneWire引用给Dallas Temperature
DallasTemperature sensors(&oneWire);

void setup(void)
{
// 设置波特率,注意要统一,不然乱码
Serial.begin(9600);

// 启动类库
sensors.begin();
}

void loop(void)
{
// 请求总线上的设备
sensors.requestTemperatures();

// 在Arduino串口监视器上显示温度
Serial.print("Temperature for Device 1 is: ");
// 可以支持多个传感器,取第一个传感器的温度
Serial.println(sensors.getTempCByIndex(0));
}

页: [1]
查看完整版本: DS18B20数字温度传感器的实验