/
beltLocks9mm.scad
98 lines (79 loc) · 2.11 KB
/
beltLocks9mm.scad
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
// 9mm (wide) belt locks.
//
// Haydn Huntley
// haydn.huntley@gmail.com
$fn = 360/4;
include <configuration.scad>;
include <roundedBox.scad>;
// All measurements in mm.
xInsideBeltOffset = 5;
actualBeltWidth = 9;
beltWidth = actualBeltWidth + 1.0;
singleBeltThickness = 1.5;
doubleBeltThickness = 2.5+0.8;
beltLockHeight = 2*m3NutHeight;
m3BeltLockOffset = 4.5;
rBeltLock = 4.6;
module upperBeltLock()
{
difference()
{
union()
{
// Two circles joined by the area connecting them.
for (x = [1, -1])
translate([x*m3BeltLockOffset, 0, 0])
cylinder(r=rBeltLock, h=beltLockHeight);
// Plus an oval to widen amd strengthen the middle.
scale([2.0, 1.5, 1])
cylinder(r=rBeltLock, h=beltLockHeight);
}
// A hole to capture the doubled GT2 belt.
translate([0, 0, beltLockHeight/2])
cube([doubleBeltThickness, beltWidth, beltLockHeight+smidge], true);
// Two holes for capturing M3 nuts.
for (x = [1, -1])
translate([x*m3BeltLockOffset, 0, -smidge/2])
{
cylinder(r1=m3LooseRadius+0.2,
r2=m3LooseRadius,
h=beltLockHeight+smidge);
// M3 nut traps.
translate([0, 0, beltLockHeight-m3NutHeight])
rotate([0, 0, 30])
cylinder(r1=m3TightNutRadius-smidge,
r2=m3NutRadius,
h=m3NutHeight+smidge,
$fn=6);
}
}
}
module lowerBeltLock()
{
difference()
{
// Two circles joined by the area connecting them.
union()
{
for (x = [1, -1])
translate([x*m3BeltLockOffset, 0, 0])
cylinder(r=rBeltLock, h=beltLockHeight);
// Plus an oval to widen amd strengthen the middle.
scale([2.0, 1.5, 1])
cylinder(r=rBeltLock, h=beltLockHeight);
}
// A hole to capture the doubled GT2 belt.
translate([0, 0, beltLockHeight/2])
cube([doubleBeltThickness, beltWidth, beltLockHeight+smidge], true);
// Two slightly tapering holes for the M3x35 SHCS.
for (x = [1, -1])
translate([x*m3BeltLockOffset, 0, -smidge/2])
cylinder(r1=m3LooseRadius+0.2,
r2=m3LooseRadius,
h=beltLockHeight+smidge);
}
}
translate([0, 8, 0])
upperBeltLock();
translate([0, -8, 0])
lowerBeltLock();