Selaa lähdekoodia

add new capsule array mount that works with a fully symmetrical array print, change location of center of microphone marker, add a lot of code (including discarded tests) for the windscreen support frame

Fernando Pablo Lopez-Lezcano 9 vuotta sitten
vanhempi
sitoutus
7db95bf5b5
1 muutettua tiedostoa jossa 185 lisäystä ja 17 poistoa
  1. 185 17
      TinySpHEAR_mount_pcb.scad

+ 185 - 17
TinySpHEAR_mount_pcb.scad

@@ -187,7 +187,8 @@ windscreen_thread_pitch = 2.0;
 windscreen_thread_angle = 30;
 windscreen_thread_depth = cos(windscreen_thread_angle) * windscreen_thread_pitch * 5/8 + 0.5;
 windscreen_thread_radius = box_corner_radius + windscreen_thread_depth;
-windscreen_thread_fit = 4 * fit;
+windscreen_thread_fit = 3 * fit;
+// windscreen_thread_fit = 4 * fit;
 
 // all four printed circuit boards
 
@@ -506,7 +507,7 @@ module tilted_cube(width, depth, height, offset) {
     }
 }
 
-module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
+module tetra_capsule_array_mount_old(angles, mount_radius, mount_wall) {
     difference() {
         union() {
             rotate([0, 0, 45]) {
@@ -514,7 +515,8 @@ module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
                 wire_diam = mic_wire_diam + mic_wire_fit;
                 // FIXME: this 1.75 is the former leg_thick value, it should be calculated
                 // based on the capsule diameter so that the cable fits in between the capsules
-                sleeve_width = 1.75 + wire_offset + wire_diam * 2 + wall / 2;
+                // sleeve_width = 1.75 + wire_offset + wire_diam * 2 + wall / 2;
+                sleeve_width = 3.75 + wire_offset + wire_diam * 2 + wall / 2;
                 sleeve_width_max = capsule_radius + wall;
                 sleeve_w = (sleeve_width > sleeve_width_max) ? sleeve_width : sleeve_width_max;
                 difference() {
@@ -552,12 +554,12 @@ module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
         translate([0, 0, mount_top_height + (mic_radius - capsule_height) + capsule_height * cos(elev_angle) - mic_to_mount_fit]) {
             rotate([0, (90 + elev_angle), angles[0]]) {
                 translate([0, 0, mic_radius - capsule_height]) {
-                    capsule([], 0, 1, 0.02, 0.02, 1);
+                    capsule(leg_angles_top, 0, 0, 0.0, 0.0, 1);
                 }
             }
             rotate([0, (90 + elev_angle), angles[1]]) {
                 translate([0, 0, mic_radius - capsule_height]) {
-                    capsule([], 0, 1, 0.02, 0.02, 1);
+                    capsule(leg_angles_top, 0, 0, 0.0, 0.0, 1);
                 }
             }
         }
@@ -573,6 +575,74 @@ module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
     }
 }
 
+module tetra_capsule_array_mount(angles, mount_radius, mount_wall) {
+    pedestal = 3.0;
+    difference() {
+        union() {
+            rotate([0, 0, 45]) {
+                wire_offset = wall;
+                wire_diam = mic_wire_diam + mic_wire_fit;
+                difference() {
+                    // outer sleeve
+                    hull() {
+                        for (r = [0, 180]) rotate([0, 0, r]) {
+                            for (t = [1, -1]) translate([mount_radius + 2 * wall, (wire_diam/2 + wall/4) * t, mount_top_height - pedestal]) {
+                                cylinder(r = wire_diam/2 + wall, h = pedestal, $fn = facets);
+                            }
+                        }
+                        cylinder(r = mount_radius + mount_wall, h = thin_mint, $fn = facets);
+                    }
+                    // holes for cables in top part of sleeve
+                    for (r = [0, 180]) rotate([0, 0, r]) {
+                        for (t = [1, -1]) translate([mount_radius + 2 * wall, (wire_diam/2 + wall/4) * t, mount_top_height - pedestal]) {
+                            cylinder(r = wire_diam/2, h = pedestal, $fn = facets);
+                        }
+                    }
+                    // holes for cables in bottom part of sleeve
+                    for (r = [0, 180]) rotate([0, 0, r]) {
+                        for (t = [1, -1]) {
+                            hull() {
+                                translate([mount_radius - wire_diam/2 - wall, wire_diam/2 * t, 0]) {
+                                    cylinder(r = wire_diam/2, h = thin_mint, $fn = facets);
+                                }
+                                translate([mount_radius + 2 * wall, (wire_diam/2 + wall/4) * t, mount_top_height - pedestal]) {
+                                    cylinder(r = wire_diam/2, h = thin_mint, $fn = facets);
+                                }
+                            }
+                        }
+                    }
+                    // cavity for printing without support
+                    scale([1.0, 1.0, 3.0]) {
+                        sphere(r = mount_radius, $fn = facets);
+                    }
+                }
+            }
+        }
+        // indentations that match the two lower capsule holders
+        // add ridge height adjustment
+        translate([0, 0, mount_top_height + (mic_radius - capsule_height) + capsule_height * cos(elev_angle) - mic_to_mount_fit]) {
+            rotate([0, (90 + elev_angle), angles[0]]) {
+                translate([0, 0, mic_radius - capsule_height]) {
+                    capsule(leg_angles_top, 0, 0, 0.0, 0.0, 1);
+                }
+            }
+            rotate([0, (90 + elev_angle), angles[1]]) {
+                translate([0, 0, mic_radius - capsule_height]) {
+                    capsule(leg_angles_top, 0, 0, 0.0, 0.0, 1);
+                }
+            }
+        }
+        // slice top sides of mount
+        for (r = [45, 45 + 180]) rotate([0, 0, r]) {
+            translate([mount_radius_capsule, -mount_radius_capsule*1.5, mount_top_height]) {
+                rotate([0, 30, 0]) {
+                    cube([mount_radius_capsule*3, mount_radius_capsule*3, 10]);
+                }
+            }
+        }
+    }
+}
+
 // windscreen frame
 
 module tetra_windscreen(radius, corner, height, beam_radius, twist, support) {
@@ -611,7 +681,7 @@ module tetra_windscreen(radius, corner, height, beam_radius, twist, support) {
 module tetra_windscreen_frame(sides, radius, height, beam_radius, twist) {
     inc = 360/sides;
     for (r = [0:inc:360]) for (t = [1, -1]) rotate([0, 0, r]) {
-        linear_extrude(height = height, center = false, convexity = 0, twist = twist * t, $fn = facets) {
+        render() linear_extrude(height = height, center = false, convexity = 0, twist = twist * t, $fn = facets) {
             translate([radius, 0, 0]) {
                 circle(r = beam_radius, $fn = facets);
             }
@@ -623,23 +693,43 @@ module tetra_windscreen_frame(sides, radius, height, beam_radius, twist) {
 
 module tetra_windscreen_inset_frame(sides, radius, iradius, height, beam_radius, xscale = 1.0, yscale = 1.0) {
     inc = 360/sides;
-    for (r = [0:inc:360]) for (t = [1, -1]) rotate([0, 0, r]) {
-        translate([0, 0, 0]) {
-            hull() {
-                translate([iradius, 0, 0]) {
-                    scale([xscale, yscale, 1.0]) cylinder(r = beam_radius, h = thin_mint, $fn = facets);
+    difference() {
+        for (r = [0:inc:360]) for (t = [1, -1]) rotate([0, 0, r]) {
+            render() {
+                hull() {
+                    translate([iradius, 0, 0]) {
+                        scale([xscale, yscale, 1.0]) cylinder(r = beam_radius, h = thin_mint, $fn = facets);
+                    }
+                    rotate([0, 0, inc/2 * t]) translate([radius, 0, height]) {
+                        cylinder(r = beam_radius, h = thin_mint, $fn = facets);
+                    }
                 }
-                rotate([0, 0, inc/2 * t]) translate([radius, 0, height]) {
-                    cylinder(r = beam_radius, h = thin_mint, $fn = facets);
+            }
+        }
+        cylinder(r = iradius, h = height, $fn = facets);
+    }
+}
+
+// windscreen frame reinforcements
+
+module tetra_windscreen_frame_reinforcements(sides, radius, beam_radius, zrotation, yrotation) {
+    for (r = [0:360/sides:360]) rotate([0, 0, r + zrotation]) {
+        translate([radius, 0, 0]) {
+            render() rotate([0, yrotation, 0]) intersection() {
+                scale([1.0, 1.55, 1.0]) {
+                    translate([0, 0, -beam_radius * 2]) {
+                        cylinder(r = beam_radius, h = beam_radius * 4, $fn = facets);
+                    }
                 }
+                scale([1, 2, 2.5]) sphere(r = beam_radius, $fn = facets);
             }
         }
     }
 }
 
-// windscreen frame dome
+// windscreen frame dome (two plus two)
 
-module tetra_windscreen_dome(radius, beam_radius) {
+module tetra_windscreen_dome_two(radius, beam_radius) {
     rad = radius * cos(180/8);
     difference() {
         for (r = [0, 90]) rotate([0, 0, r]) {
@@ -662,6 +752,84 @@ module tetra_windscreen_dome(radius, beam_radius) {
     }
 }
 
+// windscreen frame dome (three plus three)
+
+module tetra_windscreen_dome_three(radius, beam_radius) {
+    difference() {
+        for (r = [0, 90]) rotate([0, 0, r + 22.5]) {
+            translate([0, 0, 0]) rotate([0, 90, 0]) {
+                rotate_extrude(convexity = 10, $fn = facets) {
+                    translate([radius, 0, 0]) {
+                        circle(r = beam_radius, $fn = facets);
+                    }
+                }
+            }
+            for (t = [1, -1]) {
+                translate([radius * cos(45) * t, 0, 0]) rotate([0, 90, 0]) {
+                    rotate_extrude(convexity = 10, $fn = facets) {
+                        translate([radius * cos(45), 0, 0]) {
+                            circle(r = beam_radius, $fn = facets);
+                        }
+                    }
+                }
+            }
+        }
+        brad = radius + 2 * beam_radius + thin_mint;
+        translate([-brad, -brad, - 2 * brad]) {
+            cube([2 * brad, 2 * brad, 2 * brad]);
+        }
+    }
+}
+
+module tetra_windscreen_dome_three_n(radius, beam_radius) {
+    difference() {
+        for (r = [0, 90]) rotate([0, 0, r + 22.5]) {
+            for (t = [1, -1]) {
+                translate([radius * cos(45) * t, 0, 0]) rotate([0, 90, 0]) {
+                    rotate_extrude(convexity = 10, $fn = facets) {
+                        translate([radius * cos(45), 0, 0]) {
+                            circle(r = beam_radius, $fn = facets);
+                        }
+                    }
+                }
+            }
+        }
+        brad = radius + 2 * beam_radius + thin_mint;
+        translate([-brad, -brad, - 2 * brad]) {
+            cube([2 * brad, 2 * brad, 2 * brad]);
+        }
+    }
+}
+
+module tetra_windscreen_dome(sides, radius, beam_radius) {
+    arcs = sides/2 - 1;
+    ang = 360 / sides;
+    difference() {
+        for (r = [0, 90]) rotate([0, 0, r]) {
+            for (t = [1, -1]) {
+                translate([radius * sin(ang/2) * t, 0, 0]) rotate([0, 90, 0]) {
+                    render() rotate_extrude(convexity = 10, $fn = facets) {
+                        translate([radius * cos(ang/2), 0, 0]) {
+                            circle(r = beam_radius, $fn = facets);
+                        }
+                    }
+                }
+                translate([radius * sin(ang/(2/3)) * t, 0, 0]) rotate([0, 90, 0]) {
+                    render() rotate_extrude(convexity = 10, $fn = facets) {
+                        translate([radius * cos(ang/(2/3)), 0, 0]) {
+                            circle(r = beam_radius, $fn = facets);
+                        }
+                    }
+                }
+            }
+        }
+        brad = radius + 2 * beam_radius + thin_mint;
+        translate([-brad, -brad, - 2 * brad]) {
+            cube([2 * brad, 2 * brad, 2 * brad]);
+        }
+    }
+}
+
 // windscreen mount to body with thread
 
 module tetra_windscreen_mount(height, radius, beam_radius) {
@@ -701,8 +869,8 @@ module tetra_windscreen_round_mount(height, radius, wall) {
         cylinder(r = radius + wall, h = height, $fn = facets);
     }
     // marker for center of microphone
-    rotate([0, 0, 22.5]) translate([-(radius + wall), 0, 0]) {
-        cylinder(r = 1.0, h = height, $fn = facets);
+    translate([-(radius + 2 * wall), 0, 0]) {
+        cylinder(r = 1.0, h = height/2, $fn = facets);
     }
 }