opencad
← Machines
MachinePASS 10/10

Peristaltic pump

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.

Facts

Backend
build123d
Gates
10 pass, 0 fail, 4 n/a
Envelope
61.0 × 115.0 × 81.9 mm
Bodies
14 (1 modelled, 13 purchased)
Joints
13
Simulations
1
Truth case
yes, scored against held-back geometry

Printable part designs

PartGatesFiles
tube
peristaltic-pump-tube
PASS 11/11STEP · STL

Assembled machine

FileKindSize
peristaltic-pump.stepSTEP27.8 MB
peristaltic-pump.stlSTL1.2 MB

Source

assembly.yaml (design contract)

Design intent

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.

Gates

TierGateResultEvidence
Aparts_pass
Every part design passed its own 12 gates and has a handoff STEP
PASSresults/build123d/peristaltic-pump/parts.json designs.<design>.gates_ok: peristaltic-pump-tube=True
Abom_complete
Every body of the bill of materials is in the export, once, with a placement
PASSresults/build123d/peristaltic-pump/verify.json solid_count = 14 (expected 14); placements.missing = []; unmatched = []
Ajoint_fidelity
Every joint's child frame lies on its parent frame (axis, offset, rest angle)
PASSresults/build123d/peristaltic-pump/verify.json joints.joints.<joint>.checks; failing: none
Aclearances
Static clearances and seats at rest
PASSresults/build123d/peristaltic-pump/verify.json clearances.<name>; failing: none
Amotion_clear
Every drive moves through its range without interference; gears mesh; ratios match tooth counts
PASSresults/build123d/peristaltic-pump/kinematics.json motions.<name>.max_interference: rollerPass=1.503
Afluid_domain
Each fluid region is one sealed piece within its volume band and agrees with the source's fluid body
n/aresults/build123d/peristaltic-pump/domains.json fluids.<name>:
Bexport_agreement
Each exported body equals its part handoff x placement; the assembled envelope matches
PASSresults/build123d/peristaltic-pump/verify.json agreement.bodies.<body>.volume_rel/hausdorff_mm; envelope.max_error = 0.00035534164906891874 (tol 1.5)
Bperformance
Every predicted observable meets the requirement the sources state over its numerical band (value +- 2 u_numerical)
PASSresults/build123d/peristaltic-pump/simulate.json observables.<id>.requirement: driveRatio=0.25
Bconservation
Energy, mass and force balances of every analysis close within their tolerance
n/aresults/build123d/peristaltic-pump/simulate.json simulations.<id>.conservation:
Brefinement
Every prediction of a mesh ladder is resolved: all its levels finished and the grid-convergence index is within tolerance
n/aresults/build123d/peristaltic-pump/simulate.json simulations.<id>.refinement.observables:
Csource_hygiene
The assembly source imports only its declared inputs, formats and lints clean
PASSresults/build123d/peristaltic-pump/verify.json hygiene: cad_refs=[] truth_refs=[]; ruff format True, ruff check True
Cboundaries_complete
Every face of a bounded body carries exactly one named boundary
n/aresults/build123d/peristaltic-pump/domains.json boundaries.<body>.unassigned/conflicts: none
Cprovenance
Stage JSONs carry provenance stamps; part handoffs are hash-bound; inputs carry provenance
PASSresults/build123d/peristaltic-pump/<stage>.json provenance present for ['verify', 'kinematics', 'domains', 'simulate']; parts.json designs.<d>.step_sha256 present: True
Cevidence_separation
No worker-visible artefact reads truth; the assembly source only places declared inputs
PASSresults/build123d/peristaltic-pump/verify.json hygiene.truth_refs = []

Bill of materials

BodyKindDesignMaterial
basepurchasedABS
motorpurchasedsteel
motorGearpurchasedABS
stackedGearpurchasedABS
outputGearpurchasedABS
upperCasepurchasedABS
statorpurchasedABS
lidpurchasedABS
clamppurchasedABS
rotorpurchasedABS
roller1purchasedsteel
roller2purchasedsteel
roller3purchasedsteel
tubemodelledperistaltic-pump-tubesilicone 50A