微型泵选型时,一个常见误区是:目标流量为 Q,只要泵的“最大流量”大于 Q 就可以。实际上,最大流量通常对应接近零背压;最大压力则对应接近零流量。泵装入液路后,真正的流量由泵曲线与系统阻力曲线的交点决定,也就是系统工作点。
本文用一个简化的 Python 模型,把静压、管路层流压降、阀和接头的局部损失放在同一张压力预算中,并计算:
-
目标流量下需要多少压力;
-
泵在该流量下还能提供多少压力;
-
泵曲线与系统曲线的实际交点在哪里;
-
黏度、内径和过滤器负载变化后,压力余量是否仍然足够。
示例参数仅用于演示方法,不代表具体泵或元件的实测性能。最终选型应使用厂家曲线和整机台架数据。
1. 最大流量和最大压力为什么不能直接用于工作点
假设一台泵的数据表给出:
-
零背压最大流量:
120 mL/min; -
截止压力:
80 kPa。
这并不意味着泵能在 120 mL/min 时同时输出 80 kPa。为了演示,可先用一个二次函数近似泵曲线:
ΔP_pump(Q) = ΔP_shutoff × [1 - (Q / Q_free)²]
真实泵曲线未必是二次函数,可能还受驱动电压、PWM、频率、温度、介质和泵体公差影响。工程计算时,应把下面的近似函数替换为厂家曲线的插值结果。
2. 把液路需求写成系统压力曲线
系统需要的压力可以拆成三部分:
ΔP_system(Q) = ΔP_static + ΔP_laminar(Q) + ΔP_minor(Q)
其中:
-
ΔP_static是液位差、密闭容器压力或其他与流量无关的静压; -
圆管层流压降与流量近似成正比;
-
接头、弯头、阀口等局部损失常用与速度平方相关的形式估算。
圆管层流可使用 Hagen–Poiseuille 关系:
ΔP_laminar = 128 μLQ / (πd⁴)
这里最值得警惕的是 d⁴:内径的小幅变化,会显著改变系统阻力。
3. 建立一个可复用的 Python 模型
下面的代码统一用 SI 单位计算,输入和输出再转换为工程常用单位。
from dataclasses import dataclass
from math import pi
@dataclass
class FluidPath:
length_m: float
inner_diameter_m: float
viscosity_pa_s: float
density_kg_m3: float = 1000.0
minor_k: float = 0.0
static_pressure_pa: float = 0.0
def ml_min_to_m3_s(flow_ml_min: float) -> float:
return flow_ml_min * 1e-6 / 60.0
def pump_pressure_pa(
flow_ml_min: float,
free_flow_ml_min: float,
shutoff_pressure_kpa: float,
) -> float:
ratio = max(0.0, flow_ml_min / free_flow_ml_min)
return max(0.0, shutoff_pressure_kpa * 1000.0 * (1.0 - ratio**2))
def system_pressure_pa(flow_ml_min: float, path: FluidPath) -> float:
q = ml_min_to_m3_s(flow_ml_min)
d = path.inner_diameter_m
area = pi * d**2 / 4.0
velocity = q / area
dp_tube = 128.0 * path.viscosity_pa_s * path.length_m * q / (pi * d**4)
dp_minor = path.minor_k * path.density_kg_m3 * velocity**2 / 2.0
return path.static_pressure_pa + dp_tube + dp_minor
现在给出一组演示工况:0.8 mm 内径、0.6 m 总管长、水状液体、局部阻力系数合计为 3,并包含 8 kPa 静压。
path = FluidPath(
length_m=0.60,
inner_diameter_m=0.80e-3,
viscosity_pa_s=1.2e-3,
minor_k=3.0,
static_pressure_pa=8_000.0,
)
free_flow = 120.0 # mL/min
shutoff_pressure = 80.0 # kPa
target_flow = 60.0 # mL/min
available = pump_pressure_pa(target_flow, free_flow, shutoff_pressure)
required = system_pressure_pa(target_flow, path)
margin = available - required
print(f"available: {available / 1000:.1f} kPa")
print(f"required: {required / 1000:.1f} kPa")
print(f"margin: {margin / 1000:.1f} kPa")
margin > 0 只说明目标点在这个简化模型中可达。它还不等于设计已经稳健,因为参数公差和工况变化会继续消耗余量。
4. 求泵曲线与系统曲线的交点
工作点满足:
ΔP_pump(Q) = ΔP_system(Q)
如果不依赖 SciPy,可以用二分法求解:
def operating_point_ml_min(
path: FluidPath,
free_flow_ml_min: float,
shutoff_pressure_kpa: float,
iterations: int = 80,
) -> tuple[float, float]:
lo = 0.0
hi = free_flow_ml_min
for _ in range(iterations):
mid = (lo + hi) / 2.0
supply = pump_pressure_pa(
mid,
free_flow_ml_min,
shutoff_pressure_kpa,
)
demand = system_pressure_pa(mid, path)
if supply >= demand:
lo = mid
else:
hi = mid
flow = (lo + hi) / 2.0
pressure = system_pressure_pa(flow, path)
return flow, pressure
flow, pressure = operating_point_ml_min(
path,
free_flow,
shutoff_pressure,
)
print(f"operating flow: {flow:.1f} mL/min")
print(f"operating pressure: {pressure / 1000:.1f} kPa")
如果目标流量高于求出的工作流量,不能简单地用更高 PWM“补回来”。应先确认泵曲线在新驱动条件下如何变化,并检查噪声、寿命、温升、脉动和电源能力。
5. 不要只检查标称工况
稳健性检查至少应覆盖以下边界:
-
低温或高浓度试剂导致黏度上升;
-
软管内径负公差;
-
过滤器逐渐堵塞;
-
阀、接头和针头的压降偏差;
-
入口液位下降或出口容器背压上升;
-
泵性能批次差异、老化和供电波动。
可以先做一个简单的敏感性扫描:
for viscosity_mpa_s in [1.0, 1.5, 2.0, 3.0]:
case = FluidPath(
length_m=path.length_m,
inner_diameter_m=path.inner_diameter_m,
viscosity_pa_s=viscosity_mpa_s * 1e-3,
density_kg_m3=path.density_kg_m3,
minor_k=path.minor_k,
static_pressure_pa=path.static_pressure_pa,
)
q, dp = operating_point_ml_min(case, free_flow, shutoff_pressure)
print(
f"viscosity={viscosity_mpa_s:.1f} mPa·s, "
f"Q={q:.1f} mL/min, ΔP={dp/1000:.1f} kPa"
)
还可以把内径、管长、黏度和泵曲线参数作为随机变量做 Monte Carlo 分析,但在此之前,先把最坏情况边界列清楚通常更重要。
6. 工程落地时如何使用这张预算
推荐把压力预算分成三层:
-
计算值:直管、静压和有可靠参数的局部损失;
-
数据表值:阀、过滤器、针头、流量计等元件的压降曲线;
-
实测值:样机工作点、启动瞬态、阀切换和堵塞工况。
直管段可先用 FOREACH 流阻与压降计算器 核对单位、雷诺数和标称压降,再把结果放入系统级 Python 模型。对于非线性元件,应优先采用厂家曲线插值或实测表格,而不是强行套用直管公式。
最后,压力余量应在真实泵曲线和最坏工况上定义,而不是拿截止压力减去某一段管路的标称压降。若系统包含闭环流量控制,还要确认控制器在整个工作区间内仍有足够调节余量。
小结
微型泵的选型核心不是比较“最大流量”或“最大压力”两个孤立数字,而是找到泵曲线与系统曲线的交点。把静压、直管流阻、局部损失和元件曲线放在同一模型中,才能判断目标流量是否可达,以及工况变化后还剩多少压力余量。
本文由 FOREACH 工程团队整理,示例仅用于工程方法讨论。