z-axis: support position delta and improve rod support
authorClinton Ebadi <clinton@unknownlamer.org>
Sun, 28 Feb 2016 08:47:12 +0000 (03:47 -0500)
committerClinton Ebadi <clinton@unknownlamer.org>
Sun, 28 Feb 2016 08:47:12 +0000 (03:47 -0500)
zaxis_delta_y and zaxis_delta_x shift the entire z-axis away from the
frame. The Wilson TS frame moves the z-axis 5mm in x and y, and this
allows generating compatible z-axis parts. The 2020 frame benefits from
shifting the z-axis outward -- if it is not, the motor won't clear the
side of the mounts for the Wilson TS rear frame braces.

An additional support for the smooth rod hole is generated if the delta
is set. The motor mount walls are also removed if needed.

box_frame/configuration.scad.dist
box_frame/z-axis.scad

index 54ed572..53c4888 100644 (file)
@@ -137,3 +137,7 @@ bed_y_size=225;
 x_smooth_rod_length=380+board_thickness*2;
 y_smooth_rod_length=400;
 z_smooth_rod_length=320;
 x_smooth_rod_length=380+board_thickness*2;
 y_smooth_rod_length=400;
 z_smooth_rod_length=320;
+
+// shift smooth rod and leadscrew
+zaxis_delta_x = 0;
+zaxis_delta_y = 0;
\ No newline at end of file
index df400f8..2ab5f88 100644 (file)
@@ -27,11 +27,15 @@ module zmotorholder(thickness=(frame_type == frame_single ? 38 : 23), bottom_thi
             // Motor holding part
             difference(){
                 union(){
             // Motor holding part
             difference(){
                 union(){
-                    zrodholder(thickness=thickness, xlen=45, ylen=44, zdelta=((i_want_to_use_single_plate_dxf_and_make_my_z_weaker == 0) ? 0 : 5), am_top=0);
-                    translate([board_to_xz_distance, board_to_xz_distance, 0]) {
+                    zrodholder(thickness=thickness, xlen=45, ylen=44, zdelta=((i_want_to_use_single_plate_dxf_and_make_my_z_weaker == 0) ? 0 : 5), bottom_x = 14 + zaxis_delta_x, am_top=0);
+                    translate([board_to_xz_distance + zaxis_delta_y, board_to_xz_distance - zaxis_delta_x, 0]) {
                         nema17(places=[0, 1, 1, 1], h=bottom_thickness + layer_height, $fn=23, shadow=layer_height + 2);
                     }
                 }
                         nema17(places=[0, 1, 1, 1], h=bottom_thickness + layer_height, $fn=23, shadow=layer_height + 2);
                     }
                 }
+               // remove any interfering walls
+               translate([board_to_xz_distance + zaxis_delta_y, board_to_xz_distance - zaxis_delta_x, layer_height + 2 + 21 +3]) {
+                    #cube([43,43,42], center = true);
+               }
 
                 // motor screw holes
 
 
                 // motor screw holes
 
@@ -40,7 +44,7 @@ module zmotorholder(thickness=(frame_type == frame_single ? 38 : 23), bottom_thi
                // would the motor mount be moved in both directions
                // instead of just away from the frame? X-axis does
                // not use this to offset the leadscrew hole either.
                // would the motor mount be moved in both directions
                // instead of just away from the frame? X-axis does
                // not use this to offset the leadscrew hole either.
-               translate([board_to_xz_distance, board_to_xz_distance, thickness]) {
+               translate([board_to_xz_distance + zaxis_delta_y, board_to_xz_distance - zaxis_delta_x, thickness]) {
                     mirror([0, 0, 1]) translate([0, 0, thickness-8])
                         nema17(places=[0, 1, 1, 1], holes=true, h=bottom_thickness + 1, $fn=small_hole_segments);
                         //shadow=-6 + layer_height);
                     mirror([0, 0, 1]) translate([0, 0, thickness-8])
                         nema17(places=[0, 1, 1, 1], holes=true, h=bottom_thickness + 1, $fn=small_hole_segments);
                         //shadow=-6 + layer_height);
@@ -54,6 +58,7 @@ module zmotorholder(thickness=(frame_type == frame_single ? 38 : 23), bottom_thi
 module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thickness=5, ylen=44, xlen=34, zdelta=0, bottom_y=14, bottom_x=14, am_top=1){
     holder_inner_r = 9;
     holder_inner_r2 = 2;
 module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thickness=5, ylen=44, xlen=34, zdelta=0, bottom_y=14, bottom_x=14, am_top=1){
     holder_inner_r = 9;
     holder_inner_r2 = 2;
+    smooth_rod_insert_radius = bushing_z[0] + 5 * single_wall_width;
     difference(){
         union(){
             difference(){
     difference(){
         union(){
             difference(){
@@ -62,7 +67,7 @@ module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thick
                     cube_fillet([bottom_x, ylen, bottom_thickness], vertical=[8, 3, 0, 0]);
                    if (frame_type == frame_alu) {
                         top_radius = am_top ? thickness : thickness / 3;
                     cube_fillet([bottom_x, ylen, bottom_thickness], vertical=[8, 3, 0, 0]);
                    if (frame_type == frame_alu) {
                         top_radius = am_top ? thickness : thickness / 3;
-                        cube_fillet([5, ylen, thickness], vertical=[3, 3, 0, 0], top = [top_radius, 0, 0, (frame_type == frame_alu ? 0 : 5)]);
+                        cube_fillet([5, ylen, thickness], vertical=[3, 3, 0, 0], top = [top_radius, 0, 0, 5]);
 
                         if (am_top) {
                              // rear bracket
 
                         if (am_top) {
                              // rear bracket
@@ -77,7 +82,7 @@ module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thick
                    }
 
                    //hole for Z axis is thru this
                    }
 
                    //hole for Z axis is thru this
-                    cube_fillet([xlen, bottom_y, bottom_thickness], vertical=[3, 0, 0, 3]);
+                    cube_fillet([xlen + zaxis_delta_x, bottom_y, bottom_thickness], vertical=[3, 0, 0, 3]);
                     translate([bottom_x, bottom_y, 0]) {
                         //large fillet that makes it stiffer by lot. Thanks to Marcus Wolschon
                         difference(){
                     translate([bottom_x, bottom_y, 0]) {
                         //large fillet that makes it stiffer by lot. Thanks to Marcus Wolschon
                         difference(){
@@ -100,22 +105,33 @@ module zrodholder(thickness=(frame_type == frame_single ? 14 : 15), bottom_thick
                         translate([-board_thickness, 0, 0])
                              cube_fillet([board_thickness + board_to_xz_distance + bushing_z[0], 5, thickness], radius=2, top = [0, 0, 0, thickness], $fn=99);
                    } else if (frame_type == frame_alu) {
                         translate([-board_thickness, 0, 0])
                              cube_fillet([board_thickness + board_to_xz_distance + bushing_z[0], 5, thickness], radius=2, top = [0, 0, 0, thickness], $fn=99);
                    } else if (frame_type == frame_alu) {
+                        // split piece in front of and behind into separate pieces
                         translate([-board_thickness, 0, 0]) {
                         translate([-board_thickness, 0, 0]) {
-                             cube_fillet([board_thickness + xlen, am_top ? 2.5 : 5.0, thickness], vertical = (frame_type == frame_alu ? [2, 0, 0, 2] : [2, 2, 2, 2]), top = [0, 0, 0, thickness]);
-                             // avoid interfering with the smooth rod hole
-                             translate ([0, 2.5, 0])
-                                  cube_fillet([board_thickness + board_to_xz_distance - bushing_z[0], 2.5, thickness], vertical = (frame_type == frame_alu ? [2, 0, 0, 2] : [2, 2, 2, 2]), top = [0, 0, 0, thickness]);
+                             cube_fillet([board_thickness, 5.0, thickness], vertical = [0, 0, 0, 0], top = [0, 0, 0, 0]);
+                        }
+
+                        cube_fillet([board_to_xz_distance + zaxis_delta_y - smooth_rod_insert_radius , 5.0, thickness], vertical = [2, 0, 0, 0], top = [0, 0, 0, thickness]);
+
+                        // extra support along edge of smooth rod hole
+                        radius_diff = smooth_rod_insert_radius - bushing_z[0];
+                        hull () {
+                             translate([-board_thickness/3, -zaxis_delta_x/3, 0]) {
+                                  cube_fillet([board_thickness/3 + board_to_xz_distance + zaxis_delta_y - bushing_z[0] , zaxis_delta_x/3 , thickness/2], vertical = [2, 0, 4, 0], top = [0, 0, 4, thickness/2]);
+                             }
+                             translate([board_to_xz_distance/2, -zaxis_delta_x + radius_diff/6, 0]) {
+                                  cube_fillet([board_to_xz_distance/2 + zaxis_delta_y  + smooth_rod_insert_radius*0.75, radius_diff/3 , bottom_thickness*2], vertical = [2, 0, 4, bushing_z[0] * smooth_rod_insert_radius/bushing_z[0]], top = [0, 0, 2, thickness/4]);
+                             }
                         }
                     } else {
                         translate([-board_thickness/2, 0, 0])
                             cube_fillet([board_thickness/2 + board_to_xz_distance + bushing_z[0], 5, thickness], radius=2, top = [0, 0, 0, thickness], $fn=99);
                     }
                     //smooth rod insert
                         }
                     } else {
                         translate([-board_thickness/2, 0, 0])
                             cube_fillet([board_thickness/2 + board_to_xz_distance + bushing_z[0], 5, thickness], radius=2, top = [0, 0, 0, thickness], $fn=99);
                     }
                     //smooth rod insert
-                    translate([board_to_xz_distance - z_delta, 9, 0])
-                        cylinder(h=bottom_thickness * (am_top ? 1.75 : 1.0), r=(bushing_z[0] + 5 * single_wall_width));
+                    translate([board_to_xz_distance - z_delta + zaxis_delta_y, 9 - zaxis_delta_x, 0])
+                        cylinder(h=bottom_thickness * (am_top ? 1.75 : 1.0), r=smooth_rod_insert_radius);
                 }
                 //smooth rod hole
                 }
                 //smooth rod hole
-                translate([board_to_xz_distance - z_delta, 9, -1]) cylinder(h=board_thickness+20, r=bushing_z[0] + single_wall_width / 4);
+                translate([board_to_xz_distance - z_delta + zaxis_delta_y, 9 - zaxis_delta_x, -1]) cylinder(h=board_thickness+20, r=bushing_z[0] + single_wall_width / 4);
                 //inside rouned corner
                if (frame_type != frame_alu) {
                     translate([0, 5, -1]) cylinder(r=0.8, h=100, $fn=8);
                 //inside rouned corner
                if (frame_type != frame_alu) {
                     translate([0, 5, -1]) cylinder(r=0.8, h=100, $fn=8);