Prechádzať zdrojové kódy

add a parameter to the capsule module so that we can make the slot in the mount narrower for a tighter fit, test rig: first test prints of the parts, tweak tolerances so that all pieces fit together, I need to adjust the length of the stalk and the size of the adapter so that the stalk does not move and the skirt is longer so that it grabs better the mount cylinder - the concept works fine and the stop for 0 and 90 degrees works as intended

Fernando Pablo Lopez-Lezcano 10 rokov pred
rodič
commit
de02365217
2 zmenil súbory, kde vykonal 71 pridanie a 28 odobranie
  1. 51 12
      TestRig.scad
  2. 20 16
      TinySphEAR.scad

+ 51 - 12
TestRig.scad

@@ -186,8 +186,8 @@ module sleeve () {
         }
     }
     // 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]) {
+    translate([sleeve_height / 2, - (capsule_radius + wall + stalk_height), 0]) {
+        rotate([0, 0, 0]) {
             cube([capsule_height * 2, sleeve_height, sleeve_height]);
         }
     }
@@ -232,7 +232,7 @@ module mount (wall, stand_wall, separation) {
                     }
                 }
                 // transition to stand mount
-                translate([0, 0, mic_mount_height]) {
+                *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);
@@ -242,7 +242,7 @@ module mount (wall, stand_wall, separation) {
                     }
                 }
                 // stand mount
-                translate([0, 0, 0]) {
+                *translate([0, 0, 0]) {
                     difference() {
                         union() {
                             // main mount cylinder
@@ -301,23 +301,34 @@ module mount_cap (wall, separation) {
     }
 }
 
+// stalk: measured in print: 2.86 - 2.87
+// hole: measured: 2.63 - 2.68
+//   so need a fit of 2.87 - 2.68 / 2 = 0.095 ~ 0.1 (hole should be bigger by this amount)
+square_fit = 0.1;
+
+// mount tube: measured 7.1 (average)
+// skirt inner diameter: 6.88
+//   fit: 7.1 - 6.88 / 2 = 0.11 ~ 0.1 too tight, 0.25 too lose
+mount_fit = 0.2;
+
 module mount_adapter(wall, separation) {
     difference() {
         union() {
             translate([0, 0, -separation]) {
                 difference() {
-                    cylinder(r = mount_radius + 2 * wall, h = 3 * wall, $fn = facets);
+                    cylinder(r = mount_radius + 2 * wall + mount_fit, h = 3 * wall, $fn = facets);
                     // hole for square peg
-                    translate([-sleeve_height / 2, -sleeve_height / 2]) {
-                        cube([sleeve_height, sleeve_height, sleeve_height]);
+                    hole_side = sleeve_height + square_fit * 2;
+                    translate([-hole_side / 2, -hole_side / 2]) {
+                        cube([hole_side, hole_side, hole_side]);
                     }
                 }
             }
             // skirt that grabs the mount and allows the holder to rotate
-            translate([0, 0, - 3 * wall]) {
+            translate([0, 0, - 5 * wall]) {
                 difference() {
-                    cylinder(r = mount_radius + 2 * wall, h = 4 * wall, $fn = facets);
-                    cylinder(r = mount_radius + wall, h = 4 * wall, $fn = facets);
+                    cylinder(r = mount_radius + 2 * wall + mount_fit, h = 5 * wall, $fn = facets);
+                    cylinder(r = mount_radius + wall + mount_fit, h = 5 * wall, $fn = facets);
                 }
             }
             // tab to stop rotation at 0 and 90 degrees
@@ -330,8 +341,8 @@ module mount_adapter(wall, separation) {
         // 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);
+                cylinder(r = mount_radius + 4 * wall + mount_fit, h = 4 * wall, $fn = facets);
+                cylinder(r = mount_radius + 2 * wall + mount_fit, h = 4 * wall, $fn = facets);
             }
         }
     }
@@ -339,6 +350,33 @@ module mount_adapter(wall, separation) {
 
 ////
 
+printset = 1;
+
+if (printset == 1) {
+
+    // adapter
+    rotate([0, 180, 0]) {
+        translate([0, 0, - sleeve_height + sleeve_height / 4]) {
+            mount_adapter(mount_wall, 0);
+        }
+    }
+    // sleeve
+    *translate([- sleeve_height / 2, 15, 0]) {
+        rotate([0, 0, 90]) {
+            sleeve();
+        }
+    }
+    // backplate
+    *translate([15, 0, 0]) {
+        backplate();
+    }
+    // mount (test)
+    *translate([12, 0, -(mic_mount_height + mount_height - mount_height / 3)]) {
+        mount(mount_wall, mic_mount_wall);
+    }
+    
+} else {
+
 translate([0, 0, -(mic_mount_height + mount_height + capsule_radius + 2 * wall + 2.2 * stalk_height)]) {
     mount(mount_wall, mic_mount_wall);
 }
@@ -367,3 +405,4 @@ translate([capsule_radius * 3.0, capsule_radius * 3, 0]) {
     }
 }
 
+}

+ 20 - 16
TinySphEAR.scad

@@ -46,8 +46,11 @@ leg_width = 5;
 leg_thick = 3;
 
 // width of the ridge that connects to the mount
+//   measured: ridge = 2.20mm, slot = 2.0 - 2.35mm
 ridge_width = 2.0;
-ridge_slot_width = 2;
+ridge_slot_width = 2.0;
+// add to the thickness of ridges
+ridge_fit = 0.1;
 
 // wall thickness of capsule holder
 wall = 1;
@@ -148,9 +151,10 @@ mount_radius_capsule = capsule_sep_max;
 // mounts: vectors containing the angle of the mount and the angle to the adjacent capsule
 // twist: rotate the whole capsule to match mounting legs
 // ridge: 1 -> print ridge for mount
+// ridge_fit: tune the fit, used for carving slot in mount
 // solid: make the capsule holder solid, used in the mount to carve the capsule rests
 
-module capsule (azimuth, elevation, mounts, twist, ridge, solid = 0) {
+module capsule (azimuth, elevation, mounts, twist, ridge, ridge_fit = 0.0, solid = 0) {
     rotate([0, 0, azimuth]) {
         rotate([0, (90 - elevation), 0]) {
             translate([0, 0, (rendermic == 0 && solid == 0) ? 0 : mic_radius - capsule_height]) {
@@ -215,18 +219,18 @@ module capsule (azimuth, elevation, mounts, twist, ridge, solid = 0) {
                         ridge_length = (mic_radius - capsule_height) / tan(elev_angle) - (capsule_radius + wall);
                         if (ridge == 2) {
                             rotate([0, 0, twist]) {
-                                translate([capsule_radius + wall - ridge_length / 2, ridge_slot_width / 2, 0]) {
-                                    cube([ridge_length * 3 / 2, ridge_width, capsule_height], center = false);
+                                translate([capsule_radius + wall - ridge_length / 2, (ridge_width - ridge_fit) / 2, 0]) {
+                                    cube([ridge_length * 3 / 2, ridge_width - ridge_fit, capsule_height], center = false);
                                 }
-                                translate([capsule_radius + wall - ridge_length / 2, -ridge_width - ridge_slot_width / 2, 0]) {
-                                    cube([ridge_length * 3 / 2, ridge_width, capsule_height], center = false);
+                                translate([capsule_radius + wall - ridge_length / 2, - (ridge_width - ridge_fit) * 3 / 2, 0]) {
+                                    cube([ridge_length * 3 / 2, ridge_width - ridge_fit, capsule_height], center = false);
                                 }
                             }
                         }
                         if (ridge == 1) {
                             rotate([0, 0, twist]) {
-                                translate([capsule_radius + wall - ridge_length / 2, -ridge_width / 2, 0]) {
-                                    cube([ridge_length * 3 / 2, ridge_width, capsule_height], center = false);
+                                translate([capsule_radius + wall - ridge_length / 2, - (ridge_width - ridge_fit) / 2, 0]) {
+                                    cube([ridge_length * 3 / 2, ridge_width - ridge_fit, capsule_height], center = false);
                                 }
                             }
                         }
@@ -323,8 +327,8 @@ module mount (angles, wall, stand_wall, separation) {
             // indentations that match the two lower capsule holders
             translate([0, 0, mic_mount_height + mount_height + cone_height + 
                        (mic_radius - capsule_height) + capsule_height * sin(elev_angle)]) {
-                capsule(angles[0], -elev_angle, [], 0, 1, 1);
-                capsule(angles[1], -elev_angle, [], 0, 1, 1);
+                capsule(angles[0], -elev_angle, [], 0, 1, 0.1, 1);
+                capsule(angles[1], -elev_angle, [], 0, 1, 0.1, 1);
             }
         }
     }
@@ -361,8 +365,8 @@ module mount_stalk (angles, wall, separation, solid = 0) {
             }
             // indentations that match the lower capsule holders
             translate([0, 0, (mic_radius - capsule_height) + capsule_height * sin(elev_angle)]) {
-                capsule(angles[0], -elev_angle, [], 0, 1, 1);
-                capsule(angles[1], -elev_angle, [], 0, 1, 1);
+                capsule(angles[0], -elev_angle, [], 0, 1, 0.1, 1);
+                capsule(angles[1], -elev_angle, [], 0, 1, 0.1, 1);
             }
             // slice it open so we can pop in cables
             if (solid == 0) {
@@ -477,10 +481,10 @@ module stand_mount_cap (wall, separation) {
 
 if (rendermic == 1) {
     // all four capsules
-    capsule(45, elev_angle, leg_angles_top, 60, 0);
-    capsule(-135, elev_angle, leg_angles_top, 60, 0);
-    capsule(-45, -elev_angle, leg_angles_bot, 0, 1);
-    capsule(135, -elev_angle, leg_angles_bot, 0, 1);
+    capsule(45, elev_angle, leg_angles_top, 60, 0, 0.0, 0);
+    capsule(-135, elev_angle, leg_angles_top, 60, 0, 0.0, 0);
+    capsule(-45, -elev_angle, leg_angles_bot, 0, 1, 0.0, 0);
+    capsule(135, -elev_angle, leg_angles_bot, 0, 1, 0.0, 0);
     // the mount
     mount([-45, 135], mount_wall, mic_mount_wall, mic_mount_height + mount_height + 5 + capsule_bottom);
 }