CAT | 电路板
DS18B20是DALLAS公司推出的单线数字温度传感器,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内的精度为±0.5°C,由于其优越的性价比,因此在实际项目中被大量采用。同基于热敏电阻的温度传感器不同,使用数字温度传感器避免了复杂的换算,可以直接从传感中读出温度的数值。
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,这对硬件上并不支持单总线协议的单片机来讲可是一个不小的麻烦,因为只能采用软件的方法来模拟单总线的协议时序,从而完成对DS18B20芯片的访问。听起来有点复杂,好在Arduino上已经有了相应的实现,并封装好了相应的库来让我们直接读出DS18B20的数据。
我们提供了DS18B20的电子积木模块,以方便在Arduino上的使用:

连接上依然使用的是通用传感器连接线和Arduino专用传感器扩展板V4,此处我们将数字温度传感器连接到了数字I/O第12号引脚上了:

硬件准备好之后,首先下载相应的软件包,并将其解压缩到Arduino安装目录下的hardware\libraries目录下:
重新启动Arduino之后,就可以在代码中使用这一为DS18B20量身打造的库了,下面是我测试时所使用的代码:
#include <DallasTemperature.h> DallasTemperature tempSensor; void setup(void) { Serial.begin(9600); tempSensor.begin(12); // DS18B20接在数字I/O第12号引脚上 } void loop(void) { // 检查温度传感器是否正常工作 switch(tempSensor.isValid()) { case 1: Serial.println("Invalid CRC"); tempSensor.reset(); // 重置温度传感器 return; case 2: Serial.println("Not a valid device"); tempSensor.reset(); // 重置温度传感器 return; } // 从DS18B20读取温度值 Serial.print(tempSensor.getTemperature()); Serial.print("C"); Serial.println(); }
在将代码下载到Arduino中并运行起来之后,打开Arduino的串口监视工具,我们就可以看到从数字温度传感器DS18B20中读出来的温度值了:
Wiring元件清单
No tags
| 类型 | 标记 | 数量 | 规格 |
|---|---|---|---|
| USB转串口芯片 | IC3 | 1 | FT232BM |
| 电阻 | R1,R2 | 2 | 10K, 1/4W |
| 电阻 | R3,R4 | 2 | 27, 1/4W |
| 电阻 | R5 | 1 | 1.5K, 1/4W |
| 电阻 | R6 | 1 | 470, 1/4W |
| 电阻 | R7,R9,R10,R11,R12 | 5 | 1K, 1/4W |
| 电阻 | R8 | 1 | 220, 1/4W |
| LED | PWR | 1 | 绿, 3mm |
| LED | L | 1 | 红, 3mm |
| LED | TX,RX | 2 | 黄, 3mm |
| 电容 | C2,C3 | 2 | 22pF,独石 |
| 电容 | C1,C4,C5,C8,C9,C10,C11, | 7 | 100nF, 安规 |
| 晶振 | OSC | 1 | 6MHz oscillator, 3-pin |
| 电容 | C6,C7 | 2 | 100uF,电解 |
| 电源芯片 | power | 1 | 78M05 |
| 稳压二极 | D1 | 1 | 1N4004 |
| 石英晶振 | Q1 | 1 | 16MHz |
| 按钮 | S1 | 1 | 平 |
No tags
| 类型 | 标记 | 数量 | 规格 |
|---|---|---|---|
| 电阻 | R1 | 1 | 2K, 1/4W |
| 温敏电阻 | R2 | 1 |
No tags
| 类型 | 标记 | 数量 | 规格 |
|---|---|---|---|
| 电阻 | R1 | 1 | 10K, 1/4W |
| 电阻 | R2 | 1 | 15K, 1/4W |
| 电阻 | R3, R4 | 2 | 1K, 1/4W |
| 三极管 | T1 | 1 | BC547 |
| 电容 | C1 | 1 | 100nF, 独石 |
| 电容 | C2, C3 | 2 | 10uF, 电解 |
| 电源芯片 | IC1 | 1 | TLV2217-33 |
No tags

