2012-11-15 17:45:30 +00:00
|
|
|
//
|
|
|
|
// Mendel90
|
|
|
|
//
|
|
|
|
// nop.head@gmail.com
|
|
|
|
// hydraraptor.blogspot.com
|
|
|
|
//
|
|
|
|
include <../conf/config.scad>
|
|
|
|
|
2016-01-10 21:11:17 +00:00
|
|
|
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];
|
2012-11-15 17:45:30 +00:00
|
|
|
|
2012-11-17 10:33:00 +00:00
|
|
|
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];
|
2016-01-10 21:11:17 +00:00
|
|
|
function nozzle_cone_length(type) = type[7];
|
2012-11-15 17:45:30 +00:00
|
|
|
|
|
|
|
barrel_tap_dia = 5;
|
|
|
|
|
|
|
|
barrel_dia = 6;
|
|
|
|
insulator_dia = 12;
|
|
|
|
|
2012-11-17 10:33:00 +00:00
|
|
|
module heater_block(type, resistor, thermistor) {
|
2012-12-24 13:15:00 +00:00
|
|
|
color("gold") render(convexity = 10) difference() {
|
2012-11-17 10:33:00 +00:00
|
|
|
cube([heater_length(type), heater_width(type), heater_height(type)], center = true);
|
2012-11-15 17:45:30 +00:00
|
|
|
|
2012-11-17 10:33:00 +00:00
|
|
|
translate([-heater_length(type) / 2, thermistor_y(type), 0]) // hole for thermistor
|
2012-11-15 17:45:30 +00:00
|
|
|
rotate([0, 90, 0])
|
|
|
|
cylinder(r = resistor_hole(thermistor) / 2, h = 2 * resistor_length(thermistor), center = true);
|
|
|
|
|
2012-11-17 10:33:00 +00:00
|
|
|
translate([resistor_x(type), 0, 0]) // hole for resistor
|
2012-11-15 17:45:30 +00:00
|
|
|
rotate([90, 0, 0])
|
2012-11-17 10:33:00 +00:00
|
|
|
cylinder(r = resistor_hole(resistor) / 2, h = heater_width(type) + 1, center = true);
|
2012-11-15 17:45:30 +00:00
|
|
|
|
2012-11-17 10:33:00 +00:00
|
|
|
translate([nozzle_x(type), 0, 0])
|
|
|
|
cylinder(r = barrel_tap_dia / 2, h = heater_height(type) + 1, center = true);
|
2012-11-15 17:45:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-16 10:47:25 +00:00
|
|
|
module jhead_hot_end(type, filament, exploded = exploded) {
|
2012-11-15 17:45:30 +00:00
|
|
|
resistor = RIE1212UB5C5R6;
|
|
|
|
thermistor = Epcos;
|
2016-01-10 21:11:17 +00:00
|
|
|
heater = type == JHeadMk4 ? MK4_heater : MK5_heater;
|
2012-11-17 10:33:00 +00:00
|
|
|
|
2012-11-15 17:45:30 +00:00
|
|
|
insulator_length = hot_end_insulator_length(type);
|
|
|
|
inset = hot_end_inset(type);
|
2016-01-10 21:11:17 +00:00
|
|
|
length = hot_end_total_length(type) - hot_end_bodge(type);
|
|
|
|
barrel_length = length - insulator_length;
|
|
|
|
cone_length = nozzle_cone_length(heater);
|
2012-11-15 17:45:30 +00:00
|
|
|
cone_end = 1;
|
2012-11-17 10:33:00 +00:00
|
|
|
cone_start = nozzle_cone(heater);
|
2012-12-24 13:15:00 +00:00
|
|
|
bundle = 3.2;
|
2013-10-01 20:06:08 +01:00
|
|
|
tape_width = 25;
|
|
|
|
tape_overlap = 10;
|
|
|
|
tape_thickness = 0.8;
|
2012-11-15 17:45:30 +00:00
|
|
|
|
2016-01-16 10:47:25 +00:00
|
|
|
vitamin(str(hot_end_part(type)," ",filament,"mm"));
|
2013-10-01 20:06:08 +01:00
|
|
|
vitamin("ST25110: 110mm x 25mm self amalgamating silicone tape");
|
2016-01-10 21:11:17 +00:00
|
|
|
//
|
|
|
|
// silcone tape
|
|
|
|
//
|
2013-10-01 20:06:08 +01:00
|
|
|
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);
|
|
|
|
|
2016-01-10 21:11:17 +00:00
|
|
|
translate([0, -nozzle_x(heater), inset - length + cone_length + 1 + heater_height(heater) / 2 + eta])
|
2013-10-01 20:06:08 +01:00
|
|
|
cube([heater_width(heater) + 4 * tape_thickness,
|
|
|
|
heater_length(heater) + 4 * tape_thickness, heater_height(heater)], center = true);
|
|
|
|
}
|
2016-01-10 21:11:17 +00:00
|
|
|
//
|
|
|
|
// insulator
|
|
|
|
//
|
|
|
|
translate([0, 0, inset - insulator_length])
|
2012-12-24 13:15:00 +00:00
|
|
|
color(hot_end_insulator_colour(type)) render(convexity = 10)
|
2012-11-15 17:45:30 +00:00
|
|
|
difference() {
|
|
|
|
cylinder(r = hot_end_insulator_diameter(type) / 2, h = insulator_length);
|
|
|
|
cylinder(r = 3.2 / 2, h = insulator_length * 2 + 1, center = true);
|
2016-01-16 10:47:25 +00:00
|
|
|
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));
|
2012-11-15 17:45:30 +00:00
|
|
|
}
|
2016-01-10 21:11:17 +00:00
|
|
|
//
|
|
|
|
// nozzle
|
|
|
|
//
|
|
|
|
translate([0, 0, inset - length + cone_length])
|
2012-12-24 13:15:00 +00:00
|
|
|
color("gold") render(convexity = 10) union() {
|
2016-01-10 21:11:17 +00:00
|
|
|
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);
|
2012-11-15 17:45:30 +00:00
|
|
|
}
|
2016-01-10 21:11:17 +00:00
|
|
|
//
|
|
|
|
// Zip tie and heatshrink
|
|
|
|
//
|
2012-12-24 13:15:00 +00:00
|
|
|
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);
|
2012-11-17 10:33:00 +00:00
|
|
|
|
2012-12-24 13:15:00 +00:00
|
|
|
translate([0, -hot_end_insulator_diameter(type) / 2 - bundle / 2, 20])
|
|
|
|
scale([0.7, bundle / 6.4])
|
2013-10-01 20:06:08 +01:00
|
|
|
difference() {
|
|
|
|
tubing(HSHRNK64, 60);
|
|
|
|
if(!exploded)
|
|
|
|
translate([0, 0, 20])
|
|
|
|
cube([10, 10, 60], center = true);
|
|
|
|
}
|
2012-11-17 10:33:00 +00:00
|
|
|
|
2012-12-24 13:15:00 +00:00
|
|
|
}
|
2013-10-01 20:06:08 +01:00
|
|
|
wire("Red PTFE", 16, 170);
|
|
|
|
wire("Red PTFE", 16, 170);
|
2016-01-10 21:11:17 +00:00
|
|
|
//
|
|
|
|
// heater block
|
|
|
|
//
|
2012-11-15 17:45:30 +00:00
|
|
|
rotate([0, 0, 90])
|
2016-01-10 21:11:17 +00:00
|
|
|
translate([-nozzle_x(heater), 0, inset - length + heater_height(heater) / 2 + cone_length + 1]) {
|
2012-11-17 10:33:00 +00:00
|
|
|
heater_block(heater, resistor, thermistor);
|
2012-11-15 17:45:30 +00:00
|
|
|
|
2013-10-01 20:06:08 +01:00
|
|
|
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
|
|
|
|
}
|
2012-11-15 17:45:30 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-01-10 21:11:17 +00:00
|
|
|
jhead_hot_end(hot_end);
|