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… --- (limited to 'x-carriage.scad') 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