查看: 12220|回复: 0
打印 上一主题 下一主题

DS18B20数字温度传感器的实验

[复制链接]
跳转到指定楼层
楼主
发表于 2012-2-25 22:18:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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));
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2011 - 2015 iRobo-我爱机器人 All rights reserved.  Powered by Discuz! X3.2 (京ICP备12000707号-1)     
快速回复 返回顶部 返回列表