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

first try at including the microphone array in the complete design, include common scad file

Fernando Pablo Lopez-Lezcano 10 лет назад
Родитель
Сommit
f28732e7ef
1 измененных файлов с 83 добавлено и 17 удалено
  1. 83 17
      TinySpHEAR_mount_pcb.scad

+ 83 - 17
TinySpHEAR_mount_pcb.scad

@@ -25,6 +25,8 @@
 //   Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
 //   Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
 // http://creativecommons.org/licenses/by-nc-sa/4.0/
 // http://creativecommons.org/licenses/by-nc-sa/4.0/
 
 
+include <TinySpHEAR_common.scad>;
+
 // size of printed circuit board
 // size of printed circuit board
 pcb_length = 85.090;
 pcb_length = 85.090;
 // measured = 16.26 (fit = 0.25)
 // measured = 16.26 (fit = 0.25)
@@ -114,6 +116,16 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
             tetra_pcb_clear(pcb_length, pcb_width, pcb_thickness, 1.0, pcb_front, pcb_back);
             tetra_pcb_clear(pcb_length, pcb_width, pcb_thickness, 1.0, pcb_front, pcb_back);
             // trim square angles
             // trim square angles
             cylinder(r = pcb_front, h = height, $fn = facets);
             cylinder(r = pcb_front, h = height, $fn = facets);
+            // remove slots from inside body
+            slot_len = 15;
+            translate([0, 0, slot_len]) {
+                hull() {
+                    tetra_mount_box(height - (3 * slot_len), radius - 2 * wall, corner);
+                    translate([0, 0, height - (2 * slot_len) + height / 3]) {
+                        cylinder(r = radius / 3, h = 1, $fn = facets);
+                    }
+                }
+            }
             // upper lip for flare to microphone
             // upper lip for flare to microphone
             translate([0, 0, height - upper_lip]) {
             translate([0, 0, height - upper_lip]) {
                 difference() {
                 difference() {
@@ -131,15 +143,17 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
         }
         }
     }
     }
     // external slot for microphone holder
     // external slot for microphone holder
-    mount_slot_len = 30;
-    mount_slot_stem = 4;
-    mount_slot_width = 2;
-    mount_slot_radius = 2;
-    translate([-(radius + mount_slot_stem), -(mount_slot_width/2), 0]) {
-        cube([mount_slot_stem, mount_slot_width, mount_slot_len]);
-    }
-    translate([-(radius + mount_slot_stem), 0, 0]) {
-        cylinder(r = mount_slot_radius, h = mount_slot_len, $fn = facets);
+    if (0) {
+        mount_slot_len = 30;
+        mount_slot_stem = 4;
+        mount_slot_width = 2;
+        mount_slot_radius = 2;
+        translate([-(radius + mount_slot_stem), -(mount_slot_width/2), 0]) {
+            cube([mount_slot_stem, mount_slot_width, mount_slot_len]);
+        }
+        translate([-(radius + mount_slot_stem), 0, 0]) {
+            cylinder(r = mount_slot_radius, h = mount_slot_len, $fn = facets);
+        }
     }
     }
     // add parts for clearance check
     // add parts for clearance check
     if (clear == 1) {
     if (clear == 1) {
@@ -167,11 +181,13 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
 
 
 // flares from the body to the microphone stalk and cable
 // flares from the body to the microphone stalk and cable
 
 
-module tetra_mount_flare(height, transition, bot_radius, bot_corner, top_radius, stalk_height) {
+module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_radius, stalk_height) {
     // bottom rounded box
     // bottom rounded box
     difference() {
     difference() {
         tetra_mount_box(height, bot_radius, bot_corner);
         tetra_mount_box(height, bot_radius, bot_corner);
-        tetra_mount_box(height, bot_radius - wall, bot_corner);
+        tetra_mount_box(height, bot_radius - 2 * wall, bot_corner);
+        // flange to mount on body
+        tetra_mount_box(lip + 1.0, bot_radius - wall, bot_corner);
     }
     }
     // flare to round section
     // flare to round section
     translate([0, 0, height]) {
     translate([0, 0, height]) {
@@ -183,7 +199,7 @@ module tetra_mount_flare(height, transition, bot_radius, bot_corner, top_radius,
                 }
                 }
             }
             }
             hull() {
             hull() {
-                tetra_mount_box(1, bot_radius - wall, bot_corner);
+                tetra_mount_box(1, bot_radius - 2 * wall, bot_corner);
                 translate([0, 0, transition]) {
                 translate([0, 0, transition]) {
                     cylinder(r = top_radius - wall, h = 1, $fn = facets);
                     cylinder(r = top_radius - wall, h = 1, $fn = facets);
                 }
                 }
@@ -199,23 +215,73 @@ module tetra_mount_flare(height, transition, bot_radius, bot_corner, top_radius,
     }
     }
 }
 }
 
 
+// top conical section that plugs into capsule array
+
+module tetra_capsule_array_mount() {
+    difference() {
+        translate([0, 0, 0]) {
+            rotate([0, 0, 45]) {
+                difference() {
+                    ellipsoid(mount_top_height, mount_radius + wall, mount_radius_capsule, mount_top_eccentricity);
+                    ellipsoid(mount_top_height, mount_radius, mount_radius_capsule * 0.5, mount_top_eccentricity * 1.05);
+                }
+            }
+        }
+        
+    }
+}
+
 echo("box radius is ", box_radius);
 echo("box radius is ", box_radius);
 
 
+// lip that mounts flares into main body box
+mount_lip = 6.0;
+
+// main body corner radius
+mount_corner = 10.0;
+
 // main body of microphone mount
 // main body of microphone mount
-tetra_mount_body(pcb_length, box_radius + wall, 10, 6, 6, 0);
+//
+// we leave 12mm of the pcb exposed on the bottom of the body so that we
+// can solder the wires that connect the microphone with the
+// preamplifier, same at the top of the pcb to solder the wires
+// to the capsules
+pcb_low_exp = 12.0;
+pcb_hi_exp = 8.0;
+
+*tetra_mount_body(pcb_length - pcb_low_exp - pcb_hi_exp, box_radius + wall, mount_corner, mount_lip, mount_lip, 0);
 
 
 // flare to microphone stalk
 // flare to microphone stalk
-// translate([0, 0, pcb_length + 10]) {
-*translate([0, 0, 0]) {
-    tetra_mount_flare(10, 50, box_radius + wall, 10, 5, 40);
+//
+// add 12mm of exposed pcb coverage
+
+//translate([0, 0, pcb_length - pcb_low_exp - pcb_hi_exp + 10]) {
+translate([0, 0, 0]) {
+    tetra_mount_flare(10 + pcb_hi_exp, mount_lip, 50, box_radius + wall,  mount_corner, 5, 40);
+    translate([0, 0, 10 + pcb_hi_exp + 50 + 40]) {
+        tetra_capsule_array_mount();
+    }
 }
 }
 
 
 // flare to microphone cable
 // flare to microphone cable
+//
+// add 8mm of exposed pcb coverage
+
 *translate([0, 0, -10]) {
 *translate([0, 0, -10]) {
     rotate([0, 180, 0]) {
     rotate([0, 180, 0]) {
-        tetra_mount_flare(10, 20, 17, 10, cable_diam / 2, 10);
+        tetra_mount_flare(10 + pcb_low_exp, mount_lip, 20, box_radius + wall, mount_corner, cable_diam / 2, 10);
     }
     }
 }
 }
 
 
+// the microphone itself
+rendermic = 1;
 
 
+translate([0, 0, 10 + pcb_hi_exp + 50 + 40 + 30]) {
+    // all four capsules
+    capsule(45, elev_angle, leg_angles_top, 60, 0, 0.0, 0);
+    capsule(-135, elev_angle, leg_angles_top, 60, 0, 0.0, 0);
+    capsule(-45, -elev_angle, leg_angles_bot, 0, 1, 0.0, 0);
+    capsule(135, -elev_angle, leg_angles_bot, 0, 1, 0.0, 0);
+    // the mount
+    *mount([-45, 135], mount_wall, mic_mount_wall, mic_mount_height + mount_top_height + mount_height + capsule_bottom);
+}