精密气压计:Arduino UNO & Nano 双表盘气压监测仪
组件与供应
| Arduino Nano R3 | ×1 |
| Arduino UNO (ATmega328 立板焊接) | ×1 |
项目介绍
本项目使用 Arduino UNO 和 Nano 控制三个步进电机,驱动 12 英寸 (300mm) 模拟表盘显示气压数据。提供现代风格和经典风格两种表盘设计。
- 主表盘:显示海平面气压 (hPa),每 10 分钟更新一次。
- 6 小时变化表盘:显示过去 6 小时气压变化量。
- 3 小时变化表盘:分辨率 0.5 hPa,用于天气预测。
三个表盘均具备扩展量程指示 LED(红/绿),3 小时表盘另配 8 颗 LED 显示天气预测(晴、雨、风暴等)。机箱内两块 20x4 LCD 显示详细数据。主表盘和 6 小时表盘由 RTC (DS3231) 定时驱动,RTC 同时提供整点脉冲给 3 小时表盘电路。
与传统模拟气压计对比
传统气压计仅指示当前气压,需手动拨动指针记录时间来观察变化,预测需记忆组合规则。本装置自动连续记录 3 小时和 6 小时变化并分表盘显示,并直接用 LED 指示天气趋势。
演示:风暴来临预测
延时动画展示指针和预测 LED 对即将到来的风暴的反应。
扩展量程表盘设计
三个表盘均设计扩展量程:正常范围内高分辨率显示;极端天气下切换扩展刻度,红/绿 LED 指示当前读取的是红色刻度 (+5 以上) 还是绿色刻度 (-5 以下);超出扩展范围 (如 >+9 或 <-9) 双 LED 同时点亮警告,读数需加减 10。实测 2020 年 1 月英国南部记录高压 1050 hPa 时主表盘触发红色扩展指示。
LCD 信息显示
两块 20x4 LCD 分别显示:3 小时表盘数据与天气预测;主表盘气压与 6 小时变化数据。
天气预测逻辑
基于当前气压与过去 3 小时变化率,参考气象学经验规则,映射为 8 种 LED 组合:
- 气压 < 1009 hPa:上升/持平 → 转晴转凉 (Clear+Change);缓慢下降 → 雨 (Rain+Threat);快速下降 → 暴风雨 (Stormy+Threat)。
- 1009–1022 hPa:上升/持平 → 现状维持 (Fair+NoChange);快速上升 → 转晴 (Clear);快速下降 → 雨/雪 (Rain+Change)。
- 气压 > 1022 hPa:上升/持平 → 干燥 (Dry);缓慢下降 → 好天 (Fair);快速下降 → 天气变化 (Change+Threat)。
启动流程
上电自检 LED → 指针归零待校准 → 通过 Vero 板上的旋钮和按钮设置 RTC 时间 (UTC)、校准三个指针初始位置、输入历史气压数据 (或等待自动积累)。
核心模块
- 微控制器:ATmega328 (UNO) + Arduino Nano,分工控制主/6小时表盘 和 3小时/预测表盘。
- 供电:LM2596 降压模块 12V→5V;AMS1117 3.3V 供电 BMP180。
- 气压传感器:两个 BMP180 模块 (I2C),分别接两块 MCU。
- RTC:DS3231 高精度实时时钟,带备用电池 (已移除充电电阻改用非充电纽扣电池)。
- 步进电机:3 个 NEMA 17 (1.8°/步,200 步/圈),配 A4988 驱动器 (1/16 细分)。
- LCD:两块 20x4 I2C LCD。
A4988 驱动器关键设置
- 设为 1/16 细分 (MS1/MS2/MS3 跳线帽),代码按 1600 步/圈计算。
- 必须加大电解电容 (≥47µF) 在 VMOT 端防止尖峰损坏驱动器。
- 调节电位器设定 Vref 限流,保护电机。
- 严禁带电插拔电机。
机箱制作
经典款:利用旧钟壳 (eBay "case only")
橡木表壳,表圈可翻开,便于安装。表盘用 1.5mm 铝板切割、喷漆、贴水贴纸刻度。指针由废弃钟表指针改制,用 Blu Tack 固定在电机轴上。
现代款:双相框背靠背
两个 30x30cm 相框背靠背组成双层深度框架,前框装玻璃,后框装电路。后箱体用木板制作,通过 GTV 270° 内嵌合页壁挂,可翻开维护,配有锁紧销固定。表盘通过螺栓固定在后箱,铝角强化刚性。
表盘制作工艺
- CAD 绘制表盘含所有 LED/电机轴孔位,A3 打印作钻孔模板。
- 铝板钻孔 (LED 3mm,电机轴孔加大),去毛刺、打磨、喷底漆、面漆 (古董白)、哑光清漆。
- 水贴纸 (透明) 打印刻度,浸水贴合,对准十字定位点,刮除气泡,干燥后喷哑光清漆保护,再用钻头清理孔位。
电路原理图与 Vero 板布局
主原理图包含两块 MCU、三路 A4988、两路 BMP180、RTC、LCD、LED、按键、电源。Vero 板分主控板和 LED 接线板,采用排针排母便于拆卸维护。
代码结构
两部分代码分别运行在两块 MCU 上:
BarometerA4988_23.ino(UNO):主表盘 + 6 小时表盘 + RTC + 两路 BMP180 读数 + LCD1 显示 + 校准菜单。BarometerA4988_3hour__21.ino(Nano):3 小时表盘 + 天气预测 LED + LCD2 显示 + 接收 UNO 发来的整点脉冲同步。
代码使用 AccelStepper 控制步进电机,SFE_BMP180 读取气压,LiquidCrystal_I2C 驱动 LCD。关键算法:每小时存储气压值到循环数组,计算 3 小时/6 小时差值,换算为步进电机步数 (1.8° × 1/16 = 0.1125°/步),驱动指针移动。
延时摄影视频
4K 延时视频展示雨雷达与气压计预测下雨和风暴过程,清晰可见指针与 LED 变化。
制造工艺
- 无液气压计:设计、历史与压力测量未来
- 血压计:设计原理、制造工艺与未来趋势
- 灭火器:类型、设计与未来趋势
- 工业与安全应用精密压力表
- DIY 蓝牙控制 Arduino 间谍小车
- FlickMote:基于手势的智能家居红外遥控器
- DIY Arduino TV-B-Gone:万能关机遥控器
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- 紧凑型气象站:Arduino Nano + ESP8266 双核方案 (BMP280 + OLED/Nokia 双屏)
- Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
- Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
- Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY