1
0
mirror of https://github.com/nophead/Mendel90.git synced 2025-01-16 20:38:15 +01:00
Mendel90/scad/vitamins/jhead_hot_end.scad
Chris Palmer ad21323ec6 Mods to support e3d in the main branch.
Tweaks to the huxley extruder.
Now shows hot end filament diameter on the BOM.
Moved huxley spool holder back to give more room for lighting.
Updated README.md.
Added huxley to command line usage messages.
2016-01-16 10:47:25 +00:00

146 lines
5.7 KiB
OpenSCAD

//
// Mendel90
//
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
include <../conf/config.scad>
MK4_heater = [ 12.76, 15.88, 8.22, (15.88 / 2 - 4.5), (12.76 / 2 - 0.5 - 2.5 / 2), (-15.88 / 2 + 5), 9.5, 3];
MK5_heater = [ 12.76, 12.76, 8.22, (12.76 / 2 - 3.75), (12.76 / 2 - 0.5 - 2.5 / 2), (-12.76 / 2 + 4), 8, 2];
function heater_width(type) = type[0];
function heater_length(type) = type[1];
function heater_height(type) = type[2];
function resistor_x(type) = type[3];
function thermistor_y(type) = type[4];
function nozzle_x(type) = type[5];
function nozzle_cone(type) = type[6];
function nozzle_cone_length(type) = type[7];
barrel_tap_dia = 5;
barrel_dia = 6;
insulator_dia = 12;
module heater_block(type, resistor, thermistor) {
color("gold") render(convexity = 10) difference() {
cube([heater_length(type), heater_width(type), heater_height(type)], center = true);
translate([-heater_length(type) / 2, thermistor_y(type), 0]) // hole for thermistor
rotate([0, 90, 0])
cylinder(r = resistor_hole(thermistor) / 2, h = 2 * resistor_length(thermistor), center = true);
translate([resistor_x(type), 0, 0]) // hole for resistor
rotate([90, 0, 0])
cylinder(r = resistor_hole(resistor) / 2, h = heater_width(type) + 1, center = true);
translate([nozzle_x(type), 0, 0])
cylinder(r = barrel_tap_dia / 2, h = heater_height(type) + 1, center = true);
}
}
module jhead_hot_end(type, filament, exploded = exploded) {
resistor = RIE1212UB5C5R6;
thermistor = Epcos;
heater = type == JHeadMk4 ? MK4_heater : MK5_heater;
insulator_length = hot_end_insulator_length(type);
inset = hot_end_inset(type);
length = hot_end_total_length(type) - hot_end_bodge(type);
barrel_length = length - insulator_length;
cone_length = nozzle_cone_length(heater);
cone_end = 1;
cone_start = nozzle_cone(heater);
bundle = 3.2;
tape_width = 25;
tape_overlap = 10;
tape_thickness = 0.8;
vitamin(str(hot_end_part(type)," ",filament,"mm"));
vitamin("ST25110: 110mm x 25mm self amalgamating silicone tape");
//
// silcone tape
//
color("red")
if(exploded)
translate([0, max(hot_end_insulator_diameter(type) / 2, heater_length(heater) / 2 - nozzle_x(heater)),
-tape_width + tape_overlap + inset - insulator_length])
cube([110, tape_thickness, tape_width]);
else
hull() {
translate([0, 0, + inset - insulator_length])
cylinder(r = hot_end_insulator_diameter(type) / 2 + 2 * tape_thickness, h = tape_overlap);
translate([0, -nozzle_x(heater), inset - length + cone_length + 1 + heater_height(heater) / 2 + eta])
cube([heater_width(heater) + 4 * tape_thickness,
heater_length(heater) + 4 * tape_thickness, heater_height(heater)], center = true);
}
//
// insulator
//
translate([0, 0, inset - insulator_length])
color(hot_end_insulator_colour(type)) render(convexity = 10)
difference() {
cylinder(r = hot_end_insulator_diameter(type) / 2, h = insulator_length);
cylinder(r = 3.2 / 2, h = insulator_length * 2 + 1, center = true);
translate([0, 0, insulator_length - hot_end_inset(type) - hot_end_groove(type) / 2])
tube(ir = hot_end_groove_dia(type) / 2, or = 17 / 2, h = hot_end_groove(type));
}
//
// nozzle
//
translate([0, 0, inset - length + cone_length])
color("gold") render(convexity = 10) union() {
cylinder(r = cone_start / 2, h = barrel_length - cone_length);
translate([0, 0, -cone_length + eta])
cylinder(r1 = cone_end / 2, r = cone_start / 2, h = cone_length);
}
//
// Zip tie and heatshrink
//
rotate([0, 0, 10]) {
scale([1, (bundle + hot_end_insulator_diameter(type)) / hot_end_insulator_diameter(type)])
translate([0, -bundle / 2, -7])
rotate([0, 0, -110])
ziptie(small_ziptie, hot_end_insulator_diameter(type) / 2);
translate([0, -hot_end_insulator_diameter(type) / 2 - bundle / 2, 20])
scale([0.7, bundle / 6.4])
difference() {
tubing(HSHRNK64, 60);
if(!exploded)
translate([0, 0, 20])
cube([10, 10, 60], center = true);
}
}
wire("Red PTFE", 16, 170);
wire("Red PTFE", 16, 170);
//
// heater block
//
rotate([0, 0, 90])
translate([-nozzle_x(heater), 0, inset - length + heater_height(heater) / 2 + cone_length + 1]) {
heater_block(heater, resistor, thermistor);
intersection() {
group() {
translate([resistor_x(heater), -exploded * 15, 0])
rotate([90, 0, 0])
sleeved_resistor(resistor, PTFE20, bare = - 10, on_bom = false, exploded = exploded);
translate([-heater_length(heater) / 2 + resistor_length(thermistor) / 2 - exploded * 10, thermistor_y(heater), 0])
rotate([90, 0, -90])
sleeved_resistor(thermistor, PTFE07, on_bom = false, heatshrink = HSHRNK16, exploded = exploded);
}
if(!exploded)
cube(1, true); // hide the wires when not exploded
}
}
}
jhead_hot_end(hot_end);