Arduino超声波水位传感器改装浓缩咖啡机教程

我有一台性能优良但年代较久的浓缩咖啡机,配有可拆卸水箱。问题在于它没有低水位提示灯,每次缺水前我都无法提前知晓!除非打开水箱盖、拉出水箱查看(从外部根本看不见,水箱隐藏在黑色塑料外壳内),直接观察水箱状态!
这意味着在萃取浓缩咖啡时突然缺水,我不得不执行以下繁琐操作:停止水泵→打开顶盖→取出水箱→注水→放回水箱→启动加热程序→等待温度达标。这不仅让咖啡变得难以入口(尤其对意大利咖啡鉴赏家而言),整个过程还极其恼人!
更令我困惑的是,既然水箱是透明的,为何还要设计成外部不可见的形式?无论如何,我决定自制一个水位传感器,在水位过低时发出警报,让我能在重新注水前轻松完成几杯咖啡制作。
网上找到的解决方案大多不适用于咖啡机场景。初期设计时我设定了几个限制条件:
- 传感器不得侵入水箱内部:不能有任何物体接触饮用水,避免释放有害物质(如铜线可能析出氧化铜)
- 传感器不可与水箱固定连接:避免接线影响注水操作
- 方案需具备通用性:适用于所有未配备水位检测功能的浓缩咖啡机
现有项目均不满足这些条件,因此我启动了全新研发。首个版本采用光学检测方案:一侧安装LED,另一侧放置光敏电阻。当水位高于传感器时,光线通过水体传导至光敏电阻(亮状态);水位过低时,塑料水箱会阻挡光线(暗状态)。我将光敏电阻连接至Arduino模拟输入端(配合上拉电阻),通过数值变化判断水位。
但该方案存在明显缺陷:亮/暗状态数值差异过小,导致校准困难且环境适应性差(例如开盖时外部光线会干扰读数)。因此我决定改用更可靠的检测方式。
最终方案采用超声波检测技术,这种非侵入式方法不仅能实现水位报警,还可精确测量剩余水量。现在:
- RGB指示灯显示不同状态:蓝色(水量>80%)、绿色(30%-80%)、红色(5%-30%)
- 独立红色警报灯+蜂鸣器:水量<5%时触发
这就是我设计的UWS(超声波水位传感器)系统。

第一步:开始制作
UWS系统原理:通过测量高频声波(40kHz)从发射到经水面反射返回的时间差计算水位。根据咖啡机结构选择合适的安装位置,确保传感器尽可能垂直对准水面。我的咖啡机水箱配有铰接式顶盖,因此我将传感器安装在顶盖内侧,您也可根据机型选择其他安装方式。
所需材料清单:
- Arduino UNOr3开发板(或兼容型号) ×1
- SR04或SRF05超声波传感器(推荐) ×1
- RGB LED ×1
- 红色LED ×1
- 220Ω电阻 ×2
- 蜂鸣器 ×1
- 塑料防水盒 ×1
- 12V Arduino电源 ×1
- 杜邦线及接线端子若干
建议将全部组件封装在防水盒内,我将其固定在顶盖上方。您也可将SRF05传感器外置(需做好防水保护),Arduino主控安装在其他位置。电路连接图如下:

第二步:安装传感器
确定安装位置后,在水箱盖或外壳上钻两个与超声波模块尺寸匹配的孔位。我将传感器固定在顶盖中央(如图示,位于两个备用胶囊仓之间)。
在防水盒对应位置开孔,确保传感器探头朝向水箱内部,其他元件安全置于盒内。安装时注意避免孔位过松(可用热熔胶加固),同时防止过紧导致无法安装。
参考电路图完成接线:
- 超声波传感器(SR04/SRF05):
- Echo引脚 → D7
- Trig引脚 → D6
- Vcc/GND → Arduino 5V/GND
- 蜂鸣器:
- 正极 → D3
- 负极 → GND
- RGB LED:
- 蓝/绿/红阳极 → D9/D10/D11
- 公共阴极 → GND(经220Ω电阻)
- 红色警报LED:
- 阳极 → D12
- 阴极 → GND(经220Ω电阻)
如图所示,我使用洞洞板连接RGB LED和传感器接口(采用5针母头),您也可选择其他接线方式。最后用双面胶将防水盒固定在水箱盖上。

第三步:上传程序,享受咖啡时光!
建议先启用调试模式(取消"//define DEBUG 1"前的注释),通过串口监视器获取实际测量值:首次测试时保留约5-10mm水量(避免完全空瓶),第二次注满水箱。我的水箱参数设置为:满水3cm/空瓶16cm。
您还可调整"lBlue"、"lGreen"、"lRed"和"lEmpty"参数控制LED亮度(我的RGB LED亮度过高,故降低了数值)。程序同时支持选配的16x2 I2C液晶屏(连接至A4/A5引脚),需安装LiquidCrystal_I2C库并取消"//define IS_LCD 1"前的注释。
完成校准后禁用调试模式,重新上传程序即可正常使用。
文章评论