summaryrefslogtreecommitdiff
path: root/x-carriage.scad
authorMichael Krelin <hacker@klever.net>2016-07-15 17:00:13 (UTC)
committer Michael Krelin <hacker@klever.net>2016-07-15 17:00:13 (UTC)
commit41c8af93ec2bf962e3a18b8fe7602d2cf676189d (patch) (unidiff)
tree8697d692cb6c0caf80f6ec7f3ddb0ffaa0bf21b0 /x-carriage.scad
parent8e11f0a5a82e911b9b60acf18a32197d798cb65c (diff)
downloadcarriagery-41c8af93ec2bf962e3a18b8fe7602d2cf676189d.zip
carriagery-41c8af93ec2bf962e3a18b8fe7602d2cf676189d.tar.gz
carriagery-41c8af93ec2bf962e3a18b8fe7602d2cf676189d.tar.bz2
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…
Diffstat (limited to 'x-carriage.scad') (more/less context) (ignore whitespace changes)
-rw-r--r--x-carriage.scad111
1 files changed, 111 insertions, 0 deletions
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 @@
1slide_tolerance = .3;
2play_tolerance=.4;
3fit_tolerance = .2;
4
5 bearings_l = 25;// 15;
6 bearings_d = 15;// 12;
7 bearings_m = 2.5;// thickness of the bearing end holder
8 bearings_s = 4.5;// the minimum shell between bearings and carriage front
9
10rods_apart = 45;
11rod_d = 8;
12
13 mounting_holes_from_top = [// the offsets of mounting holes on the back
14 [0, 20], [-4.5,10], [4.5,10]
15];
16mounting_holes_apart = mounting_holes_from_top[2][0]-mounting_holes_from_top[1][0];
17
18belt_tooth=0.70;
19belt_thickness=0.75;
20belts_thickness = belt_thickness*2+belt_tooth+0.5;
21belt_width = 6;
22belts_apart = 12;
23belt_pitch = 2;
24
25tiehole_id = bearings_d+3;
26tiehole_od = bearings_d+10;
27tiehole_w = 4;
28
29screw_d = 3;
30screwhead_d = 5.5;
31screwhead_h = 3;
32
33module belt(pitch=belt_pitch,width=belt_width,thickness=belt_thickness,tooth=belt_tooth,l=100,tolerance=0) {
34 translate([-l/2,-width/2,-thickness])
35 intersection() {
36 union() {
37 cube(size=[l,width,thickness+tolerance]);
38 for(x=[0:pitch:l/2]) for(s=[-1,1])
39 translate([l/2+s*x,0,thickness])
40 rotate([-90,0,0])
41 cylinder(r=tooth+tolerance,h=width,$fn=6);
42 }
43 translate([0,-1,0])
44 cube(size=[l,width+2,thickness+tooth+1]);
45 }
46}
47
48module xcarriage() {
49 cw = bearings_l+2*bearings_m;// carriage width
50 % for(mz=[0,1]) mirror([0,0,mz]) translate([0,0,-belts_apart/2]) belt();
51 difference() {
52 translate([-cw/2,-belt_width/2,-rods_apart/2-bearings_d/2])
53 cube(size=[cw,bearings_d/2+bearings_s+belt_width/2,rods_apart+bearings_d]);
54
55 for(sz=[-1,1]) translate([0,0,sz*rods_apart/2]) {
56 rotate([0,90,0])
57 cylinder(d=bearings_d,bearings_l,center=true,$fn=60);
58 for(sx=[-1,1]) translate([sx*bearings_l/4,0,0])
59 rotate([0,90,0]) difference() {
60 cylinder(d=tiehole_od,h=tiehole_w,center=true,$fn=60);
61 cylinder(d=tiehole_id,h=tiehole_w+2,center=true,$fn=60);
62 }
63 rotate([0,90,0]) cylinder(d=bearings_d-bearings_m,h=cw+2,center=true,$fn=60);
64 }
65
66 difference() {
67 gap=3;
68 translate([0,-.5,-gap/2])
69 cube(size=[cw+2,belt_width+2,belts_apart+2*belt_thickness+gap],center=true);
70 for(mx=[0,1]) mirror([mx,0,0]) {
71 ofc = mounting_holes_apart/2+screwhead_d/2+belt_thickness+belt_tooth+play_tolerance; // offset from center
72 r=1;
73 x0 = ofc+r; x1=cw/2-r;
74 z0 = r; z1 = belts_apart/2-belt_thickness;
75 difference() {
76 hull() for(x=[x0,x1]) for(z=[z0,z1])
77 translate([x,0,z])
78 rotate([90,0,0]) cylinder(r=r,h=belt_width+2,center=true,$fn=30);
79 translate([cw/2,0,belts_apart/2]) mirror([0,0,1]) belt(width=belt_width+2,l=cw/2+2,tolerance=fit_tolerance);
80 }
81 bgap = belt_thickness+belt_tooth+fit_tolerance;
82 r1 = (belts_apart/3-bgap)/2;
83 echo(r1);
84 hull() for(x=[mounting_holes_apart/2,x1])
85 translate([x,0,-r1-bgap])
86 rotate([90,0,0]) cylinder(r=r1,h=belt_width+2,center=true,$fn=30);
87 dgn= sqrt(pow(x1-x0,2)+pow(z1-z0,2));
88 echo(dgn);
89 translate([x0,0,z0])
90 rotate([90,0,0])
91 * cylinder(r=dgn/2-r-belt_thickness,h=belt_width+2,center=true,$fn=30);
92 /*
93 pd = 4.5;// post diameter
94 bhd = 5;// belt holder diameter
95 translate([cw/2-pd/2,0,belts_apart/2-belts_thickness-bhd/2]) cube(size=[pd,belt_width,bhd],center=true);
96 translate([(cw-pd)/2,0,0]) // TODO: z
97 rotate([-90,0,0]) translate([0,0,-1]) cylinder(d=pd,h=belt_width+2,center=true,$fn=30); */
98 }
99 } // difference
100
101 translate([0,0,30/*heatsink height*//2])
102 for(mhft = mounting_holes_from_top) translate([mhft[0],0,-mhft[1]]) {
103 rotate([90,0,0]) cylinder(d=screw_d+2*play_tolerance,h=bearings_d+2*bearings_s+2,center=true,$fn=30);
104 translate([0,belt_width/2+screwhead_h+play_tolerance,0])
105 rotate([90,0,0]) cylinder(d=screwhead_d+2*play_tolerance,h=screwhead_h+play_tolerance+1,$fn=30);
106 }
107 } // difference
108}
109
110xcarriage();
111