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

octathingy: parametrize external shock mount ring, change some variable names to match new design, add some reinforcement to the external ring

Fernando Pablo Lopez-Lezcano пре 8 година
родитељ
комит
c71b82f536
1 измењених фајлова са 40 додато и 26 уклоњено
  1. 40 26
      Octathingy_mount_pcb.scad

+ 40 - 26
Octathingy_mount_pcb.scad

@@ -153,10 +153,10 @@ conn_core_overlap = 3.00;
 // shock mount parameters
 //
 
-ring_sep = 30.0;
-ring_height = 10.0;
-rubber_band_angle = 40;
-main_radius_inc = (ring_sep / 2) / tan(rubber_band_angle);
+internal_ring_height = 55.0;
+external_ring_height = 10.0;
+rubber_band_angle = 45;
+main_radius_inc = (internal_ring_height / 2) / tan(rubber_band_angle);
 
 // gap between internal ring and microphone body
 internal_ring_gap = 1.0;
@@ -877,7 +877,7 @@ module octa_shock_mount_band(band_height, radius) {
 
 // shock mount internal ring
 
-module octa_shock_mount_internal_ring(height, radius, band_height, corner, gap) {
+module octa_shock_mount_internal_ring(height, radius, band_height, corner) {
     // octagonal band
     octa_shock_mount_band(band_height, radius);
     // 8 columns for mounting rubber bands
@@ -912,39 +912,53 @@ module octa_shock_mount_internal_ring(height, radius, band_height, corner, gap)
 
 // shock mount external ring
 
-module octa_shock_mount_external_ring(height, radius, corner, gap) {
+module octa_shock_mount_external_ring(height, radius, corner) {
     // main ring
-    rotate([0, 0, 22.5]) rounded_octagon_wall(ring_ext_height, 2 * radius - ring_wall, ring_wall);
+    rotate([0, 0, 22.5]) rounded_octagon_wall(ring_ext_height, radius, ring_wall);
     for (rot = [0, 90, 180, 270]) {
         // anchors for rubber bands
         rotate([0, 0, rot + 45]) {
-            translate([radius + gap + 3 * ring_wall - 1.0, -6, 0]) {
+            translate([radius * cos(22.5) + ring_wall + 0.5, -6, 0]) {
                 minkowski() {
                     cube([4 - 2, 12, ring_ext_height]);
                     cylinder(r = 1.5, h = thin_mint, $fn = facets);
                 }
             }
-            translate([radius + gap + ring_wall, -2, 0]) {
+            translate([radius * cos(22.5), -2, 0]) {
                 cube([7, 4, ring_ext_height]);
             }
         }
     }
     // connection to hub
-    translate([radius + corner - 0.7, -2, 0]) {
+    translate([radius * cos(22.5), -2, 0]) {
         cube([10, 4, ring_ext_height * 2]);
     }
+    // reinforce connection to ring
+    intersection() {
+        translate([radius * cos(22.5), 0, 0]) {
+            difference() {
+                cylinder(r = 6, h = ring_ext_height * 2, $fn = 4);
+                translate([-10, -5, 0]) {
+                    cube([10, 10, ring_ext_height * 2]);
+                }
+            }
+        }
+        translate([radius + ring_wall - 7, 0, 0]) {
+            rotate([0, 0, 45]) cylinder(r1 = radius * 1.5, r2 = ring_wall/2 + 1, h = ring_ext_height * 2, $fn = 4);
+        }
+    }
     // reinforcement
     intersection() {
-        rotate([0, 0, 22.5]) rounded_octagon_wall(ring_ext_height * 2, 2 * radius - ring_wall, ring_wall);
-        translate([radius * 2 - 10.25, 0, 0]) {
-            rotate([0, 0, 45]) cylinder(r1 = 2 * radius, r2 = ring_wall/2 + 1, h = ring_ext_height * 2, $fn = 4);
+        rotate([0, 0, 22.5]) rounded_octagon_wall(ring_ext_height * 2, radius, ring_wall);
+        translate([radius - 6.5, 0, 0]) {
+            rotate([0, 0, 45]) cylinder(r1 = radius * 1.5, r2 = ring_wall/2 + 1, h = ring_ext_height * 2, $fn = 4);
         }
     }
     // rotating mount
     o_rad = 8;
     i_rad = 3;
     rotate([0, 90, -90]) {
-        translate([-o_rad, radius + corner + o_rad + 2 * ring_wall, -2]) {
+        translate([-o_rad, radius * cos(22.5) + o_rad + ring_wall * 2, -2]) {
             shock_mount_ring(o_rad, i_rad, ring_wall);
         }
     }
@@ -1124,13 +1138,13 @@ module render_octa_shock_mount_stand(z_offset) {
 
 module render_octa_shock_mount_external_ring_old(z_offset) {
     translate([0, 0, z_offset]) {
-        shock_mount_external_ring(ring_height, box_radius + wall, box_radius * 2 - wall, mount_corner, main_radius_inc, 0);
+        shock_mount_external_ring(external_ring_height, box_radius + wall, box_radius * 2 - wall, mount_corner, main_radius_inc, 0);
     }
 }
 
 module render_octa_shock_mount_external_ring(z_offset) {
     translate([0, 0, z_offset]) {
-        octa_shock_mount_external_ring(ring_height, octa_pcb_radius, 20, main_radius_inc);
+        octa_shock_mount_external_ring(external_ring_height, octa_pcb_radius + internal_ring_gap + main_radius_inc + 5.25, 20);
     }
 }
 
@@ -1139,13 +1153,13 @@ module render_octa_shock_mount_external_ring(z_offset) {
 
 module render_octa_shock_mount_internal_ring_bot(z_offset) {
     translate([0, 0, z_offset]) {
-        shock_mount_internal_ring(ring_height, box_radius + wall, box_radius * 2 - wall, mount_corner, internal_ring_gap, 1);
+        shock_mount_internal_ring(external_ring_height, box_radius + wall, box_radius * 2 - wall, mount_corner, internal_ring_gap, 1);
     }
 }
 
 module render_octa_shock_mount_internal_ring_bot(z_offset) {
     translate([0, 0, z_offset]) {
-        shock_mount_internal_ring(ring_height, A/2 + wall, A/2 + 3, octa_pcb_radius * 2/3, internal_ring_gap, 1);
+        shock_mount_internal_ring(external_ring_height, A/2 + wall, A/2 + 3, octa_pcb_radius * 2/3, internal_ring_gap, 1);
     }
 }
 
@@ -1154,13 +1168,13 @@ module render_octa_shock_mount_internal_ring_bot(z_offset) {
 
 module render_octa_shock_mount_internal_ring_top_old(z_offset) {
     translate([0, 0, z_offset]) {
-        shock_mount_internal_ring(ring_height, box_radius + wall, box_radius * 2 - wall, mount_corner, internal_ring_gap, 0);
+        shock_mount_internal_ring(external_ring_height, box_radius + wall, box_radius * 2 - wall, mount_corner, internal_ring_gap, 0);
     }
 }
 
 module render_octa_shock_mount_internal_ring_top(z_offset) {
     translate([0, 0, z_offset]) {
-        shock_mount_internal_ring(ring_height, A/2 + wall, A/2 + 3, octa_pcb_radius * 2/3, internal_ring_gap, 0);
+        shock_mount_internal_ring(external_ring_height, A/2 + wall, A/2 + 3, octa_pcb_radius * 2/3, internal_ring_gap, 0);
     }
 }
 
@@ -1170,7 +1184,7 @@ module render_octa_shock_mount_internal_ring_top(z_offset) {
 module render_octa_shock_mount_ring_connectors(offset) {
     for (o = [0, 1, 2, 3]) {
         translate([-18, (10 + offset) * o, 0]) {
-            shock_mount_connector(ring_sep, 4, connector_w, connector_d, 0.1);
+            shock_mount_connector(internal_ring_height, 4, connector_w, connector_d, 0.1);
         }
     }
 }
@@ -1180,10 +1194,10 @@ module render_octa_shock_mount_ring_connectors(offset) {
 
 module render_octa_shock_mount(z_offset) {
     // internal rings
-    translate([0, 0, z_offset + ring_sep / 2]) {
+    translate([0, 0, z_offset + internal_ring_height / 2]) {
         render_octa_shock_mount_internal_ring_top(0);
         rotate([0, 180, 0]) {
-            render_octa_shock_mount_internal_ring_bot(ring_sep + 2);
+            render_octa_shock_mount_internal_ring_bot(internal_ring_height + 2);
         }
         // insert the connecting rods
         for (r = [0, 90, 180, 270]) {
@@ -1191,7 +1205,7 @@ module render_octa_shock_mount(z_offset) {
                 translate([((r % 180) ? box_radius * 2 : box_radius) + 3 * wall + internal_ring_gap, 0, -1]) {
                     rotate([0, 90, 0]) {
                         translate([-4, -5, 1]) {
-                            shock_mount_connector(ring_sep, 4, connector_w, connector_d, 0.1);
+                            shock_mount_connector(internal_ring_height, 4, connector_w, connector_d, 0.1);
                         }
                     }
                 }
@@ -1199,11 +1213,11 @@ module render_octa_shock_mount(z_offset) {
         }
     }
     // external ring
-    translate([0, 0, z_offset - ring_height / 4]) {
+    translate([0, 0, z_offset - external_ring_height / 4]) {
         render_octa_shock_mount_external_ring(0);
     }
     // mount to stand
-    translate([box_radius + mount_corner + ring_wall + ring_arm_gap + 8 + ring_wall / 2 + 4, 0, -(mic_mount_height + mic_mount_radius + ring_height / 4)]) {
+    translate([box_radius + mount_corner + ring_wall + ring_arm_gap + 8 + ring_wall / 2 + 4, 0, -(mic_mount_height + mic_mount_radius + external_ring_height / 4)]) {
         render_octa_shock_mount_stand(0);
     }
 }