1
0
mirror of https://github.com/nophead/Mendel90.git synced 2025-08-31 00:39:55 +02:00

Pulleys and belts now T2.5 on kit version.

JHead now attached by three screws and washers.
New extruder breakout PCB.
Lots of instruction manual improvements from user feedback.
This commit is contained in:
Chris Palmer
2012-12-24 13:15:00 +00:00
parent e9b6ff5101
commit 1fab28d832
170 changed files with 186944 additions and 165966 deletions

View File

@@ -48,12 +48,12 @@ top_limit_switch = true;
single_piece_frame = true;
stays_from_window = false;
cnc_sheets = true; // If sheets are cut by CNC we can use slots, etc instead of just round holes
pulley_type = T5x10_metal_pulley;
pulley_type = T2p5x16_metal_pulley;
Y_carriage = DiBond;
X_belt = T5x6;
Y_belt = T5x6;
X_belt = T2p5x6;
Y_belt = T2p5x6;
motor_shaft = 5;
Z_screw_dia = 6; // Studding for Z axis

View File

@@ -117,10 +117,11 @@ module sector(r, a, h, , center = true) {
}
module tube(or, ir, h, center = true) {
difference() {
cylinder(r = or, h = h, center = center);
cylinder(r = ir, h = h + 1, center = center);
}
linear_extrude(height = h, center = center, convexity = 5)
difference() {
circle(or);
circle(ir);
}
}
//

View File

@@ -50,7 +50,7 @@ shell_length = shell_front + 12 + ribbon_clamp_width(cable_screw);
shell_screw_x = shell_length - wall - No2_pilot_radius;
pcb_width = 24.13;
pcb_length = 27.94; // + 2.54;
pcb_length = 33.02;
pcb_offset = 3 * 1.27;
@@ -95,7 +95,7 @@ module d_motor_bracket_lid_stl(motor = NEMA17, nuts = true) {
rotate([0, 0, -side * 360 / 20])
poly_cylinder(r = No2_clearance_radius, h = 100, center = true);
if(pcb && nuts && pcb_length == 27.94)
if(pcb && nuts)
cube([100, slot_width, 100], center = true);
}
}
@@ -306,27 +306,28 @@ module d_motor_bracket_assembly(motor) {
translate([0, 0, -length])
rotate([180, 0, -90])
explode([0, -15, 0]) group() {
if(pcb)
assembly("extruder_connection_pcb_assembly");
d_plug(connector, pcb = pcb);
if(pcb) {
assembly("extruder_connection_pcb_assembly");
translate([0, -pcb_length / 2 + pcb_offset, -d_pcb_offset(connector) - pcb_thickness / 2]) {
vitamin("PCB0000: Extruder connection PCB");
color("green") cube([pcb_width, pcb_length, pcb_thickness], center = true);
translate([2.5 * 1.27, -pcb_length / 2 + 8.89 - 1.5 * 2.54, pcb_thickness / 2])
terminal_254(3);
translate([2.5 * 1.27, -pcb_length / 2 + 8.89 - 2.54, pcb_thickness / 2])
terminal_254(4);
translate([2.5 * 1.27, -pcb_length / 2 + 8.89 + 1.5 * 2.54, pcb_thickness / 2])
terminal_254(3);
translate([2.5 * 1.27, -pcb_length / 2 + 8.89 + 2.75 * 2.54, pcb_thickness / 2])
molex_254(3);
translate([-3.5 * 1.27, -pcb_length / 2 + 8.89 - 1.5 * 2.54, pcb_thickness / 2])
rotate([0, 0, 180])
terminal_254(3);
molex_254(2);
translate([-3.5 * 1.27, -pcb_length / 2 + 8.89 + 1.5 * 2.54, pcb_thickness / 2])
translate([-3.5 * 1.27, -pcb_length / 2 + 8.89 + 2 * 2.54, pcb_thickness / 2])
rotate([0, 0, 180])
terminal_254(3);
}
terminal_254(4);
}
end("extruder_connection_pcb_assembly");
}
}

View File

@@ -23,12 +23,12 @@ module pulley_assembly() {
translate([0, pulley_bore(type) / 2 + pulley_screw_length(type), pulley_screw_z(type) + pulley_offset(type)[2]])
rotate([-90, 0, 0])
screw(M3_grub_screw, pulley_screw_length(type));
screw(pulley_screw(type), pulley_screw_length(type));
if(pulley_nut_y(type))
translate([0, pulley_nut_y(type), pulley_screw_z(type) + pulley_offset(type)[2]])
rotate([90, 0, 0])
nut(M3_nut);
nut(screw_nut(pulley_screw(type)));
}

View File

@@ -25,7 +25,7 @@ module belt(type, x1, y1, r1, x2, y2, r2, gap = 0) {
dy = y2 - y1;
length = round((pi * (r1 + r2 + thickness) + 2 * sqrt(dx * dx + dy * dy) - gap) / pitch) * pitch;
vitamin(str("BT", belt_pitch(type) * 10,width, round(length), ": Belt T", belt_pitch(type)," x ", width, "mm x ", round(length), "mm (PU & Kevlar)"));
vitamin(str("BT", belt_pitch(type) * 10,width, round(length), ": Belt T", belt_pitch(type)," x ", width, "mm x ", round(length), "mm"));
color(belt_color)
linear_extrude(height = width, center = true, convexity = 6) {

View File

@@ -76,10 +76,7 @@ module sleeved_resistor(type, sleeving, bare = 5, on_bom = true, heatshrink = fa
if(heatshrink)
translate([0, 0, sleeving_length + resistor_length(type) / 2 + bare / 2 + 30 * exploded])
if(exploded)
tubing(heatshrink);
else
%tubing(heatshrink);
tubing(heatshrink);
}
}
else {
@@ -88,11 +85,7 @@ module sleeved_resistor(type, sleeving, bare = 5, on_bom = true, heatshrink = fa
if(heatshrink)
translate([0, 0, side * (resistor_length(type) /2 + sleeving_length + 30 * exploded)])
if(exploded)
tubing(heatshrink);
else
%tubing(heatshrink);
tubing(heatshrink);
}
}

View File

@@ -13,6 +13,7 @@ DCONN15 = [39.14, [26.25, 25.25], 33.32, [9.26, 8.38], 12.55, 10.72, 6.693, 1.12
DCONN25 = [53.04, [40, 38.96], 47.04, [9.26, 8.38], 12.55, 10.72, 6.693, 1.12, 25];
function d_flange_length(type) = type[0];
function d_hole_pitch(type) = type[2];
function d_flange_width(type) = type[4];
function d_flange_thickness(type) = type[7];
function d_mate_distance(type) = 8.5;
@@ -45,7 +46,7 @@ module d_plug(type, socket = false, pcb = false, idc = false) {
flange_length = d_flange_length(type);
d_length = socket ? type[1][1] : type[1][0];
hole_pitch = type[2];
hole_pitch = d_hole_pitch(type);
d_width = socket ? type[3][1] : type[3][0];
flange_width = d_flange_width(type);
d_height = type[6];

View File

@@ -13,8 +13,8 @@ module sanguinololu() {
import("../imported_stls/sanguinololu.stl");
}
Sanguinololu = ["SANGUINOL: Electronics e.g. Sanguinolou", 4 * 25.4, 2 * 25.4, 1.5 * 2.54, []];
Melzi = ["MELZI: Electronics e.g. Melzi", 8.2 * 25.4, 1.95 * 25.4, 1.5 * 2.54, ["USBLEAD: USB A to Mini B lead",
Sanguinololu = ["SANGUINOL: Sanguinolou electronics", 4 * 25.4, 2 * 25.4, 1.5 * 2.54, []];
Melzi = ["MELZI: Melzi electronics", 8.2 * 25.4, 1.95 * 25.4, 1.5 * 2.54, ["USBLEAD: USB A to Mini B lead",
"SDCARD: Micro SD card",
"SDUSB: Micro SD to USB adapter"]];

View File

@@ -13,7 +13,7 @@ jhead = 3;
function jhead_groove() = 4.64;
function jhead_groove_offset() = 5.1; //4.76;
jhead_inset = jhead_groove() + jhead_groove_offset();
jhead_inset = jhead_groove_offset();
m90_hot_end_12mm = [m90, "HEM90340: Mendel 90 hot end", 57, 10, 12, 40, "tan", 6 + 3/2 - 1, false];
m90_hot_end_12p5mm = [m90, "HEM90340: Mendel 90 hot end", 57, 10, 12.5, 40, "tan", 6.25 + 3/2 - 1, false];

View File

@@ -25,7 +25,7 @@ insulator_dia = 12;
function jhead_groove_dia() = 12;
module heater_block(type, resistor, thermistor) {
color("gold") render() difference() {
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
@@ -54,11 +54,12 @@ module jhead_hot_end(type, exploded = exploded) {
cone_length = 3;
cone_end = 1;
cone_start = nozzle_cone(heater);
bundle = 3.2;
vitamin(hot_end_part(type));
translate([0, 0, inset - insulator_length]) {
color(hot_end_insulator_colour(type)) render()
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);
@@ -66,7 +67,7 @@ module jhead_hot_end(type, exploded = exploded) {
tube(ir = jhead_groove_dia() / 2, or = 17 / 2, h = jhead_groove());
}
color("gold") render() union() {
color("gold") render(convexity = 10) union() {
translate([0, 0, -barrel_length + cone_length + eta]) {
cylinder(r = cone_start / 2, h = barrel_length - cone_length);
translate([0, 0, -cone_length + eta])
@@ -75,13 +76,17 @@ module jhead_hot_end(type, exploded = exploded) {
}
}
translate([0, -2.0, -5])
ziptie(small_ziptie, hot_end_insulator_diameter(type) / 2 + 2.0);
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, -10, 20])
scale([1.5, 0.5])
tubing(HSHRNK64, 60);
translate([0, -hot_end_insulator_diameter(type) / 2 - bundle / 2, 20])
scale([0.7, bundle / 6.4])
tubing(HSHRNK64, 60);
}
wire("Red", 16, 170);
wire("Red", 16, 170);
@@ -91,7 +96,7 @@ module jhead_hot_end(type, exploded = exploded) {
translate([resistor_x(heater), -exploded * 15, 0])
rotate([90, 0, 0])
sleeved_resistor(resistor, PTFE20, bare = - 10, on_bom = false, heatshrink = HSHRNK24, exploded = exploded);
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])

View File

@@ -12,10 +12,12 @@ LM8UU = [24, 15, 8];
LM6UU = [19, 12, 6];
LM4UU = [12, 8, 4];
function bearing_radius(type) = type[1] / 2;
module linear_bearing(type) {
vitamin(str("LM",type[2],"UU: ","LM",type[2],"UU linear bearing"));
color(bearing_color) render() rotate([0,90,0]) difference() {
cylinder(r = type[1] / 2, h = type[0], center = true);
cylinder(r = bearing_radius(type), h = type[0], center = true);
cylinder(r = type[2] / 2, h = type[0] + 1, center = true);
}
}

View File

@@ -7,12 +7,13 @@
//
// Washers
//
M2p5_nut = [2.5, 5.8, 2.2, 3.8, M2p5_washer, M2p5_nut_trap_depth];
M3_nut = [3, 6.4, 2.4, 4, M3_washer, M3_nut_trap_depth];
M4_nut = [4, 8.1, 3.2, 5, M4_washer, M4_nut_trap_depth];
M6_nut = [6, 11.5, 5, 8, M6_washer, M6_nut_depth];
M6_half_nut = [6, 11.5, 3, 8, M6_washer, 3];
M8_nut = [8, 15, 6.5, 8, M8_washer, M8_nut_depth];
M2p5_nut = [2.5, 5.8, 2.2, 3.8, M2p5_washer, M2p5_nut_trap_depth];
M3_nut = [3, 6.4, 2.4, 4, M3_washer, M3_nut_trap_depth];
M4_nut = [4, 8.1, 3.2, 5, M4_washer, M4_nut_trap_depth];
M5_nut = [5, 9.2, 4, 6.25, M5_washer, M5_nut_depth];
M6_nut = [6, 11.5, 5, 8, M6_washer, M6_nut_depth];
M6_half_nut = [6, 11.5, 3, 8, M6_washer, 3];
M8_nut = [8, 15, 6.5, 8, M8_washer, M8_nut_depth];
function nut_radius(type) = type[1] / 2;
function nut_flat_radius(type) = nut_radius(type) * cos(30);

View File

@@ -7,8 +7,9 @@
//
pulley_inner_radius = (14.4 / 2) - belt_thickness(T5x6); // measured from outer diameter
T5x10_metal_pulley = ["T5", 10, 15, 12.85 / 2, 11.6, 7.9, 7, 5, 19.3, 1.7, 3, 10.7, [0, 0, -2], 0];
T5x8_plastic_pulley = ["../imported_stls/pulley.stl", 8, 0, pulley_inner_radius, 0, 0, 0, 5, 0, 0, 6, 4, [-10, -10, 0], 6];
T5x10_metal_pulley = ["T5", 10, 15, 12.85 / 2, 11.6, 7.9, 7, 5, 19.3, 1.7, 3, 10.7, [0, 0, -2], 0, M3_grub_screw];
T2p5x16_metal_pulley= ["T2.5", 16, 12.16, 12.16 / 2 - 0.8, 8, 16, 5.7, 5, 16.0, 1.0, 6, 3.75, [0, 0,1.3], 0, M4_grub_screw];
T5x8_plastic_pulley = ["../imported_stls/pulley.stl", 8, 0, pulley_inner_radius, 0, 0, 0, 5, 0, 0, 6, 4, [-10, -10, 0], 6, M3_grub_screw];
function pulley_type(type) = type[0];
function pulley_teeth(type) = type[1];
@@ -24,6 +25,7 @@ function pulley_screw_length(type) = type[10];
function pulley_screw_z(type) = type[11];
function pulley_offset(type) = type[12];
function pulley_nut_y(type) = type[13];
function pulley_screw(type) = type[14];
module metal_pulley(type) {
teeth = pulley_teeth(type);
@@ -51,7 +53,7 @@ module metal_pulley(type) {
translate([0, 0, pulley_screw_z(type)])
rotate([-90, 0, 0])
cylinder(r = 3/2, h = 100);
cylinder(r = screw_radius(pulley_screw(type)), h = 100);
}
}
}

View File

@@ -22,10 +22,12 @@ M3_pan_screw = ["PS030", "M3 pan screw", hs_pan, 3, 5.4, 2.0, M3_was
M3_hex_screw = ["HX030", "M3 hex screw", hs_hex, 3, 6.4, 2.125, M3_washer, M3_nut, M3_tap_radius, M3_clearance_radius];
M3_grub_screw = ["GB030", "M3 grub screw", hs_grub, 3, 1.6, 2.5, M3_washer, M3_nut, M3_tap_radius, M3_clearance_radius];
M4_grub_screw = ["GB040", "M4 grub screw", hs_grub, 4, 2.4, 2.5, M4_washer, M4_nut, M4_tap_radius, M4_clearance_radius];
M4_cap_screw = ["CS040", "M4 cap screw", hs_cap, 4, 7.0, 3.0, M4_washer, M4_nut, M4_tap_radius, M4_clearance_radius];
M4_hex_screw = ["HX040", "M4 hex screw", hs_hex, 4, 8.1, 2.925, M4_washer, M4_nut, M4_tap_radius, M4_clearance_radius];
M4_pan_screw = ["PS040", "M4 pan screw", hs_pan, 4, 7.8, 3.3, M4_washer, M4_nut, M4_tap_radius, M4_clearance_radius];
M8_cap_screw = ["CS080", "M8 cap screw", hs_cap, 8, 13, 7.78, M8_washer, M8_nut, M8_tap_radius, M8_clearance_radius];
M5_cap_screw = ["CS050", "M5 cap screw", hs_cap, 5, 8.5, 4, M5_washer, M5_nut, M5_tap_radius, M5_clearance_radius];
M8_cap_screw = ["CS080", "M8 cap screw", hs_cap, 8, 13, 6.0, M8_washer, M8_nut, M8_tap_radius, M8_clearance_radius];
M8_hex_screw = ["HX080", "M8 hex screw", hs_hex, 8, 15, 5.65, M8_washer, M8_nut, M8_tap_radius, M8_clearance_radius];
No2_screw = ["PSW02", "No2 pan wood screw", hs_pan, 2.2, 4.2, 1.7, M2p5_washer, false, No2_pilot_radius, No2_clearance_radius];

View File

@@ -56,5 +56,34 @@ module terminal_254(ways) {
}
}
module molex_254(ways) {
vitamin(str("MLXHDR", ways, ": ", ways, " way Molex KK header"));
pitch = 2.54;
width = ways * pitch;
depth = 6.35;
height = 8.15;
base = 3.18;
back = 1;
below = 2.3;
above = 9;
color("white") render()
difference() {
rotate([90, 0, 0])
linear_extrude(height = width, center = true, convexity = 5)
union() {
translate([-depth / 2, 0])
square([depth, base]);
translate([- depth / 2, 0])
square([back, height]);
}
}
color("silver") render()
for(i = [0: ways -1])
translate([0, i * pitch - width / 2 + pitch / 2, (above + below) / 2 - below]) {
cube([0.44, 0.75, above + below], center = true);
}
}
//terminal_254(6);

View File

@@ -9,8 +9,10 @@
//
M2p5_washer= [2.5, 5.9, 0.5, false, 5.4];
M3_washer = [3, 7, 0.5, false, 5.8];
M3_penny_washer =[3, 12, 0.8, false, 5.8];
M3p5_washer = [3.5, 8, 0.5, false, 6.9];
M4_washer = [4, 9, 0.8, false, 7.9];
M5_washer = [5, 10, 1.0, false, 9];
M5_penny_washer = [5, 20, 1.4, false, 8.8];
M6_washer = [6, 12, 1.5, false, 10.6];
M8_washer = [8, 17, 1.6, false, 13.8];

View File

@@ -22,7 +22,7 @@ module ziptie(type, r)
vitamin(str("ZT00", len, ": Ziptie ", len, "mm min length"));
angle = (r > latch[0] / 2) ? asin((latch[0] / 2) / r) - asin(ziptie_thickness(type) / latch[0]) : 0;
color(type[3]) render() union() {
color(type[3]) render(convexity = 5) union() {
tube(ir = r, or = r + ziptie_thickness(type), h = ziptie_width(type));
translate([0, -r, - latch[1] / 2])
rotate([90, 0, angle]) {

View File

@@ -39,8 +39,16 @@ filament_x = 75;
filament_z = 13;
extension = max(0, nozzle_length - hot_end_length(hot_end));
extension_width = 32;
extension_width = 30;
jhead_screw = M3_cap_screw;
jhead_screw_length = 16;
jhead_washer = M4_washer;
jhead_screw_pitch = max(hot_end_insulator_diameter(hot_end) / 2 + screw_head_radius(jhead_screw),
jhead_groove_dia() / 2 + washer_diameter(jhead_washer) / 2);
extension_rad = jhead_screw_pitch + 5;
extension_clearance = 1;
pscrew_y = [17.5, 45.5];
pscrew_z = [filament_z - 6.5, filament_z + 6.5];
@@ -65,7 +73,7 @@ module keyhole(r, h, l) {
entrance = 2 * R + 0.5;
y = sqrt(R * R - waist * waist / 4);
teardrop(h = h, r = R, center = true);
hull() {
*hull() {
translate([0, l, 0])
cube([entrance, 2 * eta, h ], center = true);
translate([0, y, 0])
@@ -75,6 +83,9 @@ module keyhole(r, h, l) {
nut_inset = min_wall;
jhead_screw_angle = 5;
jhead_nut_slot = nut_thickness(screw_nut(jhead_screw)) + 0.3;
module wades_block_stl() {
stl("wades_block");
@@ -85,6 +96,7 @@ module wades_block_stl() {
nut_slot = nut_thickness(M4_nut) + 0.3;
difference(){
union(){
cube([81, height, thickness]); // motor plate
@@ -105,10 +117,15 @@ module wades_block_stl() {
cube([11,11, width]);
if(extension)
translate([filament_x - extension_width / 2, -extension + eta, 0])
cube([extension_width, extension, width]);
translate([filament_x - extension_width / 2, -extension + extension_clearance + eta, 0])
intersection() {
cube([extension_width, extension - extension_clearance, width]);
translate([extension_width / 2, extension / 2, filament_z])
rotate([-90, 0, 0])
teardrop(r = extension_rad, h = extension + 1, center = true);
}
}
translate([92,base_thickness + 1,-1])
*translate([92,base_thickness + 1,-1])
rotate([0,0,45])
cube([10,9,30]); // chamfer on fillet
@@ -168,7 +185,7 @@ module wades_block_stl() {
// hole for hobbed bolt
//
difference() {
translate([driven_x, driven_y, 7 + layer_height - eta])
translate([driven_x, driven_y, 7 + layer_height + eta])
poly_cylinder(r = M8_clearance_radius + 0.25, h = 30);
translate([driven_x + 2, driven_y - 5, filament_z + 4 - eta])
@@ -188,16 +205,31 @@ module wades_block_stl() {
rotate([90,0,0]) {
if(hot_end_groove_mount(hot_end)) assign(relief = 0.5) {
translate([0, 0, -insulator_depth + jhead_groove_offset() / 2]) // slot for the flange
translate([0, 0, -insulator_depth + jhead_groove_offset() / 2 + eta]) // slot for the flange
keyhole(insulator / 2, jhead_groove_offset(), width - filament_z);
keyhole(12 / 2, insulator_depth * 2 - 1, width - filament_z); // slot fot the groove
translate([0, 0, -insulator_depth + jhead_groove_offset() - relief / 2])
keyhole(insulator / 2 + 0.5, relief, width - filament_z); // relief to avoid corner radius
translate([0, 0, -insulator_depth + relief / 2])
keyhole(insulator / 2 + 0.5, relief, width - filament_z); // relief to avoid corner radius
//
// Screw holes and nut traps
//
for(i = [0:2])
rotate([0, 0, i * 120 + jhead_screw_angle])
translate([jhead_screw_pitch, 0, 0])
rotate([0, 0, -i * 120 - jhead_screw_angle]) {
teardrop_plus(r = screw_clearance_radius(jhead_screw), h = jhead_screw_length * 2, center = true);
translate([0, 0, -base_thickness - extension - jhead_nut_slot / 2]) {
rotate([0, 0, [0, 30, 30][i]])
nut_trap(0, nut_radius(screw_nut(jhead_screw)), jhead_nut_slot / 2, horizontal = true);
assign(w = nut_flat_radius(screw_nut(jhead_screw)))
rotate([0, 0, [-90 ,0, 180][i]])
translate([-w, 0, -jhead_nut_slot / 2])
cube([w * 2, 100, jhead_nut_slot], center = false);
}
}
}
else {
teardrop_plus(h = insulator_depth * 2, r = insulator / 2, center = true); // insulator socket
@@ -215,29 +247,6 @@ module wades_block_stl() {
}
module jhead_insertion_jig_stl() {
stl("jhead_insertion_jig");
h1 = jhead_groove() - 1;
h2 = jhead_groove_offset() - 1;
l = width + 2 - filament_z;
w1 = hot_end_insulator_diameter(hot_end) - 2;
w2 = jhead_groove_dia() - 2;
color("blue")
union() {
difference() {
translate([-w1 / 2, 0, 0])
cube([w1, l, h1]);
poly_cylinder(r = hot_end_insulator_diameter(hot_end) / 2, h = 100, center = true);
}
difference() {
translate([- w2 / 2, 0, h1 - eta])
cube([w2, l, h2]);
poly_cylinder(r = jhead_groove_dia() / 2, h = 100, center = true);
}
}
}
spacer_length = 4 * 1.5;
gear_thickness = 6;
@@ -346,89 +355,96 @@ module extruder_motor_assembly(show_connector = true, exploded = exploded) {
end("extruder_motor_assembly");
}
module wades_assembly(show_connector = true) {
module wades_assembly(show_connector = true, show_drive = true) {
assembly("extruder_assembly");
color(wades_block_color) render()
difference() {
wades_block_stl();
*translate([-1,-1, filament_z]) // cross section
*translate([-1,-10, filament_z]) // cross section
cube([200,100,100]);
}
if(show_drive) {
// idler screws, washers and springs
for(i = [0,1])
translate([pscrew_x, pscrew_y[i], pscrew_z[i]])
rotate([90, 90, 90]) {
screw(M4_hex_screw, pscrew_length);
translate([0,0, -pscrew_length + nut_inset])
explode([12 - 24 * i, 0, 0])
nut(M4_nut);
translate([0,0, 0]) {
translate([0,0, -10 + 50 * exploded]) {
comp_spring(extruder_spring, 10);
for(i = [0,1])
translate([pscrew_x, pscrew_y[i], pscrew_z[i]])
rotate([90, 90, 90]) {
screw(M4_hex_screw, pscrew_length);
translate([0,0, -pscrew_length + nut_inset])
explode([12 - 24 * i, 0, 0])
nut(M4_nut);
translate([0,0, 0]) {
translate([0,0, -10 + 50 * exploded]) {
comp_spring(extruder_spring, 10);
}
}
}
}
// mounting screws
for(side = [-1, 1])
translate([filament_x + mount_pitch * side, base_thickness - 3, filament_z])
rotate([-90,0,0])
screw(M4_hex_screw, 20);
// mounting screws
for(side = [-1, 1])
translate([filament_x + mount_pitch * side, base_thickness - 3, filament_z])
rotate([-90,0,0])
screw(M4_hex_screw, 20);
//idler
translate([filament_x + 22 + 40 * exploded, driven_y, filament_z])
rotate([90, 0, -90])
wade_idler_assembly();
//idler
translate([filament_x + 22 + 40 * exploded, driven_y, filament_z])
rotate([90, 0, -90])
wade_idler_assembly();
// motor
translate([0, 0, 50 * exploded])
extruder_motor_assembly(show_connector, 0);
// motor
translate([0, 0, 50 * exploded])
extruder_motor_assembly(show_connector, 0);
translate([motor_x, motor_y, 0])
rotate([0, 180, -90])
NEMA_screws(NEMA17, 3, 10, M3_hex_screw);
translate([motor_x, motor_y, 0])
rotate([0, 180, -90])
NEMA_screws(NEMA17, 3, 10, M3_hex_screw);
}
// hobbed bolt and gear
translate([driven_x, driven_y, 0]) {
translate([0, 0, width - BB608[2] / 2])
translate([0, 0, width - BB608[2] / 2 + (!show_drive ? exploded * 20 : 0)])
ball_bearing(BB608);
translate([0, 0, BB608[2] / 2])
translate([0, 0, BB608[2] / 2 - (!show_drive ? exploded * 20 : 0)])
ball_bearing(BB608);
translate([0, 0, - 30 * exploded])
rotate([180, 0, 0])
color(wades_gear_spacer_color) render() wades_gear_spacer_stl();
translate([0, 0, -spacer_length - 50 * exploded])
rotate([180, 0, 0])
wades_big_gear_stl();
if(show_drive) {
translate([0,0, -spacer_length - gear_thickness])
rotate([180, 0, 0])
screw(M8_hex_screw, 60, spacer_length + gear_thickness + filament_z);
translate([0, 0, - 30 * exploded])
rotate([180, 0, 0])
color(wades_gear_spacer_color) render() wades_gear_spacer_stl();
translate([0,0, width]) {
if(spring) {
comp_spring(hob_spring, 8);
translate([0, 0, 8])
nut(M8_nut);
}
else explode([0, 0, 25]) group() {
translate([0, 0, -15 * exploded])
nut(M8_nut);
translate([0, 0, -spacer_length - 50 * exploded])
rotate([180, 0, 0])
wades_big_gear_stl();
translate([0, 0, nut_thickness(M8_nut) - 10 * exploded]) {
star_washer(M8_washer);
translate([0,0, -spacer_length - gear_thickness])
rotate([180, 0, 0])
screw(M8_hex_screw, 60, spacer_length + gear_thickness + filament_z);
translate([0, 0, washer_thickness(M8_washer) + 5 * exploded])
translate([0,0, width]) {
if(spring) {
comp_spring(hob_spring, 8);
translate([0, 0, 8])
nut(M8_nut);
}
else explode([0, 0, 25]) group() {
translate([0, 0, -15 * exploded])
nut(M8_nut);
translate([0, 0, nut_thickness(M8_nut) - 10 * exploded]) {
star_washer(M8_washer);
translate([0, 0, washer_thickness(M8_washer) + 5 * exploded])
nut(M8_nut);
}
}
}
}
}
//
@@ -436,13 +452,21 @@ module wades_assembly(show_connector = true) {
//
assembly("hot_end_assembly");
translate([filament_x, -extension, filament_z])
rotate([-90, 0, 0]) {
if(hot_end_style(hot_end) == m90)
m90_hot_end(hot_end);
if(hot_end_style(hot_end) == Stoffel)
stoffel_hot_end(hot_end);
if(hot_end_style(hot_end) == jhead)
jhead_hot_end(hot_end, exploded = 0);
rotate([-90, 0, 0]) difference() {
union() {
if(hot_end_style(hot_end) == m90)
m90_hot_end(hot_end);
if(hot_end_style(hot_end) == Stoffel)
stoffel_hot_end(hot_end);
if(hot_end_style(hot_end) == jhead)
jhead_hot_end(hot_end, exploded = 0, show_wires = false);
}
rotate([180, 0, 180])
translate([0, 0, hot_end_length(hot_end)] + hot_end_duct_offset(hot_end)) // trim the wires
tube(or = 100, ir = hot_end_duct_radius(hot_end) - 1, h = 30, center = true);
translate([0, 0, 60])
cube(100, center = true);
}
end("hot_end_assembly");
@@ -450,11 +474,22 @@ module wades_assembly(show_connector = true) {
for(side = [-1, 1])
translate([filament_x + hot_end_screw_pitch(hot_end) * side, screw_depth - extension, width])
screw(M3_cap_screw, 30);
else
translate([filament_x, -extension, filament_z])
for(i = [0:2]) assign(a = i * 120 - jhead_screw_angle)
rotate([90, a, 0]) {
translate([jhead_screw_pitch, 0, 0])
washer(jhead_washer)
star_washer(screw_washer(jhead_screw))
screw(jhead_screw, jhead_screw_length);
if(show_jigs)
translate([filament_x, hot_end_inset(hot_end) - 1 - extension, filament_z])
rotate([90, 0, 0])
jhead_insertion_jig_stl();
translate([jhead_screw_pitch, 0, -extension - base_thickness - jhead_nut_slot / 2 - nut_thickness(screw_nut(jhead_screw)) / 2])
explode([ [ 10 * cos(a), 10 * sin(a), 0],
[ 10 * sin(a), -10 * cos(a), 0],
[-10 * sin(a), 10 * cos(a), 0] ][i])
rotate([0, 0, [0, 30, 30][i]])
nut(screw_nut(jhead_screw));
}
end("extruder_assembly");
}

View File

@@ -634,13 +634,15 @@ module x_carriage_assembly(show_extruder = true, show_fan = true) {
translate([base_offset, bar_y, bar_offset]) {
linear_bearing(X_bearings);
rotate([0,-90,0])
ziptie(small_ziptie, bearing_ziptie_radius(X_bearings));
scale([bearing_radius(X_bearings) / bearing_ziptie_radius(X_bearings), 1])
ziptie(small_ziptie, bearing_ziptie_radius(X_bearings));
}
for(end = [-1,1])
translate([base_offset + bar_x * end, -bar_y, bar_offset]) {
linear_bearing(X_bearings);
rotate([90,-90,90])
ziptie(small_ziptie, bearing_ziptie_radius(X_bearings));
scale([bearing_radius(X_bearings) / bearing_ziptie_radius(X_bearings), 1])
ziptie(small_ziptie, bearing_ziptie_radius(X_bearings));
}
//
// Idler end belt clamp

View File

@@ -87,7 +87,8 @@ module y_bearing_assembly(height)
rotate([0,0,90]) {
linear_bearing(Y_bearings);
rotate([0,90,0])
ziptie(small_ziptie, bearing_ziptie_radius(Y_bearings));
scale([bearing_radius(X_bearings) / bearing_ziptie_radius(X_bearings), 1])
ziptie(small_ziptie, bearing_ziptie_radius(Y_bearings));
}
//

View File

@@ -16,7 +16,7 @@ clearance = 2;
thickness = M3_nut_trap_depth + bearing_clamp_tab_height;
rad = 3;
clamp_thickness = 3;
clamp_thickness = 2.8;
width = belt_width(Y_belt) + 3 + washer_diameter(M3_washer) + clearance;
inner_width = (M3_nut_radius + wall) * 2;
@@ -24,7 +24,8 @@ depth = washer_diameter(M3_washer) + clearance;
length = depth + 2 * (2 * M3_nut_radius * cos(30) + wall);
tooth_height = belt_thickness(Y_belt) / 2;
tooth_width = belt_pitch(Y_belt) / 2;
tooth_pitch = belt_pitch(Y_belt);
tooth_width = tooth_pitch / 2;
function y_belt_anchor_width() = width;
function y_belt_anchor_depth() = depth;
@@ -79,8 +80,10 @@ module y_belt_anchor(height, toothed) {
cylinder(r = M3_clearance_radius + 0.5, h = layer_height + eta);
if(toothed)
translate([0,depth / 2, height - eta + tooth_height / 2])
cube([belt_width(Y_belt), tooth_width, tooth_height], center = true);
for(i = [-1:1])
if(abs(i) * tooth_pitch + tooth_width / 2 < depth / 2)
translate([0, depth / 2 + i * tooth_pitch, height - eta + tooth_height / 2])
cube([belt_width(Y_belt), tooth_width, tooth_height], center = true);
}
}
@@ -96,8 +99,10 @@ module y_belt_clip(toothed) {
poly_cylinder(r = M3_clearance_radius, h = clamp_thickness + 1, center = true);
}
if(toothed)
translate([0,0, clamp_thickness - eta + tooth_height / 2])
cube([belt_width(Y_belt), tooth_width, tooth_height], center = true);
for(i = [-1:1])
if(abs(i) * tooth_pitch + tooth_width / 2 < depth / 2)
translate([0, i * tooth_pitch, clamp_thickness - eta + tooth_height / 2])
cube([belt_width(Y_belt), tooth_width, tooth_height], center = true);
}
}