Sfoglia il codice sorgente

properly join the flares with the mount stalks introducing mint_thin slices for the hulls, make the wall of the flare constant thickness, make stalk the same thickness as the flare, add an additional transition between flare and stalk, add transition in the lip to avoid overhangs while printing, replace top ellipsoid microphone array mount in TinySpHEAR with a rounded box which gives better cable clearance

Fernando Pablo Lopez-Lezcano 10 anni fa
parent
commit
9468249d5e
3 ha cambiato i file con 87 aggiunte e 22 eliminazioni
  1. 38 8
      Octathingy_mount_pcb.scad
  2. 3 0
      SpHEAR_common.scad
  3. 46 14
      TinySpHEAR_mount_pcb.scad

+ 38 - 8
Octathingy_mount_pcb.scad

@@ -216,20 +216,50 @@ module octa_mount_flare(height, lip, transition, xradius, yradius, corner, top_r
         rounded_block_relative(height, xradius, yradius, corner, -(2 * wall));
         // flange to mount on body
         rounded_block_relative(lip + 1.00, xradius, yradius, corner, - (wall));
+        // 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);
+                }
+            }
+        }
     }
     // flare to round section
     translate([0, 0, height]) {
         difference() {
             hull() {
-                rounded_block(1, xradius, yradius, corner);
+                rounded_block(thin_mint, xradius, yradius, corner);
                 translate([0, 0, transition]) {
-                    cylinder(r = top_radius, h = 1, $fn = facets);
+                    cylinder(r = top_radius, h = thin_mint, $fn = facets);
                 }
             }
             hull() {
-                rounded_block_relative(1, xradius, yradius, corner, - 2 * wall);
+                rounded_block_relative(thin_mint, xradius, yradius, corner, - 2 * wall);
                 translate([0, 0, transition]) {
-                    cylinder(r = top_radius - wall, h = 1, $fn = facets);
+                    cylinder(r = top_radius - wall, h = thin_mint, $fn = facets);
+                }
+            }
+        }
+    }
+        // add an additional transition from the flare to the stalk
+    flare_stalk = 2;
+    mid_xradius = top_radius + (flare_stalk * (xradius - top_radius)) / transition;
+    mid_yradius = top_radius + (flare_stalk * (yradius - top_radius)) / transition;
+    mid_corner = top_radius + (flare_stalk * (corner - top_radius)) / transition;
+    translate([0, 0, height + transition - flare_stalk]) {
+        difference() {
+            hull() {
+                rounded_block(thin_mint, mid_xradius, mid_yradius, mid_corner);
+                translate([0, 0, 2 * flare_stalk]) {
+                    cylinder(r = top_radius, h = thin_mint, $fn = facets);
+                }
+            }
+            hull() {
+                rounded_block_relative(thin_mint, mid_xradius, mid_yradius, mid_corner, - wall);
+                translate([0, 0, 2 * flare_stalk]) {
+                    cylinder(r = top_radius - wall, h = thin_mint, $fn = facets);
                 }
             }
         }
@@ -272,15 +302,15 @@ module octa_mount_flare_dual(height, lip, transition, xradius, yradius, corner,
     translate([0, 0, height]) {
         difference() {
             hull() {
-                rounded_block(0.01, xradius, yradius, corner);
+                rounded_block(thin_mint, xradius, yradius, corner);
                 translate([0, 0, transition]) {
-                    rounded_block(0.01, top_radius, top_radius * 2, top_radius - delta);
+                    rounded_block(thin_mint, top_radius, top_radius * 2, top_radius - delta);
                 }
             }
             hull() {
-                rounded_block_relative(0.01, xradius, yradius, corner, - 2 * wall);
+                rounded_block_relative(thin_mint, xradius, yradius, corner, - 2 * wall);
                 translate([0, 0, transition]) {
-                    rounded_block(0.01, top_radius - wall, (top_radius * 2) - 1.5 * wall, top_radius - wall - delta);
+                    rounded_block(thin_mint, top_radius - wall, (top_radius * 2) - 1.5 * wall, top_radius - wall - delta);
                 }
             }
         }

+ 3 - 0
SpHEAR_common.scad

@@ -117,6 +117,9 @@ fit = 0.15;
 facets = 64;
 // render capsule holders with better resolution
 cfacets = 128;
+// "a wafer-thin mint..."
+// something to use when we need tiny 3d slivers
+thin_mint = 0.001;
 
 ////////
 // microphone capsule holder

+ 46 - 14
TinySpHEAR_mount_pcb.scad

@@ -202,29 +202,51 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
     difference() {
         rounded_block(height, bot_radius, bot_radius, bot_corner);
         rounded_block_relative(height, bot_radius, bot_radius, bot_corner, -(2 * wall));
-        // flange to mount on body
+        // cut flange to mount on body
         rounded_block_relative(lip + 1.00, bot_radius, bot_radius, bot_corner, - (wall));
-        // make a stepped transition to avoid big overhang (a fillet would be best)
-        translate([0, 0, lip + 1.0]) {
-            rounded_block_relative(1/3, bot_radius, bot_radius, bot_corner, - wall * 1.333);
-        }
-        translate([0, 0, lip + 1.333]) {
-            rounded_block_relative(1/3, bot_radius, bot_radius, bot_corner, - wall * 1.666);
+        // and make a smooth transition to avoid overhangs
+        translate([0, 0, lip + 1.00]) {
+            hull() {
+                rounded_block_relative(thin_mint, bot_radius, bot_radius, bot_corner, - wall);
+                translate([0, 0, 1.0]) {
+                    rounded_block_relative(thin_mint, bot_radius, bot_radius, bot_corner, - 2 * wall);
+                }
+            }
         }
     }
     // flare to round section
     translate([0, 0, height]) {
         difference() {
             hull() {
-                rounded_block(1, bot_radius, bot_radius, bot_corner);
+                rounded_block(thin_mint, bot_radius, bot_radius, bot_corner);
                 translate([0, 0, transition]) {
-                    cylinder(r = top_radius, h = 1, $fn = facets);
+                    cylinder(r = top_radius + wall, h = thin_mint, $fn = facets);
                 }
             }
             hull() {
-                rounded_block_relative(1, bot_radius, bot_radius, bot_corner, - 2 * wall);
+                rounded_block_relative(thin_mint, bot_radius, bot_radius, bot_corner, - 2 * wall);
                 translate([0, 0, transition]) {
-                    cylinder(r = top_radius - wall, h = 1, $fn = facets);
+                    cylinder(r = top_radius - wall, h = thin_mint, $fn = facets);
+                }
+            }
+        }
+    }
+    // add an additional transition from the flare to the stalk
+    flare_stalk = 2;
+    mid_radius = top_radius + wall + (flare_stalk * (bot_radius - (top_radius + wall))) / transition;
+    mid_corner = top_radius + wall + (flare_stalk * (bot_corner - (top_radius + wall))) / transition;
+    translate([0, 0, height + transition - flare_stalk]) {
+        difference() {
+            hull() {
+                rounded_block(thin_mint, mid_radius, mid_radius, mid_corner);
+                translate([0, 0, 2 * flare_stalk]) {
+                    cylinder(r = top_radius + wall, h = thin_mint, $fn = facets);
+                }
+            }
+            hull() {
+                rounded_block_relative(thin_mint, mid_radius, mid_radius, mid_corner, - wall);
+                translate([0, 0, 2 * flare_stalk]) {
+                    cylinder(r = top_radius - wall, h = thin_mint, $fn = facets);
                 }
             }
         }
@@ -232,7 +254,7 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
     // 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);
             cylinder(r = top_radius - wall, h = stalk_height, $fn = facets);
         }
         // add marker for "back of microphone" orientation
@@ -258,8 +280,18 @@ module tetra_capsule_array_mount(angles) {
         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);
+                    hull() {
+                        cylinder(r = mount_radius + 2 * wall, h = thin_mint, $fn = facets);
+                        translate([0, 0, mount_top_height]) {
+                            rounded_block(thin_mint, capsule_radius, mount_radius_capsule, mount_radius * 0.9);
+                        }
+                    }
+                    hull() {
+                        cylinder(r = mount_radius, h = thin_mint, $fn = facets);
+                        translate([0, 0, mount_top_height]) {
+                            rounded_block_relative(thin_mint, capsule_radius, mount_radius_capsule, mount_radius * 0.9, - 1.25 * wall);
+                        }
+                    }
                 }
             }
         }