|
@@ -84,7 +84,7 @@ cable_diam = 9.5;
|
|
|
capsule_cable_diam = 1.7;
|
|
capsule_cable_diam = 1.7;
|
|
|
|
|
|
|
|
// lip that mounts flares into main body box
|
|
// lip that mounts flares into main body box
|
|
|
-mount_lip = 6.0;
|
|
|
|
|
|
|
+mount_lip = 10.0;
|
|
|
|
|
|
|
|
// lip fit for flares
|
|
// lip fit for flares
|
|
|
lip_fit = 0.05;
|
|
lip_fit = 0.05;
|
|
@@ -105,6 +105,28 @@ box_radius = pcb_front + (pcb_thickness + pcb_tfit) + pcb_back + 2 * wall;
|
|
|
// calculated main body corner radius
|
|
// calculated main body corner radius
|
|
|
mount_corner = box_radius - pcb_width / 2 + pcb_slot_depth + 4.0;
|
|
mount_corner = box_radius - pcb_width / 2 + pcb_slot_depth + 4.0;
|
|
|
|
|
|
|
|
|
|
+// dimensions of 12 pin male bottom connector
|
|
|
|
|
+//
|
|
|
|
|
+// Amphenol T 3635 002
|
|
|
|
|
+// 12 pin DIN male to cable, gold plated contacts
|
|
|
|
|
+//
|
|
|
|
|
+conn_diam_fit = 0.4;
|
|
|
|
|
+conn_max_diam = 18.00 + conn_diam_fit;
|
|
|
|
|
+conn_min_diam = 17.12 + conn_diam_fit;
|
|
|
|
|
+conn_bottom_h = 7.25;
|
|
|
|
|
+conn_sleeve = 7.00;
|
|
|
|
|
+conn_lock_diam = 15.1;
|
|
|
|
|
+conn_top_h = 12.40;
|
|
|
|
|
+
|
|
|
|
|
+// width and radius of "click" that locks upper and lower flanges to body
|
|
|
|
|
+click_width = 5.0;
|
|
|
|
|
+click_radius = 1.4;
|
|
|
|
|
+
|
|
|
|
|
+// dimensions of 5/32 screws for the collar that locks the connector in place
|
|
|
|
|
+collar_screw_head = 4.00;
|
|
|
|
|
+collar_screw_hole = 2.40;
|
|
|
|
|
+collar_screw_nut = 5.30 + 0.2;
|
|
|
|
|
+
|
|
|
// shock mount parameters
|
|
// shock mount parameters
|
|
|
//
|
|
//
|
|
|
|
|
|
|
@@ -167,6 +189,30 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
|
|
|
rounded_block_relative(lower_lip, radius, radius, corner, -(wall + lip_fit));
|
|
rounded_block_relative(lower_lip, radius, radius, corner, -(wall + lip_fit));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // slots for click tonges
|
|
|
|
|
+ // lower
|
|
|
|
|
+ for (m=[-1, 1]) rotate([0, 90, 0]) {
|
|
|
|
|
+ translate([-lower_lip * 3/4, (radius - wall/2)*m, -(click_width/2 + 0.25)]) {
|
|
|
|
|
+ cylinder(r = click_radius, h = click_width + 0.5, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // upper
|
|
|
|
|
+ for (m=[-1, 1]) rotate([0, 90, 0]) {
|
|
|
|
|
+ translate([- height + upper_lip * 3/4, (radius - wall/2)*m, -(click_width/2 + 0.25)]) {
|
|
|
|
|
+ cylinder(r = click_radius, h = click_width + 0.5, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // upper lip is too thin, reinforce the back of the click holes
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 90, r]) {
|
|
|
|
|
+ translate([- height + upper_lip * 3/4, (radius - wall), -(click_width/2 + 0.25)]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = click_radius * 1.25, h = click_width + 0.5, $fn = facets);
|
|
|
|
|
+ translate([- click_radius * 1.25, - wall, 0]) {
|
|
|
|
|
+ cube([click_radius * 3, click_radius * 3, click_width * 1.5]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
// add parts for clearance check
|
|
// add parts for clearance check
|
|
@@ -210,6 +256,14 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
|
|
|
rounded_block_relative(height, bot_radius, bot_radius, bot_corner, -(2 * wall));
|
|
rounded_block_relative(height, bot_radius, bot_radius, bot_corner, -(2 * wall));
|
|
|
// cut flange to mount on body
|
|
// cut flange to mount on body
|
|
|
rounded_block_relative(lip + 1.00, bot_radius, bot_radius, bot_corner, - (wall));
|
|
rounded_block_relative(lip + 1.00, bot_radius, bot_radius, bot_corner, - (wall));
|
|
|
|
|
+ // cut slots for tonge
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ for (m = [-1, 1]) {
|
|
|
|
|
+ translate([m * (click_width + 0.5) - 0.25, bot_radius - 1.5 * wall, 0]) {
|
|
|
|
|
+ cube([0.5, 2 * wall, lip * 2/3]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
// and make a smooth transition to avoid overhangs
|
|
// and make a smooth transition to avoid overhangs
|
|
|
translate([0, 0, lip + 1.00]) {
|
|
translate([0, 0, lip + 1.00]) {
|
|
|
hull() {
|
|
hull() {
|
|
@@ -220,6 +274,19 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ // add click to secure to lip
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ translate([- click_width / 2, bot_radius - wall/2, 1/4 * lip]) {
|
|
|
|
|
+ rotate([90, 0, 90]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = click_radius - 0.2, h = click_width, $fn = facets);
|
|
|
|
|
+ translate([0, -click_radius, 0]) {
|
|
|
|
|
+ cube([click_radius, click_width, click_width]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
// flare to round section
|
|
// flare to round section
|
|
|
translate([0, 0, height]) {
|
|
translate([0, 0, height]) {
|
|
|
difference() {
|
|
difference() {
|
|
@@ -259,42 +326,226 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// flares from the body to 12 pin connector
|
|
|
|
|
+
|
|
|
|
|
+module tetra_mount_connector_flare(height, lip, transition, bot_radius, bot_corner, top_radius, stalk_height, dot) {
|
|
|
|
|
+ // bottom rounded box
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ rounded_block(height, bot_radius, bot_radius, bot_corner);
|
|
|
|
|
+ rounded_block_relative(height, bot_radius, bot_radius, bot_corner, -(2 * wall));
|
|
|
|
|
+ // cut flange to mount on body
|
|
|
|
|
+ rounded_block_relative(lip + 1.00, bot_radius, bot_radius, bot_corner, - (wall));
|
|
|
|
|
+ // cut slots for tonge
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ for (m = [-1, 1]) {
|
|
|
|
|
+ translate([m * (click_width + 0.5) - 0.25, bot_radius - 1.5 * wall, 0]) {
|
|
|
|
|
+ cube([0.5, 2 * wall, lip * 2/3]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // and make a smooth transition to avoid overhangs
|
|
|
|
|
+ translate([0, 0, lip + 1.00]) {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ rounded_block_relative(thin_mint, bot_radius, bot_radius, bot_corner, - wall);
|
|
|
|
|
+ translate([0, 0, 1.0]) {
|
|
|
|
|
+ rounded_block_relative(thin_mint, bot_radius, bot_radius, bot_corner, - 2 * wall);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // add click to secure to lip
|
|
|
|
|
+ for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
|
|
+ translate([- click_width / 2, bot_radius - wall/2, 1/4 * lip]) {
|
|
|
|
|
+ rotate([90, 0, 90]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = click_radius - 0.2, h = click_width, $fn = facets);
|
|
|
|
|
+ translate([0, -click_radius, 0]) {
|
|
|
|
|
+ cube([click_radius, click_width, click_width]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // flare to round section
|
|
|
|
|
+ translate([0, 0, height]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ rounded_block(thin_mint, bot_radius, bot_radius, bot_corner);
|
|
|
|
|
+ translate([0, 0, transition]) {
|
|
|
|
|
+ cylinder(r = top_radius, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ rounded_block_relative(thin_mint, bot_radius, bot_radius, bot_corner, - wall);
|
|
|
|
|
+ translate([0, 0, transition]) {
|
|
|
|
|
+ cylinder(r = top_radius - wall, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // connector holder
|
|
|
|
|
+ translate([0, 0, height + transition]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = top_radius, h = conn_sleeve + conn_top_h / 2, $fn = facets);
|
|
|
|
|
+ cylinder(r = top_radius - wall, h = conn_sleeve + conn_top_h / 2, $fn = facets);
|
|
|
|
|
+ // holes for bolts for securing connector
|
|
|
|
|
+ rotate([0, 0, 90]) for (m = [0, 1]) {
|
|
|
|
|
+ mirror([m, 0, 0]) scale([2/3, 1, 1]) translate([top_radius / 2, top_radius, conn_top_h / 2 + conn_sleeve / 2]) {
|
|
|
|
|
+ rotate([90, 0, 0]) {
|
|
|
|
|
+ cylinder(r = conn_sleeve / 2 - thin_mint, h = top_radius * 2, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // connector bottom transition
|
|
|
|
|
+ translate([0, 0, height + transition + conn_sleeve + conn_top_h / 2 - thin_mint]) {
|
|
|
|
|
+ radius_diff = (conn_max_diam - conn_min_diam) / 2;
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ cylinder(r = top_radius, h = thin_mint, $fn = facets);
|
|
|
|
|
+ translate([0, 0, conn_bottom_h]) {
|
|
|
|
|
+ cylinder(r = top_radius - radius_diff, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ cylinder(r = top_radius - wall, h = thin_mint, $fn = facets);
|
|
|
|
|
+ translate([0, 0, conn_bottom_h]) {
|
|
|
|
|
+ cylinder(r = top_radius - radius_diff - wall, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// connector lock collar
|
|
|
|
|
+
|
|
|
|
|
+module tetra_mount_connector_lock(height, radius, side) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ union() {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = radius + wall, h = height, $fn = facets);
|
|
|
|
|
+ cylinder(r = radius, h = height, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ // bolts for securing connector
|
|
|
|
|
+ for (m = [0, 1]) {
|
|
|
|
|
+ mirror([m, 0, 0]) scale([2/3, 1, 1]) translate([radius / 2, radius, height / 2]) {
|
|
|
|
|
+ rotate([90, 0, 0]) {
|
|
|
|
|
+ cylinder(r = (conn_sleeve - wall) / 2, h = radius * 2, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // shave bolts to size of internal connector collar
|
|
|
|
|
+ intersection() {
|
|
|
|
|
+ translate([-conn_lock_diam/2, -conn_lock_diam/2, 0]) {
|
|
|
|
|
+ cube([conn_lock_diam, conn_lock_diam, height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ cylinder(r = radius - wall, h = height, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ // and shave everything outside of the cylinder
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = radius + 4 * wall, h = height, $fn = facets);
|
|
|
|
|
+ cylinder(r = radius + wall, h = height, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // screw holders
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ for (m = [0, 1]) mirror([m, 0, 0]) {
|
|
|
|
|
+ translate([radius, 0, 0]) {
|
|
|
|
|
+ cube([wall + 0.5 + collar_screw_head + 1.00, 3 * wall, height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ translate([radius, - 3 * wall, 0]) {
|
|
|
|
|
+ cube([wall + 0.5 + collar_screw_head + 1.00, 3 * wall, height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // through holes for screws
|
|
|
|
|
+ for (m = [0, 1]) mirror([m, 0, 0]) {
|
|
|
|
|
+ translate([radius + wall + 0.5 + collar_screw_head / 2, 4 * wall, height / 2]) {
|
|
|
|
|
+ rotate([90, 0, 0]) {
|
|
|
|
|
+ cylinder(r = collar_screw_hole / 2, h = 8 * wall, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // recessed nuts
|
|
|
|
|
+ translate([radius + wall + 0.5 + collar_screw_head / 2, - 2.333 * wall, height / 2]) {
|
|
|
|
|
+ rotate([90, 30, 0]) {
|
|
|
|
|
+ cylinder(r = collar_screw_nut / 2, h = wall, $fn = 6);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // substract one half (or the other)...
|
|
|
|
|
+ cut_size = 2 * (radius + wall); // + 0.5 + collar_screw_head / 2 + 0.5);
|
|
|
|
|
+ // cut internal cylinder
|
|
|
|
|
+ translate([-cut_size / 2, 0, 0]) {
|
|
|
|
|
+ cube([cut_size, cut_size, height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ // cut screw holder assymetrically
|
|
|
|
|
+ translate([radius + wall, wall, 0]) {
|
|
|
|
|
+ cube([0.5 + collar_screw_head + 1.00, 5 * wall, height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ mirror([1, 0, 0]) translate([radius + wall, -wall, 0]) {
|
|
|
|
|
+ cube([0.5 + collar_screw_head + 1.00, 5 * wall, height]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// top conical section that plugs into capsule array
|
|
// top conical section that plugs into capsule array
|
|
|
|
|
|
|
|
|
|
+module tilted_cylinder(radius, height, offset) {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ cylinder(r = radius, h = thin_mint, $fn = facets);
|
|
|
|
|
+ translate([offset, 0, height]) {
|
|
|
|
|
+ cylinder(r = radius, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module tilted_cube(width, depth, height, offset) {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ cube([width, depth, thin_mint]);
|
|
|
|
|
+ translate([offset, 0, height]) {
|
|
|
|
|
+ cube([width, depth, thin_mint]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
module tetra_capsule_array_mount(angles) {
|
|
module tetra_capsule_array_mount(angles) {
|
|
|
difference() {
|
|
difference() {
|
|
|
union() {
|
|
union() {
|
|
|
rotate([0, 0, 45]) {
|
|
rotate([0, 0, 45]) {
|
|
|
|
|
+ wire_offset = wall;
|
|
|
|
|
+ wire_diam = mic_wire_diam + mic_wire_fit;
|
|
|
|
|
+ sleeve_width = leg_thick + wire_offset + wire_diam * 2 + wall / 2;
|
|
|
|
|
+ sleeve_width_max = capsule_radius + wall;
|
|
|
|
|
+ sleeve_w = (sleeve_width > sleeve_width_max) ? sleeve_width : sleeve_width_max;
|
|
|
difference() {
|
|
difference() {
|
|
|
hull() {
|
|
hull() {
|
|
|
cylinder(r = mount_radius + wall, h = thin_mint, $fn = facets);
|
|
cylinder(r = mount_radius + wall, h = thin_mint, $fn = facets);
|
|
|
translate([0, 0, mount_top_height]) {
|
|
translate([0, 0, mount_top_height]) {
|
|
|
- rounded_block(thin_mint, capsule_radius + wall, mount_radius_capsule - wall/2, mount_radius*4/5);
|
|
|
|
|
|
|
+ rounded_block(thin_mint, sleeve_w, mount_radius_capsule - wall/2, mount_radius*4/5);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- hull() {
|
|
|
|
|
- cylinder(r = mount_radius, h = thin_mint, $fn = facets);
|
|
|
|
|
- translate([0, 0, mount_top_height]) {
|
|
|
|
|
- rounded_block_relative(thin_mint, capsule_radius + wall, mount_radius_capsule - wall/2, mount_radius*4/5, -wall);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // cavity for printing without support
|
|
|
|
|
+ scale([1.0, 1.0, 3.0]) {
|
|
|
|
|
+ sphere(r = mount_radius, $fn = facets);
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- // internal divider wall with slot for capsule ridges
|
|
|
|
|
- difference() {
|
|
|
|
|
- translate([-(leg_thick + wall*2)/2, -(mount_radius_capsule - wall/2), mount_top_height/2]) {
|
|
|
|
|
- difference() {
|
|
|
|
|
- cube([leg_thick + wall*2, (mount_radius_capsule - wall/2) * 2, mount_top_height/2]);
|
|
|
|
|
- // arch at bottom of dividing wall
|
|
|
|
|
- translate([0, mount_radius_capsule - wall/2, -wall]) {
|
|
|
|
|
- rotate([0, 90, 0]) {
|
|
|
|
|
- cylinder(r = mount_radius_capsule - wall, h = leg_thick + wall*3, $fn = facets);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // holes for cables
|
|
|
|
|
+ // offset for outer hole
|
|
|
|
|
+ hole_offset_l = mount_radius - wire_diam / 2;
|
|
|
|
|
+ hole_offset_h = (sleeve_w - wall - wire_diam / 2) - hole_offset_l;
|
|
|
|
|
+ for (m = [0, 1]) mirror([m, 0, 0]) {
|
|
|
|
|
+ translate([hole_offset_l - wire_diam, 0, 0]) {
|
|
|
|
|
+ tilted_cylinder(wire_diam / 2, mount_top_height, hole_offset_h);
|
|
|
|
|
+ }
|
|
|
|
|
+ translate([hole_offset_l, 0, 0]) {
|
|
|
|
|
+ tilted_cylinder(wire_diam / 2, mount_top_height, hole_offset_h);
|
|
|
|
|
+ }
|
|
|
|
|
+ // shave the inside of the double tube
|
|
|
|
|
+ translate([hole_offset_l - wire_diam, - wire_diam / 4, 0]) {
|
|
|
|
|
+ tilted_cube(wire_diam, wire_diam/2, mount_top_height, hole_offset_h);
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- // shave the top of the wall
|
|
|
|
|
- translate([-(capsule_radius + wall), -(mount_radius_capsule - wall/2), mount_top_height - wall]) {
|
|
|
|
|
- cube([(capsule_radius + wall) * 2, (mount_radius_capsule - wall/2) * 2, 10]);
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -304,12 +555,12 @@ module tetra_capsule_array_mount(angles) {
|
|
|
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, 1.5, 1);
|
|
|
|
|
|
|
+ capsule([], 0, 1, 0.02, 0.02, 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, 1.5, 1);
|
|
|
|
|
|
|
+ capsule([], 0, 1, 0.02, 0.02, 1);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -354,7 +605,7 @@ module render_tetra_pcb_mount(z_offset, showint) {
|
|
|
rotate([0, 0, -90]) {
|
|
rotate([0, 0, -90]) {
|
|
|
translate([0, -(box_radius - 0.5), tetra_pcb_mount_height / 2]) {
|
|
translate([0, -(box_radius - 0.5), tetra_pcb_mount_height / 2]) {
|
|
|
rotate([90, 270, 0]) {
|
|
rotate([90, 270, 0]) {
|
|
|
- logo_scale = 1 / 2.2;
|
|
|
|
|
|
|
+ logo_scale = 1 / 2.4;
|
|
|
scale([logo_scale, logo_scale, 1.0]) {
|
|
scale([logo_scale, logo_scale, 1.0]) {
|
|
|
ccrma_logo(1.65);
|
|
ccrma_logo(1.65);
|
|
|
}
|
|
}
|
|
@@ -372,12 +623,30 @@ module render_tetra_cable_flare(z_offset, flip) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// microphone body: flare to 12 pin connector (slips into PCB holder body)
|
|
|
|
|
+//
|
|
|
|
|
+
|
|
|
|
|
+module render_tetra_connector_flare(z_offset, flip) {
|
|
|
|
|
+ translate([0, 0, z_offset]) {
|
|
|
|
|
+ tetra_mount_connector_flare(pcb_low_clear + pcb_low_exp, mount_lip, 20, box_radius + wall, mount_corner, conn_max_diam / 2 + wall, 10, 0);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// microphone body: 12 pin connector lock collar
|
|
|
|
|
+//
|
|
|
|
|
+
|
|
|
|
|
+module render_tetra_connector_lock(z_offset) {
|
|
|
|
|
+ translate([0, 0, z_offset]) {
|
|
|
|
|
+ tetra_mount_connector_lock(conn_sleeve + 2 * wall, (conn_max_diam / 2) + wall);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// microphone body: render all parts with a vertical separation
|
|
// microphone body: render all parts with a vertical separation
|
|
|
//
|
|
//
|
|
|
|
|
|
|
|
module render_tetra_body(z_offset, spread, showint) {
|
|
module render_tetra_body(z_offset, spread, showint) {
|
|
|
rotate([0, 180, 0]) {
|
|
rotate([0, 180, 0]) {
|
|
|
- render_tetra_cable_flare(0);
|
|
|
|
|
|
|
+ render_tetra_connector_flare(0);
|
|
|
}
|
|
}
|
|
|
lippy = spread - mount_lip;
|
|
lippy = spread - mount_lip;
|
|
|
render_tetra_pcb_mount(lippy, showint);
|
|
render_tetra_pcb_mount(lippy, showint);
|
|
@@ -402,7 +671,7 @@ module render_tetra_microphone_cutout(z_offset, spread) {
|
|
|
difference() {
|
|
difference() {
|
|
|
render_tetra_microphone(z_offset, spread);
|
|
render_tetra_microphone(z_offset, spread);
|
|
|
// a cube that blots out 1/4 of the microphone
|
|
// a cube that blots out 1/4 of the microphone
|
|
|
- rotate([0, 0, 45]) {
|
|
|
|
|
|
|
+ rotate([0, 0, 90]) {
|
|
|
translate([0, 0, -50]) {
|
|
translate([0, 0, -50]) {
|
|
|
cube([50, 100, 650]);
|
|
cube([50, 100, 650]);
|
|
|
}
|
|
}
|