瀏覽代碼

redo capsule holder for test rig, getting closer to a working design

Fernando Pablo Lopez-Lezcano 11 年之前
父節點
當前提交
27bc8d3a84
共有 1 個文件被更改,包括 61 次插入 和 26 次删除
  1. 61 26
      TestRig.scad

+ 61 - 26
TestRig.scad

@@ -25,6 +25,7 @@
 
 // dimensions of the EM182 electret microphone
 capsule_radius = 5;
+capsule_radius_i = 2.5;
 capsule_height = 4.5;
 
 // wall thickness of capsule holder
@@ -42,6 +43,12 @@ contact_length = 2.9;
 // depth of contact channel (includes contact)
 contact_depth = 0.79;
 
+// island around contact
+contact_border = 0.5;
+
+// contact offset from center line
+contact_offset = 0.3;
+
 // support depth
 disk_depth = 1.17;
 disk_edge = 0.49;
@@ -55,6 +62,40 @@ fudge = 0.15;
 facets = 64;
 
 
+// one slot for a contact
+module contact (trans, angle, slot = false) {
+    rotate([0, 0, angle]) {
+        translate(trans) {
+            translate([- (contact_width + 2 * contact_border) / 2, 0, 0]) {
+                if (slot == false) {
+                    difference() {
+                        // base for the contact
+                        cube([contact_width + 2 * contact_border, capsule_radius + wall / 2, disk_depth]);
+                        translate([contact_width / 2, 0, contact_depth]) {
+                            // channel for clip
+                            cube([contact_width, capsule_radius + wall / 2, disk_depth]);
+                        }
+                        // cutout for clip from edge of disk
+                        translate([contact_width / 2, capsule_radius - 0.666, 0]) {
+                            cube([contact_width, contact_length, disk_depth]);
+                        }
+                    }
+                } else {
+                    // just the cutouts
+                        translate([contact_width / 2, 0, contact_depth]) {
+                            // channel for clip
+                            cube([contact_width, capsule_radius + wall, disk_depth]);
+                        }
+                    translate([contact_width / 2, capsule_radius - 0.666, 0]) {
+                        cube([contact_width, contact_length, disk_depth]);
+                    }
+                }
+            }
+        }
+    }
+}
+
+
 // main capsule holder
 *translate([capsule_radius * 3.0, 0, 0]) {
     difference() {
@@ -63,7 +104,8 @@ facets = 64;
     }
 }
 
-// plate for contact springs
+
+// contact springs
 difference() {
     union() {
         difference() {
@@ -73,36 +115,29 @@ difference() {
             }
             difference() {
                 cylinder(r = capsule_radius, h = disk_depth, $fn = facets);
-                cylinder(r = capsule_radius - 2, h = disk_depth, $fn = facets);
+                cylinder(r = capsule_radius_i, h = disk_depth, $fn = facets);
             }
         }
-        translate([-capsule_radius / 2 + 4 * fudge, 0, 0]) {
-            cube([capsule_radius, capsule_radius, disk_depth]);
-        }
-        rotate([0, 0, 90]) {
-            translate([-capsule_radius / 4, 0, 0]) {
-                cube([contact_width + fudge, capsule_radius, 1.0]);
+        // contacts
+        contact([contact_border + contact_offset, 0, 0], 0);
+        contact([-contact_border - contact_offset, 0, 0], 0);
+        // GND contact
+        contact([- contact_border - contact_offset, 0, 0], 90);
+        // one more radial connection
+        rotate([0, 0, -120]) {
+            translate([-contact_width / 2, 0, 0]) {
+                cube([contact_width, capsule_radius, disk_depth]);
             }
         }
     }
-    union() {
-        // vertical slots for contacts
-        for(slot = [2/3, -2/3]) {
-            translate([slot * capsule_radius / 3, capsule_radius - pad_offset + contact_length, 0]) {
-                cube([contact_width + fudge, capsule_radius, 1.0]);
-            }
-            translate([slot * capsule_radius / 3, capsule_radius - pad_offset, contact_depth]) {
-                cube([contact_width + fudge, capsule_radius, 1.0]);
-            }
-        }
-        // horizontal slot for GND contact
-        rotate([0, 0, 90]) {
-            translate([-capsule_radius / 3, capsule_radius - pad_offset + contact_length, 0]) {
-                cube([contact_width + fudge, capsule_radius, 1.0]);
-            }
-            translate([-capsule_radius / 3, capsule_radius - pad_offset, contact_depth]) {
-                cube([contact_width + fudge, capsule_radius, 1.0]);
-            }
+    contact([contact_border + contact_offset, 0, 0], 0, true);
+    contact([-contact_border - contact_offset, 0, 0], 0, true);
+    contact([- contact_border - contact_offset, 0, 0], 90, true);
+    // finally trim the seat for the holder
+    translate([0, 0, disk_edge]) {
+        difference() {
+            cylinder(r = capsule_radius + wall, h = disk_depth, $fn = facets);
+            cylinder(r = capsule_radius, h = disk_depth, $fn = facets);
         }
     }
 }