Переглянути джерело

more improvements to inner rings of shock mount - add rounded corners in rubber band slots, make connecting bars fit with slots, add triangular fillet around bar holes

Fernando Pablo Lopez-Lezcano 10 роки тому
батько
коміт
c243c595ca
1 змінених файлів з 53 додано та 43 видалено
  1. 53 43
      TinySpHEAR_mount_pcb.scad

+ 53 - 43
TinySpHEAR_mount_pcb.scad

@@ -326,8 +326,8 @@ module tetra_capsule_array_mount(angles) {
 // internal ring of shock mount
 
 module tetra_shock_mount_body_ring(height, radius, corner, gap, lip) {
-    slot_sep = radius * 2 / 2.7;
-    slot_w = 6;
+    slot_sep = radius * 2 / 2.5;
+    slot_w = 5;
     slot_o = height / 3;
     // connecting bar dimensions
     bar_w = 10;
@@ -343,53 +343,54 @@ module tetra_shock_mount_body_ring(height, radius, corner, gap, lip) {
             difference() {
                 tetra_mount_box_relative(height, radius + gap + 2 * wall, corner, 2 * wall);
                 tetra_mount_box_relative(height, radius + gap + wall, corner, 1 * wall);
-                for (rot = [0, 90, 180, 270]) {
-                    rotate([0, 0, rot]) {
-                        // slots for rubber bands
-                        for (m = [0, 1]) mirror([0, m, 0]) {
-                            translate([-slot_w / 2 + slot_sep, radius + gap, slot_o]) {
-                                cube([slot_w, 10, slot_o]);
-                                translate([slot_w / 3, 0, 0]) {
-                                    cube([slot_w /3, 10, 10]);
-                                }
+                for (rot = [0, 90, 180, 270]) rotate([0, 0, rot]) {
+                    // slots for rubber bands
+                    minkr = 1.25;
+                    for (m = [0, 1]) mirror([0, m, 0]) {
+                        translate([-slot_w / 2 + slot_sep, radius + gap, slot_o + minkr]) {
+                            minkowski() {
+                                cube([slot_w - minkr, 10, slot_o - minkr]);
+                                rotate([90, 0, 0]) cylinder(r = minkr, h = 1, $fn = facets);
+                            }
+                            translate([slot_w / 2, -2, 0]) {
+                                cube([slot_w / 2, 10, 1]);
                             }
                         }
                     }
                 }
             }
             // body for bars that connect both rings together
-            for (rot = [0, 90, 180, 270]) {
-                rotate([0, 0, rot]) {
-                    translate([radius + gap + 3 * wall, -(bar_w/2 + wall), 0]) {
-                        cube([bar_d + wall, bar_w + 2 * wall, height]);
+            for (rot = [0, 90, 180, 270]) rotate([0, 0, rot]) {
+                translate([radius + gap + 3 * wall, -(bar_w/2 + wall), 0]) {
+                    cube([bar_d + wall, bar_w + 2 * wall, height]);
+                }
+                for (m = [0, 1]) mirror([0, m, 0]) {
+                    translate([radius + gap + 4 * wall, -(bar_w/2 + wall), 0]) {
+                        cylinder(r = wall * 2, h = height, $fn = 3);
                     }
-               }
+                }
             }
         }
         // carve holes for bars that connect both rings
-        for (rot = [0, 90, 180, 270]) {
-            rotate([0, 0, rot]) {
-                translate([radius + gap + 3 * wall, -bar_w/2, 0]) {
-                    cube([bar_d, bar_w, height - 2.75 * wall]);
-                    translate([bar_d / 2, 0, height - 3 * wall]) {
-                        rotate([-90, 0, 0]) {
-                            cylinder(r = bar_d / 2, h = bar_w, $fn = facets);
-                        }
+        for (rot = [0, 90, 180, 270]) rotate([0, 0, rot]) {
+            translate([radius + gap + 3 * wall, -bar_w/2, 0]) {
+                cube([bar_d, bar_w, height - 2.75 * wall]);
+                translate([bar_d / 2, 0, height - 3 * wall]) {
+                    rotate([-90, 0, 0]) {
+                        cylinder(r = bar_d / 2, h = bar_w, $fn = facets);
                     }
                 }
             }
         }
     }
-    for (rot = [0, 90, 180, 270]) {
-        rotate([0, 0, rot]) {
-            // lip to support microphone on lower ring only
-            if (lip == 1) {
-                lip_w = 10;
-                translate([radius + gap + 2.5 * wall, -lip_w/2, height]) {
-                    rotate([90, 90, 180]) {
-                        linear_extrude(height = lip_w) {
-                            polygon([[0, 0], [0, 4], [1, 4], [height * 2/3, 0]]);
-                        }
+    for (rot = [0, 90, 180, 270]) rotate([0, 0, rot]) {
+        // lip to support microphone on lower ring only
+        if (lip == 1) {
+            lip_w = 10;
+            translate([radius + gap + 2.5 * wall, -lip_w/2, height]) {
+                rotate([90, 90, 180]) {
+                    linear_extrude(height = lip_w) {
+                        polygon([[0, 0], [0, 4], [1, 4], [height * 2/3, 0]]);
                     }
                 }
             }
@@ -421,14 +422,16 @@ module tetra_shock_mount_main_ring(height, radius, corner, gap, lip) {
 }
 
 
-module tetra_shock_mount_connector(length, width, thickness, fit) {
-        cube([length, width - 2 * fit, thickness - 2 * fit]);
+module tetra_shock_mount_connector(length, lip, width, thickness, fit) {
+    cube([length + 2 * lip , width - 2 * fit, thickness - 2 * fit]);
+    translate([lip, -(thickness / 2), 0])
+        cube([length , width + thickness, thickness * 3 / 2]);
 }
 
 
-*tetra_shock_mount_connector(ring_sep, 9, 3.3, 0.1);
+*tetra_shock_mount_connector(ring_sep, 10, 2, 0.1);
 *translate([0, 15, 0])
-    tetra_shock_mount_connector(ring_sep, 9, 3.3, 0.1);
+    tetra_shock_mount_connector(ring_sep, 10, 2, 0.1);
 
 // main body of microphone mount
 //
@@ -440,7 +443,7 @@ module tetra_shock_mount_connector(length, width, thickness, fit) {
 //
 
 //translate([0, 0, pcb_length - pcb_low_exp - pcb_hi_exp + 10]) {
-translate([0, 0, 0]) {
+*translate([0, 0, 0]) {
     tetra_mount_flare(10 + pcb_hi_exp, mount_lip, flare_height, box_radius + wall,  mount_corner, 
                     mount_radius + wall, stalk_height);
     translate([0, 0, 10 + pcb_hi_exp + flare_height + stalk_height]) {
@@ -452,7 +455,7 @@ translate([0, 0, 0]) {
 //
 
 //translate([0, 0, -(10 + pcb_length - pcb_low_exp - pcb_hi_exp + 10)]) {
-*translate([0, 0, -5]) {
+*translate([0, 0, -17]) {
     rotate([0, 180, 0]) {
         tetra_mount_flare(10 + pcb_low_exp, mount_lip, 20, box_radius + wall, mount_corner, cable_diam / 2 + wall, 10);
     }
@@ -466,16 +469,23 @@ ring_height = 6;
 band_angle = 40;
 main_radius_inc = (ring_sep / 2) / tan(band_angle);
 
-body_ring_gap = 0.5;
+body_ring_gap = 1.0;
 
 translate([0, 0, 0]) {
     //rotate([0, 180, 0]) {
-        *tetra_shock_mount_body_ring(10, box_radius + wall, mount_corner, body_ring_gap, 0);
+        tetra_shock_mount_body_ring(10, box_radius + wall, mount_corner, body_ring_gap, 0);
         *rotate([0, 180, 0]) {
-            translate([0, 0, ring_sep]) {
+            translate([0, 0, ring_sep + 2]) {
                 tetra_shock_mount_body_ring(10, box_radius + wall, mount_corner, body_ring_gap, 1);
             }
         }
+        // mock up the connecting rods
+        *for (r = [0, 90, 180, 270]) rotate([0, 0, r])
+            translate([box_radius + 3 * wall + body_ring_gap, 0, -1]) 
+                rotate([0, 90, 0])
+                    translate([-4, -5, 1]) {
+                        tetra_shock_mount_connector(ring_sep, 4, 10, 2, 0.1);
+                    }
     //}
 }