Просмотр исходного кода

redesign Octathingy flare to capsule array to match body, add rendering of windscreen components

Fernando Pablo Lopez-Lezcano 9 лет назад
Родитель
Сommit
6cb13ab7c0
2 измененных файлов с 152 добавлено и 7 удалено
  1. 28 5
      Octathingy_EM200.scad
  2. 124 2
      Octathingy_mount_pcb.scad

+ 28 - 5
Octathingy_EM200.scad

@@ -31,6 +31,8 @@
 // http://creativecommons.org/licenses/by-nc-sa/4.0/
 
 include <Octathingy_common.scad>;
+include <SpHEAR_windscreen.scad>;
+include <TinySpHEAR_mount_pcb.scad>;
 include <Octathingy_mount_pcb.scad>;
 
 // dimensions of the EM200 electret microphone capsule
@@ -49,16 +51,37 @@ facets = 128;
 ////
 
 //// microphone body and array
+windscreen_thread_radius = mic_radius * 1.8;
+windscreen_radius = windscreen_thread_radius + 5.0;
+windscreen_thread_height = 8;
+windscreen_height = 68;
 
-*render_octa_capsule_array(212.3);
+render_octa_capsule_array(212.3);
 
-*render_octa_capsule_flare(49.2);
+difference() {
+    render_octa_capsule_flare(49.2);
 
-*render_octa_pcb_mount(0, 0);
+    *translate([-60, -60, 0]) {
+        cube([60, 60, 120]);
+    }
+}
+
+difference() {
+    union() {
+    render_sphear_lower_windscreen(tetra_pcb_mount_height - 10 + 28);
+
+    render_sphear_upper_windscreen(tetra_pcb_mount_height - 10 + 28 + windscreen_height);
+    }
+    *translate([-60, -60, 0]) {
+        cube([60, 60, 120]);
+    }
+}
+
+render_octa_pcb_mount(0, 0);
 
 *render_octa_cable_flare(0);
 
-*rotate([0, 180, 0]) {
+rotate([0, 180, 0]) {
     render_octa_connector_flare(0);
 }
 
@@ -68,7 +91,7 @@ facets = 128;
 // the whole microphone
 // or use render_octa_microphone_cutout(0, 0) for a "transparent" view
 //
-render_octa_microphone_cutout(0, 0, 0);
+*render_octa_microphone_cutout(0, 0, 0);
 
 //// microphone shock mount
 

+ 124 - 2
Octathingy_mount_pcb.scad

@@ -289,7 +289,7 @@ module octa_mount_body(height, radius, lower_lip, upper_lip, clear) {
 
 // flare from the body to the microphone stalk
 
-module octa_mount_flare(height, lip, transition, radius, top_radius, stalk_height, dot) {
+module octa_mount_flare_no_ws(height, lip, transition, radius, top_radius, stalk_height, dot) {
     // bottom box
     difference() {
         union() {
@@ -386,6 +386,128 @@ module octa_mount_flare(height, lip, transition, radius, top_radius, stalk_heigh
     }
 }
 
+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 windscreen threads
+    transition_to_threads = 5.0;
+    translate([0, 0, height]) {
+        difference() {
+            hull() {
+                rounded_octagon(thin_mint, radius);
+                translate([0, 0, transition_to_threads]) {
+                    cylinder(r = windscreen_thread_radius + 0.5, h = thin_mint, $fn = facets);
+                }
+            }
+            hull() {
+                rounded_octagon(thin_mint, radius - 2 * wall);
+                translate([0, 0, transition_to_threads]) {
+                    cylinder(r = windscreen_thread_radius - windscreen_thread_depth - wall, h = thin_mint, $fn = facets);
+                }
+            }
+        }
+    }
+    // windscreen mounting threads
+    translate([0, 0, height + transition_to_threads]) difference() {
+        metric_thread(diameter = windscreen_thread_radius * 2, pitch = windscreen_thread_pitch,
+            length = windscreen_thread_height, angle = windscreen_thread_angle, internal = false);
+        cylinder(r = windscreen_thread_radius - wall - windscreen_thread_depth, h = windscreen_thread_height + thin_mint, $fn = facets);
+    }
+
+    // flare to stalk
+    translate([0, 0, height + transition_to_threads + windscreen_thread_height]) {
+        difference() {
+            hull() {
+                cylinder(r = windscreen_thread_radius - windscreen_thread_depth, h = thin_mint, $fn = facets);
+                translate([0, 0, transition - transition_to_threads - windscreen_thread_height]) {
+                    cylinder(r = top_radius, h = thin_mint, $fn = facets);
+                }
+            }
+            hull() {
+                cylinder(r = windscreen_thread_radius - windscreen_thread_depth - wall, h = thin_mint, $fn = facets);
+                translate([0, 0, transition - transition_to_threads - windscreen_thread_height]) {
+                    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) {
@@ -613,7 +735,7 @@ module render_octa_pcb_mount(z_offset, showint) {
         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]) {
+            translate([0, -(octa_pcb_radius - 3.75), octa_pcb_mount_height / 2]) {
                 rotate([90, 270, 0]) {
                     logo_scale = 1 / 2.4;
                     scale([logo_scale, logo_scale, 1.0]) {