|
@@ -108,11 +108,9 @@ module contact (trans, angle, cutout, slot = false) {
|
|
|
|
|
|
|
|
// main capsule holder
|
|
// main capsule holder
|
|
|
module capsule_holder () {
|
|
module capsule_holder () {
|
|
|
- translate([capsule_radius * 3.0, capsule_radius * 3, 0]) {
|
|
|
|
|
- difference() {
|
|
|
|
|
- cylinder(r = capsule_radius + wall, h = capsule_height, $fn = facets);
|
|
|
|
|
- cylinder(r = capsule_radius + fudge, h = capsule_height, $fn = facets);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = capsule_radius + wall, h = capsule_height, $fn = facets);
|
|
|
|
|
+ cylinder(r = capsule_radius + fudge, h = capsule_height, $fn = facets);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -157,36 +155,215 @@ module backplate () {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+stalk_height = 12.0;
|
|
|
|
|
+
|
|
|
|
|
+sleeve_height = capsule_height * 2 / 3;
|
|
|
|
|
+
|
|
|
// sleeve that holds everything together
|
|
// sleeve that holds everything together
|
|
|
module sleeve () {
|
|
module sleeve () {
|
|
|
- translate([capsule_radius * 3 , 0, 0]) {
|
|
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = capsule_radius + 2 * wall, h = sleeve_height, $fn = facets);
|
|
|
|
|
+ cylinder(r = capsule_radius + wall, h = sleeve_height, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = capsule_radius + wall, h = sleeve_edge, $fn = facets);
|
|
|
|
|
+ cylinder(r = capsule_radius, h = sleeve_edge, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ // back plate for contacts 1 / 2
|
|
|
|
|
+ translate([-(contact_width + 1.5 * contact_border) + 0.1, capsule_radius / 2 - 0.1, 0]) {
|
|
|
|
|
+ cube([(contact_width + 1.5 * contact_border) * 2 - 0.2, capsule_radius / 2 + 0.1, sleeve_edge]);
|
|
|
|
|
+ }
|
|
|
|
|
+ // back plate for GND contact
|
|
|
|
|
+ rotate([0, 0, 90]) {
|
|
|
|
|
+ translate([-(contact_width + 1.5 * contact_border), capsule_radius * 1 / 3, 0]) {
|
|
|
|
|
+ cube([(contact_width + 1.5 * contact_border), capsule_radius * 2 / 3, sleeve_edge]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // mount stalk
|
|
|
|
|
+ translate([-sleeve_height / 2, -(capsule_radius + wall), sleeve_height]) {
|
|
|
|
|
+ rotate([90, 90, 0]) {
|
|
|
|
|
+ cube([sleeve_height, sleeve_height, stalk_height + sleeve_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // lever to rotate capsule between 0 and 90 degrees
|
|
|
|
|
+ translate([sleeve_height / 2, - (capsule_radius + wall + stalk_height), sleeve_height / 2]) {
|
|
|
|
|
+ rotate([0, -90, 0]) {
|
|
|
|
|
+ cube([capsule_height * 2, sleeve_height, sleeve_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// mount that clips on a standard microphone stand
|
|
|
|
|
+
|
|
|
|
|
+// dimensions of microphone holder
|
|
|
|
|
+mount_radius = 2.75;
|
|
|
|
|
+mount_wall = 0.75;
|
|
|
|
|
+
|
|
|
|
|
+// height of mount
|
|
|
|
|
+mount_height = 40;
|
|
|
|
|
+
|
|
|
|
|
+// microphone stand mount
|
|
|
|
|
+//
|
|
|
|
|
+// diameter of existing shielded wires (x 4)
|
|
|
|
|
+mic_wire_diam = 1.5;
|
|
|
|
|
+mic_wire_hole_radius = 2.5;
|
|
|
|
|
+mic_wire_hole_offset = 5;
|
|
|
|
|
+
|
|
|
|
|
+// measured diameter = 13.5, inside diameter of sleeve = 13.79 (
|
|
|
|
|
+mic_mount_radius = 13.50 / 2;
|
|
|
|
|
+// add this to inside diameter
|
|
|
|
|
+mic_mount_fit = 0.1;
|
|
|
|
|
+mic_mount_slot_height = 11.5;
|
|
|
|
|
+mic_mount_slot_width = 4.25;
|
|
|
|
|
+mic_mount_slot_radius = 6.25 / 2;
|
|
|
|
|
+mic_mount_wall = 1.5;
|
|
|
|
|
+mic_mount_height = 35.0 + mic_wire_hole_offset + mic_wire_hole_radius + 2 * mic_mount_wall;
|
|
|
|
|
+
|
|
|
|
|
+module mount (wall, stand_wall, separation) {
|
|
|
|
|
+ translate([0, 0, -separation]) {
|
|
|
difference() {
|
|
difference() {
|
|
|
- cylinder(r = capsule_radius + 2 * wall, h = capsule_height * 2 / 3, $fn = facets);
|
|
|
|
|
- cylinder(r = capsule_radius + wall, h = capsule_height * 2 / 3, $fn = facets);
|
|
|
|
|
|
|
+ union() {
|
|
|
|
|
+ // stalk
|
|
|
|
|
+ translate([0, 0, mic_mount_height + mount_height * 2/3]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = mount_radius + wall, h = mount_height / 3, $fn = facets);
|
|
|
|
|
+ // make the hole for the mount
|
|
|
|
|
+ cylinder(r = mount_radius, h = mount_height / 3, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // transition to stand mount
|
|
|
|
|
+ translate([0, 0, mic_mount_height]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r2 = mount_radius + wall, r1 = mic_mount_radius + mic_mount_fit + stand_wall,
|
|
|
|
|
+ h = mount_height * 2 / 3, $fn = facets);
|
|
|
|
|
+ // make the hole for the mount
|
|
|
|
|
+ cylinder(r2 = mount_radius, r1 = mic_mount_radius + mic_mount_fit,
|
|
|
|
|
+ h = mount_height * 2 / 3, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // stand mount
|
|
|
|
|
+ translate([0, 0, 0]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ union() {
|
|
|
|
|
+ // main mount cylinder
|
|
|
|
|
+ translate([0, 0, 0]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = mic_mount_radius + mic_mount_fit + stand_wall, h = mic_mount_height, $fn = facets);
|
|
|
|
|
+ // make the hole for the mount (* 1.5 to cut the ridge as well)
|
|
|
|
|
+ cylinder(r = mic_mount_radius + mic_mount_fit, h = mic_mount_height, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // slot for fitting into microphone stand
|
|
|
|
|
+ translate([mic_mount_radius - stand_wall / 2, - mic_mount_slot_width / 2, 0]) {
|
|
|
|
|
+ cube([2 * stand_wall, mic_mount_slot_width, mic_mount_slot_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ // eyelet for microphone stand
|
|
|
|
|
+ translate([mic_mount_radius - stand_wall / 2, 0, mic_mount_slot_height]) {
|
|
|
|
|
+ rotate([0, 90, 0]) {
|
|
|
|
|
+ cylinder(r = mic_mount_slot_radius, h = 2 * stand_wall, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // cut slot for detente at the top of the mount
|
|
|
|
|
+ translate([- sleeve_height / 2, - sleeve_height / 2, mic_mount_height + mount_height - sleeve_height / 2]) {
|
|
|
|
|
+ cube([2 * mount_radius + wall, 2 * mount_radius + wall, sleeve_height / 2]);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+tab_width = 3.0;
|
|
|
|
|
+tab_length = 3.0;
|
|
|
|
|
+
|
|
|
|
|
+module mount_cap (wall, separation) {
|
|
|
|
|
+ translate([0, 0, -(separation)]) {
|
|
|
difference() {
|
|
difference() {
|
|
|
- cylinder(r = capsule_radius + wall, h = sleeve_edge, $fn = facets);
|
|
|
|
|
- cylinder(r = capsule_radius, h = sleeve_edge, $fn = facets);
|
|
|
|
|
|
|
+ union() {
|
|
|
|
|
+ // cap
|
|
|
|
|
+ cylinder(r = mount_radius + wall, h = 3 * wall, $fn = facets);
|
|
|
|
|
+ translate([0, 0, - 2 * wall]) {
|
|
|
|
|
+ cylinder(r = mount_radius + mic_mount_fit, h = 3 * wall, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // hole in the center
|
|
|
|
|
+ *translate([0, 0, - 2 * wall]) {
|
|
|
|
|
+ cylinder(r = sleeve_height / 2, h = 6 * wall, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ // slot for detente
|
|
|
|
|
+ translate([- sleeve_height / 2, - sleeve_height / 2, 2 * wall]) {
|
|
|
|
|
+ cube([2 * mount_radius + wall, 2 * mount_radius + wall, wall]);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- // back plate for contacts 1 / 2
|
|
|
|
|
- translate([-(contact_width + 1.5 * contact_border) + 0.1, capsule_radius / 2 - 0.1, 0]) {
|
|
|
|
|
- cube([(contact_width + 1.5 * contact_border) * 2 - 0.2, capsule_radius / 2 + 0.1, sleeve_edge]);
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module mount_adapter(wall, separation) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ union() {
|
|
|
|
|
+ translate([0, 0, -separation]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = mount_radius + 2 * wall, h = 3 * wall, $fn = facets);
|
|
|
|
|
+ // hole for square peg
|
|
|
|
|
+ translate([-sleeve_height / 2, -sleeve_height / 2]) {
|
|
|
|
|
+ cube([sleeve_height, sleeve_height, sleeve_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // skirt that grabs the mount and allows the holder to rotate
|
|
|
|
|
+ translate([0, 0, - 3 * wall]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = mount_radius + 2 * wall, h = 4 * wall, $fn = facets);
|
|
|
|
|
+ cylinder(r = mount_radius + wall, h = 4 * wall, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // tab to stop rotation at 0 and 90 degrees
|
|
|
|
|
+ translate([sleeve_height * 3 / 2, - sleeve_height / 2, - sleeve_height / 2]) {
|
|
|
|
|
+ rotate([0, -90, 0]) {
|
|
|
|
|
+ cube([sleeve_height, sleeve_height, sleeve_height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- // back plate for GND contact
|
|
|
|
|
- rotate([0, 0, 90]) {
|
|
|
|
|
- translate([-(contact_width + 1.5 * contact_border), capsule_radius * 1 / 3, 0]) {
|
|
|
|
|
- cube([(contact_width + 1.5 * contact_border), capsule_radius * 2 / 3, sleeve_edge]);
|
|
|
|
|
|
|
+ // clip the outside...
|
|
|
|
|
+ translate([0, 0, -2 * wall]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = mount_radius + 4 * wall, h = 4 * wall, $fn = facets);
|
|
|
|
|
+ cylinder(r = mount_radius + 2 * wall, h = 4 * wall, $fn = facets);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-backplate();
|
|
|
|
|
|
|
+////
|
|
|
|
|
+
|
|
|
|
|
+translate([0, 0, -(mic_mount_height + mount_height + capsule_radius + 2 * wall + 2.2 * stalk_height)]) {
|
|
|
|
|
+ mount(mount_wall, mic_mount_wall);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+rotate([0, 0, 90]) {
|
|
|
|
|
+ translate([0, 0, -2.2 * stalk_height]) {
|
|
|
|
|
+ mount_adapter(mount_wall, 0);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+*translate([0, 0, - 2.7 * stalk_height]) {
|
|
|
|
|
+ mount_cap(mount_wall, 0);
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
-translate([capsule_radius * 1.0, capsule_radius * 1, 0]) {
|
|
|
|
|
- capsule_holder();
|
|
|
|
|
|
|
+translate([- sleeve_height / 2, 0, 0]) {
|
|
|
|
|
+ rotate([90, 0, 90]) {
|
|
|
|
|
+ sleeve();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-translate([capsule_radius * 1 , 0, 0]) {
|
|
|
|
|
- sleeve();
|
|
|
|
|
|
|
+*backplate();
|
|
|
|
|
+
|
|
|
|
|
+translate([capsule_radius * 3.0, capsule_radius * 3, 0]) {
|
|
|
|
|
+ rotate([90, 0, 0]) {
|
|
|
|
|
+ capsule_holder();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|