From f705c26cd4fde2a7ea4b5ba9fca2fda7d9ba4ec1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20=27Ax=27=20H=C5=AFla?= Date: Thu, 28 Feb 2013 15:38:19 +0100 Subject: [PATCH] Tensioning X axis idler --- box_frame/inc/metric.scad | 3 +- box_frame/x-end.scad | 55 ++++++------ box_frame/y-drivetrain.scad | 161 ++++++++++++++++++------------------ 3 files changed, 114 insertions(+), 105 deletions(-) rewrite box_frame/y-drivetrain.scad (69%) diff --git a/box_frame/inc/metric.scad b/box_frame/inc/metric.scad index 82a23a4..d63e4fb 100644 --- a/box_frame/inc/metric.scad +++ b/box_frame/inc/metric.scad @@ -21,10 +21,11 @@ m8_nut_diameter = 14.1; m4_diameter = 4.5; m4_nut_diameter = 9; +m4_nut_diameter_horizontal = 10; m3_diameter = 3.6; m3_nut_diameter = 5.3; -m3_nut_diameter_horizontal = 6.1; +m3_nut_diameter_horizontal = 6.8; m3_washer_diameter = 6.9; // Motors diff --git a/box_frame/x-end.scad b/box_frame/x-end.scad index 87605c7..e8f98d2 100644 --- a/box_frame/x-end.scad +++ b/box_frame/x-end.scad @@ -9,6 +9,7 @@ include use use +use //height and width of the x blocks depend on x smooth rod radius x_box_height = 52 + 2 * bushing_xy[0]; @@ -23,21 +24,25 @@ module x_end_motor(){ translate([0, -z_delta - 2, 0]) difference(){ union(){ - translate([-13.75, -14 + z_delta / 2, 30]) cube_fillet([17.5, 14 + z_delta, x_box_height], center = true, vertical=[0, 0, 3, 1.5], top=[0, 3, 6, 3], $fn=16); - translate([-10, -34, 9]) intersection(){ - translate([0, 0, 0]) cube_fillet([10, 37, x_box_height - 42], center = true, vertical=[0, 0, 0, 0], top=[0, 3, 5, 3]); - translate([-10/2, 10, -26]) rotate([45, 0, 0]) cube_fillet([10, 60, 60], radius=2); - translate([0, 0, 21]) cube([10, 60, x_box_height], center = true); + intersection() { + translate([-15, -34, 30]) cube([20, 60, x_box_height], center = true); + union() { + translate([-13.75, -14 + z_delta / 2, 24]) cube_fillet([17.5, 14 + z_delta, 55], center = true, vertical=[0, 0, 3, 1.5], top=[0, 3, 6, 3], $fn=16); + translate([-10, -34, 9]) intersection(){ + translate([0, 0, -5]) cube_fillet([10, 37, 28], center = true, vertical=[0, 0, 0, 0], top=[0, 3, 5, 3]); + translate([-10/2, 10, -26]) rotate([45, 0, 0]) cube_fillet([10, 60, 60], radius=2); + } + } } - translate([-15, -32, 30.25]) rotate([90, 0, 0]) rotate([0, 90, 0]) nema17(places=[1, 0, 1, 1], h=10); + translate([-15.5, -32, 30.25]) rotate([90, 0, 0]) rotate([0, 90, 0]) nema17(places=[1, 0, 1, 1], h=11); } // motor screw holes translate([21-5, -21-11, 30.25]){ // belt hole - translate([-30, 11, 0]) cube([10, 36, 20], center = true); + translate([-30, 11, -0.25]) cube([11, 36, 24], center = true); //motor mounting holes - translate([-29, 0, 0]) rotate([0, 0, 0]) rotate([0, 90, 0]) nema17(places=[1, 1, 0, 1], holes=true, shadow=5, $fn=7, h=8); + translate([-28.5, 0, 0]) rotate([0, 0, 0]) rotate([0, 90, 0]) nema17(places=[1, 1, 0, 1], holes=true, shadow=5, $fn=7, h=8); } } //smooth rod caps @@ -46,18 +51,18 @@ module x_end_motor(){ } } -module x_end_base(vfillet=[3, 3, 3, 3], thru=true, len=40){ +module x_end_base(vfillet=[3, 3, 3, 3], thru=true, len=40, offset=0){ difference(){ union(){ - translate([-10 - bushing_xy[0], -10 + len / 2, 30]) cube_fillet([x_box_width, len, x_box_height], center=true, vertical=vfillet, top=[5, 3, 5, 3]); + translate([-10 - bushing_xy[0], -10 + len / 2 + offset, 30]) cube_fillet([x_box_width, len, x_box_height], center=true, vertical=vfillet, top=[5, 3, 5, 3]); translate([0, 0, 4 - bushing_xy[0]]) { //rotate([0, 0, 0]) translate([0, -9.5, 0]) - translate([z_delta, 0, 0]) linear(bushing_z, x_box_height); + translate([z_delta, 0, 0]) render(convexity = 5) linear(bushing_z, x_box_height); // Nut trap //difference(){ - translate([-2, 17, 4]) cube_fillet([20, 16, 8], center = true, vertical=[6, 0, 0, 0], $fn=4); + translate([-2, 17, 4]) cube_fillet([20, 16, 8], center = true, vertical=[7, 0, 0, 0], $fn=4); //bottom hole //} } @@ -66,9 +71,9 @@ module x_end_base(vfillet=[3, 3, 3, 3], thru=true, len=40){ translate([z_delta, 0, 4 - bushing_xy[0]]) linear_negative(bushing_z, x_box_height); // belt hole - translate([-5.5-10+1.5, 22-9, 30]) cube([idler_width + 1, 55, 27], center = true); + translate([-5.5 - 10 + 1.5, 22 - 9 + offset, 30]) cube([max(idler_width + 2, 11), 55, 27], center = true); - translate([-10 - bushing_xy[0], 0, 0]) { + translate([-10 - bushing_xy[0], offset, 0]) { if(thru == true){ translate([0, -11, 6]) rotate([-90, 0, 0]) pushfit_rod(bushing_xy[0] * 2 + 0.2, 50); translate([0, -11, xaxis_rod_distance+6]) rotate([-90, 0, 0]) pushfit_rod(bushing_xy[0] * 2 + 0.2, 50); @@ -91,20 +96,24 @@ module x_end_base(vfillet=[3, 3, 3, 3], thru=true, len=40){ module x_end_idler(){ difference() { - x_end_base(len=45); + x_end_base(len=43 + z_delta, offset=-8 - z_delta); // idler hole - translate([-14, 26, 29]) rotate([0, 90, 0]) { - idler_assy(idler_bearing); - translate([0,20,0]) - cube([idler_assy_r_outer(idler_bearing) * 2, 40, idler_width + 1], center=true); - if (idler_bearing[3]) { - %translate([0, 0, -(idler_width / 2)]) bearing_guide_outer(); - %translate([0, 0, idler_width / 2]) mirror([0, 0, 1]) bearing_guide_inner(); - } + translate([-20, -14 - z_delta, 30]) { + rotate([0, 90, 0]) cylinder(r=m4_diameter / 2, h=33, center=true, $fn=7); + translate([15 - 2 * single_wall_width, 0, 0]) rotate([90, 0, 90]) cylinder(r=m4_nut_diameter_horizontal / 2, h=3, $fn=6); + } + translate([-6 - x_box_width, 11, 20]) cube([x_box_width + 1, 11, 21]); } + %translate([-14, -9, 20]) x_tensioner(); } +module x_tensioner(len=62, idler_height=20) { + idlermount(len=len, rod=3.4, idler_height=idler_height, narrow_len=46, narrow_width=idler_width + 2 - single_wall_width); +} + + +translate([-40, 0, 4 - bushing_xy[0]]) x_tensioner(); mirror([0, 0, 0]) x_end_idler(thru=true); // translate([40, 40, 0]) x_end_idler(thru=false); translate([50, 0, 0]) x_end_motor(); diff --git a/box_frame/y-drivetrain.scad b/box_frame/y-drivetrain.scad dissimilarity index 69% index 301a3e8..33f71d3 100644 --- a/box_frame/y-drivetrain.scad +++ b/box_frame/y-drivetrain.scad @@ -1,81 +1,80 @@ -// PRUSA iteration3 -// Y drivetrain (idler and stepper holders) -// GNU GPL v3 -// Josef Průša -// Václav 'ax' Hůla -// http://www.reprap.org/wiki/Prusa_Mendel -// http://github.com/prusajr/PrusaMendel - -include -use - -module motorholder(thickness=10){ - difference(){ - union(){ - // Motor holding part - translate([29,-21+50,0]) - { - //#cube([42,42,2], center=true); - difference(){ - union(){ - translate([-21+4.5,0,5]) cube([9,31,thickness], center=true); - nema17([0,1,1,0], thickness=thickness, shadow=false); - mirror([0,0,1])translate([0,0,-10])nema17([0,1,1,0], thickness=thickness, shadow=7); - // Parts joining part - translate([-29,-21,0]) cube([14,30,thickness]); - } - // Motor mounting holes - translate([0,0,thickness]) mirror([0,0,1]) nema17([0,1,1,0], thickness=thickness, holes=true); - } - } - - // Front holding part - translate([0,10,0]) cylinder(h = thickness, r=8); - translate([0,20,5]) cube([16,20,thickness], center=true); - translate([0,30,0]) cylinder(h = thickness, r=8); - } - translate([0,10,-1]) cylinder(h = 12, r=4.5); - translate([0,30,-1]) cylinder(h = 12, r=4.5); - } -} - -module oval(r=4,l=15,h=2){ -translate([l/2,0,0])cylinder(r=r,h=h,$fn=4); -translate([-l/2,0,0])cylinder(r=r,h=h,$fn=4); -translate([0,0,h/2])cube([l,r*2,h],center=true); -} - - -module idlermount(){ - difference(){ - union(){ - translate([0, idler_bearing[2]/2 - 6, 0] ) cube_fillet([16,40 + idler_bearing[2], 10 + idler_width], vertical = [0,0,0,0], top = [3,0,3,0], bottom = [3,0,3,0], center=true); - } -// translate([0,12,-1]) cylinder(h = 120, r=idler_bearing[2]/2 + 1, $fn=7, center=true); - translate([0,-10,-12]) rotate([0,0,90]) oval(r=4.5,l=12,h=25); - translate([0,-20,0]) rotate([90,60,0]) cylinder(r=3.4, h=5, $fn=6, center=true); - translate([0,-20,0]) rotate([90,0,0]) cylinder(r=3.2/2, h=15, $fn=10, center=true); - -// translate([0,12,0]) { -// %cylinder(h = idler_width, r=(idler_bearing[0] / 2) + 2 * single_wall_width, center=true); -// cylinder(h = idler_width + 1, r=(idler_bearing[0] / 2) + 8, center=true); -// } - translate([0,12,0]) { - idler_assy(idler_bearing); - translate([0, 10, 0]) cube([20, 20, idler_width + 1], center=true); - } - - } -} - - -motorholder(); -translate([32,20,8]) rotate([0,90,0]) idlermount(); - -if (idler_bearing[3] == 1) { - translate([0, -12 - idler_bearing[0] / 2, 0]) { - bearing_guide_inner(); - translate([idler_bearing[0]+10, 0, 0]) - bearing_guide_outer(); - } -} +// PRUSA iteration3 +// Y drivetrain (idler and stepper holders) +// GNU GPL v3 +// Josef Průša +// Václav 'ax' Hůla +// http://www.reprap.org/wiki/Prusa_Mendel +// http://github.com/prusajr/PrusaMendel + +include +use + +module motorholder(thickness=10){ + difference(){ + union(){ + // Motor holding part + translate([29, -21 + 50, 0]) + { + //#cube([42, 42, 2], center=true); + difference(){ + union(){ + translate([-21 + 4.5, 0, 5]) cube([9, 31, thickness], center=true); + nema17([0, 1, 1, 0], thickness=thickness, shadow=false); + mirror([0, 0, 1]) translate([0, 0, -10]) nema17([0, 1, 1, 0], thickness=thickness, shadow=7); + // Parts joining part + translate([-29, -21, 0]) cube([14, 30, thickness]); + } + // Motor mounting holes + translate([0, 0, thickness]) mirror([0, 0, 1]) nema17([0, 1, 1, 0], thickness=thickness, holes=true); + } + } + + // Front holding part + translate([0, 10, 0]) cylinder(h = thickness, r=8); + translate([0, 20, 5]) cube([16, 20, thickness], center=true); + translate([0, 30, 0]) cylinder(h = thickness, r=8); + } + translate([0, 10, -1]) cylinder(h = 12, r=4.5); + translate([0, 30, -1]) cylinder(h = 12, r=4.5); + } +} + +module oval(r=4, l=15, h=2){ + translate([l / 2, 0, 0]) cylinder(r=r, h=h, $fn=4); + translate([-l / 2, 0, 0]) cylinder(r=r, h=h, $fn=4); + translate([0, 0, h / 2]) cube([l, r * 2, h], center=true); +} + + +module idlermount(len=42, narrow_len=0, narrow_width=0, rod=threaded_rod_diameter_horizontal / 2, idler_height=16){ + difference(){ + union(){ + //wide part holding bearing + translate([- (10 + idler_width) / 2, -25 + narrow_len, 0] ) cube_fillet([10 + idler_width, len + idler_bearing[2] - narrow_len, idler_height]); + if (narrow_len > 0){ + translate([-narrow_width / 2, -25, 0] ) cube_fillet([narrow_width, len + idler_bearing[2], idler_height], vertical=[0, 0, 2, 2]); + } + } + translate([-12, -10, idler_height / 2]) rotate([90, 0, 90]) oval(r=rod, l=12, h=25); + translate([0, -17, idler_height / 2]) rotate([90, 0, 0]) cylinder(r=3.4, h=9, $fn=6, center=true); + translate([0, -19, idler_height / 2]) rotate([90, 90, 0]) cylinder(r=3.2/2, h=15, $fn=7, center=true); + + translate([0, len + idler_bearing[2] - 33, idler_height / 2]) { + rotate([0, 90, 0]) idler_assy(idler_bearing); + translate([0, 10, 0]) cube([idler_width + 1, 20, idler_height + 2], center=true); + } + + } +} + + +motorholder(); +translate([32, 20, 0]) idlermount(); + +if (idler_bearing[3] == 1) { + translate([0, -12 - idler_bearing[0] / 2, 0]) { + bearing_guide_inner(); + translate([idler_bearing[0] + 10, 0, 0]) + bearing_guide_outer(); + } +} -- 2.20.1