-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathRomCapsule.scad
154 lines (118 loc) · 4.01 KB
/
RomCapsule.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
This is a 3d printable ROM carrier for mounting ROMs in the capsule sockets of the Epson PX-8 and PX-4 computers.
When printing you will need to enable supports to allow the horizontal tabs to print successfully.
Andy Anderson 2020
*/
// Dimension of the flat base
base_width = 16.0;
base_depth = 37.3;
base_height = 3;
// The distance between centres of the IC legs
pin_spacing = 2.54;
// Count of pins per side of the IC
pin_count = 14;
// IC leg dimension
pin_width = 2;
pin_clearance = 0.1;
// The gap cut into the base for each IC leg
pin_cut_depth = 0.5;
pin_gap = pin_width + pin_clearance;
// The size of the non-cut space between each IC leg
pin_non_gap = pin_spacing - pin_gap;
// The total base length that needs cuts for IC legs (easier to centre it)
active_pin_area = ((pin_count-1) * pin_non_gap) + (pin_count * pin_gap);
pin_start = (base_depth - active_pin_area)/2;
// The end wall dimensions
end_width = 19;
end_depth = 1;
end_height = 7.8;
// End wall strengthening bar dimensions
strength_width = 1.8;
strength_depth = 1.5;
strength_height = end_height;
// The dimensions of the flat tab on top of each end wall
tab_width = 9;
tab_depth = 4;
tab_height = 1;
// The dimensions of the locating tangs on each end wall
tang_width = 1.4;
tang_depth = 2;
tang_height = 4;
module base()
{
difference()
{
cube([base_width, base_depth, base_height]);
for(leg = [0: 1: pin_count-1])
{
translate([-pin_cut_depth, pin_start+(leg*pin_spacing), -1])
cube([pin_cut_depth*2, pin_width, base_height+2]);
translate([base_width-pin_cut_depth, pin_start+(leg*pin_spacing), -1])
cube([pin_cut_depth*2, pin_width, base_height+2]);
}
}
}
// End with single tang and chamfered strengtheners
module end1()
{
union()
{
// End wall
cube([end_width, end_depth, end_height]);
// Wall strength - with hacky chamfer
hull()
{
cube([strength_width/2, end_depth, strength_height]);
translate([strength_width/2, 0, 0])
cube([strength_width/2, strength_depth, strength_height]);
}
hull()
{
translate([end_width-strength_width/2, 0, 0])
cube([strength_width/2, end_depth, strength_height]);
translate([end_width-strength_width, 0, 0])
cube([strength_width/2, strength_depth, strength_height]);
}
// Horizontal tab
translate([end_width/2 - tab_width/2, -tab_depth, end_height-tab_height])
cube([tab_width, tab_depth, tab_height]);
// Single tang
translate([end_width/2 - tang_width/2, -tang_depth, end_height-tang_height-tab_height])
cube([tang_width, tang_depth, tang_height]);
}
}
// End with double tang
module end2()
{
union()
{
// End wall
cube([end_width, end_depth, end_height]);
// Wall strengthener
cube([strength_width, strength_depth, strength_height]);
translate([end_width-strength_width, 0, 0])
cube([strength_width, strength_depth, strength_height]);
// Horizontal tab
translate([end_width/2 - tab_width/2, -tab_depth, end_height-tab_height])
cube([tab_width, tab_depth, tab_height]);
// double tangs
translate([end_width/2-tab_width/2, -tang_depth, end_height-tang_height-tab_height])
cube([tang_width, tang_depth, tang_height]);
translate([(end_width/2+tab_width/2)-tang_width, -tang_depth, end_height-tang_height-tab_height])
cube([tang_width, tang_depth, tang_height]);
}
}
module carrier()
{
union()
{
translate([0, -end_depth, 0])
end1();
translate([(end_width-base_width)/2, 0, 0])
base();
translate([end_width, base_depth + end_depth, 0])
rotate(a = [0, 0, 180])
end2();
}
}
carrier();