|
@@ -326,8 +326,8 @@ module tetra_capsule_array_mount(angles) {
|
|
|
// internal ring of shock mount
|
|
// internal ring of shock mount
|
|
|
|
|
|
|
|
module tetra_shock_mount_body_ring(height, radius, corner, gap, lip) {
|
|
module tetra_shock_mount_body_ring(height, radius, corner, gap, lip) {
|
|
|
- slot_sep = radius * 2 / 2.7;
|
|
|
|
|
- slot_w = 6;
|
|
|
|
|
|
|
+ slot_sep = radius * 2 / 2.5;
|
|
|
|
|
+ slot_w = 5;
|
|
|
slot_o = height / 3;
|
|
slot_o = height / 3;
|
|
|
// connecting bar dimensions
|
|
// connecting bar dimensions
|
|
|
bar_w = 10;
|
|
bar_w = 10;
|
|
@@ -343,53 +343,54 @@ module tetra_shock_mount_body_ring(height, radius, corner, gap, lip) {
|
|
|
difference() {
|
|
difference() {
|
|
|
tetra_mount_box_relative(height, radius + gap + 2 * wall, corner, 2 * wall);
|
|
tetra_mount_box_relative(height, radius + gap + 2 * wall, corner, 2 * wall);
|
|
|
tetra_mount_box_relative(height, radius + gap + wall, corner, 1 * wall);
|
|
tetra_mount_box_relative(height, radius + gap + wall, corner, 1 * wall);
|
|
|
- for (rot = [0, 90, 180, 270]) {
|
|
|
|
|
- rotate([0, 0, rot]) {
|
|
|
|
|
- // slots for rubber bands
|
|
|
|
|
- for (m = [0, 1]) mirror([0, m, 0]) {
|
|
|
|
|
- translate([-slot_w / 2 + slot_sep, radius + gap, slot_o]) {
|
|
|
|
|
- cube([slot_w, 10, slot_o]);
|
|
|
|
|
- translate([slot_w / 3, 0, 0]) {
|
|
|
|
|
- cube([slot_w /3, 10, 10]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ for (rot = [0, 90, 180, 270]) rotate([0, 0, rot]) {
|
|
|
|
|
+ // slots for rubber bands
|
|
|
|
|
+ minkr = 1.25;
|
|
|
|
|
+ for (m = [0, 1]) mirror([0, m, 0]) {
|
|
|
|
|
+ translate([-slot_w / 2 + slot_sep, radius + gap, slot_o + minkr]) {
|
|
|
|
|
+ minkowski() {
|
|
|
|
|
+ cube([slot_w - minkr, 10, slot_o - minkr]);
|
|
|
|
|
+ rotate([90, 0, 0]) cylinder(r = minkr, h = 1, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ translate([slot_w / 2, -2, 0]) {
|
|
|
|
|
+ cube([slot_w / 2, 10, 1]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
// body for bars that connect both rings together
|
|
// body for bars that connect both rings together
|
|
|
- for (rot = [0, 90, 180, 270]) {
|
|
|
|
|
- rotate([0, 0, rot]) {
|
|
|
|
|
- translate([radius + gap + 3 * wall, -(bar_w/2 + wall), 0]) {
|
|
|
|
|
- cube([bar_d + wall, bar_w + 2 * wall, height]);
|
|
|
|
|
|
|
+ for (rot = [0, 90, 180, 270]) rotate([0, 0, rot]) {
|
|
|
|
|
+ translate([radius + gap + 3 * wall, -(bar_w/2 + wall), 0]) {
|
|
|
|
|
+ cube([bar_d + wall, bar_w + 2 * wall, height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ for (m = [0, 1]) mirror([0, m, 0]) {
|
|
|
|
|
+ translate([radius + gap + 4 * wall, -(bar_w/2 + wall), 0]) {
|
|
|
|
|
+ cylinder(r = wall * 2, h = height, $fn = 3);
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
// carve holes for bars that connect both rings
|
|
// carve holes for bars that connect both rings
|
|
|
- for (rot = [0, 90, 180, 270]) {
|
|
|
|
|
- rotate([0, 0, rot]) {
|
|
|
|
|
- translate([radius + gap + 3 * wall, -bar_w/2, 0]) {
|
|
|
|
|
- cube([bar_d, bar_w, height - 2.75 * wall]);
|
|
|
|
|
- translate([bar_d / 2, 0, height - 3 * wall]) {
|
|
|
|
|
- rotate([-90, 0, 0]) {
|
|
|
|
|
- cylinder(r = bar_d / 2, h = bar_w, $fn = facets);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ for (rot = [0, 90, 180, 270]) rotate([0, 0, rot]) {
|
|
|
|
|
+ translate([radius + gap + 3 * wall, -bar_w/2, 0]) {
|
|
|
|
|
+ cube([bar_d, bar_w, height - 2.75 * wall]);
|
|
|
|
|
+ translate([bar_d / 2, 0, height - 3 * wall]) {
|
|
|
|
|
+ rotate([-90, 0, 0]) {
|
|
|
|
|
+ cylinder(r = bar_d / 2, h = bar_w, $fn = facets);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- for (rot = [0, 90, 180, 270]) {
|
|
|
|
|
- rotate([0, 0, rot]) {
|
|
|
|
|
- // lip to support microphone on lower ring only
|
|
|
|
|
- if (lip == 1) {
|
|
|
|
|
- lip_w = 10;
|
|
|
|
|
- translate([radius + gap + 2.5 * wall, -lip_w/2, height]) {
|
|
|
|
|
- rotate([90, 90, 180]) {
|
|
|
|
|
- linear_extrude(height = lip_w) {
|
|
|
|
|
- polygon([[0, 0], [0, 4], [1, 4], [height * 2/3, 0]]);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ for (rot = [0, 90, 180, 270]) rotate([0, 0, rot]) {
|
|
|
|
|
+ // lip to support microphone on lower ring only
|
|
|
|
|
+ if (lip == 1) {
|
|
|
|
|
+ lip_w = 10;
|
|
|
|
|
+ translate([radius + gap + 2.5 * wall, -lip_w/2, height]) {
|
|
|
|
|
+ rotate([90, 90, 180]) {
|
|
|
|
|
+ linear_extrude(height = lip_w) {
|
|
|
|
|
+ polygon([[0, 0], [0, 4], [1, 4], [height * 2/3, 0]]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -421,14 +422,16 @@ module tetra_shock_mount_main_ring(height, radius, corner, gap, lip) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
-module tetra_shock_mount_connector(length, width, thickness, fit) {
|
|
|
|
|
- cube([length, width - 2 * fit, thickness - 2 * fit]);
|
|
|
|
|
|
|
+module tetra_shock_mount_connector(length, lip, width, thickness, fit) {
|
|
|
|
|
+ cube([length + 2 * lip , width - 2 * fit, thickness - 2 * fit]);
|
|
|
|
|
+ translate([lip, -(thickness / 2), 0])
|
|
|
|
|
+ cube([length , width + thickness, thickness * 3 / 2]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
-*tetra_shock_mount_connector(ring_sep, 9, 3.3, 0.1);
|
|
|
|
|
|
|
+*tetra_shock_mount_connector(ring_sep, 10, 2, 0.1);
|
|
|
*translate([0, 15, 0])
|
|
*translate([0, 15, 0])
|
|
|
- tetra_shock_mount_connector(ring_sep, 9, 3.3, 0.1);
|
|
|
|
|
|
|
+ tetra_shock_mount_connector(ring_sep, 10, 2, 0.1);
|
|
|
|
|
|
|
|
// main body of microphone mount
|
|
// main body of microphone mount
|
|
|
//
|
|
//
|
|
@@ -440,7 +443,7 @@ module tetra_shock_mount_connector(length, width, thickness, fit) {
|
|
|
//
|
|
//
|
|
|
|
|
|
|
|
//translate([0, 0, pcb_length - pcb_low_exp - pcb_hi_exp + 10]) {
|
|
//translate([0, 0, pcb_length - pcb_low_exp - pcb_hi_exp + 10]) {
|
|
|
-translate([0, 0, 0]) {
|
|
|
|
|
|
|
+*translate([0, 0, 0]) {
|
|
|
tetra_mount_flare(10 + pcb_hi_exp, mount_lip, flare_height, box_radius + wall, mount_corner,
|
|
tetra_mount_flare(10 + pcb_hi_exp, mount_lip, flare_height, box_radius + wall, mount_corner,
|
|
|
mount_radius + wall, stalk_height);
|
|
mount_radius + wall, stalk_height);
|
|
|
translate([0, 0, 10 + pcb_hi_exp + flare_height + stalk_height]) {
|
|
translate([0, 0, 10 + pcb_hi_exp + flare_height + stalk_height]) {
|
|
@@ -452,7 +455,7 @@ translate([0, 0, 0]) {
|
|
|
//
|
|
//
|
|
|
|
|
|
|
|
//translate([0, 0, -(10 + pcb_length - pcb_low_exp - pcb_hi_exp + 10)]) {
|
|
//translate([0, 0, -(10 + pcb_length - pcb_low_exp - pcb_hi_exp + 10)]) {
|
|
|
-*translate([0, 0, -5]) {
|
|
|
|
|
|
|
+*translate([0, 0, -17]) {
|
|
|
rotate([0, 180, 0]) {
|
|
rotate([0, 180, 0]) {
|
|
|
tetra_mount_flare(10 + pcb_low_exp, mount_lip, 20, box_radius + wall, mount_corner, cable_diam / 2 + wall, 10);
|
|
tetra_mount_flare(10 + pcb_low_exp, mount_lip, 20, box_radius + wall, mount_corner, cable_diam / 2 + wall, 10);
|
|
|
}
|
|
}
|
|
@@ -466,16 +469,23 @@ ring_height = 6;
|
|
|
band_angle = 40;
|
|
band_angle = 40;
|
|
|
main_radius_inc = (ring_sep / 2) / tan(band_angle);
|
|
main_radius_inc = (ring_sep / 2) / tan(band_angle);
|
|
|
|
|
|
|
|
-body_ring_gap = 0.5;
|
|
|
|
|
|
|
+body_ring_gap = 1.0;
|
|
|
|
|
|
|
|
translate([0, 0, 0]) {
|
|
translate([0, 0, 0]) {
|
|
|
//rotate([0, 180, 0]) {
|
|
//rotate([0, 180, 0]) {
|
|
|
- *tetra_shock_mount_body_ring(10, box_radius + wall, mount_corner, body_ring_gap, 0);
|
|
|
|
|
|
|
+ tetra_shock_mount_body_ring(10, box_radius + wall, mount_corner, body_ring_gap, 0);
|
|
|
*rotate([0, 180, 0]) {
|
|
*rotate([0, 180, 0]) {
|
|
|
- translate([0, 0, ring_sep]) {
|
|
|
|
|
|
|
+ translate([0, 0, ring_sep + 2]) {
|
|
|
tetra_shock_mount_body_ring(10, box_radius + wall, mount_corner, body_ring_gap, 1);
|
|
tetra_shock_mount_body_ring(10, box_radius + wall, mount_corner, body_ring_gap, 1);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // mock up the connecting rods
|
|
|
|
|
+ *for (r = [0, 90, 180, 270]) rotate([0, 0, r])
|
|
|
|
|
+ translate([box_radius + 3 * wall + body_ring_gap, 0, -1])
|
|
|
|
|
+ rotate([0, 90, 0])
|
|
|
|
|
+ translate([-4, -5, 1]) {
|
|
|
|
|
+ tetra_shock_mount_connector(ring_sep, 4, 10, 2, 0.1);
|
|
|
|
|
+ }
|
|
|
//}
|
|
//}
|
|
|
}
|
|
}
|
|
|
|
|
|