// 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);
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);
difference(){
vertical_bearing_base();
vertical_bearing_holes();
-}
\ No newline at end of file
+}
idler_bearing_inner_d = 4; // 624 bearing
+bearing_diameter = 15;
+bearing_cut_extra = 0.2; // padding so it's not too tight
+
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();
}
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);
+ }
}
}
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();
}
-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]);
}
}
#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);
+ }
}
}
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();
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;
// 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(){
// 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);
}