Преглед изворни кода

created a mount that clips on a standard microphone stand mount (and a cap that connects with the amb microphone mount), includes cable slots so that the fully assembled cables can be threaded through, added more variables for different wall thickness for the mount and sleeve

Fernando Pablo Lopez-Lezcano пре 10 година
родитељ
комит
5fa41a392f
1 измењених фајлова са 102 додато и 128 уклоњено
  1. 102 128
      TinySphEAR.scad

+ 102 - 128
TinySphEAR.scad

@@ -50,15 +50,33 @@ ridge_slot_width = 2;
 wall = 1;
 
 // dimensions of microphone holder
-mount_radius = 2.5;
+mount_radius = 2.75;
+mount_wall = 1.0;
 
 // height of mount
 mount_height = 30;
 
 // height of sleeve
-sleeve_height = 20;
+sleeve_height = 23;
 sleeve_wall = 0.75;
 
+// 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;
+
 //// end of model parameters
 ////
 //// rendering control
@@ -117,7 +135,6 @@ facets = 64;
 capsule_sep_min = (mic_radius - capsule_height) * cos(elev_angle) - (capsule_radius + wall) * sin(elev_angle);
 capsule_sep_max = mic_radius * cos(elev_angle) - (capsule_radius + wall) * sin(elev_angle);
 capsule_bottom = mic_radius * sin(elev_angle) + (capsule_radius + wall) * cos(elev_angle);
-mount_slot_depth = ridge_length * sin(elev_angle);
 mount_radius_capsule = capsule_sep_max;
 
 ////////
@@ -133,7 +150,7 @@ mount_radius_capsule = capsule_sep_max;
 module capsule (azimuth, elevation, mounts, twist, ridge, solid = 0) {
 	rotate([0, 0, azimuth]) {
 		rotate([0, (90 - elevation), 0]) {
-  			translate([0, 0, rendermic == 0 ? 0 : mic_radius - capsule_height]) {
+  			translate([0, 0, (rendermic == 0 && solid == 0) ? 0 : mic_radius - capsule_height]) {
 				difference () {
 					union () {
 						// main capsule holder
@@ -236,7 +253,6 @@ module capsule (azimuth, elevation, mounts, twist, ridge, solid = 0) {
 // separation: height of mount with respect of the microphone assembly
 
 module mount (angles, wall, separation) {
-    capsule_indent = (capsule_radius * cos(elev_angle)) * 1.25;
     cone_height = 5;
 	translate([0, 0, -(separation - 0)]) {
 		difference() {
@@ -258,31 +274,14 @@ module mount (angles, wall, separation) {
                 }
             }
             // indentations that match the lower capsule holders
-            translate([0, 0, separation - capsule_height * cos (elev_angle)]) {
-                capsule(-45, -elev_angle, [], 0, 1);
-                capsule(135, -elev_angle, [], 0, 1);
+            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);
             }
-//            %for (rot = angles) {
-//                rotate([0, 0, rot]) {
-//                    translate([mount_radius_capsule, 0, capsule_indent]) {
-//                        rotate([0, 90 + elev_angle, 0]) {
-//                            cylinder(r = capsule_radius + wall, h = capsule_height * 2, $fn = facets);
-//                        }
-//                    }
-//                }
-//            }
-            // slots for the mounting ridges
-//            for (rot = angles) {
-//                rotate([0, -elev_angle, rot]) {
-//                    translate([-capsule_sep_max * 2, -ridge_width / 2, mount_slot_depth - 2 * wall]) {
-//                        cube([capsule_sep_max * 2, ridge_width + fit, mount_height]);
-//                    }
-//                }
-//			}
             // slice it open so we can pop in cables
             rotate([0, 0, 45]) {
-                translate([mount_radius - fudge, - wall / 2, -mount_height]) {
-                    cube([mount_radius_capsule - mount_radius + fudge, wall, mount_height]);
+                translate([mount_radius - fudge, - mic_wire_diam / 2, -mount_height]) {
+                    cube([mount_radius_capsule - mount_radius + fudge, mic_wire_diam, mount_height]);
                 }
             }
         }
@@ -296,136 +295,91 @@ module mount_sleeve (wall, separation) {
                 // main mount cylinder
                 translate([0, 0, -mount_height]) {
                     difference() {
-                        cylinder(r = mount_radius + 2 * wall, h = sleeve_height, $fn = facets);
+                        cylinder(r = mount_radius + mount_wall + wall, h = sleeve_height, $fn = facets);
                         // make the hole for the mount (* 1.5 to cut the ridge as well)
-                        cylinder(r = mount_radius + wall, h = sleeve_height * 1.5, $fn = facets);
+                        cylinder(r = mount_radius + mount_wall, h = sleeve_height * 1.5, $fn = facets);
                     }
                 }
                 // spine that fits into slice of mount body
                 rotate([0, 0, 45]) {
-                    translate([mount_radius - wall, - wall / 2, -mount_height]) {
-                        cube([2 * wall, wall, sleeve_height]);
+                    translate([mount_radius - mount_wall, - mic_wire_diam / 2, -mount_height]) {
+                        cube([2 * mount_wall, mic_wire_diam, sleeve_height]);
                     }
                 }
             }
             // cut a bit less that one half of the sleeve so it fits around the body
             rotate([0, 0, 45]) {
-                translate([-mount_radius - 3 * wall, - (mount_radius + wall) * 1.5, -mount_height]) {
-                    cube([mount_radius + wall, (mount_radius + wall) * 3, sleeve_height]);
+                translate([-mount_radius - 4 * wall, - (mount_radius + wall) /2, -mount_height]) {
+                    cube([mount_radius + wall, (mount_radius + wall), sleeve_height]);
                 }
             }
         }
     }
 }
 
-box_height = 4.0;
-
-module mount_cube_2 (angles, wall, separation) {
-    translate([0, 0, -separation]) {
-        rotate([0, 0, 45]) {
-            difference() {
-                int_width = leg_width * 4 / 3;
-                translate([-(int_width) / 2, -(capsule_sep_max - 2.1), - box_height]) {
+// mount for microphone stand
+//
+module stand_mount (wall, separation) {
+	translate([0, 0, -separation]) {
+		difference() {
+            union() {
+                // main mount cylinder
+                translate([0, 0, - mic_mount_height]) {
                     difference() {
-                        translate([-wall, -wall, 0]) {
-                            cube([int_width + 2 * wall, (capsule_sep_max - 2.1) * 2 + 2 * wall, box_height]);
-                        }
-                        cube([int_width, (capsule_sep_max - 2.1) * 2, box_height]);
+                        cylinder(r = mic_mount_radius + mic_mount_fit + 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);
                     }
                 }
             }
-        }
-    }
-}
-
-mount_top_depth = 2.0;
-mount_stalk_radius = 1.5;
-mount_stalk_length = 8;
-
-module mount_cube (angles, wall, separation) {
-    translate([0, 0, -separation]) {
-        rotate([0, 0, 45]) {
-            difference() {
-                translate([-(ridge_slot_width + 2 * ridge_width) / 2, -capsule_sep_max, - mount_top_depth]) {
-                    cube([ridge_slot_width + 2 * ridge_width, capsule_sep_max * 2, mount_top_depth]);
-                }
-                // cut a slot for the ridges in the mount
-                for (rot = angles) {
-                    rotate([0, -elev_angle, -45 + rot]) {
-                        translate([-capsule_sep_max * 2, 0.5 * ridge_slot_width - fit / 2, mount_slot_depth - 0.6 * wall]) {
-                            cube([capsule_sep_max * 2, ridge_slot_width + fit, mount_height]);
-                        }
-                        translate([-capsule_sep_max * 2, - 1.5 * ridge_slot_width - fit / 2, mount_slot_depth - 0.6 * wall]) {
-                            cube([capsule_sep_max * 2, ridge_slot_width + fit, mount_height]);
-                        }
-                        // top of the ridge
-                        translate([-capsule_sep_max * 2, -ridge_slot_width, mount_slot_depth + wall]) {
-                            cube([capsule_sep_max * 2, 2 * ridge_slot_width + fit, mount_height]);
-                        }
-                    }
-                }
-                // cut a hole for the mounting stalk
-                translate([0, 0, -mount_top_depth]) {
-                    cylinder(r = mount_stalk_radius, h = mount_top_depth, $fn = facets);
+            // slot for fitting into microphone stand
+            translate([mic_mount_radius - wall / 2, - mic_mount_slot_width / 2, - mic_mount_height]) {
+                cube([2 * wall, mic_mount_slot_width, mic_mount_slot_height]);
+            }
+            // eyelet for microphone stand
+            translate([mic_mount_radius - wall / 2, 0,  - mic_mount_height + mic_mount_slot_height]) {
+                rotate([0, 90, 0]) {
+                    cylinder(r = mic_mount_slot_radius, h = 2 * wall, $fn = facets);
                 }
             }
+            // slot and hole for microphone wiring
+            translate([mic_mount_radius - wall / 2, - mic_wire_diam / 2, - mic_wire_hole_offset]) {
+                cube([2 * wall, mic_wire_diam, mic_wire_hole_offset]);
+            }
+            translate([mic_mount_radius - wall / 2, 0, - mic_wire_hole_offset]) {
+                rotate([0, 90, 0]) {
+                    cylinder(r = mic_wire_hole_radius, h = 2 * wall, $fn = facets);
+                }
+            }    
         }
     }
 }
 
-module mount_cylinder (angles, wall, separation) {
-	translate([0, 0, -(separation + 0.0)]) {
+// the cap that connects the microphone stand mount with the microphone mount
+
+module stand_mount_cap (wall, separation) {
+	translate([0, 0, -(separation)]) {
 		difference() {
             union() {
-                // main mount cylinder
-                translate([0, 0, -mount_height]) {
-                    difference() {
-                        cylinder(r = mount_radius + wall, h = mount_height, $fn = facets);
-                        // make the hole for the mount (* 1.5 to cut the ridge as well)
-                        cylinder(r = mount_radius, h = mount_height * 1.5, $fn = facets);
-                    }
-                }
-                // make rests for microphone ridges thicker
-                rotate([0, 0, 45]) {
-                    for (move = [- (ridge_slot_width / 2 + ridge_width), (ridge_slot_width / 2 + ridge_width) - 2 * wall]) {
-                        translate([move, -mount_radius, -mount_height]) {
-                            cube([2 * wall, mount_radius * 2, mount_height]);
-                        }
-                    }
+                // cap
+                cylinder(r = mic_mount_radius + mic_mount_fit + wall, h = wall, $fn = facets);
+                translate([0, 0, -wall]) {
+                    cylinder(r = mic_mount_radius + mic_mount_fit, h = 2 * wall, $fn = facets);
                 }
             }
-            // shave exterior of the cylinder, erases extensions that protrude
-            translate([0, 0, -mount_height]) {
-                difference() {
-                    cylinder(r = mount_radius + 2 * wall, h = mount_height, $fn = facets);
-                    cylinder(r = mount_radius + wall, h = mount_height, $fn = facets);
-                }
+            // hole for mount
+            translate([0, 0, - 2 * wall]) {
+                cylinder(r = mount_radius + mount_wall + sleeve_wall, h = 3 * wall, $fn = facets);
             }
-			// cut a slot for the ridges in the wall of the cylinder
-            for (rot = angles) {
-                rotate([0, -elev_angle, rot]) {
-                    translate([-capsule_sep_max * 2, 0.5 * ridge_slot_width - fit / 2, mount_slot_depth - wall]) {
-                        cube([capsule_sep_max * 2, ridge_slot_width + fit, mount_height]);
-                    }
-                    translate([-capsule_sep_max * 2, - 1.5 * ridge_slot_width - fit / 2, mount_slot_depth - wall]) {
-                        cube([capsule_sep_max * 2, ridge_slot_width + fit, mount_height]);
-                    }
-                    // top of the ridge
-                    // translate([-capsule_sep_max * 2, -ridge_slot_width, mount_slot_depth]) {
-                    //     cube([capsule_sep_max * 2, 2 * ridge_slot_width + fit, mount_height]);
-                    // }
-                }
-			}
-            // lower the top of theo mount ridges (we have to do the geometry of all this...)
-            rotate([0, 0, -45]) {
-                translate([- capsule_sep_max, -ridge_slot_width / 2, -0.4]) {
-                    cube([capsule_sep_max * 2, ridge_slot_width, 2]);
-                }
+            // slot for microphone wiring
+            translate([0, - mic_wire_diam / 2, - wall]) {
+                cube([mic_mount_radius + mic_mount_fit + wall, mic_wire_diam, 2 * wall]);
             }
-		}
-	}
+        }
+    }
 }
 
+
 // render a complete microphone
 
 if (rendermic == 1) {
@@ -434,9 +388,12 @@ if (rendermic == 1) {
 	capsule(-45, -elev_angle, leg_angles_bot, 0, 1);
     capsule(135, -elev_angle, leg_angles_bot, 0, 1);
 	// the mount
-	mount([-45, 135], wall, capsule_bottom);
+	mount([-45, 135], mount_wall, capsule_bottom);
     // the sleeve closing it
     mount_sleeve(sleeve_wall, capsule_bottom);
+    // the microphone stand mount
+    stand_mount_cap(mic_mount_wall, capsule_bottom + mount_height + 3);
+    stand_mount(mic_mount_wall, capsule_bottom + mount_height + 5);
 }
 
 // print all the parts separately
@@ -478,16 +435,33 @@ if (rendermic == 0) {
         part_height = capsule_height;
         part_sep = capsule_radius * 2;
         // #3
-        translate([part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_top, 0, 0); }
+        *translate([part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_top, 0, 0); }
         if (renderset != 0) {
             // #4
             *translate([part_sep, part_sep, part_height]) { capsule(0, part_rot, leg_angles_top, 0, 0); }
             // #2
-            *translate([-part_sep, part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, -90, 1); }
+            translate([-part_sep, part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, -90, 1); }
             // #1
-            *translate([-part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, 90, 1); }
+            translate([-part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, 90, 1); }
             // mount
-            *translate([0, 0, mount_height]) { mount([-45, 135], 1, 0); }
+            *rotate([0, 0, 45]) {
+                translate([0, 0, mount_height]) { mount([-45, 135], mount_wall, 0); }
+            }
+            // mount sleeve
+            *translate([10, 0, mount_height]) {
+                rotate([0, 0, 45]) {
+                    mount_sleeve(sleeve_wall, 0); }
+            }
+            // stand mount
+            *translate([0, 0, mic_mount_height + mic_mount_height]) {
+                stand_mount(mic_mount_wall, mic_mount_height);
+            }
+            // stand mount cap
+            *rotate([0, 180, 0]) {
+                translate([2 * mic_mount_radius + 8, 0, - mic_mount_wall]) {
+                   stand_mount_cap(mic_mount_wall, 0);
+                }
+            }
             // add connecting ridges to make it all one part
             *difference() {
                 for (rot_a = [-45, 45]) {