微流控液路里的气泡为何让响应变慢?用 Python 模拟气体顺应性

2 阅读4分钟

在微型泵、阀和压力传感器组成的液路中,一个很常见的现象是:泵已经启动,压力却没有立即建立;阀切换后,传感器读数缓慢爬升;控制器继续提高 PWM,随后又出现过冲。

这不一定是泵的响应慢。液路里残留的气泡会被压缩,相当于给系统加入了一个“弹性储能元件”。本文用一个简化的一阶模型,估算气泡体积对压力建立时间的影响。

1. 把液路看成阻力与顺应性的组合

对于圆管内的充分发展层流,管路可以先近似成液阻 R。气泡则提供气体顺应性 C_g。在等温、小扰动条件下:

C_g ≈ V_g / P_abs

其中:

  • V_g:气泡体积,单位 m³;
  • P_abs:气泡工作点的绝对压力,单位 Pa;
  • C_g:压力每变化 1 Pa,气泡可以吸收或释放的体积。

当液阻与气体顺应性串联时,可以得到近似时间常数:

tau = R * C_g

它与电路中的 RC 时间常数很相似。tau 越大,压力响应越慢。

2. 用 Python 比较不同气泡体积

下面假设管路等效液阻为 2e13 Pa·s/m³,入口压力发生阶跃变化,比较 5、20 和 50 μL 三种残留气泡。

import numpy as np
import matplotlib.pyplot as plt

R = 2.0e13          # hydraulic resistance, Pa*s/m^3
P_abs = 101_325     # absolute pressure at operating point, Pa
P_step = 30_000     # pressure step, Pa

bubble_ul = [5, 20, 50]
t = np.linspace(0, 40, 600)

for volume_ul in bubble_ul:
    Vg = volume_ul * 1e-9       # uL -> m^3
    Cg = Vg / P_abs
    tau = R * Cg
    pressure = P_step * (1 - np.exp(-t / tau))

    print(f"{volume_ul:>2} uL: tau = {tau:.2f} s")
    plt.plot(t, pressure / 1000, label=f"{volume_ul} uL, tau={tau:.2f}s")

plt.xlabel("Time (s)")
plt.ylabel("Gauge pressure (kPa)")
plt.title("Pressure build-up with trapped gas")
plt.grid(alpha=0.3)
plt.legend()
plt.tight_layout()
plt.show()

理论结果约为:

气泡体积时间常数 tau
5 μL0.99 s
20 μL3.95 s
50 μL9.87 s

一阶系统达到最终值 95% 通常需要约 3 × tau。因此,同一条液路中,50 μL 气泡可能让压力稳定时间接近 30 秒,而不是瞬间完成。

3. 为什么控制器容易出现过冲

如果压力环的积分项调得很快,而液路因气泡产生数秒延迟,控制器会在压力尚未建立时持续增加 PWM。气泡压缩完成后,这部分累积输出会推动压力超过目标值。

调试时可以依次检查:

  1. 先用透明管段或脱气流程确认是否存在残留气泡;
  2. 记录泵 PWM、压力原始值和阀状态,不只看滤波后的曲线;
  3. 比较有气泡与完全排气后的阶跃响应;
  4. 在机械液路确认后,再调整积分限幅、抗饱和和控制周期。

4. 模型没有包含哪些因素

这个模型用于数量级判断,不是整机验证的替代品。实际液路还可能包含软管弹性、膜片泵脉动、阀腔死体积、过滤器、接头局部损失、液体黏度变化,以及气泡溶解和温度变化。

另外,R 不应凭感觉指定。可以先根据管径、管长、流量和黏度估算直管液阻,再把阀、弯头、过滤器和针头作为额外压损评估。用于初步复核时,可参考 FOREACH 流体阻力与压降计算器

5. 一个实用的台架验证方法

在相同泵速、阀状态和液体条件下,分别做“充分排气”和“人为加入已知气泡体积”两组压力阶跃测试。对每条曲线记录达到最终压力 63.2% 的时间,这个时间可近似看作 tau

如果实测时间常数随气泡体积近似线性增长,说明顺应性模型抓住了主要矛盾;如果差异很大,则应继续检查软管弹性、泄漏、泵曲线与传感器滤波。

说明:作者参与 FOREACH 的微型泵、阀和液路组件相关工程工作。本文用于分享可复现的建模与验证方法,不构成具体产品选型结论。