x-end: refine integration with MK3 idler tensioner wip-2020-frame
authorClinton Ebadi <clinton@unknownlamer.org>
Fri, 13 Aug 2021 06:04:25 +0000 (02:04 -0400)
committerClinton Ebadi <clinton@unknownlamer.org>
Fri, 13 Aug 2021 06:04:25 +0000 (02:04 -0400)
 * Import slotted motor mount from MK3 upstream.
 * Remove idler tensioner and move the idler bearing into the x-end
   body.
 * Shift position of motor tensioner model to origin and make all
   parts relative to base body instead of being absolutely/statically
   positioned where it would need to go on the MK3 model. Needs a bit
   more tweaking since these x-ends are not quite the same dimensions,
   and will need further adjustment to scale automatically as the x-end
   size changes with the linear rod and bearing dimensions.

box_frame/x-end-idler.scad
box_frame/x-end-motor.scad

index 7bcff04..239567e 100644 (file)
@@ -16,9 +16,8 @@ use <y-drivetrain.scad>
 // Bearing is being moved back into mount and separate tensioner
 // removed, need to ensure the width of the slot is wide enough to fix
 // the bearing plus 1-2mm clearance. Can calculate along with
-// x_box_width in settings.scad. Unlikely there's any reason to
-// complicate x_box_width by checking if bearing exceeds the width
-// calculated based rod diameter.
+// x_box_width in settings.scad. Slot is slightly too narrow for a
+// Gates GT2 idler for example.
 
 // radius of screw hole for pulley (todo: ideally would adjust to
 // closest screw diameter to idler_bearing inner diameter)
@@ -62,16 +61,13 @@ module x_end_idler(){
   x_end_idler_holes();
  }
 
- %translate([-14 - xy_delta / 2, 25, pulley_mount_z - (max(idler_width, 16) / 2)]) x_tensioner();
-}
-
-module x_tensioner(len=50, idler_height=max(idler_bearing[0], 16)) {
-     // todo: scal narrow_width with size of belt hole, if that becomes scalable
-     idlermount(len=len, rod=m4_diameter / 2 + 0.5, idler_height=idler_height, narrow_len=30, narrow_width=9);
+ // fixme: 10 is another magic number, thickness of the wall which is not guaranteed to be static
+ %mirror ([0, 1, 0]) translate([x_base_back() + 10, pulley_mount_y, pulley_mount_z]) rotate([0, 90, 0]) intersection () {
+      idler_assy(idler_bearing);
+      cube ([idler_bearing[0]+10, idler_bearing[0]+10, idler_bearing[1]+20],center=true);
+ }
 }
 
-translate([-40, 0, 4 - bushing_xy[0]]) x_tensioner();
-
 x_end_idler();
 
 if (idler_bearing[3] == 1) {  // bearing guides
index 8ba0a9e..db273e7 100644 (file)
@@ -81,28 +81,31 @@ module x_end_motor_sr() {
      }
 }
 
+// tensioner todo:
+// - end of screw slot does not align properly with motor holes
+// - start of screw slot material inside of belt slot does not go to edge of x-end
+// - tensioner body interferes with end stop adjuster
 module x_end_belt_tensioner_base () {
-     translate([-24,9,30.25]) rotate(a=[90,30,0]) cylinder(h=27, r=4, $fn=6);
+     rotate(a=[90,30,0]) cylinder(h=27, r=4, $fn=6);
      difference()
      {
-         translate([-30,9-27,30.25]) rotate(a=[0,45,0]) cube([11,27,11]);
-         translate([-37.465,9-27-1,20]) cube([10,30,21]);
-         translate([-29,9-27-1,35]) cube([10,30,21]);
-         translate([-20,9-27-1,20]) cube([25,30,21]);
+         translate([-6,-27,0])    rotate(a=[0,45,0]) cube([11,27,11]);
+         translate([-13.465,-28,-10.25]) cube([10,30,21]);
+         translate([-5,-28,4.75])     cube([10,30,21]);
+         translate([4,-28,-10.25])     cube([25,30,21]);
      }
      difference()
      {
-         translate([-24,-18,30.25]) rotate(a=[90,0,0]) cylinder(h=10.5, r=5, $fn=30);
-         translate([-24-19.5,-18,20]) rotate(a=[90,0,0]) cube([20,20,20]);
+         translate([0,-27,0]) rotate(a=[90,0,0]) cylinder(h=10.5, r=5, $fn=30); // too short
+         translate([-19.5,-27,-10]) rotate(a=[90,0,0]) cube([20,20,20]);
      }
 }
 
 module x_end_belt_tensioner_holes () {
-     translate(v=[0,32,30.25])
-     {
-         translate([-24,-15.5-2.5,0]) rotate(a=[90,0,0]) cylinder(h=35, r=1.6, $fn=30);
-         translate([-24,-15.5-4.5-30,0]) rotate(a=[90,0,0]) cylinder(h=30, r=3.2, $fn=30);
-         translate([-24-10+2.8,-29,0-2.8]) cube([10,2.1,5.6]);
+     translate ([0, 5, 0]) {
+         translate([0,0,0]) rotate(a=[90,0,0]) cylinder(h=35, r=1.6, $fn=30);
+         translate([0,-32,0]) rotate(a=[90,0,0]) cylinder(h=30 + motor_y_offset, r=3.2, $fn=30);
+         translate([0-10+2.8,-11,0-2.8]) cube([10,2.1,5.6]);
      }
 }
 
@@ -133,20 +136,20 @@ module x_end_motor_holes(){
                // based on wilson x-ends, the intention here is to
               // leave a 11.5mm shaft for the screw
               motor_screwhead_depth = -x_base_back() - 11.5;
-              #translate(v=[20,-15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
-              #translate(v=[1,-15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = motor_screwhead_depth, r=screw_head_r, $fn=30);
-
-
-              translate(v=[20,-15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
-              translate(v=[1,-15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = motor_screwhead_depth, r=screw_head_r, $fn=30);
-
 
-              translate(v=[20,15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
-              translate(v=[1,15.5,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = motor_screwhead_depth, r=screw_head_r, $fn=30);
+              for (x =[-1:0.25:1]) {
+                   translate(v=[0,-15.5+x,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h=30, r=1.55, $fn=60);
+                   translate(v=[0,-15.5+x,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h=18, r2=1.55, r1=1.7, $fn=60);
+                   translate(v=[1,-15.5+x,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h=10, r=3.05, $fn=60);
 
+                   translate(v=[20,-15.5+x,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h=70, r=1.6, $fn=30);
+                   translate(v=[0,-15.5+x,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h=18, r2=1.55, r1=1.7, $fn=60);
+                   translate(v=[1,-15.5+x,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h=10, r=3.1, $fn=30);
 
-              translate(v=[20,15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=1.8, $fn=30);
-              translate(v=[1,15.5,15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = motor_screwhead_depth, r=screw_head_r, $fn=30);
+                   translate(v=[20,15.5+x,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h=70, r=1.6, $fn=30);
+                   translate(v=[0,15.5+x,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h=18, r2=1.55, r1=1.7, $fn=60);
+                   translate(v=[1,15.5+x,-15.5]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h=10, r=3.1, $fn=30);
+              }
 
               // Material saving cutout
               translate(v=[-10,12+motor_y_offset/2,10]) cube(size = [60,42 + motor_y_offset,42], center = true);
@@ -187,13 +190,21 @@ module x_end_motor_pulley () {
 
 // Final part
 module x_end_motor(){
- difference(){
-  x_end_motor_base();
-  x_end_motor_holes();
- }
- // strain relief (zip tie point) below the motor
- x_end_motor_sr();
- %x_end_motor_pulley();
+     // 9 is specific to current model, might be better to have that translate in x_belt_tensioner modules?
+     belt_tensioner_offset = [x_base_back (), 9 + motor_y_offset, x_motor_shaft_z ()];
+     difference () {
+         union () {
+              difference() {
+                   x_end_motor_base ();
+                   x_end_motor_holes ();
+              }
+              translate (belt_tensioner_offset) x_end_belt_tensioner_base ();
+         }
+         translate (belt_tensioner_offset) x_end_belt_tensioner_holes ();
+     }
+     // strain relief (zip tie point) below the motor
+     x_end_motor_sr ();
+     %x_end_motor_pulley ();
 }
 
 //rotate([0,0,180])