|
@@ -187,7 +187,8 @@ windscreen_thread_pitch = 2.0;
|
|
|
windscreen_thread_angle = 30;
|
|
windscreen_thread_angle = 30;
|
|
|
windscreen_thread_depth = cos(windscreen_thread_angle) * windscreen_thread_pitch * 5/8 + 0.5;
|
|
windscreen_thread_depth = cos(windscreen_thread_angle) * windscreen_thread_pitch * 5/8 + 0.5;
|
|
|
windscreen_thread_radius = box_corner_radius + windscreen_thread_depth;
|
|
windscreen_thread_radius = box_corner_radius + windscreen_thread_depth;
|
|
|
-windscreen_thread_fit = 4 * fit;
|
|
|
|
|
|
|
+windscreen_thread_fit = 3 * fit;
|
|
|
|
|
+// windscreen_thread_fit = 4 * fit;
|
|
|
|
|
|
|
|
// all four printed circuit boards
|
|
// all four printed circuit boards
|
|
|
|
|
|
|
@@ -506,7 +507,7 @@ module tilted_cube(width, depth, height, offset) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
|
|
|
|
|
|
|
+module tetra_capsule_array_mount_old(angles, mount_radius, mount_wall) {
|
|
|
difference() {
|
|
difference() {
|
|
|
union() {
|
|
union() {
|
|
|
rotate([0, 0, 45]) {
|
|
rotate([0, 0, 45]) {
|
|
@@ -514,7 +515,8 @@ module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
|
|
|
wire_diam = mic_wire_diam + mic_wire_fit;
|
|
wire_diam = mic_wire_diam + mic_wire_fit;
|
|
|
// FIXME: this 1.75 is the former leg_thick value, it should be calculated
|
|
// FIXME: this 1.75 is the former leg_thick value, it should be calculated
|
|
|
// based on the capsule diameter so that the cable fits in between the capsules
|
|
// based on the capsule diameter so that the cable fits in between the capsules
|
|
|
- sleeve_width = 1.75 + wire_offset + wire_diam * 2 + wall / 2;
|
|
|
|
|
|
|
+ // sleeve_width = 1.75 + wire_offset + wire_diam * 2 + wall / 2;
|
|
|
|
|
+ sleeve_width = 3.75 + wire_offset + wire_diam * 2 + wall / 2;
|
|
|
sleeve_width_max = capsule_radius + wall;
|
|
sleeve_width_max = capsule_radius + wall;
|
|
|
sleeve_w = (sleeve_width > sleeve_width_max) ? sleeve_width : sleeve_width_max;
|
|
sleeve_w = (sleeve_width > sleeve_width_max) ? sleeve_width : sleeve_width_max;
|
|
|
difference() {
|
|
difference() {
|
|
@@ -552,12 +554,12 @@ module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
|
|
|
translate([0, 0, mount_top_height + (mic_radius - capsule_height) + capsule_height * cos(elev_angle) - mic_to_mount_fit]) {
|
|
translate([0, 0, mount_top_height + (mic_radius - capsule_height) + capsule_height * cos(elev_angle) - mic_to_mount_fit]) {
|
|
|
rotate([0, (90 + elev_angle), angles[0]]) {
|
|
rotate([0, (90 + elev_angle), angles[0]]) {
|
|
|
translate([0, 0, mic_radius - capsule_height]) {
|
|
translate([0, 0, mic_radius - capsule_height]) {
|
|
|
- capsule([], 0, 1, 0.02, 0.02, 1);
|
|
|
|
|
|
|
+ capsule(leg_angles_top, 0, 0, 0.0, 0.0, 1);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
rotate([0, (90 + elev_angle), angles[1]]) {
|
|
rotate([0, (90 + elev_angle), angles[1]]) {
|
|
|
translate([0, 0, mic_radius - capsule_height]) {
|
|
translate([0, 0, mic_radius - capsule_height]) {
|
|
|
- capsule([], 0, 1, 0.02, 0.02, 1);
|
|
|
|
|
|
|
+ capsule(leg_angles_top, 0, 0, 0.0, 0.0, 1);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -573,6 +575,74 @@ module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
|
|
|
|
|
+ pedestal = 3.0;
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ union() {
|
|
|
|
|
+ rotate([0, 0, 45]) {
|
|
|
|
|
+ wire_offset = wall;
|
|
|
|
|
+ wire_diam = mic_wire_diam + mic_wire_fit;
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ // outer sleeve
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ for (t = [1, -1]) translate([mount_radius + 2 * wall, (wire_diam/2 + wall/4) * t, mount_top_height - pedestal]) {
|
|
|
|
|
+ cylinder(r = wire_diam/2 + wall, h = pedestal, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ cylinder(r = mount_radius + mount_wall, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ // holes for cables in top part of sleeve
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ for (t = [1, -1]) translate([mount_radius + 2 * wall, (wire_diam/2 + wall/4) * t, mount_top_height - pedestal]) {
|
|
|
|
|
+ cylinder(r = wire_diam/2, h = pedestal, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // holes for cables in bottom part of sleeve
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ for (t = [1, -1]) {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ translate([mount_radius - wire_diam/2 - wall, wire_diam/2 * t, 0]) {
|
|
|
|
|
+ cylinder(r = wire_diam/2, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ translate([mount_radius + 2 * wall, (wire_diam/2 + wall/4) * t, mount_top_height - pedestal]) {
|
|
|
|
|
+ cylinder(r = wire_diam/2, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // cavity for printing without support
|
|
|
|
|
+ scale([1.0, 1.0, 3.0]) {
|
|
|
|
|
+ sphere(r = mount_radius, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // indentations that match the two lower capsule holders
|
|
|
|
|
+ // add ridge height adjustment
|
|
|
|
|
+ translate([0, 0, mount_top_height + (mic_radius - capsule_height) + capsule_height * cos(elev_angle) - mic_to_mount_fit]) {
|
|
|
|
|
+ rotate([0, (90 + elev_angle), angles[0]]) {
|
|
|
|
|
+ translate([0, 0, mic_radius - capsule_height]) {
|
|
|
|
|
+ capsule(leg_angles_top, 0, 0, 0.0, 0.0, 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ rotate([0, (90 + elev_angle), angles[1]]) {
|
|
|
|
|
+ translate([0, 0, mic_radius - capsule_height]) {
|
|
|
|
|
+ capsule(leg_angles_top, 0, 0, 0.0, 0.0, 1);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // slice top sides of mount
|
|
|
|
|
+ for (r = [45, 45 + 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ translate([mount_radius_capsule, -mount_radius_capsule*1.5, mount_top_height]) {
|
|
|
|
|
+ rotate([0, 30, 0]) {
|
|
|
|
|
+ cube([mount_radius_capsule*3, mount_radius_capsule*3, 10]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// windscreen frame
|
|
// windscreen frame
|
|
|
|
|
|
|
|
module tetra_windscreen(radius, corner, height, beam_radius, twist, support) {
|
|
module tetra_windscreen(radius, corner, height, beam_radius, twist, support) {
|
|
@@ -611,7 +681,7 @@ module tetra_windscreen(radius, corner, height, beam_radius, twist, support) {
|
|
|
module tetra_windscreen_frame(sides, radius, height, beam_radius, twist) {
|
|
module tetra_windscreen_frame(sides, radius, height, beam_radius, twist) {
|
|
|
inc = 360/sides;
|
|
inc = 360/sides;
|
|
|
for (r = [0:inc:360]) for (t = [1, -1]) rotate([0, 0, r]) {
|
|
for (r = [0:inc:360]) for (t = [1, -1]) rotate([0, 0, r]) {
|
|
|
- linear_extrude(height = height, center = false, convexity = 0, twist = twist * t, $fn = facets) {
|
|
|
|
|
|
|
+ render() linear_extrude(height = height, center = false, convexity = 0, twist = twist * t, $fn = facets) {
|
|
|
translate([radius, 0, 0]) {
|
|
translate([radius, 0, 0]) {
|
|
|
circle(r = beam_radius, $fn = facets);
|
|
circle(r = beam_radius, $fn = facets);
|
|
|
}
|
|
}
|
|
@@ -623,23 +693,43 @@ module tetra_windscreen_frame(sides, radius, height, beam_radius, twist) {
|
|
|
|
|
|
|
|
module tetra_windscreen_inset_frame(sides, radius, iradius, height, beam_radius, xscale = 1.0, yscale = 1.0) {
|
|
module tetra_windscreen_inset_frame(sides, radius, iradius, height, beam_radius, xscale = 1.0, yscale = 1.0) {
|
|
|
inc = 360/sides;
|
|
inc = 360/sides;
|
|
|
- for (r = [0:inc:360]) for (t = [1, -1]) rotate([0, 0, r]) {
|
|
|
|
|
- translate([0, 0, 0]) {
|
|
|
|
|
- hull() {
|
|
|
|
|
- translate([iradius, 0, 0]) {
|
|
|
|
|
- scale([xscale, yscale, 1.0]) cylinder(r = beam_radius, h = thin_mint, $fn = facets);
|
|
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ for (r = [0:inc:360]) for (t = [1, -1]) rotate([0, 0, r]) {
|
|
|
|
|
+ render() {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ translate([iradius, 0, 0]) {
|
|
|
|
|
+ scale([xscale, yscale, 1.0]) cylinder(r = beam_radius, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ rotate([0, 0, inc/2 * t]) translate([radius, 0, height]) {
|
|
|
|
|
+ cylinder(r = beam_radius, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- rotate([0, 0, inc/2 * t]) translate([radius, 0, height]) {
|
|
|
|
|
- cylinder(r = beam_radius, h = thin_mint, $fn = facets);
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ cylinder(r = iradius, h = height, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// windscreen frame reinforcements
|
|
|
|
|
+
|
|
|
|
|
+module tetra_windscreen_frame_reinforcements(sides, radius, beam_radius, zrotation, yrotation) {
|
|
|
|
|
+ for (r = [0:360/sides:360]) rotate([0, 0, r + zrotation]) {
|
|
|
|
|
+ translate([radius, 0, 0]) {
|
|
|
|
|
+ render() rotate([0, yrotation, 0]) intersection() {
|
|
|
|
|
+ scale([1.0, 1.55, 1.0]) {
|
|
|
|
|
+ translate([0, 0, -beam_radius * 2]) {
|
|
|
|
|
+ cylinder(r = beam_radius, h = beam_radius * 4, $fn = facets);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+ scale([1, 2, 2.5]) sphere(r = beam_radius, $fn = facets);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// windscreen frame dome
|
|
|
|
|
|
|
+// windscreen frame dome (two plus two)
|
|
|
|
|
|
|
|
-module tetra_windscreen_dome(radius, beam_radius) {
|
|
|
|
|
|
|
+module tetra_windscreen_dome_two(radius, beam_radius) {
|
|
|
rad = radius * cos(180/8);
|
|
rad = radius * cos(180/8);
|
|
|
difference() {
|
|
difference() {
|
|
|
for (r = [0, 90]) rotate([0, 0, r]) {
|
|
for (r = [0, 90]) rotate([0, 0, r]) {
|
|
@@ -662,6 +752,84 @@ module tetra_windscreen_dome(radius, beam_radius) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// windscreen frame dome (three plus three)
|
|
|
|
|
+
|
|
|
|
|
+module tetra_windscreen_dome_three(radius, beam_radius) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ for (r = [0, 90]) rotate([0, 0, r + 22.5]) {
|
|
|
|
|
+ translate([0, 0, 0]) rotate([0, 90, 0]) {
|
|
|
|
|
+ rotate_extrude(convexity = 10, $fn = facets) {
|
|
|
|
|
+ translate([radius, 0, 0]) {
|
|
|
|
|
+ circle(r = beam_radius, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ for (t = [1, -1]) {
|
|
|
|
|
+ translate([radius * cos(45) * t, 0, 0]) rotate([0, 90, 0]) {
|
|
|
|
|
+ rotate_extrude(convexity = 10, $fn = facets) {
|
|
|
|
|
+ translate([radius * cos(45), 0, 0]) {
|
|
|
|
|
+ circle(r = beam_radius, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ brad = radius + 2 * beam_radius + thin_mint;
|
|
|
|
|
+ translate([-brad, -brad, - 2 * brad]) {
|
|
|
|
|
+ cube([2 * brad, 2 * brad, 2 * brad]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module tetra_windscreen_dome_three_n(radius, beam_radius) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ for (r = [0, 90]) rotate([0, 0, r + 22.5]) {
|
|
|
|
|
+ for (t = [1, -1]) {
|
|
|
|
|
+ translate([radius * cos(45) * t, 0, 0]) rotate([0, 90, 0]) {
|
|
|
|
|
+ rotate_extrude(convexity = 10, $fn = facets) {
|
|
|
|
|
+ translate([radius * cos(45), 0, 0]) {
|
|
|
|
|
+ circle(r = beam_radius, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ brad = radius + 2 * beam_radius + thin_mint;
|
|
|
|
|
+ translate([-brad, -brad, - 2 * brad]) {
|
|
|
|
|
+ cube([2 * brad, 2 * brad, 2 * brad]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module tetra_windscreen_dome(sides, radius, beam_radius) {
|
|
|
|
|
+ arcs = sides/2 - 1;
|
|
|
|
|
+ ang = 360 / sides;
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ for (r = [0, 90]) rotate([0, 0, r]) {
|
|
|
|
|
+ for (t = [1, -1]) {
|
|
|
|
|
+ translate([radius * sin(ang/2) * t, 0, 0]) rotate([0, 90, 0]) {
|
|
|
|
|
+ render() rotate_extrude(convexity = 10, $fn = facets) {
|
|
|
|
|
+ translate([radius * cos(ang/2), 0, 0]) {
|
|
|
|
|
+ circle(r = beam_radius, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ translate([radius * sin(ang/(2/3)) * t, 0, 0]) rotate([0, 90, 0]) {
|
|
|
|
|
+ render() rotate_extrude(convexity = 10, $fn = facets) {
|
|
|
|
|
+ translate([radius * cos(ang/(2/3)), 0, 0]) {
|
|
|
|
|
+ circle(r = beam_radius, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ brad = radius + 2 * beam_radius + thin_mint;
|
|
|
|
|
+ translate([-brad, -brad, - 2 * brad]) {
|
|
|
|
|
+ cube([2 * brad, 2 * brad, 2 * brad]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// windscreen mount to body with thread
|
|
// windscreen mount to body with thread
|
|
|
|
|
|
|
|
module tetra_windscreen_mount(height, radius, beam_radius) {
|
|
module tetra_windscreen_mount(height, radius, beam_radius) {
|
|
@@ -701,8 +869,8 @@ module tetra_windscreen_round_mount(height, radius, wall) {
|
|
|
cylinder(r = radius + wall, h = height, $fn = facets);
|
|
cylinder(r = radius + wall, h = height, $fn = facets);
|
|
|
}
|
|
}
|
|
|
// marker for center of microphone
|
|
// marker for center of microphone
|
|
|
- rotate([0, 0, 22.5]) translate([-(radius + wall), 0, 0]) {
|
|
|
|
|
- cylinder(r = 1.0, h = height, $fn = facets);
|
|
|
|
|
|
|
+ translate([-(radius + 2 * wall), 0, 0]) {
|
|
|
|
|
+ cylinder(r = 1.0, h = height/2, $fn = facets);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|