Wilson II initial commit

main
Martin Rice 9 years ago
parent 7e18df1cff
commit b0a76141d4

@ -0,0 +1,288 @@
// Wilson II X Ends
// By M. Rice
// GNU GPL v3
// Adapted from design by Josef Průša <iam@josefprusa.cz> and contributors
// http://www.reprap.org/wiki/Prusa_Mendel
// http://prusamendel.org
include <configuration.scad>
rod_distance = 50; // vertical distance between X axis smooth rods (was 45mm on original prusa i3 xends)
pushfit_d = 10.3; // slightly larger than the rods themselves to accomodate extrusion
bearing_diameter = 19; // 19=LM10UU 15=LM8UU
bearing_cut_extra = 0.4; // extra cut for linear bearings so they are not too tight.
thinwall = 3; // thickness of the wall that holds in the linear bearings
height = rod_distance+15;// height of the x ends
center_z = 30.25 -1;
tensioner_size_z = 12;
bearing_size = bearing_diameter + 2 * thinwall;
// MODULE -------------------------------------
module vertical_bearing_base(){
translate(v=[-2-bearing_size/4,0,height/2]) cube(size = [4+bearing_size/2,bearing_size,height], center = true);
cylinder(h = height, r=bearing_size/2, $fn = 90);
}
// MODULE -------------------------------------
module vertical_bearing_holes(){
#translate(v=[0,0,-4]) cylinder(h = height+3, r=bearing_diameter/2 + bearing_cut_extra, $fn = 60);
translate(v=[0,0,height-4]) cylinder(h=10,r=bearing_diameter/2-1,$fn=60);
// the slit cut along the vertical bearing holder for some flex
rotate(a=[0,0,80]) translate(v=[8,0,27]) cube(size = [10,5 ,height+13], center = true);
translate([0,0,-1]) cylinder(h=9,r1=bearing_diameter/2+thinwall/2+1,r2=4,$fn=60);
}
// MODULE -------------------------------------
module x_end_base(){
// Main block
height = rod_distance + 15;
translate(v=[-15,-10,height/2]) cube(size = [17,45,height], center = true);
// Bearing holder
vertical_bearing_base();
// thing to hold the brass nut
translate(v=[-3.5,-22,4]) cube(size=[7.8,20,8],center=true);
translate(v=[5.5,-24,4]) cylinder(h=8,r=12.5,$fn=50,center=true);
}
// MODULE -------------------------------------
module x_end_holes(){
vertical_bearing_holes();
// Belt hole
translate(v=[-1,0,0]){
// Stress relief
translate(v=[-5.5-10+1.5,-10-1,30]) cube(size = [20,1,28], center = true);
difference(){
translate(v=[-5.5-10+1.5,-10,30]) cube(size = [10,46,28], center = true);
// Nice edges
translate(v=[-5.5-10+1.5,-10,30+23]) rotate([0,45,0]) cube(size = [10,46,28], center = true);
translate(v=[-5.5-10+1.5,-10,30+23]) rotate([0,-45,0]) cube(size = [10,46,28], center = true);
translate(v=[-5.5-10+1.5,-10,30-23]) rotate([0,45,0]) cube(size = [10,46,28], center = true);
translate(v=[-5.5-10+1.5,-10,30-23]) rotate([0,-45,0]) cube(size = [10,46,28], center = true);
}
}
// Bottom pushfit rod
translate(v=[-15,-41.5,7.5]) rotate(a=[-90,0,0]) pushfit_rod(pushfit_d,50);
// Top pushfit rod
translate(v=[-15,-41.5,rod_distance+7.5]) rotate(a=[-90,0,0]) pushfit_rod(pushfit_d,50);
// the holes for the brass nut
translate(v=[5.5,-24,4]) // <-- This is the offset from the smooth rod to the threaded rod (5.5,-24)
union() {
// center post of brass nut
cylinder(h=10,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 -------------------------------------
module pushfit_rod(diameter,length){
// intentionally making the holes oblong in the Z direction to help with binding of the X axis
translate([0,-0.2,0]) cylinder(h = length, r=diameter/2, $fn=30);
translate([0,0.2,0]) cylinder(h = length, r=diameter/2, $fn=30);
}
// X END IDLER -----------------------------------------------------------
idler_offs_z = -1; // negative here means "up" when installed
idler_offs_y = 7;
M4_head_d = 8;
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]) {
translate(v=[0,0,0]) rotate(a=[0,-90,0]) cylinder(h = 80, r=idler_bearing_inner_d/2+.3, $fn=30);
translate(v=[6,0,0]) rotate(a=[0,-90,0]) cylinder(h = 12.5, r=M4_head_d/2+.1, $fn=30);
translate(v=[-22,0,0]) 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=[-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); }
}
}
}
// Final part
module x_end_idler(){
mirror([0,1,0]) union() {
difference(){
x_end_idler_base();
x_end_idler_holes();
}
difference() {
union() {
// 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);
}
#translate(v=[0,0,-4]) cylinder(h = height+3, r=bearing_diameter/2 + bearing_cut_extra, $fn = 60);
}
}
}
// X END MOTOR ------------------------------------------------------------
offs_adjuster_y = 5.5;
adj_block_x = 12;
adj_block_y = 10;
adj_block_z = 32;
motor_offs_z = 0;
screw_head_r = 3.5;
module adjustomatic() { // small holder for a M3 screw pointing down toward the Z endstop
difference() {
translate(v=[-(15+17/2+adj_block_x/2),offs_adjuster_y,height-adj_block_z/2])
cube(size=[adj_block_x,adj_block_y,adj_block_z],center=true);
translate(v=[-(15+17/2+adj_block_x/2)-5,offs_adjuster_y,height-adj_block_z/2-8])
rotate([0,-30,0]) cube(size=[adj_block_x,adj_block_y+2,adj_block_z],center=true);
translate(v=[-(15+17/2+adj_block_x/2-1),offs_adjuster_y,height-adj_block_z/2-3])
cube(size=[adj_block_x,adj_block_y-2,adj_block_z-2],center=true);
translate(v=[-(15+17/2+adj_block_x/2),offs_adjuster_y,height-adj_block_z/2+14])
{
rotate([0,0,30]) #cylinder(h = 4, r = 7.5/2 , $fn = 6);
translate([0,0,-20]) #cylinder(h=30,r=2,$fn=16);
}
}
}
// 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,-50,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_base(){
x_end_base();
// motor arm
translate(v=[-15,31,26.5+motor_offs_z]) cube(size = [17,44,53], center = true);
// z stop adjuster
adjustomatic();
// x endstop holder
pocket_endstop();
}
module x_end_motor_holes(){
x_end_holes();
// Position to place
translate(v=[-1,32,30.25+motor_offs_z]){
// Belt hole
translate(v=[-14,1,0]) cube(size = [10,46,22], center = true);
// Motor mounting holes
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 = 12, 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 = 12, 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 = 12, 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 = 12, r=screw_head_r, $fn=30);
// Material saving cutout
translate(v=[-10,12,10]) cube(size = [60,42,42], center = true);
// Material saving cutout
translate(v=[-10,40,-30]) rotate(a=[45,0,0]) cube(size = [60,42,42], center = true);
// Motor shaft cutout
translate(v=[0,0,0]) rotate(a=[0,-90,0]) rotate(a=[0,0,90]) cylinder(h = 70, r=17, $fn=6);
// zip tie retainer for securing end stop wiring
translate([-5,-63,16]) difference() { cylinder(r=4.5,h=4,$fn=16);
translate([0,0,-1]) cylinder(r=2.5,h=7,$fn=16);
}
#translate([-5,-48,34]) 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);
}
}
}
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]);
}
}
// Final part
module x_end_motor(){
difference(){
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();
}
// Make parts
//x_end_idler();
translate([40,0,0]) rotate([0,0,180]) x_end_motor();

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save