艺术
美容与健康
工艺
文化与历史
娱乐
环境
食品与饮料
逆向工程
科学
体育
技术
可穿戴设备
蠕动泵:同时封闭两处,且没有任何阀门接触流体
English
Emma

创建者

Emma

27. 九月 2026SE
110
0
0
0
0

蠕动泵:同时封闭两处,且没有任何阀门接触流体

用两根手指把软管捏扁并沿其滑动:前方的液体被推向前,软管在手指后方弹回并重新充满。这就是蠕动泵的全部原理。转子带动滚轮沿弯曲的轨道转动,每个滚轮都将一段柔性管夹闭并沿其滚动。 只有管子的内壁会接触液体。没有可能堵塞的阀门,没有可能泄漏的密封件,除了可以丢弃的管子之外无需清洁。这就是它被用于输送血液、细胞培养、向供水系统投加化学品、混凝土以及打印机墨水的原因。 Rufus Porter 和 J. D. Bradley 于 1855 年将其申请为水井泵专利,并写下了每台蠕动泵至今仍必须遵守的一条规则:管子必须在**同一瞬间于两处闭合**。1881 年,Eugene Allen 利用同一原理输送血液,正因为它没有血液可能凝结其上的阀门。本课程将基于步进电机构建一个此类装置。
中级
约 6 小时

说明

1

先选管子——它决定了其他一切

管子就是泵。它的内径决定每转的流量,管壁决定滚轮需要挤压多用力,材质决定它能输送什么以及寿命多长。 本次制作请使用**硅胶**管:每次挤压后它能迅速恢复圆形,这正是重新填充滚轮后方管腔的关键。透明PVC管更便宜但更硬,恢复较慢,更早出现永久性扁平变形,只适合低速、偶尔使用的场合。 用游标卡尺在切割端面上沿圆周多个点测量内径和壁厚。被压扁的管子恰好是**两层管壁的厚度**;这就是滚轮与导轨之间的起始间隙。把这两个数值记录下来——下一步的导轨设计将以它们为基础。

此步骤所需材料:

硅胶管硅胶管1 米

所需工具:

6 英寸数显卡尺6 英寸数显卡尺
2

打印轨道、转子和滚轮

打印一个外壳,其上有一条半径为25毫米(至管道中心线)的弧形轨道,包绕**至少180度**——呈U形,管道从一侧进入、另一侧离开。打印一个三臂转子,使其通过紧定螺钉与步进电机的5毫米轴配合,并在每个臂端用机用螺钉安装一个滑板轴承作为滚轮。用滚动轴承代替固定销钉,正是泵与管道切割器的区别所在:销钉会拖拽管道并将其磨穿。 将轨道做成独立部件,用两颗螺钉穿过长孔固定,以便将其朝转子方向移动。这一调节即为**闭塞度**——即管道被挤压的程度——也是本泵唯一的设置项。 在轨道两端用打印的夹具夹紧管道,否则管道会随滚轮一起蠕动,直至被拉紧并停止泵送。

此步骤所需材料:

PETG线材PETG线材120 克
滚珠轴承滚珠轴承3 个
机螺钉机螺钉10 个
步进电机步进电机1 个

所需工具:

FDM 3D 打印机FDM 3D 打印机
6 英寸数显卡尺6 英寸数显卡尺
内六角扳手组内六角扳手组
充电式电钻充电式电钻
钻头套装钻头套装
3

每圈流量,以及“两处闭合”规则

正在加载 Jupyter 笔记本…
4

The drive: a stepper, a speed knob and a reverse button

A stepper motor is the right drive for a dosing pump: it turns a known angle per step, so the volume pumped is simply steps counted. This sketch reads a potentiometer for speed and a button to reverse — reversing is how you clear an air lock or empty a line back into its bottle. Set the driver's current limit before connecting the motor; a stepper run at the wrong current either stalls under the tube's resistance or overheats.
peristaltic_drive.inoarduino
/*
  peristaltic_drive.ino -- run a stepper-driven peristaltic pump at a set speed.

  Hardware: a NEMA 17 stepper on an A4988 (or DRV8825) driver board, a 10 k
  potentiometer for speed, and a push button to reverse.
  Wiring:   driver STEP -> D3, DIR -> D4, EN -> D8 (LOW = enabled)
            pot wiper -> A0, pot ends -> 5V and GND
            button    -> D2 and GND (internal pull-up)
  The driver's own VMOT must come from the 12 V supply, with a 100 uF capacitor
  across it at the board, and its current limit set BEFORE the motor is connected.
*/

const int PIN_STEP = 3;
const int PIN_DIR  = 4;
const int PIN_EN   = 8;
const int PIN_BTN  = 2;
const int PIN_POT  = A0;

const long STEPS_PER_REV = 200L * 16L;   // 1.8 deg motor, 1/16 microstepping
const float RPM_MIN = 2.0;
const float RPM_MAX = 150.0;

unsigned long lastStep = 0;
unsigned long interval = 0;              // microseconds between steps
bool forward = true;
bool lastBtn = HIGH;

void setup() {
  pinMode(PIN_STEP, OUTPUT);
  pinMode(PIN_DIR, OUTPUT);
  pinMode(PIN_EN, OUTPUT);
  pinMode(PIN_BTN, INPUT_PULLUP);
  digitalWrite(PIN_EN, LOW);
  digitalWrite(PIN_DIR, HIGH);
  Serial.begin(9600);
}

void loop() {
  // speed from the pot, re-read every loop so turning it takes effect at once
  float rpm = RPM_MIN + (RPM_MAX - RPM_MIN) * analogRead(PIN_POT) / 1023.0;
  interval = (unsigned long)(60.0e6 / (rpm * STEPS_PER_REV));

  // reverse on a button press (edge, not level), to clear an air lock
  bool b = digitalRead(PIN_BTN);
  if (b == LOW && lastBtn == HIGH) {
    forward = !forward;
    digitalWrite(PIN_DIR, forward ? HIGH : LOW);
    Serial.println(forward ? F("forward") : F("reverse"));
    delay(30);                           // crude debounce
  }
  lastBtn = b;

  unsigned long now = micros();
  if (now - lastStep >= interval) {
    lastStep = now;
    digitalWrite(PIN_STEP, HIGH);
    delayMicroseconds(2);
    digitalWrite(PIN_STEP, LOW);
  }
}

/*
  CALIBRATE, don't trust the arithmetic:
   1. Run into a graduated cylinder for exactly 100 rotor turns (count them on
      the serial print, or time them at a known rpm).
   2. Volume / 100 is your mL per turn. Compare it with the notebook's figure.
   3. Repeat with the outlet lifted 1 m higher. If the figure drops, the
      rollers are not closing the tube fully -- raise the occlusion.
*/

此步骤所需材料:

Arduino Uno R3Arduino Uno R31 个
步进电机驱动板步进电机驱动板1 个
电位器电位器1 个
跳线跳线1 套

所需工具:

装有 Arduino IDE 的电脑装有 Arduino IDE 的电脑
直流电源直流电源
5

设置遮挡并用水柱进行校准

先将滚轮轨道后退,使滚轮几乎不接触软管。将进液口放入装有一滴染料的水杯中,把出液口接到量筒里,然后缓慢启动泵。 一点点地向内移动轨道。起初泵几乎不输送液体:滚轮推动液体向前,但液体会从滚轮之间滑回。当间隙达到约两倍管壁厚度时,流量会突然增大。此时将出液口抬高到进液口上方一米,观察染料:如果它在滚轮经过间隙之间向后蠕动,就再将轨道稍微合拢一些。一旦染料停止回流,就停止调整。 不要再继续靠近。每多挤压一小部分毫米,软管在每次滚动时都会被压坏,缩短其使用寿命,却不会带来更多流量。 现在进行校准:计数泵送100圈进入量筒的液体量,计算每圈流量,并与实验记录本上的数值进行比较。实际泵的输送量会少于理论值,因为软管在滚轮之间无法完全恢复其圆形截面。这个实测数值,而非计算值,才是剂量泵实际运行所依据的数据。

此步骤所需材料:

水水1 升
食用色素(流动显示用染料)食用色素(流动显示用染料)1 滴

所需工具:

量筒量筒
秒表秒表
内六角扳手组内六角扳手组
卷尺卷尺
6

脉冲与软管磨损

正在加载 Jupyter 笔记本…
7

流路出现偏差:找出原因

蠕动泵的流量只取决于其管路和挤压状态。以下是会改变校准后每转毫升数的故障,按检查顺序列出。

Flow

Loading...
8

历史与背景

**美国专利 12,753号《弹性管泵》,由华盛顿特区的Rufus Porter与佛蒙特州布拉特尔伯勒的J. D. Bradley于1855年4月17日授予。** Porter是《Scientific American》(《科学美国人》)的创办人。该专利描述了硫化印度橡胶软管(当时仅有十年左右的商业应用历史)固定于圆柱形表面上,并由滚轮碾压。专利还指出了使泵得以工作的条件:软管必须在两个位置*“同一瞬间闭合”*。他们给出的一种做法是将软管盘绕一整圈。 **美国专利 249,285号《输血器械》,由密歇根州大急流城的Eugene E. Allen于1881年6月23日申请,并于1881年11月8日授权。** 一根内径约为八分之一英寸的橡胶软管铺设在小黄铜盒内的橡胶垫上,三个或更多玻璃滚轮装在环形皮带上,使其始终有一个滚轮将软管压闭。Allen在说明书中解释了原因:这种移动压力*“省去了所有吸入阀门,而由于血液的黏稠和纤维蛋白性质,这些阀门总会堵塞并形成血凝块”*。 滚轮泵此后出于Allen所给出的同一原因,被用于心肺机和透析机中输送血液。 **局限性坦白。** 它会产生脉动。其流量取决于会磨损的管子,因此会漂移,必须重新校准。其压力受限于管子能够密封的程度,对普通实验室管材而言仅为几巴。而磨损的管子不会平稳失效:它会破裂,其输送的任何物质都会进入泵头。
步骤 8 - Image 1

材料

11
  • 占位符
  • 120 克
    占位符
  • 3 个
    2 vendors sell this, none ship to you yet
    占位符
  • 10 个
    占位符
  • 1 个
    5 vendors sell this, none ship to you yet
    占位符
  • 1 个
    1 vendor sell this, none ship to you yet
    占位符
  • 1 个
    2 vendors sell this, none ship to you yet
    占位符
  • 1 个
    15 vendors sell this, none ship to you yet
    占位符
  • 1 套
    3 vendors sell this, none ship to you yet
    占位符
  • 1 升
    占位符
  • 占位符

所需工具

10

CC0 公共领域

此蓝图以 CC0 协议发布。你可以自由复制、修改、分发和使用此作品,无需征得许可。

通过购买蓝图中的产品支持创客,他们将获得 创客佣金 (由供应商设定),或创建此蓝图的新版本并将其作为连接包含在你自己的蓝图中以分享收入。

讨论

(0)

登录 加入讨论

加载评论中...