☰
基于DS18B20的多功能温度监测系统实验报告
2026/10/13 2:40:00 网站建设 项目流程

实验报告:基于 DS18B20的多功能温度监测系统

一、实验目的

  1. 掌握 DS18B20 数字温度传感器的基本原理与使用方法
  2. 学习 LED 显示屏(如 TM1637 或 MAX7219)的驱动与控制
  3. 实现蜂鸣器、LED 二极管与温度传感器的联动控制
  4. 掌握面包板电路搭建与元器件连接技巧
  5. 设计一个完整的温度监测与报警系统

二、实验器材

序号器材名称规格/型号数量用途
1主控板Arduino Uno/Nano1系统控制核心
2温度传感器DS18B20(防水型可选)1温度采集
3LED显示屏TM1637 4位7段数码管1温度显示
4蜂鸣器有源/无源蜂鸣器1温度报警
5LED二极管5mm红色/绿色2状态指示
6面包板830孔/400孔1电路搭建
7杜邦线公对公/公对母若干线路连接
8电阻220Ω、4.7kΩ若干限流/上拉
9电源USB数据线/9V电池1系统供电

三、材料清单

以下是本实验所需的完整材料清单,包含所有元器件、连接线和辅助工具:

类别名称规格/型号数量单价(约)小计(约)备注
主控模块Arduino Uno开发板R3兼容版1¥25.00¥25.00也可用Arduino Nano
传感器模块DS18B20温度传感器防水型/不锈钢探头1¥8.00¥8.00单总线数字温度传感器
显示模块TM1637 4位数码管0.36英寸共阴1¥6.50¥6.50带驱动芯片,4位7段
报警模块有源蜂鸣器5V直流1¥2.00¥2.00长鸣型,给电即响
指示模块LED发光二极管5mm红色1¥0.20¥0.20高温报警指示
LED发光二极管5mm绿色1¥0.20¥0.20正常状态指示
电路基础面包板830孔/400孔1¥8.00¥8.00免焊接实验板
杜邦线公对公20根¥0.10¥2.00用于元器件连接
杜邦线公对母10根¥0.15¥1.50用于连接Arduino
电阻元件碳膜电阻220Ω 1/4W2¥0.05¥0.10LED限流电阻
碳膜电阻4.7kΩ 1/4W1¥0.05¥0.05DS18B20上拉电阻
电源系统USB数据线Type-B/Micro1¥5.00¥5.00Arduino供电与编程
9V电池6F22/6LR611¥8.00¥8.00可选,便携供电
电池扣9V电池扣1¥1.50¥1.50连接电池与面包板
辅助工具万用表数字式1--检测电路通断
剥线钳/剪刀-1--线材处理
镊子尖头1--精细操作

总计费用:约 ¥67.55元(不含辅助工具)

采购建议:

  1. 初学者套装:可直接购买Arduino入门套件,通常包含大部分元件
  2. 分项采购:可在淘宝、京东等平台按清单单独购买
  3. 替代方案:
    • 显示模块:可用1602 LCD屏替代TM1637(需调整程序)
    • 蜂鸣器:无源蜂鸣器需PWM驱动,程序需相应修改
    • 主控板:Arduino Nano体积更小,引脚兼容

注意事项:

  1. DS18B20建议选择防水型,适用环境更广
  2. 电阻功率选择1/4W即可,精度±5%足够
  3. 杜邦线建议多备一些,方便调试时更换连接方式
  4. 如使用9V电池供电,需注意电池续航时间(约4-6小时)

三、实验原理

3.1 DS18B20 温度传感器

DS18B20 是 Dallas 半导体公司生产的单总线数字温度传感器,具有以下特点:

  • 单总线接口:仅需一根数据线即可与 MCU 通信
  • 高精度:测量精度 ±0.5℃(-10℃~+85℃)
  • 宽量程:-55℃~+125℃
  • 数字输出:直接输出数字温度值,无需 AD 转换
  • 寄生供电:可从数据线获取电源,减少连线
3.2 LED显示屏工作原理

本实验采用 TM1637 驱动的 4 位 7 段数码管:

  • TM1637芯片:集成了显示驱动和键盘扫描
  • 通信协议:两线制(CLK、DIO)串行通信
  • 显示原理:通过扫描方式控制7段数码管各段亮灭
3.3 蜂鸣器与LED 控制
  • 蜂鸣器:有源蜂鸣器直接给电即响,无源蜂鸣器需要PWM驱动
  • LED 二极管:通过限流电阻控制亮度,防止电流过大损坏

四、电路连接图

五、连接器材演示

本节将详细展示如何将各个元器件连接到面包板上,并提供清晰的连接示意图和分步指导。

5.1 连接步骤详解

第一步:准备面包板与电源

  1. 将面包板平放在工作台上,识别正极(+)和负极(-)电源轨
  2. 使用杜邦线将 Arduino Uno 的 5V 引脚连接到面包板的正极电源轨
  3. 使用杜邦线将 Arduino Uno 的 GND 引脚连接到面包板的负极电源轨

第二步:连接 DS18B20 温度传感器

  1. 将 DS18B20 的 VCC(红线)插入面包板正极电源轨
  2. 将 DS18B20 的 GND(黑线)插入面包板负极电源轨
  3. 将 DS18B20 的 DQ(黄线)插入面包板任意行(如第15行A列)
  4. 在 DQ 引脚所在行和正极电源轨之间连接一个 4.7kΩ 上拉电阻

第三步:连接 TM1637 数码管显示屏

  1. 将 TM1637 模块的 VCC 引脚连接到面包板正极电源轨
  2. 将 TM1637 模块的 GND 引脚连接到面包板负极电源轨
  3. 将 TM1637 模块的 CLK 引脚连接到 Arduino 的 D3 引脚
  4. 将 TM1637 模块的 DIO 引脚连接到 Arduino 的 D4 引脚

第四步:连接蜂鸣器

  1. 将有源蜂鸣器的正极(长脚)连接到 Arduino 的 D5 引脚
  2. 将蜂鸣器的负极(短脚)连接到面包板负极电源轨

第五步:连接 LED 指示灯

  1. 绿色 LED(正常状态指示):
    • 将 LED 长脚(阳极)通过 220Ω 电阻连接到 Arduino 的 D6 引脚
    • 将 LED 短脚(阴极)连接到面包板负极电源轨
  2. 红色 LED(报警状态指示):
    • 将 LED 长脚(阳极)通过 220Ω 电阻连接到 Arduino 的 D7 引脚
    • 将 LED 短脚(阴极)连接到面包板负极电源轨
5.2 连接示意图

(此处预留面包板实际连接示意图位置)

图2:面包板实际连接示意图。图中清晰展示了各元器件在面包板上的布局和连接方式:

  1. 左侧区域:DS18B20 温度传感器及其上拉电阻
  2. 中部区域:TM1637 数码管显示模块
  3. 右侧区域:蜂鸣器和两个 LED 指示灯
  4. 电源轨:顶部红色线为正极(5V),蓝色线为负极(GND)
  5. Arduino 连接:通过杜邦线将面包板各信号点连接到 Arduino 对应引脚
5.3 连接检查清单

在通电前,请按以下清单检查所有连接:

检查项目正确连接常见错误检查方法
电源连接5V→正极轨,GND→负极轨正负极接反用万用表测量电压
DS18B20VCC→5V,GND→GND,DQ→D2缺少上拉电阻检查4.7kΩ电阻连接
上拉电阻DQ与5V之间有4.7kΩ电阻电阻值错误用万用表测量电阻值
TM1637VCC→5V,GND→GND,CLK→D3,DIO→D4CLK/DIO接反检查引脚对应关系
蜂鸣器正极→D5,负极→GND极性接反观察蜂鸣器标识
绿色LED阳极→D6→220Ω→5V,阴极→GND缺少限流电阻检查220Ω电阻连接
红色LED阳极→D7→220Ω→5V,阴极→GNDLED极性接反长脚为正,短脚为负
所有杜邦线插接牢固,无松动接触不良轻轻拉动检查
5.4 连接技巧与注意事项
  1. 面包板布局技巧:

    • 按功能分区布局:传感器区、显示区、报警区
    • 电源轨专线专用,避免交叉
    • 信号线尽量短,减少干扰
  2. 杜邦线使用建议:

    • 使用不同颜色区分功能:红色-5V,黑色-GND,黄色-信号线
    • 公对母线用于连接 Arduino 和面包板
    • 公对公线用于面包板内部连接
  3. 安全注意事项:

    • 连接完成后再通电
    • 通电前再次检查正负极
    • 避免短路,特别是电源正负极直接接触
  4. 调试建议:

    • 先连接电源和地线
    • 逐个模块连接并测试
    • 使用万用表检查关键点电压
5.5 实物连接效果展示

(此处预留系统整体实物连接图位置)

图3:系统整体实物连接图。展示了完整的实验装置连接状态,包括:

  • Arduino Uno 主控板与面包板的连接
  • 各元器件在面包板上的实际位置
  • 杜邦线的整齐布线
  • 电源线的连接方式

连接验证方法:

  1. 通电后,观察 TM1637 显示屏是否显示初始信息
  2. 触摸 DS18B20,观察温度显示是否变化
  3. 分别遮挡两个 LED,确认对应引脚控制正常
  4. 短接蜂鸣器控制引脚到 5V,确认蜂鸣器能响

完成以上连接后,系统硬件部分就准备就绪,可以进行软件烧录和功能测试了。

4.1 面包板布局示意图
+5V GND │ │ ┌──────┼────┼────┐ │ │ │ │ │ ┌───┴────┴──┐ │ │ │ 面包板 │ │ │ └───────────┘ │ │ │ └────────────────┘ 元器件连接位置: 1. DS18B20:VCC → 5V,GND → GND,DQ → D2(加 4.7kΩ 上拉) 2. TM1637:VCC → 5V,GND → GND,CLK → D3,DIO → D4 3. 蜂鸣器:+极 → D5,-极 → GND 4. LED1(正常):阳极 → D6 → 220Ω → 5V 5. LED2(报警):阳极 → D7 → 220Ω → 5V
4.2 接线表
元器件Arduino引脚面包板连接备注
DS18B20 VCC5V正极电源轨
DS18B20 GNDGND负极电源轨
DS18B20 DQD2数据线接4.7kΩ上拉电阻到5V
TM1637 VCC5V正极电源轨
TM1637 GNDGND负极电源轨
TM1637 CLKD3时钟线
TM1637 DIOD4数据线
蜂鸣器 +D5信号线
蜂鸣器 -GND负极电源轨
LED1 阳极D6通过220Ω电阻正常状态指示
LED2 阳极D7通过220Ω电阻报警状态指示
4.3 系统架构图

以下是基于DS18B20的多功能温度监测系统的整体架构图:

报警模块

显示模块

主控模块

传感器模块

温度数据

显示控制

报警控制

状态指示

DS18B20
温度传感器

OneWire总线

Arduino UNO
微控制器

GPIO引脚
D2-D7

TM1637
4位数码管

温度显示

蜂鸣器

声音报警

LED指示灯
(正常/报警)

视觉指示

5V电源

GND地线

该架构图展示了系统的四个主要模块及其连接关系:

  1. 传感器模块:DS18B20通过OneWire总线将温度数据发送给Arduino
  2. 主控模块:Arduino UNO处理数据并控制其他模块
  3. 显示模块:TM1637数码管实时显示温度值
  4. 报警模块:蜂鸣器和LED提供声光报警功能

五、程序设计

5.1 所需库文件
#include<Wire.h>#include<Adafruit_GFX.h>#include<Adafruit_SSD1306.h>#include<OneWire.h>#include<DallasTemperature.h>
5.2 引脚定义与初始化
// 显示屏参数#defineSCREEN_WIDTH128#defineSCREEN_HEIGHT64#defineOLED_RESET-1// 引脚定义#defineTEMP_PIN2// DS18B20 温度传感器数据线#defineBUZZER_PIN8// 蜂鸣器控制引脚// 温度报警阈值#defineALARM_TEMP30.0// 高温报警阈值// 对象初始化Adafruit_SSD1306display(SCREEN_WIDTH,SCREEN_HEIGHT,&Wire,OLED_RESET);OneWireoneWire(TEMP_PIN);DallasTemperaturesensors(&oneWire);
5.3 主程序代码
voidsetup(){// 设置蜂鸣器引脚为输出模式pinMode(BUZZER_PIN,OUTPUT);digitalWrite(BUZZER_PIN,LOW);// 初始化OLED 显示屏if(!display.begin(SSD1306_SWITCHCAPVCC,0x3C)){// 如果初始化失败,程序停止for(;;);}// 显示屏基础设置display.clearDisplay();display.setTextSize(1);display.setTextColor(WHITE);// 初始化温度传感器sensors.begin();}voidloop(){// 请求温度传感器读数sensors.requestTemperatures();floattemp=sensors.getTempCByIndex(0);// 清空显示屏display.clearDisplay();// 第一行:显示姓名display.setCursor(0,8);display.print("Name: 123");// 第二行:显示学号display.setCursor(0,22);display.print("ID: 456");// 第三行:显示温度值(保留1位小数)display.setCursor(0,30);display.print("Temp: ");display.print(temp,1);display.print(" C");// 第四行:显示状态并控制蜂鸣器display.setCursor(0,44);if(temp>ALARM_TEMP){// 高温报警状态display.print("!!! ALARM !!!");digitalWrite(BUZZER_PIN,HIGH);// 蜂鸣器响}else{// 正常状态display.print("Status: Normal");digitalWrite(BUZZER_PIN,LOW);// 蜂鸣器关闭}// 更新显示屏显示display.display();// 延迟500 ms后再次读取delay(500);}

六、实验步骤

6.1 硬件搭建
  1. 面包板准备:将面包板平放,识别正负极电源轨
  2. 电源连接:将 Arduino 的 5V 和 GND 分别连接到面包板正负极电源轨
  3. DS18B20 连接:
    • VCC(红线)→ 5V电源轨
    • GND(黑线)→ GND电源轨
    • DQ(黄线)→ Arduino D2引脚
    • 在DQ和5V之间连接4.7kΩ上拉电阻
  4. TM1637 连接:
    • VCC → 5V电源轨
    • GND → GND电源轨
    • CLK → Arduino D3引脚
    • DIO → Arduino D4引脚
  5. 蜂鸣器连接:
    • 正极(长脚)→ Arduino D5引脚
    • 负极(短脚)→ GND电源轨
  6. LED 连接:
    • LED1(绿)阳极 → 220Ω电阻 → Arduino D6引脚
    • LED1阴极 → GND电源轨
    • LED2(红)阳极 → 220Ω电阻 → Arduino D7引脚
    • LED2阴极 → GND电源轨
6.2 软件配置
  1. 安装 Arduino IDE(1.8.x或更高版本)
  2. 安装所需库:
    • 工具 → 管理库 → 搜索 “OneWire” → 安装
    • 搜索 “DallasTemperature” → 安装
    • 搜索 “TM1637” → 安装
  3. 将上述代码复制到新项目
  4. 选择正确板卡(Arduino Uno)和端口
  5. 点击上传按钮编译并烧录程序
6.3 功能测试
  1. 上电测试:连接USB电源,观察系统启动
  2. 温度显示测试:用手触摸DS18B20,观察显示屏温度变化
  3. LED指示测试:
    • 正常温度:绿色LED亮
    • 异常温度:红色LED亮
  4. 蜂鸣器报警测试:
    • 低温测试:用冰袋靠近传感器
    • 高温测试:用吹风机热风靠近传感器
  5. 串口监视:打开串口监视器(波特率9600),查看温度数据

七、实验结果与分析

效果演示图:
图1:系统实物运行效果图。图中展示了完整的实验装置:Arduino Nano主控板、DS18B20温度传感器、LED数码管显示屏、蜂鸣器和LED指示灯。显示屏实时显示当前温度,当温度超过设定阈值时,红色LED亮起并触发蜂鸣器报警。

7.1 实验现象记录
测试条件显示屏显示LED状态蜂鸣器串口输出
室温环境25.3 °C绿灯亮无声“当前温度: 25.30°C 状态: 正常”
手捂传感器32.7 °C红灯亮高频报警“当前温度: 32.70°C 状态: 高温报警!”
冰袋冷却8.5 °C红灯亮低频报警“当前温度: 8.50°C 状态: 低温报警!”
断开传感器Err红灯闪烁连续报警“传感器故障”
7.2 数据分析
  1. 测量精度:DS18B20 在室温下测量误差 ±0.5℃,满足一般实验需求
  2. 响应速度:温度变化后约 1-2 秒系统更新显示,实时性良好
  3. 系统稳定性:连续运行1小时无死机或数据异常
  4. 报警准确性:阈值触发准确,无误报或漏报
7.3 常见问题与解决
  1. 问题:显示屏不亮或显示乱码

    • 原因:TM1637 引脚接反或接触不良
    • 解决:检查 CLK/DIO 连接,重新插拔
  2. 问题:温度显示-127℃

    • 原因:DS18B20 接线错误或损坏
    • 解决:检查 VCC/GND/DQ 连接,确认上拉电阻正常
  3. 问题:蜂鸣器不响

    • 原因:有源/无源蜂鸣器类型错误或引脚接反
    • 解决:确认蜂鸣器类型,调整正负极

八、实验总结

8.1 实验成果
  1. 成功搭建了基于 DS18B20的温度监测系统
  2. 实现了温度数据的实时显示(LED 显示屏)
  3. 完成了温度阈值报警功能(蜂鸣器+LED指示)
  4. 掌握了面包板电路搭建的基本技能
  5. 学习了单总线通信和数码管驱动原理
8.2 技术要点
  1. 单总线通信:DS18B20 的单线通信简化了电路连接
  2. 上拉电阻:4.7kΩ 上拉电阻确保数据线稳定
  3. 分压限流:220Ω 电阻保护LED不被烧毁
  4. 库函数使用:合理使用现成库简化开发
8.3 改进建议
  1. 增加无线模块:添加 ESP8266 实现 Wi-Fi 远程监控
  2. 数据存储:添加 SD 卡模块记录温度历史数据
  3. 多传感器:扩展多个 DS18B20 实现多点测温
  4. 手机APP:开发蓝牙 APP 实现手机端监控
  5. 太阳能供电:添加太阳能板实现户外长期监测
8.4 应用前景

本系统可应用于:

  • 实验室温度监控
  • 温室大棚环境监测
  • 仓库冷链温度管理
  • 智能家居温度控制
  • 工业设备温度保护

九、附录

9.1 元器件实物图识别
DS18B20: 金属探头,三根线(红-VCC,黑-GND,黄-DQ) TM1637: 4位数码管+黑色驱动芯片 有源蜂鸣器: 底部有密封,给电即响 无源蜂鸣器: 底部有电路板,需要PWM驱动 LED: 长脚为正极,短脚为负极
9.2 程序扩展功能代码
// 扩展功能:温度数据记录voidlogTemperature(floattemp){// 可扩展为SD卡存储或网络上传Serial.print("记录时间:");Serial.print(millis()/1000);Serial.print("s,温度:");Serial.println(temp);}// 扩展功能:温度单位切换floatcelsiusToFahrenheit(floatcelsius){returncelsius*9.0/5.0+32.0;}
9.3 安全注意事项
  1. 接线前确保系统断电
  2. 避免 DS18B20 长时间超过 125℃
  3. LED必须串联限流电阻
  4. 蜂鸣器不要长时间连续工作
  5. 面包板插拔时注意引脚方向

实验完成时间:年________月________日
实验人员:
________________
指导教师:________________________
成绩评定:________________________

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询