本帖最后由 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));
}
|