From 41c8af93ec2bf962e3a18b8fe7602d2cf676189d Mon Sep 17 00:00:00 2001 From: Michael Krelin Date: Fri, 15 Jul 2016 17:00:13 +0000 Subject: reworked carriage. Begin not an engineer, but developer I couldn't stand the code. Though I also started to resolve some engineering issues and being developer and not an engineer, I didn't do that well, but that's a start… --- diff --git a/X-Axis_carridge2.scad b/X-Axis_carridge2.scad deleted file mode 100644 index d7285b9..0000000 --- a/X-Axis_carridge2.scad +++ b/dev/null @@ -1,144 +0,0 @@ -part="mount"; //mount or carridge - -// LM8UU dimentions -LM8UU_length = 25; -LM8UU_diameter = 15; - -// X Axis dimensions -x_rod_spacing = 45; -x_rod_radius = 4; - -//Belt -belt_thickness_no_tooth = 0.75; -belt_thickness_tooth = 1.45; -belt_double = belt_thickness_no_tooth+belt_thickness_tooth+0.5; - -//Carriage -carriage_width = 30; -carriage_padding = 0.1; -carriage_height = x_rod_spacing+LM8UU_diameter+carriage_padding*2; -carriage_depth = 12; - -//cyclops -heatbreak_x1=6; -heatbreak_x2=24; -heatbreak_z1=3; -heatbreak_z2=11; -heatbreak_diameter=4; -heatsink_baseline=carriage_padding*2+LM8UU_diameter-1; -mount_x1=15; -mount_z1=10; -mount_x2=10.5; -mount_z2=20; -mount_x3=19.5; -mount_z3=20; -mount_diameter=3.8; - -module tie(){ - difference(){ - rotate([0,90,0]) cylinder(d=LM8UU_diameter+10, h=4, $fn=50); - rotate([0,90,0]) cylinder(d=LM8UU_diameter+3, h=4, $fn=50); - } -} - -module heatbreak_hole(){ - rotate([-90,0,0]) cylinder(d=heatbreak_diameter, h=carriage_depth*2+10, $fn=50); - //translate([0,-4,0]) rotate([-90,0,0]) cylinder(d=heatbreak_diameter+3, h=carriage_depth+2, $fn=100); -} - -module mount_hole(){ - rotate([-90,0,0]) cylinder(d=mount_diameter, h=carriage_depth*2+10, $fn=50); - if (part=="carridge") translate([0,-4,0]) rotate([-90,0,0]) cylinder(d=mount_diameter+3, h=carriage_depth+2, $fn=50); -} - -module lug_hole(){ - rotate([-90,0,0]) cylinder(d=4, h=carriage_depth+2, $fn=50); - //translate([0,0,-2]) rotate([-90,0,0]) cylinder(d=5, h=carriage_depth+2, $fn=100); -} - - -difference(){ - if (part=="carridge") { - //back plane - cube(size=[carriage_width,carriage_depth,carriage_height+1]); - } - else if (part=="mount") { - local_height = x_rod_spacing-LM8UU_diameter-carriage_padding*2-3; - translate([0,8,LM8UU_diameter+carriage_padding*2]) - cube(size=[carriage_width,8,local_height]); - } - - if (part=="carridge"){ - //LM8UU - translate([2.5,0,carriage_padding+LM8UU_diameter/2]) rotate([0,90,0]) cylinder(d=LM8UU_diameter, h=LM8UU_length, $fn=50); - translate([2.5,0,carriage_height-carriage_padding-LM8UU_diameter/2]) rotate([0,90,0]) cylinder(d=LM8UU_diameter, h=LM8UU_length, $fn=50); - - //ties - translate([8,0,carriage_padding+LM8UU_diameter/2]) tie(); - translate([carriage_width-12,0,carriage_padding+LM8UU_diameter/2]) tie(); - translate([6,0,carriage_height-carriage_padding-LM8UU_diameter/2]) tie(); - translate([carriage_width-10,0,carriage_height-carriage_padding-LM8UU_diameter/2]) tie(); - - translate([8,-1,-1]) cube(size=[4,LM8UU_diameter/2,3]); - translate([carriage_width-12,-1,-1]) cube(size=[4,LM8UU_diameter/2,3]); - - //translate([8,LM8UU_diameter/2-.01,LM8UU_diameter/8]) cube(size=[3,carriage_depth,LM8UU_diameter/3*2+1]); - // translate([carriage_width-11,LM8UU_diameter/2-.01,LM8UU_diameter/8]) cube(size=[3,carriage_depth,LM8UU_diameter/3*2+1]); - - //rods - translate([-1,0,carriage_padding+x_rod_radius+3.5]) rotate([0,90,0]) cylinder(r=x_rod_radius+2, h=carriage_width+2, $fn=50); - translate([-1,0,carriage_height-x_rod_radius-3.5-carriage_padding]) rotate([0,90,0]) cylinder(r=x_rod_radius+2, h=carriage_width+2, $fn=50); - - //belt - translate([-1,-1,LM8UU_diameter+carriage_padding*2+1]) difference(){ - local_height = x_rod_spacing-LM8UU_diameter-carriage_padding*2-5; - cube(size=[carriage_width+2,8,local_height]); - - //posts - translate([3,-1,12.5]) lug_hole(); - translate([29,-1,12.5]) lug_hole(); - //channels - translate([0,0,carriage_padding*2]){ - difference() { - union() { - translate([1,-1,local_height-belt_double-5]) cube(size=[4,10,5]); - translate([27,-1,local_height-belt_double-5]) cube(size=[4,10,5]); - - translate([5,0,local_height-belt_double-2.5]) rotate([-90,0,0]) cylinder(d=5,h=100,$fn=50); - translate([27,0,local_height-belt_double-2.5]) rotate([-90,0,0]) cylinder(d=5,h=100,$fn=50); - } - translate([5,0,local_height-belt_double-2.5]) rotate([-90,0,0]) cylinder(d=3.5,h=100,$fn=50); - translate([27,0,local_height-belt_double-2.5]) rotate([-90,0,0]) cylinder(d=3.5,h=100,$fn=50); - } - } - } - } - - //Cyclops heatbreak - translate([heatbreak_x1,-1,heatbreak_z1+heatsink_baseline]) heatbreak_hole(); - translate([heatbreak_x2,-1,heatbreak_z1+heatsink_baseline]) heatbreak_hole(); - translate([heatbreak_x1,-1,heatbreak_z2+heatsink_baseline]) heatbreak_hole(); - translate([heatbreak_x2,-1,heatbreak_z2+heatsink_baseline]) heatbreak_hole(); - - //Cyclops mount - translate([mount_x1,-1,mount_z1+heatsink_baseline]) mount_hole(); - translate([mount_x2,-1,mount_z2+heatsink_baseline]) mount_hole(); - translate([mount_x3,-1,mount_z3+heatsink_baseline]) mount_hole(); - - //cooling - if (part=="mount") translate([0.001,7,LM8UU_diameter+carriage_padding*2-1]){ - local_height = x_rod_spacing-LM8UU_diameter-carriage_padding*2+2; - translate([2,0,0]) cube(size=[2,3,local_height]); - translate([6,0,0]) cube(size=[2,3,local_height]); - translate([10,0,0]) cube(size=[2,3,local_height]); - translate([14,0,0]) cube(size=[2,3,local_height]); - translate([18,0,0]) cube(size=[2,3,local_height]); - translate([22,0,0]) cube(size=[2,3,local_height]); - translate([26,0,0]) cube(size=[2,3,local_height]); - } - - - //translate([-1,LM8UU_diameter/2+1,-1]) cube(size=[carriage_width+2,carriage_depth-LM8UU_diameter/2+1,LM8UU_diameter]); -} - - diff --git a/x-carriage.scad b/x-carriage.scad new file mode 100644 index 0000000..a546bb7 --- a/dev/null +++ b/x-carriage.scad @@ -0,0 +1,111 @@ +slide_tolerance = .3; +play_tolerance=.4; +fit_tolerance = .2; + +bearings_l = 25; // 15; +bearings_d = 15; // 12; +bearings_m = 2.5; // thickness of the bearing end holder +bearings_s = 4.5; // the minimum shell between bearings and carriage front + +rods_apart = 45; +rod_d = 8; + +mounting_holes_from_top = [ // the offsets of mounting holes on the back + [0, 20], [-4.5,10], [4.5,10] +]; +mounting_holes_apart = mounting_holes_from_top[2][0]-mounting_holes_from_top[1][0]; + +belt_tooth=0.70; +belt_thickness=0.75; +belts_thickness = belt_thickness*2+belt_tooth+0.5; +belt_width = 6; +belts_apart = 12; +belt_pitch = 2; + +tiehole_id = bearings_d+3; +tiehole_od = bearings_d+10; +tiehole_w = 4; + +screw_d = 3; +screwhead_d = 5.5; +screwhead_h = 3; + +module belt(pitch=belt_pitch,width=belt_width,thickness=belt_thickness,tooth=belt_tooth,l=100,tolerance=0) { + translate([-l/2,-width/2,-thickness]) + intersection() { + union() { + cube(size=[l,width,thickness+tolerance]); + for(x=[0:pitch:l/2]) for(s=[-1,1]) + translate([l/2+s*x,0,thickness]) + rotate([-90,0,0]) + cylinder(r=tooth+tolerance,h=width,$fn=6); + } + translate([0,-1,0]) + cube(size=[l,width+2,thickness+tooth+1]); + } +} + +module xcarriage() { + cw = bearings_l+2*bearings_m; // carriage width + % for(mz=[0,1]) mirror([0,0,mz]) translate([0,0,-belts_apart/2]) belt(); + difference() { + translate([-cw/2,-belt_width/2,-rods_apart/2-bearings_d/2]) + cube(size=[cw,bearings_d/2+bearings_s+belt_width/2,rods_apart+bearings_d]); + + for(sz=[-1,1]) translate([0,0,sz*rods_apart/2]) { + rotate([0,90,0]) + cylinder(d=bearings_d,bearings_l,center=true,$fn=60); + for(sx=[-1,1]) translate([sx*bearings_l/4,0,0]) + rotate([0,90,0]) difference() { + cylinder(d=tiehole_od,h=tiehole_w,center=true,$fn=60); + cylinder(d=tiehole_id,h=tiehole_w+2,center=true,$fn=60); + } + rotate([0,90,0]) cylinder(d=bearings_d-bearings_m,h=cw+2,center=true,$fn=60); + } + + difference() { + gap=3; + translate([0,-.5,-gap/2]) + cube(size=[cw+2,belt_width+2,belts_apart+2*belt_thickness+gap],center=true); + for(mx=[0,1]) mirror([mx,0,0]) { + ofc = mounting_holes_apart/2+screwhead_d/2+belt_thickness+belt_tooth+play_tolerance; // offset from center + r=1; + x0 = ofc+r; x1=cw/2-r; + z0 = r; z1 = belts_apart/2-belt_thickness; + difference() { + hull() for(x=[x0,x1]) for(z=[z0,z1]) + translate([x,0,z]) + rotate([90,0,0]) cylinder(r=r,h=belt_width+2,center=true,$fn=30); + translate([cw/2,0,belts_apart/2]) mirror([0,0,1]) belt(width=belt_width+2,l=cw/2+2,tolerance=fit_tolerance); + } + bgap = belt_thickness+belt_tooth+fit_tolerance; + r1 = (belts_apart/3-bgap)/2; + echo(r1); + hull() for(x=[mounting_holes_apart/2,x1]) + translate([x,0,-r1-bgap]) + rotate([90,0,0]) cylinder(r=r1,h=belt_width+2,center=true,$fn=30); + dgn= sqrt(pow(x1-x0,2)+pow(z1-z0,2)); + echo(dgn); + translate([x0,0,z0]) + rotate([90,0,0]) + * cylinder(r=dgn/2-r-belt_thickness,h=belt_width+2,center=true,$fn=30); + /* + pd = 4.5; // post diameter + bhd = 5; // belt holder diameter + translate([cw/2-pd/2,0,belts_apart/2-belts_thickness-bhd/2]) cube(size=[pd,belt_width,bhd],center=true); + translate([(cw-pd)/2,0,0]) // TODO: z + rotate([-90,0,0]) translate([0,0,-1]) cylinder(d=pd,h=belt_width+2,center=true,$fn=30); */ + } + } // difference + + translate([0,0,30/*heatsink height*//2]) + for(mhft = mounting_holes_from_top) translate([mhft[0],0,-mhft[1]]) { + rotate([90,0,0]) cylinder(d=screw_d+2*play_tolerance,h=bearings_d+2*bearings_s+2,center=true,$fn=30); + translate([0,belt_width/2+screwhead_h+play_tolerance,0]) + rotate([90,0,0]) cylinder(d=screwhead_d+2*play_tolerance,h=screwhead_h+play_tolerance+1,$fn=30); + } + } // difference +} + +xcarriage(); + -- cgit v0.9.0.2