|
|
@@ -25,6 +25,8 @@
|
|
|
// Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
|
|
|
// http://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
|
|
|
|
+include <TinySpHEAR_common.scad>;
|
|
|
+
|
|
|
// size of printed circuit board
|
|
|
pcb_length = 85.090;
|
|
|
// measured = 16.26 (fit = 0.25)
|
|
|
@@ -114,6 +116,16 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
|
|
|
tetra_pcb_clear(pcb_length, pcb_width, pcb_thickness, 1.0, pcb_front, pcb_back);
|
|
|
// trim square angles
|
|
|
cylinder(r = pcb_front, h = height, $fn = facets);
|
|
|
+ // remove slots from inside body
|
|
|
+ slot_len = 15;
|
|
|
+ translate([0, 0, slot_len]) {
|
|
|
+ hull() {
|
|
|
+ tetra_mount_box(height - (3 * slot_len), radius - 2 * wall, corner);
|
|
|
+ translate([0, 0, height - (2 * slot_len) + height / 3]) {
|
|
|
+ cylinder(r = radius / 3, h = 1, $fn = facets);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
// upper lip for flare to microphone
|
|
|
translate([0, 0, height - upper_lip]) {
|
|
|
difference() {
|
|
|
@@ -131,15 +143,17 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
|
|
|
}
|
|
|
}
|
|
|
// external slot for microphone holder
|
|
|
- mount_slot_len = 30;
|
|
|
- mount_slot_stem = 4;
|
|
|
- mount_slot_width = 2;
|
|
|
- mount_slot_radius = 2;
|
|
|
- translate([-(radius + mount_slot_stem), -(mount_slot_width/2), 0]) {
|
|
|
- cube([mount_slot_stem, mount_slot_width, mount_slot_len]);
|
|
|
- }
|
|
|
- translate([-(radius + mount_slot_stem), 0, 0]) {
|
|
|
- cylinder(r = mount_slot_radius, h = mount_slot_len, $fn = facets);
|
|
|
+ if (0) {
|
|
|
+ mount_slot_len = 30;
|
|
|
+ mount_slot_stem = 4;
|
|
|
+ mount_slot_width = 2;
|
|
|
+ mount_slot_radius = 2;
|
|
|
+ translate([-(radius + mount_slot_stem), -(mount_slot_width/2), 0]) {
|
|
|
+ cube([mount_slot_stem, mount_slot_width, mount_slot_len]);
|
|
|
+ }
|
|
|
+ translate([-(radius + mount_slot_stem), 0, 0]) {
|
|
|
+ cylinder(r = mount_slot_radius, h = mount_slot_len, $fn = facets);
|
|
|
+ }
|
|
|
}
|
|
|
// add parts for clearance check
|
|
|
if (clear == 1) {
|
|
|
@@ -167,11 +181,13 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
|
|
|
|
|
|
// flares from the body to the microphone stalk and cable
|
|
|
|
|
|
-module tetra_mount_flare(height, transition, bot_radius, bot_corner, top_radius, stalk_height) {
|
|
|
+module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_radius, stalk_height) {
|
|
|
// bottom rounded box
|
|
|
difference() {
|
|
|
tetra_mount_box(height, bot_radius, bot_corner);
|
|
|
- tetra_mount_box(height, bot_radius - wall, bot_corner);
|
|
|
+ tetra_mount_box(height, bot_radius - 2 * wall, bot_corner);
|
|
|
+ // flange to mount on body
|
|
|
+ tetra_mount_box(lip + 1.0, bot_radius - wall, bot_corner);
|
|
|
}
|
|
|
// flare to round section
|
|
|
translate([0, 0, height]) {
|
|
|
@@ -183,7 +199,7 @@ module tetra_mount_flare(height, transition, bot_radius, bot_corner, top_radius,
|
|
|
}
|
|
|
}
|
|
|
hull() {
|
|
|
- tetra_mount_box(1, bot_radius - wall, bot_corner);
|
|
|
+ tetra_mount_box(1, bot_radius - 2 * wall, bot_corner);
|
|
|
translate([0, 0, transition]) {
|
|
|
cylinder(r = top_radius - wall, h = 1, $fn = facets);
|
|
|
}
|
|
|
@@ -199,23 +215,73 @@ module tetra_mount_flare(height, transition, bot_radius, bot_corner, top_radius,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// top conical section that plugs into capsule array
|
|
|
+
|
|
|
+module tetra_capsule_array_mount() {
|
|
|
+ difference() {
|
|
|
+ translate([0, 0, 0]) {
|
|
|
+ rotate([0, 0, 45]) {
|
|
|
+ difference() {
|
|
|
+ ellipsoid(mount_top_height, mount_radius + wall, mount_radius_capsule, mount_top_eccentricity);
|
|
|
+ ellipsoid(mount_top_height, mount_radius, mount_radius_capsule * 0.5, mount_top_eccentricity * 1.05);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
echo("box radius is ", box_radius);
|
|
|
|
|
|
+// lip that mounts flares into main body box
|
|
|
+mount_lip = 6.0;
|
|
|
+
|
|
|
+// main body corner radius
|
|
|
+mount_corner = 10.0;
|
|
|
+
|
|
|
// main body of microphone mount
|
|
|
-tetra_mount_body(pcb_length, box_radius + wall, 10, 6, 6, 0);
|
|
|
+//
|
|
|
+// we leave 12mm of the pcb exposed on the bottom of the body so that we
|
|
|
+// can solder the wires that connect the microphone with the
|
|
|
+// preamplifier, same at the top of the pcb to solder the wires
|
|
|
+// to the capsules
|
|
|
+pcb_low_exp = 12.0;
|
|
|
+pcb_hi_exp = 8.0;
|
|
|
+
|
|
|
+*tetra_mount_body(pcb_length - pcb_low_exp - pcb_hi_exp, box_radius + wall, mount_corner, mount_lip, mount_lip, 0);
|
|
|
|
|
|
// flare to microphone stalk
|
|
|
-// translate([0, 0, pcb_length + 10]) {
|
|
|
-*translate([0, 0, 0]) {
|
|
|
- tetra_mount_flare(10, 50, box_radius + wall, 10, 5, 40);
|
|
|
+//
|
|
|
+// add 12mm of exposed pcb coverage
|
|
|
+
|
|
|
+//translate([0, 0, pcb_length - pcb_low_exp - pcb_hi_exp + 10]) {
|
|
|
+translate([0, 0, 0]) {
|
|
|
+ tetra_mount_flare(10 + pcb_hi_exp, mount_lip, 50, box_radius + wall, mount_corner, 5, 40);
|
|
|
+ translate([0, 0, 10 + pcb_hi_exp + 50 + 40]) {
|
|
|
+ tetra_capsule_array_mount();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// flare to microphone cable
|
|
|
+//
|
|
|
+// add 8mm of exposed pcb coverage
|
|
|
+
|
|
|
*translate([0, 0, -10]) {
|
|
|
rotate([0, 180, 0]) {
|
|
|
- tetra_mount_flare(10, 20, 17, 10, cable_diam / 2, 10);
|
|
|
+ tetra_mount_flare(10 + pcb_low_exp, mount_lip, 20, box_radius + wall, mount_corner, cable_diam / 2, 10);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// the microphone itself
|
|
|
+rendermic = 1;
|
|
|
|
|
|
+translate([0, 0, 10 + pcb_hi_exp + 50 + 40 + 30]) {
|
|
|
+ // all four capsules
|
|
|
+ capsule(45, elev_angle, leg_angles_top, 60, 0, 0.0, 0);
|
|
|
+ capsule(-135, elev_angle, leg_angles_top, 60, 0, 0.0, 0);
|
|
|
+ capsule(-45, -elev_angle, leg_angles_bot, 0, 1, 0.0, 0);
|
|
|
+ capsule(135, -elev_angle, leg_angles_bot, 0, 1, 0.0, 0);
|
|
|
+ // the mount
|
|
|
+ *mount([-45, 135], mount_wall, mic_mount_wall, mic_mount_height + mount_top_height + mount_height + capsule_bottom);
|
|
|
+}
|
|
|
|