光电式液位检测(红外对射管阵列)—— 最可靠、最稳定的液位检测方案
关键词:红外对射管、液位检测、光电液位、输液泵、智能水杯
前言
做了大半辈子电子,从 80 年代的模拟电路,到后来的单片机、ARM、物联网,经手的项目少说也有上百个。如果你问我,在液位检测这个细分领域,什么方案最值得信赖,我会毫不犹豫地告诉你:红外对射管阵列。
这玩意儿的原理简单到不需要智商去理解——有水没水,光是直射还是偏折,就这么回事。但恰恰是这种物理层面的"简单",造就了它近乎变态的可靠性。
我早年做医疗输液泵的时候,这个方案用了十几年,批量出货几十万台,从来没有因为液位检测本身出过任何一起医疗事故级别的故障。零。后来做智能水杯,也是这套方案,稳如老狗。
今天就把这个方案掰开揉碎了讲清楚。
目录
- 核心原理
- 系统架构
- 硬件实现
- 电路设计详解
- 结构设计要点
- 软件算法
- 抗干扰与可靠性设计
- 与其它方案的对比
- 实际应用案例
- 常见问题与排查
1. 核心原理
1.1 光学基础
一切的基础,就是一个中学物理实验:光的折射。
当一束红外光从空气射入水中时,由于空气和水的折射率不同(空气 ≈1.0,水 ≈1.33),光线会在界面处发生折射,传播方向发生偏折。
我们在杯子(容器)的一侧安装红外发射管(IR LED),正对面安装红外接收管(光电三极管),两者组成一对"对射管"。
无水状态 有水状态 ┌─────────────┐ ┌─────────────┐ │ │ │ │ │ LED ●─────→│→→→→→→→→→→→→→→→ │ PD │ │ │ 光线直射 │ │ │ (空气) │ 光强大 │ (空气) │ │ │ │ │ │ LED ●─────→│→→→↘ │ PD │ │ │ 光线偏折 │ │ │ ( 水 ) │ 光强小 │ ( 水 ) │ │ │ │ │ └─────────────┘ └─────────────┘ LED = 红外发射管 PD = 光电接收管(Photodiode/光敏三极管) ● = 发射端 → = 光线路径1.2 判断逻辑 —— 比你想的更简单
| 状态 | 光线路径 | 接收管电流 | 判断 |
|---|---|---|---|
| 无水 | 直线穿过 | 大(几十到几百μA) | 该档位 = 0(干) |
| 有水 | 折射偏折 | 小(几μA甚至为零) | 该档位 = 1(湿) |
这不是一个"模棱两可"的概率判断,而是一个确定性的物理二值判断。光要么直射过来,要么偏折走了——不会有第三种情况。
这就是为什么我说它"绝对可靠"的根本原因。
2. 系统架构
2.1 对管阵列
沿容器侧壁垂直排列5~8 组红外对管,每一组对应一个液位档:
┌──────────────────┐ │ │ ─────┤ D8 ←──●── E8 │ ← 第8档 (最高) │ │ ─────┤ D7 ←──●── E7 │ ← 第7档 │ │ ─────┤ D6 ←──●── E6 │ ← 第6档 │ │ ─────┤ D5 ←──●── E5 │ ← 第5档 │ │ ─────┤ D4 ←──●── E4 │ ← 第4档 │ │ ─────┤ D3 ←──●── E3 │ ← 第3档 │ │ ─────┤ D2 ←──●── E2 │ ← 第2档 │ │ ─────┤ D1 ←──●── E1 │ ← 第1档 (最低) │ │ └──────────────────┘ E1~E8 = 红外发射管 (Emitter) D1~D8 = 红外接收管 (Detector) ●→ = 红外光线路径 ───── = 液面当前液位 = 从下往上数,最后一个"无水"档位对应的接收管。
举个例子:D1、D2、D3 接收到光(无水),D4~D8 没接收到(有水),说明液面在第 3 档和第 4 档之间,当前液位 = 3 档。
2.2 档位数量的选择
| 档位数 | 适用场景 | 优缺点 |
|---|---|---|
| 3~4 档 | 低成本、小容量容器 | 够用但粗糙 |
| 5~6 档 | 智能水杯(推荐) | 性价比最佳 |
| 7~8 档 | 高精度需求(输液泵等医疗设备) | 精度高,但增加成本和布线 |
| 10+ 档 | 特殊场景 | 一般不需要,结构复杂度上升 |
对于智能水杯,6 档是我最推荐的配置:配合 300~400ml 的杯子,每档约 50~60ml,分辨率和成本达到最优平衡。
3. 硬件实现
3.1 器件选型
红外发射管(IR LED)
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 波长 | 940nm | 标准近红外,便宜且与接收管配对好 |
| 封装 | 0603 或 0805 SMD | 体积小,适合贴在杯壁外侧 |
| 正向电流 If | 5~20mA(典型) | 实际使用时可以降额到 3~5mA 以省电 |
| 发散角 | ±15° ~ ±25° | 窄角更好,减少散射干扰 |
| 单价 | ¥0.05 ~ ¥0.15 | 对,你没看错,几毛钱都不要 |
推荐型号(仅作参考):
- 亿光(Everlight)IR91-21C/TR10(0603)
- 欧司朗(Osram)SFH 4045N(更贵但性能更好,医疗设备用)
红外接收管(光电三极管 / Phototransistor)
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 封装 | 0603 或 3mm 插件 | 与发射管对齐安装 |
| 峰值波长 | 匹配发射管(~940nm) | 光谱匹配度直接影响灵敏度 |
| 集电极电流 Ic(on) | 0.5~5mA(典型光照下) | 越大越容易检测 |
| 暗电流 | <100nA | 越小越好,影响信噪比 |
| 单价 | ¥0.10 ~ ¥0.30 |
推荐型号(仅作参考):
- 亿光 PT91-21C/TR10(0603,与发射管配对)
- 威世(Vishay)TEPT5700(插件,性能优异)
一对管子的总物料成本:不到 5 毛钱。6 组就是 3 块钱。加上 PCB 和 MCU,整个液位检测模块的 BOM 成本不超过 8 块钱。
3.2 MCU 选择
基本没有要求,有足够的 GPIO 即可:
- 6 组对管:需要 6 个输出(驱动 LED)+ 6 个 ADC 输入或数字输入 = 12 个 GPIO
- 任意一颗 Cortex-M0 以上的芯片都绰绰有余
- 推荐:STM32F030、GD32E230、STM8S003、华大 HC32L110 等
如果 GPIO 不够,可以用 74HC595(串转并)驱动发射管,用 74HC165(并转串)读接收管,或者干脆用模拟开关轮询。
4. 电路设计详解
4.1 发射端驱动
最简单的驱动方式:GPIO 直接通过限流电阻驱动红外 LED。
VCC (3.3V) │ │ ┌┴┐ │ │ R_limit │ │ 100Ω ~ 330Ω └┬┘ │ ├────→ 接红外LED阳极 │ ┌─┴─┐ │LED│ 红外发射管 └─┬─┘ │ ├────→ 接GPIO (推挽输出) │ ═══ GND R_limit = (VCC - Vf_LED) / If 假设: VCC=3.3V, Vf_LED=1.2V, If=5mA 则: R_limit = (3.3 - 1.2) / 0.005 = 420Ω 取标称值: 390Ω 或 470Ω如果 GPIO 驱动电流不够(某些 MCU 单引脚最大 5mA):
用 NPN 三极管增强驱动:
VCC (3.3V) │ ┌┴┐ │ │ R_limit └┬┘ │ ┌─┴─┐ │LED│ └─┬─┘ │ C GPIO ──[Rb]──B NPN (如 S8050) E │ ═══ GND4.2 接收端检测
光电三极管接成共射极放大形式:
VCC (3.3V) │ ┌┴┐ │ │ R_load 负载电阻(关键参数!) │ │ 10kΩ ~ 100kΩ └┬┘ │ ├────────────→ 接MCU ADC输入 │ C ┌────────B NPN光电三极管 │ E │ │ │ ═══ │ GND │ (受红外光照射) 有水时: Ic↓ → Vout↑ (接近VCC) 无水时: Ic↑ → Vout↓ (接近GND)负载电阻 R_load 的选择是核心——选大了灵敏度高但容易饱和,选小了区分度不够。我的经验值:
- 发射管驱动电流 5mA、接收距离 10~20mm:R_load = 47kΩ
- 发射管驱动电流 3mA、接收距离 20~30mm:R_load = 100kΩ
- 发射管驱动电流 10mA、接收距离 5~10mm:R_load = 10kΩ
不要盲信计算结果,一定要用示波器实测波形,找到"有水"和"无水"状态下电压差最大的 R_load 值。
4.3 完整电路示例
下面是一个 6 通道的完整电路设计:
发射端(6通道): 接收端(6通道): GPIO_PA0 ──[R0]──[LED0]──GND VCC─[Rload0]──┬── ADC_IN0 ─ MCU GPIO_PA1 ──[R1]──[LED1]──GND C GPIO_PA2 ──[R2]──[LED2]──GND [PD0]B GPIO_PA3 ──[R3]──[LED3]──GND E GPIO_PA4 ──[R4]──[LED4]──GND │ GPIO_PA5 ──[R5]──[LED5]──GND GND R0~R5 = 390Ω (限流电阻) LED0~LED5 = 940nm 红外发射管 PD0~PD5 = 940nm 光电三极管 Rload0~Rload5 = 47kΩ (负载电阻) 不用的ADC通道也要接地或拉高,不要浮空!4.4 省电设计(电池供电场景)
智能水杯通常用锂电池供电,省电是关键。以下手段可以把液位检测的平均功耗做到 < 50μA:
间歇检测:每 100ms 检测一次,每次亮 100μs
- 占空比 = 100μs / 100ms = 0.1%
- 平均功耗 = 峰值功耗 × 0.1%
分时点亮:不要 6 个 LED 同时亮
- 逐个点亮,逐个检测
- 瞬时电流小,电源纹波也小
睡眠时完全断电:用 GPIO 控制 LED 供电的 PMOS 开关,不检测时完全关断
具体时序: ┌──── 100ms ────┐┌──── 100ms ────┐ │ ┌100μs┐ ││ │ │ │Ch1~6│ 休眠 ││ ... │ └──┴─────┴──────┘└───────────────┘ 每100ms唤醒 → 依次扫6个通道(每通道~15μs) → 总共~100μs → 休眠5. 结构设计要点
结构设计是这套方案最容易踩坑的地方,也是很多新手搞不定的环节。
5.1 透光窗口 —— 核心中的核心
普通塑料(比如 ABS、PP)对红外光是不透明的——或者说透过率极低。如果不做处理直接把管子贴在杯子外壁上,你会发现不管有水没水,接收管都收不到光。
解决方案有三种:
| 方案 | 做法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|---|
| A. 开窗 | 在杯壁上对应位置挖孔或留透明窗 | 光学性能最好 | 需要模具配合,增加成本 | ⭐⭐⭐⭐⭐ |
| B. 透红外塑料 | 杯体用 PCTG、透明 PP 等材料 | 不开窗,外观完整 | 材料成本略高 | ⭐⭐⭐⭐ |
| C. 二次注塑(双色模) | 在杯壁嵌入透明 PC/PCTG 镶件 | 兼顾外观和光学 | 模具复杂,成本高 | ⭐⭐⭐ |
方案 A(开窗)是性价比最高的选择,也是我在量产产品中最常用的做法。具体操作:
- 在杯体模具上设计 6 组对穿的窗口(每个窗口 3×3mm 左右)
- 窗口用透明 PC 或 PMMA 薄片覆盖(可以做成装饰件的一部分)
- 发射管和接收管的 PCB 贴在窗口外侧
关键尺寸参考:
- 窗口直径:2~4mm(太小对不准,太大漏光)
- 对射距离:8~25mm(杯子壁厚决定)
- 管子的安装位置要精确——发射管、窗口、接收管三者必须在同一光轴上
5.2 对管安装精度
0603 封装的 LED 尺寸是 1.6×0.8mm,这么小的东西要对准确实不容易。
量产做法:
- 在 PCB 上做好定位孔/定位边
- 管子上件后用 AOI(自动光学检测)检查偏移
- 装配时用定位柱/卡扣保证 PCB 和杯体的相对位置
- 如果有条件,用 UV 胶把 PCB 和杯体固定在一起
手动对位的土办法(做样品时用):
- 先在杯壁上画好位置标记
- 接通发射管,在接收端用手机摄像头看红外光斑(手机摄像头对红外敏感)
- 调整到光斑最亮的位置,做好标记
- 最后用热熔胶或快干胶固定
5.3 环境光隔离
红外接收管不光对发射管的红外光敏感,对太阳光、白炽灯、甚至某些 LED 灯具中的红外成分也敏感。
必须做遮光设计:
- 物理遮挡:PCB 和杯体之间加黑色硅胶垫圈,阻断外部光路
- 遮光罩:在接收管周围加一个黑色的小围挡
- 软件相减:检测时先读一次"发射管关闭"状态(环境光本底),再读一次"发射管打开"状态,两者相减得到净信号
- 调制检测:发射管用 38kHz 调制,接收端带通滤波——这是最彻底的方案,但电路稍复杂
对于绝大部分消费类产品,方案 1+2+3 就足够了。
6. 软件算法
6.1 基本检测流程
// 伪代码 #define CHANNEL_COUNT 6 #define THRESHOLD 1500 // ADC阈值,根据实测标定 typedef struct { uint16_t adc_water; // 有水时的ADC值(标定存入) uint16_t adc_air; // 无水时的ADC值(标定存入) uint16_t threshold; // 判决阈值 = (adc_water + adc_air) / 2 } channel_cal_t; channel_cal_t cal[CHANNEL_COUNT]; // 出厂标定数据,存在Flash/EEPROM里 uint8_t detect_liquid_level(void) { uint8_t level = 0; for (int ch = 0; ch < CHANNEL_COUNT; ch++) { // 1. 关闭发射管,读环境光本底 led_off(ch); delay_us(10); uint16_t ambient = adc_read(ch); // 2. 打开发射管,读信号 led_on(ch); delay_us(50); // 等光电三极管稳定 uint16_t signal = adc_read(ch); led_off(ch); // 3. 净信号 = 信号 - 本底 uint16_t net = (signal > ambient) ? (signal - ambient) : 0; // 4. 判断:净信号 > 阈值 → 无水 → 该档位有效 if (net > cal[ch].threshold) { level = ch + 1; // 1-based 档位 } else { break; // 一旦某个档位有水,上面档位必然也有水 } } return level; }6.2 标定流程(出厂必须做)
每台设备出厂前都需要标定——千万不要用一个固定的阈值!!原因:每个杯子的透光率、管子的安装偏差、PCB 公差都不一样。
标定流程:
步骤1: 空杯标定 —— 记录每个通道的"无水ADC值" 杯内完全干燥 → 检测6个通道 → 记录 adc_air[0..5] 步骤2: 满杯标定 —— 记录每个通道的"有水ADC值" 杯内装满水 → 检测6个通道 → 记录 adc_water[0..5] 步骤3: 计算自适应阈值 threshold[ch] = (adc_air[ch] + adc_water[ch]) / 2 步骤4: 写入Flash,生产完成标定时的附加检查:
- 检查
adc_air是否在合理范围(不能太小,否则说明光路没对准) - 检查
adc_air - adc_water的差值是否足够大(建议 > 500 个 ADC 字) - 如果差值太小,说明该通道有问题,标记不良,返修
6.3 喝水行为检测(智能水杯核心功能)
前文说了,红外对管只能做档位检测,无法连续测量液位。但智能水杯需要记录用户的饮水量,怎么办?
答案:通过对"喝水行为"建模。
#define DEBOUNCE_MS 2000 // 消抖时间:液位变化需持续2秒才确认 uint8_t last_stable_level = 0; uint32_t level_change_time = 0; typedef struct { uint32_t timestamp; uint8_t level_before; uint8_t level_after; uint16_t volume_ml; // 估计饮水量 } drink_event_t; void check_drinking(void) { uint8_t current_level = detect_liquid_level(); // 消抖:液位必须稳定一段时间才确认变化 if (current_level != last_stable_level) { if (level_change_time == 0) { level_change_time = get_tick_ms(); // 开始计时 } else if (get_tick_ms() - level_change_time > DEBOUNCE_MS) { // 确认液位变化 if (current_level < last_stable_level) { // 液位下降 → 喝水事件! uint8_t diff = last_stable_level - current_level; uint16_t volume = diff * ML_PER_LEVEL; // 每档对应的毫升数 drink_event_t event = { .timestamp = get_tick_ms(), .level_before = last_stable_level, .level_after = current_level, .volume_ml = volume, }; log_drink_event(event); } // 液位上升 → 加水事件,不计入饮水量 last_stable_level = current_level; level_change_time = 0; } } else { level_change_time = 0; // 液位恢复,重置计时器 } }喝水检测的几个经验参数:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 消抖时间 | 1500~3000ms | 太短容易把拿起杯子误判为喝水 |
| 每档毫升数 | 50~70ml | 取决于杯子容量和档位数 |
| 最小饮水间隔 | 30s | 30秒内的多次检测合并为一次 |
| 倾斜补偿角度 | >45° | 杯子倾斜时暂停检测,避免误判 |
7. 抗干扰与可靠性设计
7.1 常见干扰源及对策
| 干扰源 | 现象 | 对策 |
|---|---|---|
| 环境红外光(阳光、白炽灯) | 无水时 ADC 读数异常高 | 环境光相减法 + 物理遮光 |
| 杯子晃动 | 液面晃动导致档位跳变 | 软件消抖(2s 延时确认) |
| 水珠/水雾挂在杯壁 | 干扰光路,误判为有水 | 涂层疏水处理 + 窗口位置避开水流路径 |
| 杯子倾斜 | 液面倾斜导致各档位不一致 | 加姿态传感器(或至少加一个倾角开关) |
| LED 老化 | 发射光强逐年下降 | 出厂标定时留余量 + MCU 动态调整驱动电流 |
| 水垢/污渍 | 窗口透光率下降 | 标定时记录原始值,发现异常偏移时触发"清洗提醒" |
7.2 故障检测与容错
做医疗设备养成的习惯:任何一个传感器都可能坏,你必须知道它坏了。
typedef enum { CH_OK = 0, // 正常 CH_OPEN_CIRCUIT, // 开路(管子虚焊/断线) CH_SHORT_CIRCUIT, // 短路 CH_LOW_SIGNAL, // 信号太弱(水垢/老化/错位) CH_STUCK_HIGH, // 卡在高电平 CH_STUCK_LOW, // 卡在低电平 } channel_status_t; channel_status_t self_test_channel(uint8_t ch) { // 测试1: LED关闭时,ADC应该接近0(检查接收管是否短路到VCC) led_off(ch); if (adc_read(ch) > ADC_VCC * 0.9) return CH_SHORT_CIRCUIT; // 测试2: LED打开时,应有明显信号(检查光路是否正常) led_on(ch); delay_us(50); uint16_t signal = adc_read(ch); led_off(ch); if (signal < cal[ch].threshold * 0.1) return CH_LOW_SIGNAL; if (signal > ADC_VCC * 0.95) return CH_STUCK_HIGH; return CH_OK; }7.3 EMC/ESD 保护
- 所有对外接口(触摸按键、USB 充电口)加 TVS 管
- 红外管的引线尽量短,PCB 走线远离开关电源的 SW 节点
- 接收管的 ADC 输入端并联 100pF 小电容,滤除高频干扰
- 生产线上 ESD 枪打 ±8kV 接触放电,±15kV 空气放电,不能复位/死机/误报
8. 与其它方案的对比
说实话,市面上智能水杯用的液位检测方案五花八门,但真正靠谱的不多。
| 方案 | 原理 | 精度 | 可靠性 | 成本 | 功耗 | 适用场景 |
|---|---|---|---|---|---|---|
| 红外对管阵列(本文方案) | 光折射 | 档位级 | ⭐⭐⭐⭐⭐ | ¥3~8 | <50μA | 智能水杯、输液泵、咖啡机 |
| 电容式液位 | 介质常数变化 | 连续 | ⭐⭐⭐ | ¥5~15 | 中等 | 水箱、油箱 |
| 超声波 | 回波测距 | 连续,±2mm | ⭐⭐⭐⭐ | ¥20~50 | 较高 | 工业储罐 |
| 气压计 | 底部压力 | 连续,±5ml | ⭐⭐ | ¥5~10 | 极低 | 智能水杯(精度依赖校准) |
| 称重 | 重量换算 | 连续,±1ml | ⭐⭐⭐⭐⭐ | ¥15~40 | 中等 | 高端水杯、实验设备 |
| 电极式 | 导电性 | 档位级 | ⭐⭐ | ¥2~5 | 低 | 低成本方案(受水质影响大) |
| 浮子+霍尔 | 机械浮子 | 连续 | ⭐⭐⭐ | ¥8~20 | 零 | 咖啡机、马桶水箱 |
为什么我不推荐气压计方案
这几年有些智能水杯用气压计(大气压力传感器)来测液位,通过测量杯底水压来推算液位高度。听起来很高级,但实际上:
- 温漂大得离谱:气压计对温度极其敏感,喝水时倒入热水,温度一变,读数就飘
- 绝对精度差:消费级气压计的分辨率虽然高(可以到厘米级水柱),但绝对精度和重复性完全不够
- 需要频繁校准:大气压本身就在变化(天气),每次使用前都要校准零点
- 杯口不密封:水杯不是密闭容器,气压计方案先天不足
相比之下,红外对管方案不受温度、水质、气压的任何影响。
9. 实际应用案例
9.1 医疗输液泵(2005~2012年,本人在某医疗电子公司)
输液泵需要对输液袋/输液瓶中的剩余药液进行实时监测,在药液即将耗尽时报警并自动停止输液。
为什么用红外对管?
- 医疗设备不允许出错——输液空了还在输液会产生气栓,严重可致死
- 输液袋里的药液种类繁多(生理盐水、葡萄糖、化疗药……),pH 值、电导率、粘度都不一样
- 电极法受药液电导率影响,电容法受介电常数影响——只有光学法对所有液体一视同仁
配置:8 组对管,2cm 间距,输液袋挂在挂钩上,对管阵列贴在输液袋外侧。
这个产品拿到了 CFDA 三类医疗器械注册证,出货量超过 30 万台。液位检测模块零故障。
9.2 智能水杯(2016~2018年,某消费电子创业公司)
在智能水杯项目上,我们沿用了红外对管方案:
- 6 组对管,覆盖 350ml 容量,每档约 58ml
- 杯体采用PCTG 透明材料(Tritan),省去开窗工序
- BLE 蓝牙连接手机 APP,实时上传饮水量数据
- 一杯电(200mAh 锂电池)续航约45 天(液位检测的低功耗设计功不可没)
量产数据:
- 首批 5000 台,液位检测不良率 < 0.8%
- 不良品分析:70% 是装配对位偏差,20% 是焊接虚焊,10% 是来料问题
- 改进装配工装后,不良率降至 < 0.1%
9.3 水位报警器(一个很小的副项目)
还做过一个简单的水位报警器:在鱼缸、花盆、地面积水检测等场景用。
只有 2 组对管:一组在底部(检测是否有水),一组在顶部(检测是否满水)。整个电路不到 5 块钱,一节 CR2032 用大半年。
10. 常见问题与排查
Q1: 同一个通道,有水和无水的 ADC 差值很小,怎么解决?
排查步骤:
- 用示波器看接收管两端的电压波形——是不是根本没有变化?
- 检查窗口是否有异物遮挡(贴膜、污渍、胶水溢出)
- 增大 R_load 电阻(试试翻倍),提高增益
- 增大 LED 驱动电流(减少限流电阻)
- 检查管子型号——是不是用了可见光 LED 而不是 940nm 红外 LED?
- 换个方向看——发射管和接收管是不是装反了?(真的有批量装反的惨案)
Q2: 为什么空杯时 ADC 值也很低(应该很高的)?
排查步骤:
- 管子装反了(发射和接收互换)
- 发射管正负极反了
- 光路被遮挡
- 杯体材料对红外不透明(把杯子放在发射管和接收管之间,用手电筒照一下,看透不透)
- 接收端 R_load 虚焊/变值
Q3: 有水无水能区分,但档位偶尔跳变?
排查步骤:
- 消抖时间够不够?增加到 3 秒试试
- 杯子是否倾斜?加个倾角检测
- 是否有气泡附着在窗口上?水里加点洗洁精再测试,如果问题消失就是气泡
- 检查电源纹波——纹波大了会导致 ADC 不稳
Q4: 开窗方案会不会漏水?
不会。窗口是在杯体外壳上,不是在内胆上。杯体内胆是完整的密封容器(玻璃或不锈钢内胆),红外对管检测的是透过外壳和内胆的光路。外壳上的窗口只是个"观测窗",不影响密封。
Q5: 能不能用在金属杯子上?
不能直接贴在外面用。金属对红外光完全不透明。如果一定要用金属杯子:
- 方案 1:在金属杯体上开窗(机械加工成本高)
- 方案 2:在杯口上方做一个小型的透明"液位柱"(连通器原理),在液位柱上做检测
- 方案 3:换方案——金属杯子建议用称重法
结语
写了这么多,其实归根到底就一句话:好的方案,往往是简单的方案。
红外对管测液位这个东西,原理简单到不用解释,器件便宜到不用还价,可靠到不用怀疑。它不是什么"新科技"——80 年代就有成熟应用了。但它就是好用,经过了时间的检验。
在一个动不动就上激光雷达、AI 视觉、毫米波传感器的时代,能用几毛钱的红外对管解决的问题,就别搞那么复杂。这也算是我做了 40 年电子工程的一点心得:工程技术的最高境界,不是把事情做复杂,而是把事情做简单。
版权声明:本文为作者原创,欢迎转载,转载请注明出处。
联系与合作:如有技术问题或合作需求,欢迎私信交流。但别问我能不能免费帮你画板子,我的退休金还没攒够。
写于 2026 年 7 月某个周末的午后,一壶铁观音,一台示波器,调了一下午的电源纹波,顺便写了这篇。