1
0
mirror of https://github.com/nophead/Mendel90.git synced 2025-01-17 04:48:15 +01:00
Mendel90/scad/vitamins/e3d_hot_end.scad

162 lines
4.3 KiB
OpenSCAD
Raw Normal View History

//
// Mendel90
//
include <../conf/config.scad>
rad_dia = 22; // Diam of the part with ailettes
rad_nb_ailettes = 11;
rad_len = 26;
nozzle_h = 5;
module e3d_nozzle(type) {
color("gold")
difference() {
union() {
cylinder(d1 = 1.3, d2 = 3, h = 2);
translate([0, 0, 2])
cylinder(d = 8, h = nozzle_h - 2, $fn=6);
}
translate([0, 0, -eta]) cylinder(d = 0.5, h = nozzle_h + 2 * eta);
}
}
resistor_len = 22;
resistor_dia = 6;
heater_width = 16;
heater_length = 20;
heater_height = 11.5;
heater_x = 4.5;
heater_y = heater_width / 2;
fan_x_offset = rad_dia / 2 + 4;
module e3d_resistor(type) {
translate([11 - heater_x, -3 - heater_y, heater_height / 2 + nozzle_h]) {
color("grey")
rotate([-90, 0, 0])
cylinder(r = resistor_dia / 2, h = resistor_len);
color("red")
translate([-3.5/2, resistor_len + 3.5/2 + 1, 0]) {
cylinder(d = 3.5, h = 36);
translate([3.5, 0, 0])
cylinder(r = 3.5 / 2, h = 36);
}
}
}
module heater_block(type) {
translate([0, 0, -hot_end_length(type)]) {
translate([0, 0, nozzle_h]) difference() {
color("lightgrey") union() {
// Heat break
cylinder(r = 2, h = heater_height + 10);
translate([-heater_x, -heater_y, 0])
cube([heater_length, heater_width, heater_height]);
}
cylinder(d=3, h = heater_height + 10 + eta); // Filament hole
}
e3d_resistor(type);
e3d_nozzle(type);
}
}
module e3d_rad(type) {
h_ailettes = rad_len / (2 * rad_nb_ailettes - 1);
difference() {
cylinder(d = rad_dia, h = rad_len);
translate([0, 0, -eta])
cylinder(r = hot_end_insulator_diameter(type) / 2 - eta, h = rad_len + 2 * eta);
for (i = [0 : rad_nb_ailettes -2 ] )
translate([0, 0, (2 * i + 1) * h_ailettes])
cylinder(r = rad_dia, h = h_ailettes);
}
}
module e3d_fan_duct(type) {
color("DeepSkyBlue")
render(convexity = 3) difference() {
hull() {
translate([-8, -23 / 2, 0])
cube([eta, 23, 26]);
translate([fan_x_offset, -30 / 2, 0])
cube([eta, 30, 30]);
}
cylinder(h = 70, d = rad_dia + 0.1, center = true); // For rad
translate([0, 0, 15])
rotate([0, 90, 0])
cylinder(d = rad_dia, h = 50);
}
}
module e3d_fan(type) {
e3d_fan_duct(type);
translate([fan_x_offset + 5, 0, 15])
rotate([0, 90, 0])
color("darkgrey")
fan(fan30x10);
}
module e3d_hot_end(type, filament) {
insulator_length = hot_end_insulator_length(type);
inset = hot_end_inset(type);
bundle = 3.2;
tape_thickness = 0.8;
vitamin(str(hot_end_part(type)," ",filament,"mm"));
translate([0, 0, inset - insulator_length]) {
color(hot_end_insulator_colour(type)) render(convexity = 10) {
difference() {
cylinder(d = hot_end_insulator_diameter(type), h = insulator_length);
cylinder(d = 3.2, h = insulator_length * 2 + 1, center = true); // Filament hole
translate([0, 0, insulator_length - hot_end_inset(type) - hot_end_groove(type) / 2])
tube(ir = hot_end_groove_dia(type) / 2, or = hot_end_insulator_diameter(type) / 2 + eta, h = hot_end_groove(type));
}
e3d_rad(type);
}
}
// Wire and ziptie
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);
translate([0, 0, 20])
cube([10, 10, 60], center = true);
}
}
rotate([0, 0, 90])
heater_block(type);
translate([0, 0, inset - insulator_length])
e3d_fan();
}
e3d_hot_end(e3d_clone);