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

properly calculate thread depth and various radii, add external hexagon trim to windscreen mount

Fernando Pablo Lopez-Lezcano преди 9 години
родител
ревизия
0bfd5411ef
променени са 1 файла, в които са добавени 23 реда и са изтрити 11 реда
  1. 23 11
      TinySpHEAR_mount_pcb.scad

+ 23 - 11
TinySpHEAR_mount_pcb.scad

@@ -184,7 +184,9 @@ windscreen_w = 4.0;
 beam_radius = 1.4;
 windscreen_thread_height = 10.0;
 windscreen_thread_pitch = 1.5;
-windscreen_thread_radius = box_corner_radius + windscreen_thread_pitch * 0.866;
+windscreen_thread_angle = 30;
+windscreen_thread_depth = cos(windscreen_thread_angle) * windscreen_thread_pitch * 5/8;
+windscreen_thread_radius = box_corner_radius + windscreen_thread_depth;
 
 
 // all four printed circuit boards
@@ -321,7 +323,7 @@ module tetra_mount_flare(height, lip, transition, bot_radius, bot_corner, top_ra
             if (windscreen) {
                 translate([0, 0, lip]) {
                     metric_thread(diameter = windscreen_thread_radius * 2, pitch = windscreen_thread_pitch,
-                        length = lip, internal = false);
+                        length = lip, angle = windscreen_thread_angle, internal = false);
                 }
                 cylinder(r2 = box_corner_radius + 1.5, r1 = box_radius + 0.5, h = windscreen_thread_height, $fn = facets);
                 // index for back of microphone
@@ -578,7 +580,7 @@ module tetra_windscreen(radius, corner, height, beam_radius, twist, support) {
     translate([0, 0, 0]) {
         for (r = [0, 60, 120, 180, 240, 300]) for (t = [1, -1]) rotate([0, 0, r]) {
             linear_extrude(height = height, center = false, convexity = 0, twist = twist * t, $fn = facets) {
-                translate([radius + beam_radius, 0, 0]) {
+                translate([radius + beam_radius + windscreen_thread_depth, 0, 0]) {
                     circle(r = beam_radius, $fn = facets);
                 }
             }
@@ -587,7 +589,7 @@ module tetra_windscreen(radius, corner, height, beam_radius, twist, support) {
     // connectors to top
     translate([0, 0, height]) {
         for (r = [0, 60, 120, 180, 240, 300]) rotate([0, 0, r + twist]) {
-            translate([radius + beam_radius, 0, 0]) {
+            translate([radius + beam_radius + windscreen_thread_depth, 0, 0]) {
                 // cylinder(r = beam_radius * 2/3, h = 2.0, $fn = facets);
                 cylinder(r = beam_radius * 1, h = 2.0, $fn = facets);
                 //
@@ -611,7 +613,7 @@ module tetra_windscreen_dome(radius, beam_radius) {
     for (r = [0, 60, 120]) rotate([0, 90, r + 30]) {
         difference() {
             rotate_extrude(convexity = 10, $fn = facets) {
-                translate([radius + beam_radius, 0, 0]) {
+                translate([radius + beam_radius + windscreen_thread_depth, 0, 0]) {
                     circle(r = beam_radius, $fn = facets);
                 }
             }
@@ -625,13 +627,23 @@ module tetra_windscreen_dome(radius, beam_radius) {
 // windscreen mount to body with thread
 
 module tetra_windscreen_mount(height, radius, beam_radius) {
-        difference() {
-            cylinder(r = radius + 2 * beam_radius, h = height, $fn = facets);
-            metric_thread(diameter = radius * 2 + fit, pitch = windscreen_thread_pitch, length = height, internal = true);
-        }
-        translate([-(radius + 2 * beam_radius), 0, 0]) {
-            cylinder(r = 1.0, h = height, $fn = facets);
+    hexagon_radius = (radius + wall) * 2/3 * sqrt(3);
+    difference() {
+        cylinder(r = radius + 2 * beam_radius + windscreen_thread_depth, h = height, $fn = facets);
+        metric_thread(diameter = radius * 2 + fit, pitch = windscreen_thread_pitch, 
+                length = height, windscreen_thread_angle = 45, internal = true);
+        // make outside be a hexagon instead of a circle
+        rotate([0, 0, 30]) translate([0, 0, -thin_mint]) {
+            difference() {
+                cylinder(r = 1.5 * radius, h = height + 2 * thin_mint);
+                cylinder(r = hexagon_radius, h = height + 2 * thin_mint, $fn = 6);
+            }
         }
+    }
+    // marker for center of screen
+    translate([-(radius + wall), 0, 0]) {
+        cylinder(r = 1.0, h = height, $fn = facets);
+    }
 }
 
 // small tube to connect both helical windscreen mounts