瀏覽代碼

change design of bottom connector housing to use only the core metal part of the connector, much simpler and easier to attach using the two screws included with the connector (that would normally attach the internal strain relief); remove unnecessary external connector lock collar; redesign snap joint so that arm is stronger - this is still not optimal

Fernando Pablo Lopez-Lezcano 9 年之前
父節點
當前提交
93f1b33b9d
共有 1 個文件被更改,包括 95 次插入 和 148 次删除
  1. 95 148
      TinySpHEAR_mount_pcb.scad

+ 95 - 148
TinySpHEAR_mount_pcb.scad

@@ -93,7 +93,7 @@ lip_fit = 0.05;
 flare_height = 50;
 stalk_height = 40;
 
-// adjust mic array to mount fit
+// adjust mic array to mount relative height
 mic_to_mount_fit = 0.0;
 
 // wall thickness
@@ -105,27 +105,37 @@ box_radius = pcb_front + (pcb_thickness + pcb_tfit) + pcb_back + 2 * wall;
 // calculated main body corner radius
 mount_corner = box_radius - pcb_width / 2 + pcb_slot_depth + 4.0;
 
+// body to flares snap joint arm slot width
+snap_joint_slot_w = 0.75;
+
+// width and radius of snap joint hook that locks upper and lower flanges to body
+snap_joint_hook_w = 5.0;
+snap_joint_hook_r = 1.4;
+
 // dimensions of 12 pin male bottom connector
 //
 // Amphenol T 3635 002
 // 12 pin DIN male to cable, gold plated contacts
 //
-conn_diam_fit = 0.4;
-conn_max_diam = 18.00 + conn_diam_fit;
-conn_min_diam = 17.12 + conn_diam_fit;
-conn_bottom_h = 7.25;
-conn_sleeve = 7.00;
-conn_lock_diam = 15.1;
-conn_top_h = 12.40;
-
-// width and radius of "click" that locks upper and lower flanges to body
-click_width = 5.0;
-click_radius = 1.4;
-
-// dimensions of 5/32 screws for the collar that locks the connector in place
-collar_screw_head = 4.00;
-collar_screw_hole = 2.40;
-collar_screw_nut = 5.30 + 0.2;
+// inner diameter of connector core
+conn_core_diam = 13.00 + 0.2;
+// outer diameter of connector core sleeve
+conn_core_o_diam = 17.00;
+// inner diameter of connector core sleeve
+conn_core_s_diam = 15.00;
+
+// from top of connector to sleeve
+conn_core_sleeve = 13.00;
+// from top of connector to holes
+conn_core_holes_h = 6.00;
+// between holes
+conn_core_holes_w = 9.20;
+// hole diameter
+conn_core_holes_d = 1.95 + 0.2;
+// screw head diameter
+conn_core_screw_d = 2.75 + 0.5;
+// sleeve overlap
+conn_core_overlap = 3.00;
 
 // shock mount parameters
 //
@@ -189,28 +199,28 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
                     rounded_block_relative(lower_lip, radius, radius, corner, -(wall + lip_fit));
                 }
             }
-            // slots for click tonges
+            // slots for snap joint hooks
             // lower
             for (m=[-1, 1]) rotate([0, 90, 0]) {
-                translate([-lower_lip * 3/4, (radius - wall/2)*m, -(click_width/2 + 0.25)]) {
-                    cylinder(r = click_radius, h = click_width + 0.5, $fn = facets);
+                translate([-lower_lip * 3/4, (radius - wall/2)*m, -(snap_joint_hook_w/2 + 0.25)]) {
+                    cylinder(r = snap_joint_hook_r, h = snap_joint_hook_w + 0.5, $fn = facets);
                 }
             }
             // upper
             for (m=[-1, 1]) rotate([0, 90, 0]) {
-                translate([- height + upper_lip * 3/4, (radius - wall/2)*m, -(click_width/2 + 0.25)]) {
-                    cylinder(r = click_radius, h = click_width + 0.5, $fn = facets);
+                translate([- height + upper_lip * 3/4, (radius - wall/2)*m, -(snap_joint_hook_w/2 + 0.25)]) {
+                    cylinder(r = snap_joint_hook_r, h = snap_joint_hook_w + 0.5, $fn = facets);
                 }
             }
         }
     }
-    // upper lip is too thin, reinforce the back of the click holes
+    // upper lip is too thin, reinforce the back of the snap joint hook holes
     for (r = [0, 180]) rotate([0, 90, r]) {
-        translate([- height + upper_lip * 3/4, (radius - wall), -(click_width/2 + 0.25)]) {
+        translate([- height + upper_lip * 3/4, (radius - wall), -(snap_joint_hook_w/2 + 0.25)]) {
             difference() {
-                cylinder(r = click_radius * 1.25, h = click_width + 0.5, $fn = facets);
-                translate([- click_radius * 1.25, - wall, 0]) {
-                    cube([click_radius * 3, click_radius * 3, click_width * 1.5]);
+                cylinder(r = snap_joint_hook_r * 1.25, h = snap_joint_hook_w + 0.5, $fn = facets);
+                translate([- snap_joint_hook_r * 1.25, - wall, 0]) {
+                    cube([snap_joint_hook_r * 3, snap_joint_hook_r * 3, snap_joint_hook_w * 1.5]);
                 }
             }
         }
@@ -252,15 +262,23 @@ module tetra_mount_body(height, radius, corner, lower_lip, upper_lip, clear) {
 module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_radius, stalk_height, dot) {
     // bottom rounded box
     difference() {
-        rounded_block(height, bot_radius, bot_radius, bot_corner);
+        union() {
+            rounded_block(height, bot_radius, bot_radius, bot_corner);
+            // make snap joint arm thicker
+            for (r = [0, 180]) rotate([0, 0, r]) {
+                translate([- snap_joint_hook_w - snap_joint_slot_w / 2, bot_radius, 0]) {
+                    cube([snap_joint_hook_w * 2 + snap_joint_slot_w, wall / 2, lip * 1.25]);
+                }
+            }
+        }
         rounded_block_relative(height, bot_radius, bot_radius, bot_corner, -(2 * wall));
         // cut flange to mount on body
         rounded_block_relative(lip + 1.00, bot_radius, bot_radius, bot_corner, - (wall));
-        // cut slots for tonge
+        // cut slots for snap joint hooks
         for (r = [0, 180]) rotate([0, 0, r]) {
             for (m = [-1, 1]) {
-                translate([m * (click_width + 0.5) - 0.25, bot_radius - 1.5 * wall, 0]) {
-                    cube([0.5, 2 * wall, lip * 2/3]);
+                translate([m * (snap_joint_hook_w + snap_joint_slot_w) - snap_joint_slot_w / 2, bot_radius - 1.5 * wall, 0]) {
+                    cube([snap_joint_slot_w, 2 * wall, lip - 1.0]);
                 }
             }
         }
@@ -274,14 +292,14 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
             }
         }
     }
-    // add click to secure to lip
+    // add snap joint hook to arm
     for (r = [0, 180]) rotate([0, 0, r]) {
-        translate([- click_width / 2, bot_radius - wall/2, 1/4 * lip]) {
+        translate([- snap_joint_hook_w / 2, bot_radius - wall/2, 1/4 * lip]) {
             rotate([90, 0, 90]) {
                 difference() {
-                    cylinder(r = click_radius - 0.2, h = click_width, $fn = facets);
-                    translate([0, -click_radius, 0]) {
-                        cube([click_radius, click_width, click_width]);
+                    cylinder(r = snap_joint_hook_r - 0.2, h = snap_joint_hook_w, $fn = facets);
+                    translate([0, -snap_joint_hook_r, 0]) {
+                        cube([snap_joint_hook_r, snap_joint_hook_w, snap_joint_hook_w]);
                     }
                 }
             }
@@ -331,15 +349,23 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
 module tetra_mount_connector_flare(height, lip, transition, bot_radius, bot_corner, top_radius, stalk_height, dot) {
     // bottom rounded box
     difference() {
-        rounded_block(height, bot_radius, bot_radius, bot_corner);
+        union() {
+            rounded_block(height, bot_radius, bot_radius, bot_corner);
+            // make snap joint arm thicker
+            for (r = [90, 270]) rotate([0, 0, r]) {
+                translate([- snap_joint_hook_w - snap_joint_slot_w / 2, bot_radius, 0]) {
+                    cube([snap_joint_hook_w * 2 + snap_joint_slot_w, wall / 2, lip * 1.25]);
+                }
+            }
+        }
         rounded_block_relative(height, bot_radius, bot_radius, bot_corner, -(2 * wall));
         // cut flange to mount on body
         rounded_block_relative(lip + 1.00, bot_radius, bot_radius, bot_corner, - (wall));
-        // cut slots for tonge
-        for (r = [0, 180]) rotate([0, 0, r]) {
+        // cut slots for snap joint hooks
+        for (r = [90, 270]) rotate([0, 0, r]) {
             for (m = [-1, 1]) {
-                translate([m * (click_width + 0.5) - 0.25, bot_radius - 1.5 * wall, 0]) {
-                    cube([0.5, 2 * wall, lip * 2/3]);
+                translate([m * (snap_joint_hook_w + snap_joint_slot_w) - snap_joint_slot_w / 2, bot_radius - 1.5 * wall, 0]) {
+                    cube([snap_joint_slot_w, 2 * wall, lip - 1.0]);
                 }
             }
         }
@@ -353,14 +379,14 @@ module tetra_mount_connector_flare(height, lip, transition, bot_radius, bot_corn
             }
         }
     }
-    // add click to secure to lip
-    for (r = [0, 180]) rotate([0, 0, r]) {
-        translate([- click_width / 2, bot_radius - wall/2, 1/4 * lip]) {
+    // add snap joint hook to arm
+    for (r = [90, 270]) rotate([0, 0, r]) {
+        translate([- snap_joint_hook_w / 2, bot_radius - wall/2, 1/4 * lip]) {
             rotate([90, 0, 90]) {
                 difference() {
-                    cylinder(r = click_radius - 0.2, h = click_width, $fn = facets);
-                    translate([0, -click_radius, 0]) {
-                        cube([click_radius, click_width, click_width]);
+                    cylinder(r = snap_joint_hook_r - 0.2, h = snap_joint_hook_w, $fn = facets);
+                    translate([0, -snap_joint_hook_r, 0]) {
+                        cube([snap_joint_hook_r, snap_joint_hook_w, snap_joint_hook_w]);
                     }
                 }
             }
@@ -386,107 +412,37 @@ module tetra_mount_connector_flare(height, lip, transition, bot_radius, bot_corn
     // connector holder
     translate([0, 0, height + transition]) {
         difference() {
-            cylinder(r = top_radius, h = conn_sleeve + conn_top_h / 2, $fn = facets);
-            cylinder(r = top_radius - wall, h = conn_sleeve + conn_top_h / 2, $fn = facets);
-            // holes for bolts for securing connector
-            rotate([0, 0, 90]) for (m = [0, 1]) {
-                mirror([m, 0, 0]) scale([2/3, 1, 1]) translate([top_radius / 2, top_radius, conn_top_h / 2 + conn_sleeve / 2]) {
+            union() {
+                cylinder(r = top_radius, h = conn_core_sleeve, $fn = facets);
+                // add seats for screw heads
+                for (m = [-1, 1]) translate([m * conn_core_holes_w / 2, top_radius / 2, conn_core_holes_h]) {
                     rotate([90, 0, 0]) {
-                        cylinder(r = conn_sleeve / 2 - thin_mint, h = top_radius * 2, $fn = facets);
+                        scale([1, 1, 1]) cylinder(r = conn_core_screw_d / 2, h = top_radius * 1.43, $fn = facets);
                     }
                 }
             }
-        }
-    }
-    // connector bottom transition
-    translate([0, 0, height + transition + conn_sleeve + conn_top_h / 2 - thin_mint]) {
-        radius_diff = (conn_max_diam - conn_min_diam) / 2;
-        difference() {
-            hull() {
-                cylinder(r = top_radius, h = thin_mint, $fn = facets);
-                translate([0, 0, conn_bottom_h]) {
-                    cylinder(r = top_radius - radius_diff, h = thin_mint, $fn = facets);
+            cylinder(r = conn_core_diam / 2, h = conn_core_sleeve, $fn = facets);
+            // transition from thin wall to thick wall at the bottom of connector
+            cylinder(r1 = top_radius - wall, r2 = conn_core_diam / 2, h = 2.0, $fn = facets);
+            // holes for connector core screws
+            for (m = [-1, 1]) translate([m * conn_core_holes_w / 2, - top_radius / 3, conn_core_holes_h]) {
+                rotate([90, 0, 0]) {
+                    cylinder(r = conn_core_holes_d / 2, h = top_radius, $fn = facets);
                 }
             }
-            hull() {
-                cylinder(r = top_radius - wall, h = thin_mint, $fn = facets);
-                translate([0, 0, conn_bottom_h]) {
-                    cylinder(r = top_radius - radius_diff - wall, h = thin_mint, $fn = facets);
+            // substract cutout for screw heads
+            for (m = [-1, 1]) translate([m * conn_core_holes_w / 2, - top_radius + 1.5, conn_core_holes_h]) {
+                rotate([90, 0, 0]) {
+                    cylinder(r = conn_core_screw_d / 2, h = 2.0, $fn = facets);
                 }
             }
         }
     }
-}
-
-// connector lock collar
-
-module tetra_mount_connector_lock(height, radius, side) {
-    difference() {
-        union() {
-            difference() {
-                cylinder(r = radius + wall, h = height, $fn = facets);
-                cylinder(r = radius, h = height, $fn = facets);
-            }
-            difference() {
-                // bolts for securing connector
-                for (m = [0, 1]) {
-                    mirror([m, 0, 0]) scale([2/3, 1, 1]) translate([radius / 2, radius, height / 2]) {
-                        rotate([90, 0, 0]) {
-                            cylinder(r = (conn_sleeve - wall) / 2, h = radius * 2, $fn = facets);
-                        }
-                    }
-                }
-                // shave bolts to size of internal connector collar
-                intersection() {
-                    translate([-conn_lock_diam/2, -conn_lock_diam/2, 0]) {
-                        cube([conn_lock_diam, conn_lock_diam, height]);
-                    }
-                    cylinder(r = radius - wall, h = height, $fn = facets);
-                }
-                // and shave everything outside of the cylinder
-                difference() {
-                    cylinder(r = radius + 4 * wall, h = height, $fn = facets);
-                    cylinder(r = radius + wall, h = height, $fn = facets);
-                }
-            }
-            // screw holders
-            difference() {
-                for (m = [0, 1]) mirror([m, 0, 0]) {
-                    translate([radius, 0, 0]) {
-                        cube([wall + 0.5 + collar_screw_head + 1.00, 3 * wall, height]);
-                    }
-                    translate([radius, - 3 * wall, 0]) {
-                        cube([wall + 0.5 + collar_screw_head + 1.00, 3 * wall, height]);
-                    }
-                }
-                // through holes for screws
-                for (m = [0, 1]) mirror([m, 0, 0]) {
-                    translate([radius + wall + 0.5 + collar_screw_head / 2, 4 * wall, height / 2]) {
-                        rotate([90, 0, 0]) {
-                            cylinder(r = collar_screw_hole / 2, h = 8 * wall, $fn = facets);
-                        }
-                    }
-                }
-                // recessed nuts
-                translate([radius + wall + 0.5 + collar_screw_head / 2, - 2.333 * wall, height / 2]) {
-                    rotate([90, 30, 0]) {
-                        cylinder(r = collar_screw_nut / 2, h = wall, $fn = 6);
-                    }
-                }
-            }
-        }
-        // substract one half (or the other)...
-        cut_size = 2 * (radius + wall); // + 0.5 + collar_screw_head / 2 + 0.5);
-        // cut internal cylinder
-        translate([-cut_size / 2, 0, 0]) {
-            cube([cut_size, cut_size, height]);
-        }
-        // cut screw holder assymetrically
-        translate([radius + wall, wall, 0]) {
-            cube([0.5 + collar_screw_head + 1.00, 5 * wall, height]);
-        }
-        mirror([1, 0, 0]) translate([radius + wall, -wall, 0]) {
-            cube([0.5 + collar_screw_head + 1.00, 5 * wall, height]);
+    // thinner cylinder sits inside connector sleeve
+    translate([0, 0, height + transition + conn_core_sleeve]) {
+        difference() {
+            cylinder(r = conn_core_s_diam / 2, h = conn_core_overlap, $fn = facets);
+            cylinder(r = conn_core_diam / 2, h = conn_core_overlap, $fn = facets);
         }
     }
 }
@@ -628,16 +584,7 @@ module render_tetra_cable_flare(z_offset, flip) {
 
 module render_tetra_connector_flare(z_offset, flip) {
     translate([0, 0, z_offset]) {
-        tetra_mount_connector_flare(pcb_low_clear + pcb_low_exp, mount_lip, 20, box_radius + wall, mount_corner, conn_max_diam / 2 + wall, 10, 0);
-    }
-}
-
-// microphone body: 12 pin connector lock collar
-//
-
-module render_tetra_connector_lock(z_offset) {
-    translate([0, 0, z_offset]) {
-        tetra_mount_connector_lock(conn_sleeve + 2 * wall, (conn_max_diam / 2) + wall);
+        tetra_mount_connector_flare(pcb_low_clear + pcb_low_exp, mount_lip, 20, box_radius + wall, mount_corner, conn_core_o_diam / 2, 10, 0);
     }
 }