|
@@ -166,6 +166,18 @@ ring_arm_gap = 20;
|
|
|
|
|
|
|
|
// all eight printed circuit boards
|
|
// 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) {
|
|
module octa_pcb_clear(length, width, thick, slot_depth, front, back) {
|
|
|
for (ytrans = [-1, 1]) {
|
|
for (ytrans = [-1, 1]) {
|
|
|
translate([0, ytrans * (front + back + thick), 0]) {
|
|
translate([0, ytrans * (front + back + thick), 0]) {
|
|
@@ -178,9 +190,126 @@ module octa_pcb_clear(length, width, thick, slot_depth, front, back) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// the main body of the microphone mount
|
|
|
|
|
|
|
+// the main body that holds the phantom power interfaces
|
|
|
|
|
+
|
|
|
|
|
+module one_pcb(pcb_w, pcb_l, pcb_t, slot, clear, back) {
|
|
|
|
|
+ // printed circuit board
|
|
|
|
|
+ translate([-pcb_t/2, -pcb_w/2, 0]) {
|
|
|
|
|
+ cube([pcb_t, pcb_w, pcb_l]);
|
|
|
|
|
+ }
|
|
|
|
|
+ // space in front and behind
|
|
|
|
|
+ translate([0, -pcb_w/2+slot, 0]) {
|
|
|
|
|
+ cube([clear, pcb_w - (2 * slot), pcb_l]);
|
|
|
|
|
+ }
|
|
|
|
|
+ translate([-(back + pcb_t/2), -pcb_w/2+slot, 0]) {
|
|
|
|
|
+ cube([back, pcb_w - (2 * slot), pcb_l]);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module one_pcb_spar(pcb_w, pcb_l, pcb_t, slot, clear, back) {
|
|
|
|
|
+ translate([-(back + pcb_t/2 + wall), -pcb_w/2, 0]) {
|
|
|
|
|
+ cube([wall, pcb_w, pcb_l]);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module rounded_octagon(height, radius) {
|
|
|
|
|
+ intersection() {
|
|
|
|
|
+ cylinder(r = radius, h = height, $fn = 8);
|
|
|
|
|
+ cylinder(r = radius - wall, h = height, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+module rounded_octagon_wall(height, radius, wall) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ rounded_octagon(height, radius);
|
|
|
|
|
+ rounded_octagon(height, radius - wall);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+render_screw_holes = true;
|
|
|
|
|
+radial_pcb_offset = 19;
|
|
|
|
|
+
|
|
|
|
|
+module octa_mount_body(height, radius, lower_lip, upper_lip, clear) {
|
|
|
|
|
+ // rotate pcb's so they don't interfere with the screws
|
|
|
|
|
+ offset_angle = -12;
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ union() {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ // main body
|
|
|
|
|
+ rounded_octagon(height, radius);
|
|
|
|
|
+ // remove pcb slots
|
|
|
|
|
+ for (r = [0:360/8:360]) rotate([0, 0, r + offset_angle]) {
|
|
|
|
|
+ translate([0, radial_pcb_offset, 0]) {
|
|
|
|
|
+ one_pcb(pcb_width, pcb_length, pcb_thickness, pcb_slot_depth, 6, 2);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // remove inner tube
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ cylinder(r = radial_pcb_offset + pcb_width/2 - wall, h = pcb_length, $fn = facets);
|
|
|
|
|
+ cylinder(r = radial_pcb_offset - pcb_width/2 + 2 * wall, h = pcb_length, $fn = 8);
|
|
|
|
|
+ }
|
|
|
|
|
+ // remove inner cylinder
|
|
|
|
|
+ rotate([0, 0, 22.5]) cylinder(r = radial_pcb_offset - pcb_width/2 - wall, h = pcb_length, $fn = 8);
|
|
|
|
|
+ // upper lip for flare to microphone
|
|
|
|
|
+ translate([0, 0, height - upper_lip]) {
|
|
|
|
|
+ rounded_octagon_wall(upper_lip, radius, wall + lip_fit);
|
|
|
|
|
+ }
|
|
|
|
|
+ // lower lip for flare to cable or connector
|
|
|
|
|
+ translate([0, 0, 0]) {
|
|
|
|
|
+ rounded_octagon_wall(upper_lip, radius, wall + lip_fit);
|
|
|
|
|
+ }
|
|
|
|
|
+ // remove upper portion of pcb slots
|
|
|
|
|
+ translate([0, 0, height * 2/3]) {
|
|
|
|
|
+ rounded_octagon(height * 2/3, radius - 2.5 * wall);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (render_screw_holes) {
|
|
|
|
|
+ // add backplates for upper lip screws
|
|
|
|
|
+ for (r = [45, 135, 225, 315]) {
|
|
|
|
|
+ rotate([0, 0, r]) translate([-(radius - 3 * wall), -2, height * 2/3]) {
|
|
|
|
|
+ cube([2, 4, height * 1/3]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (render_screw_holes) {
|
|
|
|
|
+ // make eight holes in the the body for screws that hold both flares
|
|
|
|
|
+ // (number 0 size, 1/4" long = thread diameter: 1.6mm, head diameter: 2.75)
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ for (z = [lower_lip/2, height - upper_lip/2]) {
|
|
|
|
|
+ for (r = [45, 135, 225, 315]) {
|
|
|
|
|
+ rotate([0, 0, r]) translate([-(radius + 2 * wall), 0, z]) {
|
|
|
|
|
+ rotate([0, 90, 0]) {
|
|
|
|
|
+ cylinder(r = 0.7, h = radius + wall, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ cylinder(r = radius/2, h = height);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // add spars that connect internal hub to outer ring
|
|
|
|
|
+ for (r = [0:360/8:360]) rotate([0, 0, r + offset_angle]) {
|
|
|
|
|
+ translate([0, pcb_width, 0]) {
|
|
|
|
|
+ one_pcb_spar(pcb_width, height * 2/3, pcb_thickness, pcb_slot_depth, 7, 2);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // test for capacitor fit
|
|
|
|
|
+ // electrolytic capacitors
|
|
|
|
|
+ cap_diam = 10.2;
|
|
|
|
|
+ *for (r = [0:360/8:360]) {
|
|
|
|
|
+ rotate([0, 0, r + offset_angle]) {
|
|
|
|
|
+ translate([cap_diam/2, radial_pcb_offset, 0]) {
|
|
|
|
|
+ cylinder(r = (cap_diam/2), h = 20, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// the main body of the microphone mount (old rectangular design)
|
|
|
|
|
|
|
|
-module octa_mount_body(height, width, depth, radius, lower_lip, upper_lip, clear) {
|
|
|
|
|
|
|
+module octa_mount_rect_body(height, width, depth, radius, lower_lip, upper_lip, clear) {
|
|
|
// outer shell
|
|
// outer shell
|
|
|
difference() {
|
|
difference() {
|
|
|
rounded_box(height, width, depth, radius, 2 * wall);
|
|
rounded_box(height, width, depth, radius, 2 * wall);
|
|
@@ -277,9 +406,108 @@ module octa_mount_body(height, width, depth, radius, lower_lip, upper_lip, clear
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// flares from the body to the microphone stalk and cable
|
|
|
|
|
|
|
+// flare from the body to the microphone stalk
|
|
|
|
|
|
|
|
-module octa_mount_flare(height, lip, transition, bot_xradius, bot_yradius, corner, top_radius, stalk_height, dot) {
|
|
|
|
|
|
|
+module octa_mount_flare(height, lip, transition, radius, top_radius, stalk_height, dot) {
|
|
|
|
|
+ // bottom box
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ union() {
|
|
|
|
|
+ rounded_octagon_wall(height, radius, 2 * wall);
|
|
|
|
|
+ if (render_screw_holes) {
|
|
|
|
|
+ // small pedestals for the screws that attach the flare to the body
|
|
|
|
|
+ // (number 0 size, 1/4" long = thread diameter: 1.6mm, head diameter: 2.75)
|
|
|
|
|
+ for (r = [45, 135, 225, 315]) rotate([0, 0, r]) {
|
|
|
|
|
+ translate([radius - wall - 1.75, 0, lip/2]) {
|
|
|
|
|
+ rotate([0, 90, 0]) {
|
|
|
|
|
+ cylinder(r = 1.5, h = 2 * wall, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // flange to mount on body
|
|
|
|
|
+ rounded_octagon_wall(lip + 1.00, radius - wall, wall);
|
|
|
|
|
+ // and make a smooth transition to avoid overhangs
|
|
|
|
|
+ translate([0, 0, lip + 1.00]) {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ rounded_octagon_wall(thin_mint, radius - wall, wall);
|
|
|
|
|
+ translate([0, 0, 1.0]) {
|
|
|
|
|
+ rounded_octagon_wall(thin_mint, radius - 2 * wall, wall);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (render_screw_holes) {
|
|
|
|
|
+ // holes for screws that attach the flare to the body
|
|
|
|
|
+ // Number 0 Size, 1/4" Long = thread diameter: 1.6mm, head diameter: 2.75
|
|
|
|
|
+ for (r = [45, 135, 225, 315]) rotate([0, 0, r]) {
|
|
|
|
|
+ translate([radius/2, 0, lip/2]) {
|
|
|
|
|
+ rotate([0, 90, 0]) {
|
|
|
|
|
+ cylinder(r = (1.6 + 0.1)/2, h = radius, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // flare to round section
|
|
|
|
|
+ translate([0, 0, height]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ rounded_octagon(thin_mint, radius);
|
|
|
|
|
+ translate([0, 0, transition]) {
|
|
|
|
|
+ cylinder(r = top_radius, h = thin_mint, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ rounded_octagon(thin_mint, radius - 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);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 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
|
|
// bottom rounded box
|
|
|
difference() {
|
|
difference() {
|
|
|
union() {
|
|
union() {
|
|
@@ -476,7 +704,72 @@ module tetra_mount_connector_holder(height, radius, inside_radius, sleeve_height
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-module octa_mount_flare_connector(height, lip, transition, xradius, yradius, corner, top_xradius, top_yradius) {
|
|
|
|
|
|
|
+// flare to dual cable connectors
|
|
|
|
|
+
|
|
|
|
|
+module octa_mount_flare_connector(height, lip, transition, radius, 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() {
|
|
|
|
|
+ union() {
|
|
|
|
|
+ rounded_octagon_wall(height, radius, 2 * wall);
|
|
|
|
|
+ if (render_screw_holes) {
|
|
|
|
|
+ // small pedestals for the screws that attach the flare to the body
|
|
|
|
|
+ // (number 0 size, 1/4" long = thread diameter: 1.6mm, head diameter: 2.75)
|
|
|
|
|
+ for (r = [45, 135, 225, 315]) rotate([0, 0, r]) {
|
|
|
|
|
+ translate([radius - wall - 1.75, 0, lip/2]) {
|
|
|
|
|
+ rotate([0, 90, 0]) {
|
|
|
|
|
+ cylinder(r = 1.5, h = 2 * wall, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // flange to mount on body
|
|
|
|
|
+ rounded_octagon_wall(lip + 1.00, radius - wall, wall);
|
|
|
|
|
+ // and make a smooth transition to avoid overhangs
|
|
|
|
|
+ translate([0, 0, lip + 1.00]) {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ rounded_octagon_wall(thin_mint, radius - wall, wall);
|
|
|
|
|
+ translate([0, 0, 1.0]) {
|
|
|
|
|
+ rounded_octagon_wall(thin_mint, radius - 2 * wall, wall);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (render_screw_holes) {
|
|
|
|
|
+ // holes for screws that attach the flare to the body
|
|
|
|
|
+ // Number 0 Size, 1/4" Long = thread diameter: 1.6mm, head diameter: 2.75
|
|
|
|
|
+ for (r = [45, 135, 225, 315]) rotate([0, 0, r]) {
|
|
|
|
|
+ translate([radius/2, 0, lip/2]) {
|
|
|
|
|
+ rotate([0, 90, 0]) {
|
|
|
|
|
+ cylinder(r = (1.6 + 0.1)/2, h = radius, $fn = facets);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // flare to rounded section
|
|
|
|
|
+ translate([0, 0, height]) {
|
|
|
|
|
+ difference() {
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ rounded_octagon(thin_mint, radius);
|
|
|
|
|
+ translate([0, 0, transition]) {
|
|
|
|
|
+ rounded_block(thin_mint, top_xradius, top_yradius, top_xradius - delta);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ hull() {
|
|
|
|
|
+ rounded_octagon(thin_mint, radius - 2 * wall);
|
|
|
|
|
+ translate([0, -top_xradius, transition]) {
|
|
|
|
|
+ cube([thin_mint, (top_xradius) * 2, thin_mint]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 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...
|
|
// hack to get it to render, fix problem in rounded_block when radius is equal to corner...
|
|
|
delta = 0.001;
|
|
delta = 0.001;
|
|
|
// bottom rounded box
|
|
// bottom rounded box
|
|
@@ -548,7 +841,7 @@ module octa_capsule_array_mount(angles) {
|
|
|
union() {
|
|
union() {
|
|
|
difference() {
|
|
difference() {
|
|
|
cylinder(h = mount_top_height, r1 = mount_radius + wall, r2 = mount_radius_capsule, $fn = facets);
|
|
cylinder(h = mount_top_height, r1 = mount_radius + wall, r2 = mount_radius_capsule, $fn = facets);
|
|
|
- cylinder(h = mount_top_height, r1 = mount_radius, r2 = mount_radius_capsule - 2 * wall * wall, $fn = facets);
|
|
|
|
|
|
|
+ cylinder(h = mount_top_height, r1 = mount_radius, r2 = mount_radius_capsule - 3 * wall * wall, $fn = facets);
|
|
|
}
|
|
}
|
|
|
// second set of optional "leaves" to get a better mount
|
|
// second set of optional "leaves" to get a better mount
|
|
|
*difference() {
|
|
*difference() {
|
|
@@ -593,6 +886,17 @@ module octa_capsule_array_mount(angles) {
|
|
|
// microphone body: flare to capsule array (slips into PCB holder body)
|
|
// microphone body: flare to capsule array (slips into PCB holder body)
|
|
|
//
|
|
//
|
|
|
module render_octa_capsule_flare(z_offset) {
|
|
module render_octa_capsule_flare(z_offset) {
|
|
|
|
|
+ translate([0, 0, z_offset]) {
|
|
|
|
|
+ octa_mount_flare(pcb_hi_clear + pcb_hi_exp, mount_lip, flare_height, octa_pcb_radius, 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]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// old rectangular design
|
|
|
|
|
+
|
|
|
|
|
+module render_octa_capsule_rect_flare(z_offset) {
|
|
|
translate([0, 0, 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,
|
|
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);
|
|
mount_corner, mount_radius + wall, stalk_height, 1);
|
|
@@ -605,8 +909,28 @@ module render_octa_capsule_flare(z_offset) {
|
|
|
// microphone body: main body, holds printed circuit boards
|
|
// microphone body: main body, holds printed circuit boards
|
|
|
//
|
|
//
|
|
|
octa_pcb_mount_height = pcb_length - pcb_low_exp - pcb_hi_exp;
|
|
octa_pcb_mount_height = pcb_length - pcb_low_exp - pcb_hi_exp;
|
|
|
|
|
+octa_pcb_radius = radial_pcb_offset + pcb_width/2 + 5 * wall;
|
|
|
|
|
|
|
|
module render_octa_pcb_mount(z_offset, showint) {
|
|
module render_octa_pcb_mount(z_offset, showint) {
|
|
|
|
|
+ translate([0, 0, z_offset]) {
|
|
|
|
|
+ octa_mount_body(octa_pcb_mount_height, octa_pcb_radius, mount_lip, mount_lip, 0);
|
|
|
|
|
+ // add ccrma logo
|
|
|
|
|
+ rotate([0, 0, -90 + 22.5]) {
|
|
|
|
|
+ translate([0, -(octa_pcb_radius - 3.5), octa_pcb_mount_height / 2]) {
|
|
|
|
|
+ rotate([90, 270, 0]) {
|
|
|
|
|
+ logo_scale = 1 / 2.4;
|
|
|
|
|
+ scale([logo_scale, logo_scale, 1.0]) {
|
|
|
|
|
+ ccrma_logo(1.65);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// old rectangular design
|
|
|
|
|
+
|
|
|
|
|
+module render_octa_pcb_rect_mount(z_offset, showint) {
|
|
|
translate([0, 0, z_offset]) {
|
|
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);
|
|
octa_mount_body(octa_pcb_mount_height, box_radius + wall, box_radius * 2 - wall, mount_corner, mount_lip, mount_lip, 0);
|
|
|
}
|
|
}
|
|
@@ -632,7 +956,40 @@ module render_octa_cable_flare(z_offset, flip) {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// microphone body: flare to dual cable connectors (slips into PCB holder body)
|
|
|
|
|
+//
|
|
|
module render_octa_connector_flare(z_offset, flip) {
|
|
module render_octa_connector_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,
|
|
|
|
|
+ octa_pcb_radius,
|
|
|
|
|
+ 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);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// old rectangular design
|
|
|
|
|
+
|
|
|
|
|
+module render_octa_connector_rect_flare(z_offset, flip) {
|
|
|
conn_offset = 2.0;
|
|
conn_offset = 2.0;
|
|
|
conn_wall = conn_core_o_diam / 2 - conn_core_diam / 2;
|
|
conn_wall = conn_core_o_diam / 2 - conn_core_diam / 2;
|
|
|
translate([0, 0, z_offset]) {
|
|
translate([0, 0, z_offset]) {
|
|
@@ -672,7 +1029,7 @@ module render_octa_body(z_offset, spread, showint) {
|
|
|
render_octa_capsule_flare(octa_pcb_mount_height + 2 * lippy);
|
|
render_octa_capsule_flare(octa_pcb_mount_height + 2 * lippy);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// microphone: render the full assembly with a vertical separation
|
|
|
|
|
|
|
+// microphone: render the full assembly with vertical separation between components
|
|
|
//
|
|
//
|
|
|
module render_octa_microphone(z_offset, spread) {
|
|
module render_octa_microphone(z_offset, spread) {
|
|
|
render_octa_body(z_offset, spread);
|
|
render_octa_body(z_offset, spread);
|
|
@@ -681,8 +1038,8 @@ module render_octa_microphone(z_offset, spread) {
|
|
|
flare_height + stalk_height + pcb_hi_clear + pcb_hi_exp + 2 * lippy + spread + mic_radius);
|
|
flare_height + stalk_height + pcb_hi_clear + pcb_hi_exp + 2 * lippy + spread + mic_radius);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// microphone: render the full assembly with a vertical separation
|
|
|
|
|
-// cut out halt of the assembly so that we can see the inside
|
|
|
|
|
|
|
+// microphone: render the full assembly with vertical separation between components
|
|
|
|
|
+// cut out half of the assembly so that we can see the inside
|
|
|
//
|
|
//
|
|
|
|
|
|
|
|
module render_octa_microphone_cutout(z_offset, spread) {
|
|
module render_octa_microphone_cutout(z_offset, spread) {
|