浏览代码

initial design of a printable test rig based on the microphone stand mount, it is all flat printable and includes a lever to rotate the capsule holder and a detente that stops rotation at 0 and 90 degrees (cleverly done, I think) - tolerances will have to be added after test prints

Fernando Pablo Lopez-Lezcano 10 年之前
父节点
当前提交
a88b11704f
共有 1 个文件被更改,包括 199 次插入 和 22 次删除
  1. 199 22
      TestRig.scad

+ 199 - 22
TestRig.scad

@@ -108,11 +108,9 @@ module contact (trans, angle, cutout, slot = false) {
 
 // main capsule holder
 module capsule_holder () {
-    translate([capsule_radius * 3.0, capsule_radius * 3, 0]) {
-        difference() {
-            cylinder(r = capsule_radius + wall, h = capsule_height, $fn = facets);
-            cylinder(r = capsule_radius + fudge, h = capsule_height, $fn = facets);
-        }
+    difference() {
+        cylinder(r = capsule_radius + wall, h = capsule_height, $fn = facets);
+        cylinder(r = capsule_radius + fudge, h = capsule_height, $fn = facets);
     }
 }
 
@@ -157,36 +155,215 @@ module backplate () {
     }
 }
 
+stalk_height = 12.0;
+
+sleeve_height = capsule_height * 2 / 3;
+
 // sleeve that holds everything together
 module sleeve () {
-    translate([capsule_radius * 3 , 0, 0]) {
+    difference() {
+        cylinder(r = capsule_radius + 2 * wall, h = sleeve_height, $fn = facets);
+        cylinder(r = capsule_radius + wall, h = sleeve_height, $fn = facets);
+    }
+    difference() {
+        cylinder(r = capsule_radius + wall, h = sleeve_edge, $fn = facets);
+        cylinder(r = capsule_radius, h = sleeve_edge, $fn = facets);
+    }
+    // back plate for contacts 1 / 2
+    translate([-(contact_width + 1.5 * contact_border) + 0.1, capsule_radius / 2 - 0.1, 0]) {
+        cube([(contact_width + 1.5 * contact_border) * 2 - 0.2, capsule_radius / 2 + 0.1, sleeve_edge]);
+    }
+    // back plate for GND contact
+    rotate([0, 0, 90]) {
+        translate([-(contact_width + 1.5 * contact_border), capsule_radius * 1 / 3, 0]) {
+            cube([(contact_width + 1.5 * contact_border), capsule_radius * 2 / 3, sleeve_edge]);
+        }
+    }
+    // mount stalk
+    translate([-sleeve_height / 2, -(capsule_radius + wall), sleeve_height]) {
+        rotate([90, 90, 0]) {
+            cube([sleeve_height, sleeve_height, stalk_height + sleeve_height]); 
+        }
+    }
+    // lever to rotate capsule between 0 and 90 degrees
+    translate([sleeve_height / 2, - (capsule_radius + wall + stalk_height), sleeve_height / 2]) {
+        rotate([0, -90, 0]) {
+            cube([capsule_height * 2, sleeve_height, sleeve_height]);
+        }
+    }
+}
+
+// mount that clips on a standard microphone stand
+
+// dimensions of microphone holder
+mount_radius = 2.75;
+mount_wall = 0.75;
+
+// height of mount
+mount_height = 40;
+
+// microphone stand mount
+//
+// diameter of existing shielded wires (x 4)
+mic_wire_diam = 1.5;
+mic_wire_hole_radius = 2.5;
+mic_wire_hole_offset = 5;
+
+// measured diameter = 13.5, inside diameter of sleeve = 13.79 (
+mic_mount_radius = 13.50 / 2;
+// add this to inside diameter
+mic_mount_fit = 0.1;
+mic_mount_slot_height = 11.5;
+mic_mount_slot_width = 4.25;
+mic_mount_slot_radius = 6.25  / 2;
+mic_mount_wall = 1.5;
+mic_mount_height = 35.0 + mic_wire_hole_offset + mic_wire_hole_radius + 2 * mic_mount_wall;
+
+module mount (wall, stand_wall, separation) {
+    translate([0, 0, -separation]) {
         difference() {
-            cylinder(r = capsule_radius + 2 * wall, h = capsule_height * 2 / 3, $fn = facets);
-            cylinder(r = capsule_radius + wall, h = capsule_height * 2 / 3, $fn = facets);
+            union() {
+                // stalk
+                translate([0, 0, mic_mount_height + mount_height * 2/3]) {
+                    difference() {
+                        cylinder(r = mount_radius + wall, h = mount_height / 3, $fn = facets);
+                        // make the hole for the mount
+                        cylinder(r = mount_radius, h = mount_height / 3, $fn = facets);
+                    }
+                }
+                // transition to stand mount
+                translate([0, 0, mic_mount_height]) {
+                    difference() {
+                        cylinder(r2 = mount_radius + wall, r1 = mic_mount_radius + mic_mount_fit + stand_wall, 
+                                h = mount_height * 2 / 3, $fn = facets);
+                        // make the hole for the mount
+                        cylinder(r2 = mount_radius, r1 = mic_mount_radius + mic_mount_fit, 
+                                h = mount_height * 2 / 3, $fn = facets);
+                    }
+                }
+                // stand mount
+                translate([0, 0, 0]) {
+                    difference() {
+                        union() {
+                            // main mount cylinder
+                            translate([0, 0, 0]) {
+                                difference() {
+                                    cylinder(r = mic_mount_radius + mic_mount_fit + stand_wall, h = mic_mount_height, $fn = facets);
+                                    // make the hole for the mount (* 1.5 to cut the ridge as well)
+                                    cylinder(r = mic_mount_radius + mic_mount_fit, h = mic_mount_height, $fn = facets);
+                                }
+                            }
+                        }
+                        // slot for fitting into microphone stand
+                        translate([mic_mount_radius - stand_wall / 2, - mic_mount_slot_width / 2, 0]) {
+                            cube([2 * stand_wall, mic_mount_slot_width, mic_mount_slot_height]);
+                        }
+                        // eyelet for microphone stand
+                        translate([mic_mount_radius - stand_wall / 2, 0,  mic_mount_slot_height]) {
+                            rotate([0, 90, 0]) {
+                                cylinder(r = mic_mount_slot_radius, h = 2 * stand_wall, $fn = facets);
+                            }
+                        }
+                    }
+                }
+            }
+            // cut slot for detente at the top of the mount
+            translate([- sleeve_height / 2, - sleeve_height / 2, mic_mount_height + mount_height - sleeve_height / 2]) {
+                cube([2 * mount_radius + wall, 2 * mount_radius + wall, sleeve_height / 2]);
+            }
         }
+    }
+}
+
+
+tab_width = 3.0;
+tab_length = 3.0;
+
+module mount_cap (wall, separation) {
+    translate([0, 0, -(separation)]) {
         difference() {
-            cylinder(r = capsule_radius + wall, h = sleeve_edge, $fn = facets);
-            cylinder(r = capsule_radius, h = sleeve_edge, $fn = facets);
+            union() {
+                // cap
+                cylinder(r = mount_radius + wall, h = 3 * wall, $fn = facets);
+                translate([0, 0, - 2 * wall]) {
+                    cylinder(r = mount_radius + mic_mount_fit, h = 3 * wall, $fn = facets);
+                }
+            }
+            // hole in the center
+            *translate([0, 0, - 2 * wall]) {
+                cylinder(r = sleeve_height / 2, h = 6 * wall, $fn = facets);
+            }
+            // slot for detente
+            translate([- sleeve_height / 2, - sleeve_height / 2, 2 * wall]) {
+                cube([2 * mount_radius + wall, 2 * mount_radius + wall, wall]);
+            }
         }
-        // back plate for contacts 1 / 2
-        translate([-(contact_width + 1.5 * contact_border) + 0.1, capsule_radius / 2 - 0.1, 0]) {
-            cube([(contact_width + 1.5 * contact_border) * 2 - 0.2, capsule_radius / 2 + 0.1, sleeve_edge]);
+    }
+}
+
+module mount_adapter(wall, separation) {
+    difference() {
+        union() {
+            translate([0, 0, -separation]) {
+                difference() {
+                    cylinder(r = mount_radius + 2 * wall, h = 3 * wall, $fn = facets);
+                    // hole for square peg
+                    translate([-sleeve_height / 2, -sleeve_height / 2]) {
+                        cube([sleeve_height, sleeve_height, sleeve_height]);
+                    }
+                }
+            }
+            // skirt that grabs the mount and allows the holder to rotate
+            translate([0, 0, - 3 * wall]) {
+                difference() {
+                    cylinder(r = mount_radius + 2 * wall, h = 4 * wall, $fn = facets);
+                    cylinder(r = mount_radius + wall, h = 4 * wall, $fn = facets);
+                }
+            }
+            // tab to stop rotation at 0 and 90 degrees
+            translate([sleeve_height * 3 / 2, - sleeve_height / 2, - sleeve_height / 2]) {
+                rotate([0, -90, 0]) {
+                    cube([sleeve_height, sleeve_height, sleeve_height]);
+                }
+            }
         }
-        // back plate for GND contact
-        rotate([0, 0, 90]) {
-            translate([-(contact_width + 1.5 * contact_border), capsule_radius * 1 / 3, 0]) {
-                cube([(contact_width + 1.5 * contact_border), capsule_radius * 2 / 3, sleeve_edge]);
+        // clip the outside...
+        translate([0, 0, -2 * wall]) {
+            difference() {
+                cylinder(r = mount_radius + 4 * wall, h = 4 * wall, $fn = facets);
+                cylinder(r = mount_radius + 2 * wall, h = 4 * wall, $fn = facets);
             }
         }
     }
 }
 
-backplate();
+////
+
+translate([0, 0, -(mic_mount_height + mount_height + capsule_radius + 2 * wall + 2.2 * stalk_height)]) {
+    mount(mount_wall, mic_mount_wall);
+}
+
+rotate([0, 0, 90]) {
+    translate([0, 0, -2.2 * stalk_height]) {
+        mount_adapter(mount_wall, 0);
+    }
+}
+
+*translate([0, 0, - 2.7 * stalk_height]) {
+    mount_cap(mount_wall, 0);
+}
 
-translate([capsule_radius * 1.0, capsule_radius * 1, 0]) {
-    capsule_holder();
+translate([- sleeve_height / 2, 0, 0]) {
+    rotate([90, 0, 90]) {
+        sleeve();
+    }
 }
 
-translate([capsule_radius * 1 , 0, 0]) {
-    sleeve();
+*backplate();
+
+translate([capsule_radius * 3.0, capsule_radius * 3, 0]) {
+    rotate([90, 0, 0]) {
+        capsule_holder();
+    }
 }
+