The open-source 3D-printed peristaltic pump of Behrens et al., placed from its published STEP parts with a modelled silicone tube and a roller-pass motion check.
| File | Kind | Size |
|---|---|---|
| peristaltic-pump.step | STEP | 27.8 MB |
| peristaltic-pump.stl | STL | 1.2 MB |
assembly.yaml (design contract)
Open-source 3D-printed peristaltic pump of Behrens et al. (Sci. Rep. 10, 1543, 2020), assembled in analysis mode from the published printed parts (sources/*.step, authoritative geometry, STL units = cm, placed at scale 10): the gearbox base is the datum; a purchased NEMA 17 stepper hangs under it; a reverted 12 -> 24 / 12 -> 24 spur train (motor gear, stacked gear on a countershaft 30 mm off the motor axis, output gear coaxial with the motor) drives the pump rotor 4:1; three purchased 623 ball bearings on the rotor's D3 pins roll the 3 mm OD / 1 mm ID silicone tube (modelled) against the R12.17 track of the 3 mm stator, which sits on the gearbox upper case under its lid, with the tube clamp on the stator's inlet side. Predict the delivered flow at the packet's test condition (108 rpm rotor, water, free outlet) and the motor-to-rotor drive ratio. sources/behrens-pump-packet.md is authoritative for the design and the test condition.
| Tier | Gate | Result | Evidence |
|---|---|---|---|
| A | parts_pass Every part design passed its own 12 gates and has a handoff STEP | PASS | results/build123d/peristaltic-pump/parts.json designs.<design>.gates_ok: peristaltic-pump-tube=True |
| A | bom_complete Every body of the bill of materials is in the export, once, with a placement | PASS | results/build123d/peristaltic-pump/verify.json solid_count = 14 (expected 14); placements.missing = []; unmatched = [] |
| A | joint_fidelity Every joint's child frame lies on its parent frame (axis, offset, rest angle) | PASS | results/build123d/peristaltic-pump/verify.json joints.joints.<joint>.checks; failing: none |
| A | clearances Static clearances and seats at rest | PASS | results/build123d/peristaltic-pump/verify.json clearances.<name>; failing: none |
| A | motion_clear Every drive moves through its range without interference; gears mesh; ratios match tooth counts | PASS | results/build123d/peristaltic-pump/kinematics.json motions.<name>.max_interference: rollerPass=1.503 |
| A | fluid_domain Each fluid region is one sealed piece within its volume band and agrees with the source's fluid body | n/a | results/build123d/peristaltic-pump/domains.json fluids.<name>: |
| B | export_agreement Each exported body equals its part handoff x placement; the assembled envelope matches | PASS | results/build123d/peristaltic-pump/verify.json agreement.bodies.<body>.volume_rel/hausdorff_mm; envelope.max_error = 0.00035534164906891874 (tol 1.5) |
| B | performance Every predicted observable meets the requirement the sources state over its numerical band (value +- 2 u_numerical) | PASS | results/build123d/peristaltic-pump/simulate.json observables.<id>.requirement: driveRatio=0.25 |
| B | conservation Energy, mass and force balances of every analysis close within their tolerance | n/a | results/build123d/peristaltic-pump/simulate.json simulations.<id>.conservation: |
| B | refinement Every prediction of a mesh ladder is resolved: all its levels finished and the grid-convergence index is within tolerance | n/a | results/build123d/peristaltic-pump/simulate.json simulations.<id>.refinement.observables: |
| C | source_hygiene The assembly source imports only its declared inputs, formats and lints clean | PASS | results/build123d/peristaltic-pump/verify.json hygiene: cad_refs=[] truth_refs=[]; ruff format True, ruff check True |
| C | boundaries_complete Every face of a bounded body carries exactly one named boundary | n/a | results/build123d/peristaltic-pump/domains.json boundaries.<body>.unassigned/conflicts: none |
| C | provenance Stage JSONs carry provenance stamps; part handoffs are hash-bound; inputs carry provenance | PASS | results/build123d/peristaltic-pump/<stage>.json provenance present for ['verify', 'kinematics', 'domains', 'simulate']; parts.json designs.<d>.step_sha256 present: True |
| C | evidence_separation No worker-visible artefact reads truth; the assembly source only places declared inputs | PASS | results/build123d/peristaltic-pump/verify.json hygiene.truth_refs = [] |
| Body | Kind | Design | Material |
|---|---|---|---|
| base | purchased | ABS | |
| motor | purchased | steel | |
| motorGear | purchased | ABS | |
| stackedGear | purchased | ABS | |
| outputGear | purchased | ABS | |
| upperCase | purchased | ABS | |
| stator | purchased | ABS | |
| lid | purchased | ABS | |
| clamp | purchased | ABS | |
| rotor | purchased | ABS | |
| roller1 | purchased | steel | |
| roller2 | purchased | steel | |
| roller3 | purchased | steel | |
| tube | modelled | peristaltic-pump-tube | silicone 50A |