基于 Arduino 的户外温度计:趋势指示、最高/最低温度记录
组件清单
| 组件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | |
| 高精度 NTC 热敏电阻 TS-NTC-103 (10 kΩ) | 1 | B+B Thermo Technik 产品,±0.5% 精度 |
| 1602 字符型 LCD(白字蓝底) | 1 | 带 I²C 接口更佳 |
| 12V 2A 直流电源适配器 | 1 | 给 Arduino 供电 |
| 100 nF 陶瓷电容 (0.1 µF) | 2 | 去耦用 |
| 470 µF 电解电容 | 1 | 滤除开关电源纹波 |
| 10 kΩ 金属膜电阻 (0.1% 精度, 25 ppm) | 1 | 分压电阻,配合 NTC 组成电压分压器 |
| 按键开关 (常开) | 1 | 用于复位最高/最低温度 |
| 10 kΩ 线性电位器 | 1 | LCD 对比度调节 |
| 10 kΩ 普通电阻 | 1 | |
| 820 Ω 电阻 | 1 | LCD 背光限流(可选) |
制作指南
接线原则
- Arduino 5V 引脚连接所有 +5V 节点(原理图箭头处)
- 所有地线互联
- 外部 12V 直流电源接入 Arduino 电源插座
- 按原理图连接 NTC 分压电路、LCD、按键、电位器
关键元件选型说明
高精度 NTC 传感器
采用 B+B Thermo Technik TS-NTC-103,25°C 时阻值 10 kΩ,容差 ±0.5%。量程 -60~+150°C,在 -10~+30°C 常用范围内最大误差约 ±0.5K。配合 0.1% 精度的 10 kΩ 金属膜分压电阻,可实现 ±0.12K (25°C) 的测量精度。若更换其他 NTC,需修改代码中的 Steinhart-Hart 系数。
噪声抑制对策
NTC 导线长达数米,易拾取干扰。采取三级去耦:
- Arduino A0 引脚(模拟输入)并联 100 nF 电容至地
- LCD VDD/VSS 焊接 100 nF 电容(引线 ≤1 cm)消除时钟噪声
- Arduino 5V/GND 并联 470 µF 电解电容滤除开关电源纹波
示波器验证后信号干净稳定。
传感器安装位置
- 严禁阳光直射,建议安装在房屋北面(南半球则为南面)阴影处
- 距离墙面至少数毫米,避免墙体热辐射影响
- 尽量选择无供暖管道的墙面(如车库外墙)
软件设计
核心算法
- 滑动平均滤波:3 秒采样一次,取最近 30 次读数平均(即 90 秒窗口),输出平滑温度值
- Steinhart-Hart 方程:比 β 公式精度更高。利用厂家数据手册中 -10°C、0°C、+20°C 三点阻值,通过在线计算器反推三个系数 A、B、C,针对实际工作区间优化拟合精度
功能特性
- 实时显示当前温度、最高温度、最低温度
- 趋势箭头(↑/↓/→)指示温度变化方向,含迟滞防抖动
- 按键长按复位极值为当前温度
- LCD 1602 显示,支持 I²C 接口
代码版本历史
- V1.4:修复离线编译器下 PrintPG() 函数声明冲突
- V1.3:增加趋势箭头迟滞逻辑
完整代码及库文件见项目附件。
原理图
原理图文件包含在项目中,展示 NTC 分压、LCD 接口、电源去耦等连接细节。
制造工艺
- 集成二维码、RFID与体温验证的门禁控制系统
- 树莓派多路DS18B20 1-Wire温度监测:接线与编程全指南
- 树莓派2上使用DS18B20读取温度完整指南
- 树莓派结合 Maxim 1-Wire 传感器与 DS2482 I2C 桥接器的多点温度测量
- 树莓派与 Python 构建远程温度传感器:分步实战指南
- 树莓派配合 EzTemp 实现无缝温湿度监测
- 树莓派精准监测机柜温度:DS18B20 多点部署实战
- DIY 家酿温控系统:Arduino 监测与调节发酵温度
- 树莓派室温监测系统:Gnuplot 绘图与邮件报警
- 树莓派多传感器温度光照监测系统:DS18B20 实战构建
- 树莓派与Python构建机器人:完整指南
- 超低温微型温度计:芯片上实现50 mK精度