|
|
@@ -25,6 +25,7 @@
|
|
|
|
|
|
// dimensions of the EM182 electret microphone
|
|
|
capsule_radius = 5;
|
|
|
+capsule_radius_i = 2.5;
|
|
|
capsule_height = 4.5;
|
|
|
|
|
|
// wall thickness of capsule holder
|
|
|
@@ -42,6 +43,12 @@ contact_length = 2.9;
|
|
|
// depth of contact channel (includes contact)
|
|
|
contact_depth = 0.79;
|
|
|
|
|
|
+// island around contact
|
|
|
+contact_border = 0.5;
|
|
|
+
|
|
|
+// contact offset from center line
|
|
|
+contact_offset = 0.3;
|
|
|
+
|
|
|
// support depth
|
|
|
disk_depth = 1.17;
|
|
|
disk_edge = 0.49;
|
|
|
@@ -55,6 +62,40 @@ fudge = 0.15;
|
|
|
facets = 64;
|
|
|
|
|
|
|
|
|
+// one slot for a contact
|
|
|
+module contact (trans, angle, slot = false) {
|
|
|
+ rotate([0, 0, angle]) {
|
|
|
+ translate(trans) {
|
|
|
+ translate([- (contact_width + 2 * contact_border) / 2, 0, 0]) {
|
|
|
+ if (slot == false) {
|
|
|
+ difference() {
|
|
|
+ // base for the contact
|
|
|
+ cube([contact_width + 2 * contact_border, capsule_radius + wall / 2, disk_depth]);
|
|
|
+ translate([contact_width / 2, 0, contact_depth]) {
|
|
|
+ // channel for clip
|
|
|
+ cube([contact_width, capsule_radius + wall / 2, disk_depth]);
|
|
|
+ }
|
|
|
+ // cutout for clip from edge of disk
|
|
|
+ translate([contact_width / 2, capsule_radius - 0.666, 0]) {
|
|
|
+ cube([contact_width, contact_length, disk_depth]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // just the cutouts
|
|
|
+ translate([contact_width / 2, 0, contact_depth]) {
|
|
|
+ // channel for clip
|
|
|
+ cube([contact_width, capsule_radius + wall, disk_depth]);
|
|
|
+ }
|
|
|
+ translate([contact_width / 2, capsule_radius - 0.666, 0]) {
|
|
|
+ cube([contact_width, contact_length, disk_depth]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
// main capsule holder
|
|
|
*translate([capsule_radius * 3.0, 0, 0]) {
|
|
|
difference() {
|
|
|
@@ -63,7 +104,8 @@ facets = 64;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// plate for contact springs
|
|
|
+
|
|
|
+// contact springs
|
|
|
difference() {
|
|
|
union() {
|
|
|
difference() {
|
|
|
@@ -73,36 +115,29 @@ difference() {
|
|
|
}
|
|
|
difference() {
|
|
|
cylinder(r = capsule_radius, h = disk_depth, $fn = facets);
|
|
|
- cylinder(r = capsule_radius - 2, h = disk_depth, $fn = facets);
|
|
|
+ cylinder(r = capsule_radius_i, h = disk_depth, $fn = facets);
|
|
|
}
|
|
|
}
|
|
|
- translate([-capsule_radius / 2 + 4 * fudge, 0, 0]) {
|
|
|
- cube([capsule_radius, capsule_radius, disk_depth]);
|
|
|
- }
|
|
|
- rotate([0, 0, 90]) {
|
|
|
- translate([-capsule_radius / 4, 0, 0]) {
|
|
|
- cube([contact_width + fudge, capsule_radius, 1.0]);
|
|
|
+ // contacts
|
|
|
+ contact([contact_border + contact_offset, 0, 0], 0);
|
|
|
+ contact([-contact_border - contact_offset, 0, 0], 0);
|
|
|
+ // GND contact
|
|
|
+ contact([- contact_border - contact_offset, 0, 0], 90);
|
|
|
+ // one more radial connection
|
|
|
+ rotate([0, 0, -120]) {
|
|
|
+ translate([-contact_width / 2, 0, 0]) {
|
|
|
+ cube([contact_width, capsule_radius, disk_depth]);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- union() {
|
|
|
- // vertical slots for contacts
|
|
|
- for(slot = [2/3, -2/3]) {
|
|
|
- translate([slot * capsule_radius / 3, capsule_radius - pad_offset + contact_length, 0]) {
|
|
|
- cube([contact_width + fudge, capsule_radius, 1.0]);
|
|
|
- }
|
|
|
- translate([slot * capsule_radius / 3, capsule_radius - pad_offset, contact_depth]) {
|
|
|
- cube([contact_width + fudge, capsule_radius, 1.0]);
|
|
|
- }
|
|
|
- }
|
|
|
- // horizontal slot for GND contact
|
|
|
- rotate([0, 0, 90]) {
|
|
|
- translate([-capsule_radius / 3, capsule_radius - pad_offset + contact_length, 0]) {
|
|
|
- cube([contact_width + fudge, capsule_radius, 1.0]);
|
|
|
- }
|
|
|
- translate([-capsule_radius / 3, capsule_radius - pad_offset, contact_depth]) {
|
|
|
- cube([contact_width + fudge, capsule_radius, 1.0]);
|
|
|
- }
|
|
|
+ contact([contact_border + contact_offset, 0, 0], 0, true);
|
|
|
+ contact([-contact_border - contact_offset, 0, 0], 0, true);
|
|
|
+ contact([- contact_border - contact_offset, 0, 0], 90, true);
|
|
|
+ // finally trim the seat for the holder
|
|
|
+ translate([0, 0, disk_edge]) {
|
|
|
+ difference() {
|
|
|
+ cylinder(r = capsule_radius + wall, h = disk_depth, $fn = facets);
|
|
|
+ cylinder(r = capsule_radius, h = disk_depth, $fn = facets);
|
|
|
}
|
|
|
}
|
|
|
}
|