From b71c72f46d088b82a63f40f08582212c7a29417f Mon Sep 17 00:00:00 2001 From: Sebastian Wendel Date: Tue, 19 Sep 2023 01:34:32 +0200 Subject: [PATCH] added falcon tube holder --- docs/images/tube-holder.png | Bin 0 -> 22118 bytes hardware/peristaltic-pump/tube-holder.scad | 56 +++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 docs/images/tube-holder.png create mode 100644 hardware/peristaltic-pump/tube-holder.scad diff --git a/docs/images/tube-holder.png b/docs/images/tube-holder.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2f991a5c1c5f099a941ec754e78d8275a63e46 GIT binary patch literal 22118 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 literal 0 HcmV?d00001 diff --git a/hardware/peristaltic-pump/tube-holder.scad b/hardware/peristaltic-pump/tube-holder.scad new file mode 100644 index 0000000..0c70f31 --- /dev/null +++ b/hardware/peristaltic-pump/tube-holder.scad @@ -0,0 +1,56 @@ +$fn = 100; + +case_thickness = 3; +case_wide = 100; + +tube_count = 3; +tube_radius = 15; +tube_height = 20; + +module hook() +{ + translate([ 23.5, -(tube_height + case_thickness * 1.5), tube_height - case_thickness ]) + rotate([ 0, 90, 0 ]) + { + linear_extrude(tube_height) + { + square([ tube_height - case_thickness, case_thickness ]); + rotate([ 0, 0, 90 ]) + square([ case_thickness * 2.5, case_thickness ]); + } + } +} + +module tube_holes(radius = tube_radius) +{ + circle(radius); + + translate([ (tube_radius * 2) + case_thickness, 0, 0 ]) + circle(radius); + + translate([ ((tube_radius * 2) + case_thickness) * 2, 0, 0 ]) + circle(radius); +} + +module tube_holder_base() +{ + difference() + { + hull() + { + tube_holes(tube_radius + (case_thickness)); + } + tube_holes(); + } +} + +module tube_holder() +{ + linear_extrude(tube_height) + { + tube_holder_base(); + } + hook(); +} + +tube_holder();