From 166ed05d4a4b0273ac25bbb308f7d42beadcc7dd Mon Sep 17 00:00:00 2001 From: Martin Budden Date: Fri, 13 Nov 2020 10:21:38 +0000 Subject: [PATCH] Add optional bowden connector to E3D hotends. --- tests/hot_ends.scad | 2 +- vitamins/e3d.scad | 39 ++++++++++++++++++++++++++++++++++++--- vitamins/hot_end.scad | 4 ++-- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/tests/hot_ends.scad b/tests/hot_ends.scad index cf6a5ca..a7a202e 100644 --- a/tests/hot_ends.scad +++ b/tests/hot_ends.scad @@ -25,7 +25,7 @@ module hot_ends() layout([for(h = hot_ends) 40]) translate([-20, 0]) rotate(90) - hot_end(hot_ends[$i], 3); + hot_end(hot_ends[$i], 3, bowden = $i == 3); if($preview) hot_ends(); diff --git a/vitamins/e3d.scad b/vitamins/e3d.scad index 4bb338a..040b1ca 100644 --- a/vitamins/e3d.scad +++ b/vitamins/e3d.scad @@ -26,6 +26,8 @@ include include include +use <../utils/rounded_cylinder.scad> +use <../utils/thread.scad> use <../utils/tube.scad> rad_dia = 22; // Diam of the part with ailettes @@ -94,7 +96,34 @@ module heater_block(type, naked = false, resistor_wire_rotate = [0,0,0]) { } } +module bowden_connector(cap_colour = grey(20)) { + ir = 4.25 / 2; + body_colour = "silver"; + color(body_colour) { + translate_z(-4.5) { + tube(or = 2.5, ir = ir, h = 4.5, center = false); + male_metric_thread(6, metric_coarse_pitch(5), length = 4.5, center = false, solid = false, colour = body_colour); + } + tube(or = 7.7 / 2, ir = ir, h = 2, center = false); + translate_z(2) + linear_extrude(6.5) + difference() { + circle(d = 11.55, $fn = 6); + circle(r = ir); + } + translate_z(8.5) + rounded_cylinder(r = 9.8 / 2, h = 2, r2 = 1.5, ir = ir); + translate_z(10.5) + tube(or = 3.5, ir = ir, h = 0.5, center = false); + } + color(cap_colour) { + translate_z(11) + tube(or = 3, ir = ir, h = 1, center = false); + translate_z(12) + tube(or = 5.5, ir = ir, h = 1.75, center = false); + } +} module e3d_fan_duct(type) { color("DeepSkyBlue") @@ -123,7 +152,7 @@ module e3d_fan(type) { fan(fan30x10); } -module e3d_hot_end(type, filament, naked = false, resistor_wire_rotate = [0,0,0]) { +module e3d_hot_end(type, filament, naked = false, resistor_wire_rotate = [0,0,0], bowden = false) { insulator_length = hot_end_insulator_length(type); inset = hot_end_inset(type); h_ailettes = rad_len / (2 * rad_nb_ailettes - 1); @@ -150,6 +179,10 @@ module e3d_hot_end(type, filament, naked = false, resistor_wire_rotate = [0,0,0] square([100, hot_end_groove(type)]); } + if(bowden) + translate_z(inset) + bowden_connector(); + rotate(90) heater_block(type, naked, resistor_wire_rotate); @@ -158,10 +191,10 @@ module e3d_hot_end(type, filament, naked = false, resistor_wire_rotate = [0,0,0] e3d_fan(); } -module e3d_hot_end_assembly(type, filament, naked = false, resistor_wire_rotate = [0,0,0]) { +module e3d_hot_end_assembly(type, filament, naked = false, resistor_wire_rotate = [0,0,0], bowden = false) { bundle = 3.2; - e3d_hot_end(type, filament, naked, resistor_wire_rotate); + e3d_hot_end(type, filament, naked, resistor_wire_rotate, bowden); // Wire and ziptie if(!naked) diff --git a/vitamins/hot_end.scad b/vitamins/hot_end.scad index 16e2f5e..1d5c79c 100644 --- a/vitamins/hot_end.scad +++ b/vitamins/hot_end.scad @@ -44,10 +44,10 @@ function hot_end_length(type) = hot_end_total_length(type) - hot_end_inset(type) use use -module hot_end(type, filament, naked = false, resistor_wire_rotate = [0,0,0]) { //! Draw specified hot end +module hot_end(type, filament, naked = false, resistor_wire_rotate = [0,0,0], bowden = false) { //! Draw specified hot end if(hot_end_style(type) == jhead) jhead_hot_end_assembly(type, filament, naked); if(hot_end_style(type) == e3d) - e3d_hot_end_assembly(type, filament, naked, resistor_wire_rotate); + e3d_hot_end_assembly(type, filament, naked, resistor_wire_rotate, bowden); }