summaryrefslogtreecommitdiff
path: root/experimental/huxley/x_carriage.scad
blob: e5e9b75540a90f0c56d178f76eb4f0f4f9e0f216 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
//%translate([0, -20, 0]) import_stl("x-carriage-upper_1off.stl", convexity = 5);
translate([0, 30, 0]) translate([-0.1, -50, -3]) rotate([0, 0, -90]) import_stl("x-blunt-plate_1off.stl", convexity = 5);
translate([0, 50, 24]) rotate([0, 180,  -45]) import_stl("x-motor-end-clamp_1off.stl", convexity = 5);
//rotate([0, 0, 90]) import_stl("x-axis-sandwich-clamp_1off.stl", convexity = 5);
//%rotate([0, 180, 0]) import_stl("extruder-bracket-bowden_1off.stl", convexity = 5);


carriagewidth = 40;
rodsize = 6;
rodheight = 15;
rodspacing = 30;
screwsize = 3;
washersize = 0.5;
bearingsize = 10;
bearingwidth = 4;


module bearingneg(round = false, captivenut = true) translate([5 + rodsize / 2, 0, -bearingwidth / 2 - washersize]) union() {
	cylinder(r = (screwsize + 0.5) / 2, h = 40, center = true);
	if (captivenut) {
		translate([0, 0, -8]) cylinder(r1 = screwsize + 0.55, r2 = screwsize, h = 10, center = true, $fn = 6);
		*translate([0, 0, -18]) cylinder(r = screwsize + 0.25, h = 20.01, center = true, $fn = 6);
		}
	if (round) {
		translate([0, 0, 2.5]) cylinder(r = bearingsize / 2 + 1, h = 5, center = true);
		difference() {
			translate([0, 0, 5]) sphere(r = bearingsize / 2 + 1, center = true);
			translate([0, 0, 3 - bearingsize / 2]) cube(bearingsize + 2, center = true); 
		}
	}
	else translate([0, 0, 5]) cube([bearingsize + 5, carriagewidth, 10], center = true);
}


%for (side = [1, -1]) translate([side * rodspacing / 2, 0, rodheight]) rotate([90, 0, 0]) cylinder(r = rodsize / 2, h = 100, center = true);

module belt() union() {
	translate([1.25 / 2, 0, 0]) square([1.25, 30], center = true);
	for(i = [-3:3]) translate([1.25, 5 * i, 0]) rotate([0, 0, 90]) scale([0.75, 1, 1]) circle(r = 1.5,center = true, $fn = 6);
}

for (side = [0, 1]) rotate([0, 0, side * 180]) %translate([57 / 2, 0, rodheight]) linear_extrude(height = 5, center = true, convexity = 5) belt();




!difference() {union() {
	//translate([(rodspacing + bearingwidth + washersize * 4 + rodheight) / 2, 0, rodheight - 5]) 
	translate([-5, 10, 7.5]) rotate([90, 0, 0])
		difference() {
			translate([0, 0, 10]) rotate([0, 90, 0]) linear_extrude(height = 10, convexity = 5) difference() {
				square([20, 15], center = true);
				translate([-5, 0, 0]) circle(r = (screwsize + 0.5) / 2, center = true);
			}
			translate([3, 0, 2.5]) linear_extrude(height = 20, convexity = 5) belt();
		}
	
	
	difference() {
		union() {
			difference() {
				linear_extrude(height = rodheight - rodsize / 2, center = false, convexity = 5) difference() {
					square([rodspacing + bearingwidth + washersize * 4 + 15, carriagewidth], center = true);
					square([rodspacing - 15, carriagewidth - 20], center = true);
					circle(r = 13, center = true);
					//for(side = [1, -1]) translate([0, side * (carriagewidth / 2 - 5), 0]) circle(r = (screwsize + 0.5) / 2, center = true);
				}
				for (side = [1, -1]) {
					translate([rodspacing / 2, side * (carriagewidth / 2 - 5), rodheight]) rotate([0, 30, 180]) bearingneg();
					translate([rodspacing / 2, side * (carriagewidth / 2 - 5), rodheight]) rotate([0, 30, 0]) bearingneg();
				
					translate([-rodspacing / 2, side * (carriagewidth / 2 - 5), rodheight]) rotate([0, 90, 0]) bearingneg(true, false);
					translate([-5, 0, 15]) cube([15, carriagewidth + 0.1, 20], center = true);
					translate([-rodspacing / 2 + 5, 0, rodheight]) cube([10, carriagewidth + 0.1, rodsize * 2], center = true);
				}
			}
			for (side = [1, -1]) {
				translate([side * (rodspacing / 2 + bearingwidth / 2 + washersize * 2), 0, 0]) rotate([90, 0, side * 90]) linear_extrude(height = 7.5, center = false, convexity = 5) difference() {
					union() {
						translate([0, (rodheight + rodsize + 5) / 2, 0]) square([15, rodheight + rodsize + 5], center = true);
						translate([0, rodheight + rodsize + 5, 0]) circle(r = 7.5, center = true);
					}
					translate([0, rodheight + rodsize / 2 + 5, 0]) square([screwsize + 0.5, rodsize], center = true);
					translate([0, rodheight + 5, 0]) circle(r = (screwsize + 0.5) / 2, center = true);
					translate([0, rodheight + rodsize + 5, 0]) circle(r = (screwsize + 0.5) / 2, center = true);
				}
			}
			for (side = [1, -1]) difference() {
				linear_extrude(height = 5, convexity = 5) difference() {
					union() {
						translate([side * ((72 - 15 - rodspacing) / 4 + rodspacing / 2), 0, 0]) square([(72 - 15 - rodspacing) / 2, 15], center = true);
						translate([side * (72 / 2 - 7.5), 0, 0]) circle(r = 7.5, center = true);
					}
					translate([side * 30, 0, 0]) circle(r = (screwsize + 0.5) / 2, center = true);
				}
				translate([side * 30, 0, 3]) linear_extrude(height = 10, convexity = 5) circle(r = screwsize + 0.25, center = true, $fn = 6);
			}
		}
		for (side = [1, -1]) translate([side * rodspacing / 2, 0, rodheight]) rotate([90, 0, 0]) cylinder(r = rodsize * 1, h = 100, center = true);
	}
}
//translate([0, 0, 8.1]) linear_extrude(height = 30, convexity = 5) square([200, 200], center = true);
}