|
|
@@ -164,32 +164,6 @@ ring_ext_height = 6;
|
|
|
ring_arm_gap = 20;
|
|
|
|
|
|
|
|
|
-// all eight printed circuit boards
|
|
|
-
|
|
|
-module octa_pcb_clear_old(length, width, thick, slot_depth, front, back) {
|
|
|
- for (ytrans = [-1, 1]) {
|
|
|
- translate([0, ytrans * (front + back + thick), 0]) {
|
|
|
- for (rot = [0, 90, 180, 270]) {
|
|
|
- rotate([0, 0, rot]) {
|
|
|
- pcb_clear(pcb_length + pcb_fit, pcb_width + pcb_fit, pcb_thickness + pcb_tfit, slot_depth, front, back);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-module octa_pcb_clear(length, width, thick, slot_depth, front, back) {
|
|
|
- for (ytrans = [-1, 1]) {
|
|
|
- translate([0, ytrans * (front + back + thick), 0]) {
|
|
|
- for (rot = [0, 90, 180, 270]) {
|
|
|
- rotate([0, 0, rot]) {
|
|
|
- pcb_clear(pcb_length + pcb_fit, pcb_width + pcb_fit, pcb_thickness + pcb_tfit, slot_depth, front, back);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// the main body that holds the phantom power interfaces
|
|
|
|
|
|
module one_pcb_slot (pcb_w, pcb_l, pcb_t, slot_d, front, back, test = false) {
|
|
|
@@ -313,105 +287,6 @@ module octa_mount_body(height, radius, lower_lip, upper_lip, clear) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// the main body of the microphone mount (old rectangular design)
|
|
|
-
|
|
|
-module octa_mount_rect_body(height, width, depth, radius, lower_lip, upper_lip, clear) {
|
|
|
- // outer shell
|
|
|
- difference() {
|
|
|
- rounded_box(height, width, depth, radius, 2 * wall);
|
|
|
- // upper lip for flare to microphone
|
|
|
- translate([0, 0, height - upper_lip]) {
|
|
|
- rounded_box(upper_lip, width, depth, radius, wall + lip_fit);
|
|
|
- }
|
|
|
- // lower lip for flare to cable
|
|
|
- translate([0, 0, 0]) {
|
|
|
- rounded_box(lower_lip + 0.5, width, depth, radius, wall + lip_fit);
|
|
|
- }
|
|
|
- // slots for snap joint hooks
|
|
|
- // upper
|
|
|
- for (m=[-1, 1]) rotate([0, 90, 0]) {
|
|
|
- translate([- height + upper_lip * 3/4, (width + radius + snap_joint_hook_r * 3/2)*m, -(snap_joint_hook_w/2 + 0.25)]) {
|
|
|
- cylinder(r = snap_joint_hook_r, h = snap_joint_hook_w + 0.5, $fn = facets);
|
|
|
- }
|
|
|
- }
|
|
|
- // lower
|
|
|
- for (m=[-1, 1]) rotate([0, 90, 0]) {
|
|
|
- translate([-lower_lip * 3/4, (width + radius + snap_joint_hook_r * 3/2)*m, -(snap_joint_hook_w/2 + 0.25)]) {
|
|
|
- cylinder(r = snap_joint_hook_r, h = snap_joint_hook_w + 0.5, $fn = facets);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // transition to avoid overhang
|
|
|
- translate([0, 0, lower_lip]) {
|
|
|
- difference() {
|
|
|
- hull() {
|
|
|
- rounded_box(thin_mint, width - wall - lip_fit, depth - wall - lip_fit, radius, 0.1);
|
|
|
- translate([0, 0, 0.5]) {
|
|
|
- rounded_box(thin_mint, width, depth, radius, wall + lip_fit);
|
|
|
- }
|
|
|
- }
|
|
|
- rounded_block(0.5 + thin_mint, width - wall - lip_fit, depth - wall - lip_fit, radius);
|
|
|
- }
|
|
|
- }
|
|
|
- // mounting slots for pcb's
|
|
|
- slot_len = 30;
|
|
|
- difference() {
|
|
|
- // FIXME: wrong dimension, just add * 1.5 as a hack
|
|
|
- rounded_block(slot_len, width - 2 * wall, depth - 2 * wall, radius - 1.5 * wall );
|
|
|
- union() {
|
|
|
- // hollow out the inside with slots for pcbs
|
|
|
- octa_pcb_clear(slot_len, pcb_width, pcb_thickness, pcb_slot_depth, pcb_front, pcb_back);
|
|
|
- // trim square angles
|
|
|
- for (ytrans = [-1, 1]) {
|
|
|
- translate([0, ytrans * (pcb_front + pcb_back + pcb_thickness), 0]) {
|
|
|
- cylinder(r = pcb_front + pcb_thickness, h = height, $fn = facets);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // upper lip is too thin, reinforce the back of the snap joint hook holes
|
|
|
- for (r = [0, 180]) rotate([0, 90, r]) {
|
|
|
- translate([- height + upper_lip * 3/4, (width + radius + snap_joint_hook_r + lip_fit), -(snap_joint_hook_w/2 + 0.25)]) {
|
|
|
- difference() {
|
|
|
- cylinder(r = snap_joint_hook_r * 1.25, h = snap_joint_hook_w + 0.5, $fn = facets);
|
|
|
- translate([- snap_joint_hook_r * 1.25, - wall, 0]) {
|
|
|
- cube([snap_joint_hook_r * 3, snap_joint_hook_r * 3, snap_joint_hook_w * 1.5]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // add parts for clearance check
|
|
|
- if (clear == 1) {
|
|
|
- // electrolytic capacitors
|
|
|
- cap_diam = 10.2;
|
|
|
- for (rot = [0, 180, 270]) {
|
|
|
- rotate([0, 0, rot]) {
|
|
|
- translate([-pcb_front + cap_diam/2, 0, 0]) {
|
|
|
- *cylinder(r = (cap_diam/2), h = 20, $fn = facets);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // PCBs
|
|
|
- for (rot = [0, 180, 270]) {
|
|
|
- rotate([0, 0, rot]) {
|
|
|
- translate([-(pcb_front + pcb_thickness), -pcb_width/2, -pcb_low_exp]) {
|
|
|
- cube([pcb_thickness, pcb_width, pcb_length]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // connectors
|
|
|
- cap_h = 12.3;
|
|
|
- cap_w = 10.53/2;
|
|
|
- for (rot = [0, 180, 270]) {
|
|
|
- rotate([0, 0, rot]) {
|
|
|
- translate([-pcb_front, -cap_w/2 - 2.5, 0]) {
|
|
|
- *cube([cap_h, cap_w, 20]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// flare from the body to the microphone stalk
|
|
|
|
|
|
module octa_mount_flare(height, lip, transition, radius, top_radius, stalk_height, dot) {
|
|
|
@@ -511,111 +386,6 @@ module octa_mount_flare(height, lip, transition, radius, top_radius, stalk_heigh
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// flare from the body to the microphone stalk (old rectangular design)
|
|
|
-
|
|
|
-module octa_mount_rect_flare(height, lip, transition, bot_xradius, bot_yradius, corner, top_radius, stalk_height, dot) {
|
|
|
- // bottom rounded box
|
|
|
- difference() {
|
|
|
- union() {
|
|
|
- rounded_block(height, bot_xradius, bot_yradius, corner);
|
|
|
- // make snap joint arm thicker
|
|
|
- for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
- translate([- snap_joint_hook_w - snap_joint_slot_w / 2, bot_yradius, 0]) {
|
|
|
- cube([snap_joint_hook_w * 2 + snap_joint_slot_w, wall / 2, lip * 1.25]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- rounded_block_relative(height, bot_xradius, bot_yradius, corner, -(2 * wall));
|
|
|
- // flange to mount on body
|
|
|
- rounded_block_relative(lip + 1.00, bot_xradius, bot_yradius, corner, - (wall));
|
|
|
- // cut slots for snap joint hooks
|
|
|
- for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
- for (m = [-1, 1]) {
|
|
|
- translate([m * (snap_joint_hook_w + snap_joint_slot_w) - snap_joint_slot_w / 2, bot_yradius - 1.5 * wall, 0]) {
|
|
|
- cube([snap_joint_slot_w, 2 * wall, lip - 1.0]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // and make a smooth transition to avoid overhangs
|
|
|
- translate([0, 0, lip + 1.00]) {
|
|
|
- hull() {
|
|
|
- rounded_block_relative(thin_mint, bot_xradius, bot_yradius, corner, - wall);
|
|
|
- translate([0, 0, 1.0]) {
|
|
|
- rounded_block_relative(thin_mint, bot_xradius, bot_yradius, corner, - 2 * wall);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // add snap joint hook to arm
|
|
|
- for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
- translate([- snap_joint_hook_w / 2, bot_yradius - wall/2 + lip_fit, 1/4 * lip]) {
|
|
|
- rotate([90, 0, 90]) {
|
|
|
- difference() {
|
|
|
- cylinder(r = snap_joint_hook_r - 0.2, h = snap_joint_hook_w, $fn = facets);
|
|
|
- translate([0, -snap_joint_hook_r, 0]) {
|
|
|
- cube([snap_joint_hook_r, snap_joint_hook_w, snap_joint_hook_w]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // flare to round section
|
|
|
- translate([0, 0, height]) {
|
|
|
- difference() {
|
|
|
- hull() {
|
|
|
- rounded_block(thin_mint, bot_xradius, bot_yradius, corner);
|
|
|
- translate([0, 0, transition]) {
|
|
|
- cylinder(r = top_radius, h = thin_mint, $fn = facets);
|
|
|
- }
|
|
|
- }
|
|
|
- hull() {
|
|
|
- rounded_block_relative(thin_mint, bot_xradius, bot_yradius, corner, - wall);
|
|
|
- translate([0, 0, transition]) {
|
|
|
- cylinder(r = top_radius - wall, h = thin_mint, $fn = facets);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // cylindrical stalk
|
|
|
- translate([0, 0, height + transition]) {
|
|
|
- difference() {
|
|
|
- cylinder(r = top_radius, h = stalk_height, $fn = facets);
|
|
|
- cylinder(r = top_radius - wall, h = stalk_height, $fn = facets);
|
|
|
- }
|
|
|
- // add marker for "back of microphone" orientation
|
|
|
- if (dot == 1) {
|
|
|
- rotate([0, 0, 90]) {
|
|
|
- translate([0, top_radius - wall * 2 / 3, stalk_height - top_radius]) {
|
|
|
- difference() {
|
|
|
- sphere(r = top_radius / 3, $fn = 32);
|
|
|
- translate([0, -top_radius + top_radius / 2, 0]) {
|
|
|
- cube([top_radius, top_radius, top_radius], center = true);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // close stalk and add holes for cables
|
|
|
- translate([0, 0, stalk_height - top_radius - wall]) {
|
|
|
- difference() {
|
|
|
- cylinder(r = top_radius - wall, h = top_radius + wall, $fn = facets);
|
|
|
- translate([0, 0, 0]) {
|
|
|
- sphere(r = top_radius - wall, $fn = facets);
|
|
|
- }
|
|
|
- wire_diam = mic_wire_diam + mic_wire_fit;
|
|
|
- for (r = [0, 90, 180, 270]) rotate([0, 0, r]) {
|
|
|
- for (t = [0, 1]) {
|
|
|
- rotate([0, 0, 45 * t]) translate([top_radius - wire_diam - t * wire_diam * 2/3, 0, wall]) {
|
|
|
- cylinder(r = wire_diam / 2, h = top_radius * 2, $fn = facets);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- translate([0, 0, wall]) cylinder(r = wire_diam, h = top_radius * 2, $fn = facets);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// flares from the body to a dual cable housing
|
|
|
|
|
|
module octa_mount_flare_dual(height, lip, transition, xradius, yradius, corner, top_radius, stalk_height) {
|
|
|
@@ -773,73 +543,6 @@ module octa_mount_flare_connector(height, lip, transition, radius, top_xradius,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// flare to dual cable connectors (old rectangular design)
|
|
|
-
|
|
|
-module octa_mount_flare_rect_connector(height, lip, transition, xradius, yradius, corner, top_xradius, top_yradius) {
|
|
|
- // hack to get it to render, fix problem in rounded_block when radius is equal to corner...
|
|
|
- delta = 0.001;
|
|
|
- // bottom rounded box
|
|
|
- difference() {
|
|
|
- rounded_block(height, xradius, yradius, corner);
|
|
|
- rounded_block_relative(height, xradius, yradius, corner, -(2 * wall));
|
|
|
- // flange to mount on body
|
|
|
- rounded_block_relative(lip + 1.00, xradius, yradius, corner, - (wall));
|
|
|
- // cut slots for snap joint hooks
|
|
|
- for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
- for (m = [-1, 1]) {
|
|
|
- translate([m * (snap_joint_hook_w + snap_joint_slot_w) - snap_joint_slot_w / 2, yradius - 1.5 * wall, 0]) {
|
|
|
- cube([snap_joint_slot_w, 2 * wall, lip - 1.0]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // and make a smooth transition to avoid overhangs
|
|
|
- translate([0, 0, lip + 1.00]) {
|
|
|
- hull() {
|
|
|
- rounded_block_relative(thin_mint, xradius, yradius, corner, - wall);
|
|
|
- translate([0, 0, 1.0]) {
|
|
|
- rounded_block_relative(thin_mint, xradius, yradius, corner, - 2 * wall);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // make snap joint arm thicker
|
|
|
- for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
- translate([- snap_joint_hook_w - snap_joint_slot_w / 2, yradius, 0]) {
|
|
|
- cube([snap_joint_hook_w * 2 + snap_joint_slot_w, wall / 2, lip * 1.25]);
|
|
|
- }
|
|
|
- }
|
|
|
- // add snap joint hook to arm
|
|
|
- for (r = [0, 180]) rotate([0, 0, r]) {
|
|
|
- translate([- snap_joint_hook_w / 2, yradius - wall/2 + lip_fit, 1/4 * lip]) {
|
|
|
- rotate([90, 0, 90]) {
|
|
|
- difference() {
|
|
|
- cylinder(r = snap_joint_hook_r - 0.2, h = snap_joint_hook_w, $fn = facets);
|
|
|
- translate([0, -snap_joint_hook_r, 0]) {
|
|
|
- cube([snap_joint_hook_r, snap_joint_hook_w, snap_joint_hook_w]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // flare to rounded section
|
|
|
- translate([0, 0, height]) {
|
|
|
- difference() {
|
|
|
- hull() {
|
|
|
- rounded_block(thin_mint, xradius, yradius, corner);
|
|
|
- translate([0, 0, transition]) {
|
|
|
- rounded_block(thin_mint, top_xradius, top_yradius, top_xradius - delta);
|
|
|
- }
|
|
|
- }
|
|
|
- hull() {
|
|
|
- rounded_block_relative(thin_mint, xradius, yradius, corner, - 2 * wall);
|
|
|
- translate([0, -top_xradius, transition]) {
|
|
|
- cube([thin_mint, (top_xradius) * 2, thin_mint]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// top conical section that plugs into capsule array
|
|
|
|
|
|
module octa_capsule_array_mount(angles) {
|
|
|
@@ -900,18 +603,6 @@ module render_octa_capsule_flare(z_offset) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// old rectangular design
|
|
|
-
|
|
|
-module render_octa_capsule_rect_flare(z_offset) {
|
|
|
- translate([0, 0, z_offset]) {
|
|
|
- octa_mount_flare(pcb_hi_clear + pcb_hi_exp, mount_lip, flare_height, box_radius + wall, box_radius * 2 - wall,
|
|
|
- mount_corner, mount_radius + wall, stalk_height, 1);
|
|
|
- translate([0, 0, pcb_hi_clear + pcb_hi_exp + flare_height + stalk_height]) {
|
|
|
- octa_capsule_array_mount([45, 135, -45, -135]);
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// microphone body: main body, holds printed circuit boards
|
|
|
//
|
|
|
octa_pcb_mount_height = pcb_length - pcb_low_exp - pcb_hi_exp;
|
|
|
@@ -934,25 +625,6 @@ module render_octa_pcb_mount(z_offset, showint) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// old rectangular design
|
|
|
-
|
|
|
-module render_octa_pcb_rect_mount(z_offset, showint) {
|
|
|
- translate([0, 0, z_offset]) {
|
|
|
- octa_mount_body(octa_pcb_mount_height, box_radius + wall, box_radius * 2 - wall, mount_corner, mount_lip, mount_lip, 0);
|
|
|
- }
|
|
|
- // add ccrma logo
|
|
|
- rotate([0, 0, -90]) {
|
|
|
- translate([0, -(box_radius - 0.5), octa_pcb_mount_height / 2]) {
|
|
|
- rotate([90, 0, 0]) {
|
|
|
- logo_scale = 1 / 2.2;
|
|
|
- scale([logo_scale, logo_scale, 1.0]) {
|
|
|
- ccrma_logo(1.65);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// microphone body: flare to microphone cable (slips into PCB holder body)
|
|
|
//
|
|
|
module render_octa_cable_flare(z_offset, flip) {
|
|
|
@@ -993,37 +665,6 @@ module render_octa_connector_flare(z_offset, flip) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-// old rectangular design
|
|
|
-
|
|
|
-module render_octa_connector_rect_flare(z_offset, flip) {
|
|
|
- conn_offset = 2.0;
|
|
|
- conn_wall = conn_core_o_diam / 2 - conn_core_diam / 2;
|
|
|
- translate([0, 0, z_offset]) {
|
|
|
- difference() {
|
|
|
- union() {
|
|
|
- octa_mount_flare_connector(pcb_low_clear + pcb_low_exp, mount_lip, 20,
|
|
|
- box_radius + wall, box_radius * 2 - wall, mount_corner,
|
|
|
- conn_core_o_diam / 2, conn_core_o_diam + conn_offset);
|
|
|
- for (m = [0, 1]) mirror([0, m, 0]) translate([0, conn_core_o_diam / 2 + conn_offset, pcb_low_clear + pcb_low_exp + 20]) {
|
|
|
- // add two connectors
|
|
|
- rotate([0, 0, -90]) {
|
|
|
- tetra_mount_connector_holder(conn_core_sleeve, conn_core_o_diam / 2, conn_core_diam / 2,
|
|
|
- conn_core_overlap, conn_core_s_diam / 2);
|
|
|
- }
|
|
|
- // add wall in between the two connectors
|
|
|
- translate([- 2 * wall, - (conn_core_o_diam / 2 + conn_offset), 0]) {
|
|
|
- cube([4 * wall, conn_offset + wall, 10]);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- // redo the hole in the connector holder so that it drills into the top of the flare
|
|
|
- for (m = [0, 1]) mirror([0, m, 0]) translate([0, conn_core_o_diam / 2 + conn_offset, 0]) {
|
|
|
- cylinder(r = conn_core_diam / 2, h = 100, $fn = facets);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// microphone body: render all parts with a vertical separation
|
|
|
//
|
|
|
module render_octa_body(z_offset, spread, showint) {
|