Integrate Wilson II features into x-ends
authorClinton Ebadi <clinton@unknownlamer.org>
Sat, 9 Jan 2016 01:11:28 +0000 (20:11 -0500)
committerClinton Ebadi <clinton@unknownlamer.org>
Sat, 9 Jan 2016 01:38:28 +0000 (20:38 -0500)
Sized for Prusa i3/Wilson geometry with M8 linear rods. Basic work,
needs cleanup before being usable.

Added:
 * Leadscrew nut
 * Motor wire strain relief, endstop switch zip tie cut
 * Tensioner notch and anti-pitch ridges

scad/bearing.scad
scad/configuration.scad
scad/x-end-idler.scad
scad/x-end-motor.scad
scad/x-end.scad

index 344422e..fb74563 100644 (file)
@@ -6,7 +6,7 @@
 // http://prusamendel.org
 // Alterations for Wilson by MRice <mrice411@gmail.com>
 
-bearing_diameter = 15; 
+include <configuration.scad>
 
 module horizontal_bearing_base(bearings=1){
  translate(v=[0,0,6]) cube(size = [24,8+bearings*25,12], center = true);       
@@ -66,8 +66,6 @@ module vertical_bearing_base(){
  cylinder(h = 58, r=bearing_size/2, $fn = 90);
 }
 
-bearing_cut_extra = 0.2; // padding so it's not too tight
-
 module vertical_bearing_holes(){
   #translate(v=[0,0,-4]) cylinder(h = 61, r=bearing_diameter/2 + bearing_cut_extra, $fn = 60);
   #translate(v=[0,0,49]) cylinder(h=10,r=bearing_diameter/2-1,$fn=60);
@@ -79,4 +77,4 @@ module vertical_bearing_holes(){
 difference(){
 vertical_bearing_base();
 vertical_bearing_holes();
-}
\ No newline at end of file
+}
index 0e1f889..cadadae 100644 (file)
@@ -14,3 +14,6 @@ belt_thickness = 0.8;
 
 idler_bearing_inner_d = 4; // 624 bearing
 
+bearing_diameter = 15;
+bearing_cut_extra = 0.2; // padding so it's not too tight
+
index 2b23b04..61467c6 100644 (file)
@@ -12,6 +12,9 @@ use <x-end.scad>
 idler_offs_z = -1; // negative here means "up" when installed
 idler_offs_y = 7;
 
+center_z = 30.25 -1;
+tensioner_size_z = 12;
+
 module x_end_idler_base(){
  x_end_base();
 }
@@ -19,9 +22,16 @@ module x_end_idler_base(){
 module x_end_idler_holes(){
  x_end_holes();
  translate([0,idler_offs_y,idler_offs_z]) {
- #translate(v=[0,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 80, r=idler_bearing_inner_d/2+.3, $fn=30);
- #translate(v=[2,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 10, r=idler_bearing_inner_d/2 + 1, $fn=30);
- #translate(v=[-22,-22,30.25]) rotate(a=[0,-90,0]) rotate(a=[0,0,30]) cylinder(h = 80, r=idler_bearing_inner_d, $fn=6);
+      #translate(v=[0,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 80, r=idler_bearing_inner_d/2+.3, $fn=30);
+      #translate(v=[2,-22,30.25]) rotate(a=[0,-90,0]) cylinder(h = 10, r=idler_bearing_inner_d/2 + 1, $fn=30);
+      #translate(v=[-22,-22,30.25]) rotate(a=[0,-90,0]) rotate(a=[0,0,30]) cylinder(h = 80, r=idler_bearing_inner_d, $fn=6);
+
+      // create a notch for the X tensioner, to improve the length of
+      // travel available
+      translate (v=[0,-22,30.25]) translate(v=[-10,-20,1]) #difference()  {
+          rotate(a=[45,0,0])  cube(size=[30,22,22],center=true); 
+          translate(v=[0,14,0]) cube(size=[31,4,8],center=true);
+      }
  }
 }
  
@@ -31,6 +41,13 @@ module x_end_idler(){
   x_end_idler_base();
   x_end_idler_holes();
  }
+
+ // added ridges to keep the tensioner from pitching
+ translate(v=[-10,1,center_z-tensioner_size_z/2 - .5]) rotate([0,0,90]) rotate([45,0,0]) cube(size=[20,1.25,1.25],center=true);
+ translate(v=[-10,1,center_z+tensioner_size_z/2 + .5]) rotate([0,0,90]) rotate([45,0,0]) cube(size=[20,1.25,1.25],center=true);
+ translate(v=[-20,1,center_z-tensioner_size_z/2 - .5]) rotate([0,0,90]) rotate([45,0,0]) cube(size=[20,1.25,1.25],center=true);
+ translate(v=[-20,1,center_z+tensioner_size_z/2 + .5]) rotate([0,0,90]) rotate([45,0,0]) cube(size=[20,1.25,1.25],center=true);
+
 }
 
 x_end_idler();
index 47471e9..9488169 100644 (file)
@@ -36,23 +36,43 @@ module adjustomatic() {
 
 }
 
-module pocket_endstop()
+// the endstop mount will be translated by this much (negative values
+// mean it moves away from the motor and toward the X carriage, giving
+// more room for leads and also extra space for the auto bedleveling
+// servo housing which is on this side of the extruder):
+endstop_sw_offs_adjust = -5;
+
+module pocket_endstop() // endstop holder grafted onto the side toward the rods
 {
-translate([-7,-40,0]) 
-    difference() {
-       union() {  translate([-1.5,0,0]) cube(size=[9,16,22]);
-                  //translate([3,12,20]) cylinder(r=4,h=10,$fn=16);
-                  translate([-11,40,57.9]) rotate([90,0,0]) cube(size=[10,5,20]);
-       }
-    
-    #translate([-2,-1,1]) cube(size=[7,16,22]);
-    //#translate([3,12,20]) cylinder(r=3,h=21,$fn=16);
-    // grove for wiring along bottom
-    #translate([-10,50.5,58]) rotate([90,0,0]) cube(size=[8,4,31]);
-    // screw holes for endstop switch
-    #translate([-2,7,1.5+5.5]) rotate([0,90,0]) cylinder(r=1.5,h=15);
-    #translate([-2,7,1.5+5.5+9.5]) rotate([0,90,0]) cylinder(r=1.5,h=15);
-    //#translate([0,-3,15]) cube(size=[6,15,20]);
+  translate([-7,-45,0]) 
+    union() {
+      // angled wall that attaches to the endstop holder
+      translate([-1,18,0]) rotate([0,0,-30]) cube(size=[8.5,2,22]);
+      // little bit of extra support at the bottom corner 
+      translate([-1.5,15.,2]) rotate([0,90,0]) cube(size=[2,3,10]);
+      
+      difference() {
+       translate([-1.5,endstop_sw_offs_adjust,0]) cube(size=[9,20.5,22]);
+           
+       translate([-2,endstop_sw_offs_adjust,1]) cube(size=[7,21,22]);
+       #translate([0,15.5,8]) cube(size=[10,5,20]);
+
+       // screw holes for endstop switch
+       translate([-2,7+endstop_sw_offs_adjust,1.5+5.5]) rotate([0,90,0]) cylinder(r=1.5,h=15);
+       translate([-2,7+endstop_sw_offs_adjust,1.5+5.5+9.5]) rotate([0,90,0]) cylinder(r=1.5,h=15);
+      }
+    }
+}
+
+module x_end_motor_sr() {
+    difference() { 
+       cube(size=[8,12,10]);
+       #translate([4,11.5,9]) rotate([0,90,0]) 
+               difference() { cylinder(r=4.5,h=4,$fn=16,center=true);
+                              translate([0,0,-1]) cylinder(r=2.5,h=7,$fn=16,center=true);
+               }
+
+        #translate([9,10.6,10]) rotate([0,45,90]) cube(size=[2,11,2]);
     }
 }
 
@@ -102,6 +122,9 @@ module x_end_motor_holes(){
   #translate([-5,-59,14]) difference() { cylinder(r=4.5,h=4,$fn=16);
                                           translate([0,0,-1]) cylinder(r=2.5,h=7,$fn=16);
                                         }
+  #translate([-5,-46,28]) rotate([90,0,0]) difference() { cylinder(r=4.5,h=4,$fn=16,center=true);
+       translate([0,0,-1]) cylinder(r=2.5,h=7,$fn=16,center=true);
+  }
  }
 }
 
@@ -111,6 +134,9 @@ module x_end_motor(){
   x_end_motor_base();
   x_end_motor_holes();
  }
+ // strain relief (zip tie point) below the motor 
+ translate([-23.5,9,53]) x_end_motor_sr(); 
 }
+
 rotate([0,0,180])
-x_end_motor();
\ No newline at end of file
+x_end_motor();
index 056575a..b32c115 100644 (file)
@@ -11,6 +11,23 @@ rod_distance = 45;
 pushfit_d = 8.15;
 hex_nut_r = 4.75;
 
+module nut_trap_base () {
+     cube(size=[7.8,20,8],center=true);
+     translate ([2,0,0]) cylinder(h=8,r=12.5,$fn=50,center=true);
+}
+
+module nut_trap () {
+     union() { 
+               // center post of brass nut
+                   cylinder(h=12,r=5.45,$fn=50,center=true);
+                   // holes for m3 screws in brass nut
+                   #translate(v=[8,0,0]) cylinder(h=12,r=1.8,$fn=20,center=true);
+                   #rotate([0,0,90]) translate(v=[8,0,0]) cylinder(h=12,r=1.8,$fn=20,center=true);
+                   #rotate([0,0,180]) translate(v=[8,0,0]) cylinder(h=12,r=1.8,$fn=20,center=true);
+                   #rotate([0,0,270]) translate(v=[8,0,0]) cylinder(h=12,r=1.8,$fn=20,center=true);
+           }
+}
+
 module x_end_base(){
 // Main block
 height = 58;
@@ -18,10 +35,11 @@ translate(v=[-15,-9,height/2]) cube(size = [17,39,height], center = true);
 // Bearing holder
  vertical_bearing_base();      
 //Nut trap
+ translate(v=[-2-2,-17,4]) nut_trap_base ();
  // Cube
- translate(v=[-2-2,-17,4]) cube(size = [8,16,8], center = true);
+// #translate(v=[-2-2,-17,4]) cube(size = [8,16,8], center = true);
  // Hexagon
- translate(v=[0,-17,0]) rotate([0,0,30]) cylinder(h = 8, r=8, $fn = 6);
+// #translate(v=[0,-17,0]) rotate([0,0,30]) cylinder(h = 8, r=8, $fn = 6);
 }
 
 module x_end_holes(){
@@ -49,8 +67,9 @@ translate(v=[-15,-41.5,6]) rotate(a=[-90,0,0]) pushfit_rod(pushfit_d,50);
 // Top pushfit rod
 translate(v=[-15,-41.5,rod_distance+6]) rotate(a=[-90,0,0]) pushfit_rod(pushfit_d,50);
 // Nut trap
- #translate(v=[0,-17,-0.5]) cylinder(h = 4, r1=3.4, r2=2.9, $fn=25);
- translate(v=[0,-17,3]) rotate([0,0,30]) cylinder(h = 10, r=hex_nut_r, $fn = 6);
+translate(v=[0,-17,3]) nut_trap ();
+// #translate(v=[0,-17,-0.5]) cylinder(h = 4, r1=3.4, r2=2.9, $fn=25);
+// translate(v=[0,-17,3]) rotate([0,0,30]) cylinder(h = 10, r=hex_nut_r, $fn = 6);
 }