Преглед на файлове

slight change in leg fit for tighter assembly, redo microphone stand mount as one piece that clips into standard microphone mount (will redo all the wiring for the test microphone)

Fernando Pablo Lopez-Lezcano преди 10 години
родител
ревизия
1aec65e225
променени са 1 файла, в които са добавени 179 реда и са изтрити 120 реда
  1. 179 120
      TinySphEAR.scad

+ 179 - 120
TinySphEAR.scad

@@ -57,7 +57,7 @@ mount_radius = 2.75;
 mount_wall = 0.75;
 
 // height of mount
-mount_height = 30;
+mount_height = 40;
 
 // height of sleeve
 sleeve_height = 23;
@@ -129,7 +129,7 @@ leg_angles_bot =
 fudge = 0.15;
 
 // adjustment for fit of slots in connection legs and mount
-fit = 0.2;
+fit = 0.1;
 
 // number of facets for rendering cylinders
 facets = 64;
@@ -151,114 +151,195 @@ mount_radius_capsule = capsule_sep_max;
 // solid: make the capsule holder solid, used in the mount to carve the capsule rests
 
 module capsule (azimuth, elevation, mounts, twist, ridge, solid = 0) {
-	rotate([0, 0, azimuth]) {
-		rotate([0, (90 - elevation), 0]) {
-  			translate([0, 0, (rendermic == 0 && solid == 0) ? 0 : mic_radius - capsule_height]) {
-				difference () {
-					union () {
-						// main capsule holder
-						cylinder(r = capsule_radius + wall, h = capsule_height, $fn = facets);	
-						// the mounting legs
-						for (angles = mounts) {
-							rotate([0, 0, angles[0] + twist]) {
-								// connect with cylindrical beams, very pretty
-								if (connect == 0) {
+    rotate([0, 0, azimuth]) {
+        rotate([0, (90 - elevation), 0]) {
+            translate([0, 0, (rendermic == 0 && solid == 0) ? 0 : mic_radius - capsule_height]) {
+                difference () {
+                    union () {
+                        // main capsule holder
+                        cylinder(r = capsule_radius + wall, h = capsule_height, $fn = facets);    
+                        // the mounting legs
+                        for (angles = mounts) {
+                            rotate([0, 0, angles[0] + twist]) {
+                                // connect with cylindrical beams, very pretty
+                                if (connect == 0) {
                                     leg_length = mic_radius * cos(angles[1]) - capsule_radius * sin(angles[1]);
-									translate([capsule_radius - wall, 0, capsule_height - wall]) {
-										rotate([0, 180 - angles[1], 0]) {
-											cylinder(d = leg_width, h = leg_length - 0.3, center = false, $fn = facets);
-										}
-									}
-								}
-								// connect with horizontal legs
-								if (connect == 1) {
+                                    translate([capsule_radius - wall, 0, capsule_height - wall]) {
+                                        rotate([0, 180 - angles[1], 0]) {
+                                            cylinder(d = leg_width, h = leg_length - 0.3, center = false, $fn = facets);
+                                        }
+                                    }
+                                }
+                                // connect with horizontal legs
+                                if (connect == 1) {
                                     leg_length = (mic_radius - capsule_height + leg_thick) * tan(90 - angles[1]) - capsule_radius;
                                     slot_depth = leg_thick * cos(90 - 2 * angles[1]) + wall + fit;
-									translate([capsule_radius + leg_length + fudge, - leg_width / 3, 0]) {
-										rotate([0, -90, 0]) {
-											difference() {
-												// thickness, width
-												cube([leg_thick, leg_width, leg_length]);
-												// cut slot in connector
-												translate([0, leg_width / 3 - (fit / 2), 0]) {
-													cube([leg_thick, leg_width / 3 + fit, slot_depth]);
-												}
-											}
-										}
-									}
-								}
-								// connect with vertical legs
-								if (connect == 2) {
+                                    translate([capsule_radius + leg_length + fudge, - leg_width / 3, 0]) {
+                                        rotate([0, -90, 0]) {
+                                            difference() {
+                                                // thickness, width
+                                                cube([leg_thick, leg_width, leg_length]);
+                                                // cut slot in connector
+                                                translate([0, leg_width / 3 - (fit / 2), 0]) {
+                                                    cube([leg_thick, leg_width / 3 + fit, slot_depth]);
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                                // connect with vertical legs
+                                if (connect == 2) {
                                     // fix this 0.2 == (2 * fudge?)
                                     leg_length = (mic_radius * tan(90 - angles[1]) - capsule_radius) * tan(angles[1]) - 0.2; 
                                     slot_depth = leg_thick * cos (90 - (2 * angles[1]));
-									translate([capsule_radius - leg_thick / 2 + fudge, - leg_width / 3, 
+                                    translate([capsule_radius - leg_thick / 2 + fudge, - leg_width / 3, 
                                                - leg_length + capsule_height]) {
-										difference() {
-											// the connection
+                                        difference() {
+                                            // the connection
                                             difference() {
                                                 cube([leg_thick + leg_thick / 2, leg_width, leg_length]);
                                                 translate([-leg_thick + wall - fudge, 0, - capsule_height + fudge]) {
                                                     cube([leg_thick, leg_width, leg_length]);
                                                 }
                                             }
-											// cut slot in connector
-											translate([0, leg_width / 3 - (fit / 2), 0]) {
-												cube([leg_thick + leg_thick / 2, leg_width / 3 + fit, slot_depth]);
-											}
- 										}
-									}
-								}
-							}
-						}
-						// add ridges for microphone mount
+                                            // cut slot in connector
+                                            translate([0, leg_width / 3 - (fit / 2), 0]) {
+                                                cube([leg_thick + leg_thick / 2, leg_width / 3 + fit, slot_depth]);
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                        // add ridges for microphone mount
                         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]) {
+                        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_slot_width / 2, 0]) {
+                                }
+                                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);
-								}
-							}
-						}
-						if (ridge == 1) {
-							rotate([0, 0, twist]) {
-								translate([capsule_radius + wall - ridge_length / 2, -ridge_width / 2, 0]) {
+                                }
+                            }
+                        }
+                        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);
-								}
-							}
-						}
-					}
-					// make the hole for the capsule (also cuts leg overhang for vertical connectors)
-					if (solid != 1) {
+                                }
+                            }
+                        }
+                    }
+                    // make the hole for the capsule (also cuts leg overhang for vertical connectors)
+                    if (solid != 1) {
                         translate ([0, 0, -capsule_height]) {
                             cylinder(r = capsule_radius + fudge, h = capsule_height * 2, $fn = facets);
                         }
                     }
-					// remove any extra connecting beam material from the face of the holder
-					if (connect == 0) {
-						translate ([0, 0, capsule_height]) {
-							cylinder(r = capsule_radius + wall * 2, h = 2, $fn = facets);
-						}
-					}
-				}
-			}
-		}
-	}
+                    // remove any extra connecting beam material from the face of the holder
+                    if (connect == 0) {
+                        translate ([0, 0, capsule_height]) {
+                            cylinder(r = capsule_radius + wall * 2, h = 2, $fn = facets);
+                        }
+                    }
+                }
+            }
+        }
+    }
 }
 
 // microphone mount
 //
+// clips into standard microphone stand
+//
 // angles: angles for mount slots
 // wall: thickness of cylinder wall
 // separation: height of mount with respect of the microphone assembly
 
-module mount (angles, wall, separation, solid = 0) {
+module mount (angles, wall, stand_wall, separation) {
     cone_height = 5;
-	translate([0, 0, -(separation - 0)]) {
-		difference() {
+    translate([0, 0, -separation]) {
+        difference() {
+            union() {
+                // conic section
+                translate([0, 0, mic_mount_height + mount_height]) {
+                    difference() {
+                        cylinder(r2 = mount_radius_capsule, r1 = mount_radius + wall, h = cone_height, $fn = facets);
+                        // make the hole for the mount (* 1.5 to cut the ridge as well)
+                        cylinder(r2 = mount_radius_capsule - wall, r1 = mount_radius, h = cone_height * 1.5, $fn = facets);
+                    }
+                }
+                // 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);
+                            }
+                        }
+                        // hole for microphone wiring
+                        translate([mic_mount_radius - stand_wall / 2, 0, mic_mount_height - mic_wire_hole_offset]) {
+                            rotate([0, 90, 0]) {
+                                cylinder(r = mic_wire_hole_radius, h = 2 * stand_wall, $fn = facets);
+                            }
+                        } 
+                    }
+                }
+            }
+            // 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);
+            }
+        }
+    }
+}
+
+// microphone mount
+//
+// angles: angles for mount slots
+// wall: thickness of cylinder wall
+// separation: height of mount with respect of the microphone assembly
+
+module mount_stalk (angles, wall, separation, solid = 0) {
+    cone_height = 5;
+    translate([0, 0, -(separation - 0)]) {
+        difference() {
             union() {
                 // conic section
                 translate([0, 0, -cone_height]) {
@@ -296,8 +377,8 @@ module mount (angles, wall, separation, solid = 0) {
 }
 
 module mount_sleeve (wall, separation, solid = 0) {
-	translate([0, 0, -(separation + 0.0)]) {
-		difference() {
+    translate([0, 0, -(separation + 0.0)]) {
+        difference() {
             union() {
                 // main mount cylinder
                 translate([0, 0, -mount_height]) {
@@ -327,10 +408,10 @@ module mount_sleeve (wall, separation, solid = 0) {
 }
 
 // mount for microphone stand
-//
+
 module stand_mount (wall, separation) {
-	translate([0, 0, -separation]) {
-		difference() {
+    translate([0, 0, -separation]) {
+        difference() {
             union() {
                 // main mount cylinder
                 translate([0, 0, - mic_mount_height]) {
@@ -367,8 +448,8 @@ module stand_mount (wall, separation) {
 // the cap that connects the microphone stand mount with the microphone mount
 
 module stand_mount_cap (wall, separation) {
-	translate([0, 0, -(separation)]) {
-		difference() {
+    translate([0, 0, -(separation)]) {
+        difference() {
             union() {
                 // cap
                 cylinder(r = mic_mount_radius + mic_mount_fit + wall, h = wall, $fn = facets);
@@ -392,21 +473,16 @@ module stand_mount_cap (wall, separation) {
     }
 }
 
-
 // render a complete microphone
 
 if (rendermic == 1) {
-	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);
+    // 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);
-	// the mount
-	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 + 7);
+    // the mount
+    mount([-45, 135], mount_wall, mic_mount_wall, mic_mount_height + mount_height + 5 + capsule_bottom);
 }
 
 // print all the parts separately
@@ -427,8 +503,6 @@ if (rendermic == 0) {
             translate([-part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, 90, 1); }
             // mount body
             translate([0, 0, mount_height]) { mount([-45, 135], 1, 0); }
-            // mount sleeve
-            translate([mount_radius * 8, 0, mount_height]) { mount_sleeve(1, 0); }
             // add connecting ridges to make it all one part
             difference() {
                 for (rot_a = [-45, 45]) {
@@ -451,32 +525,17 @@ if (rendermic == 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); }
+            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); }
             // #1
             translate([-part_sep, -part_sep, part_height]) { capsule(0, part_rot, leg_angles_bot, 90, 1); }
-            // mount
-            *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);
-                }
+            *translate([0, 0, 0]) {
+                mount_to_stand([-45, 135], mount_wall, mic_mount_wall, 0);
             }
             // add connecting ridges to make it all one part
-            *difference() {
+            difference() {
                 for (rot_a = [-45, 45]) {
                     rotate([0, 0, rot_a]) {
                         translate([-wall / 2, -part_sep * 0.85, 0]) {
@@ -485,7 +544,7 @@ if (rendermic == 0) {
                     }
                 }
                 // remove them in the inside of the mount
-                cylinder(r = mount_radius + wall / 2, h = wall / 2);
+                cylinder(r = mic_mount_radius + mount_wall / 2, h = wall / 2);
             }
         }
     }