summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--X-Axis_carridge2.scad144
-rw-r--r--x-carriage.scad111
2 files changed, 111 insertions, 144 deletions
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();
+