Parcourir la source

add upper flare and stalk to new H2N bridge code, add locking screw to one of the columns of the H2N base

Fernando Pablo Lopez-Lezcano il y a 9 ans
Parent
commit
4357306503
1 fichiers modifiés avec 79 ajouts et 29 suppressions
  1. 79 29
      TinySpHEAR_H2N_common.scad

+ 79 - 29
TinySpHEAR_H2N_common.scad

@@ -103,6 +103,13 @@ h2n_mount_fit = 0.04;
 h2n_bridge_base_height = 7.0;
 h2n_bridge_stalk_height = 45.0;
 
+// bridge funnel and stalk dimensions
+h2n_bridge_array_height = 51;
+h2n_bridge_cylinder_height = 30;
+
+// thread pedestal
+h2n_thread_pedestal = 0.5;
+
 // bridge base dimensions
 h2n_bridge_circle = 24.00;
 h2n_bridge_band_w = 13.25;
@@ -137,7 +144,7 @@ module h2n_ring(width, depth, radius, height, tilt, slot_w, slot_d, band_wall, w
         conical_rounded_box(height, width / 2 + band_wall, depth / 2 +  band_wall, radius - thin_mint, band_wall, height * tan(tilt));
         for (m = [0, 1]) mirror([m, 0, 0]) {
             translate([-(width / 2 + col_rad - col_wall), 0, 0]) {
-                tilted_cylinder(col_rad, height, height * tan(tilt));
+                tilted_cylinder(col_rad, height + thin_mint, height * tan(tilt));
             }
         }
     }
@@ -152,9 +159,9 @@ module h2n_ring(width, depth, radius, height, tilt, slot_w, slot_d, band_wall, w
         }
     }
     // add TinySpHEAR "branding"
-    translate([0, -(h2n_depth_m / 2 + band_wall), h2n_band_height / 2]) scale(0.5) {
+    translate([0, -(h2n_depth_m / 2 + band_wall - 0.55 * wall), h2n_band_height / 2]) scale(0.5) {
         rotate([90 - h2n_col_tilt, 0, 0]) {
-            linear_extrude(height = 0.2, center = "true") {
+            linear_extrude(height = wall, center = "true") {
                 text("TinySpHEAR", size = 8.0, spacing = 1.1, halign = "center", valign = "center", font = "Liberation Sans");
             }
         }
@@ -257,30 +264,52 @@ module h2n_column_core(height, ring_height, tilt, transition, radius, col_wall,
     }
 }
 
-module h2n_column(height, ring_height, tilt, transition, radius, col_wall, wall) {
-    // side tubes for cables
-    difference() {
-        h2n_column_core(height, ring_height, tilt, transition, radius, col_wall, wall, 0);
-        // hollow out the cylinder
-        tilted_cylinder(radius, height, height * tan(tilt));
-        // this fine adjustment determines how much the side walls "hug" the H2N
-        width_fit = 0.2;
-        translate([radius + 2 * wall - width_fit, 0, 0]) {
-            tilted_half_rounded_box(height + thin_mint, 3.8, h2n_side_band_w / 2, 1.5, 4 * wall, height * tan(tilt));
-        }
-        // trim side of tubes with a vertical plane
-        translate([-(radius * 2 + col_wall) + col_wall / 2, -(radius + col_wall), 0]) {
-            cube([col_wall * 2, (radius + col_wall) * 2, 30]);
-        }
-    }
-   // add a thicker wall at the bottom of the side trim
+module h2n_column(height, ring_height, tilt, transition, radius, col_wall, wall, screw_mount) {
     difference() {
-        translate([-(radius), -(radius + col_wall), 0]) {
-            cube([wall, (radius + col_wall) * 2, height]);
+        union() {
+            // side tubes for cables
+            difference() {
+                h2n_column_core(height, ring_height, tilt, transition, radius, col_wall, wall, 0);
+                // hollow out the cylinder
+                translate([0, 0, screw_mount]) tilted_cylinder(radius, height, height * tan(tilt));
+                // and shave the inside for the screw mount side
+                if (screw_mount > 0) {
+                    translate([0, -radius, 0]) {
+                        tilted_cube(wall * 2, radius * 2, height, height * tan(tilt));
+                    }
+                }
+                // this fine adjustment determines how much the side walls "hug" the H2N
+                width_fit = 0.2;
+                translate([radius + 2 * wall - width_fit, 0, 0]) {
+                    tilted_half_rounded_box(height + thin_mint, 3.8, h2n_side_band_w / 2, 1.5, 4 * wall, height * tan(tilt));
+                }
+                // trim side of tubes with a vertical plane
+                translate([-(radius * 2 + col_wall) + col_wall / 2, -(radius + col_wall), 0]) {
+                    cube([col_wall * 2, (radius + col_wall) * 2, 30]);
+                }
+            }
+           // add a thicker wall at the bottom of the side trim
+            difference() {
+                translate([-(radius), -(radius + col_wall), 0]) {
+                    cube([wall, (radius + col_wall) * 2, height]);
+                }
+                difference() {
+                    tilted_cylinder(radius * 4, height, height * tan(tilt));
+                    tilted_cylinder(radius + col_wall, height, height * tan(tilt));
+                }
+            }
         }
-        difference() {
-            tilted_cylinder(radius * 4, height, height * tan(tilt));
-            tilted_cylinder(radius + col_wall, height, height * tan(tilt));
+        // holes for screws that attach to the columns
+        // Number 0 Size, 1/4" Long = thread diameter: 1.6mm, head diameter: 2.75
+        if (screw_mount > 0) {
+            translate([-2 * radius, 0, screw_mount * 3/4]) {
+                rotate([0, 90, 0]) {
+                    cylinder(r = (1.6 + 0.1)/2, h = 4 * radius, $fn = facets);
+                }
+                rotate([0, 90, 0]) {
+                    cylinder(r = 3.25/2, h = 1.75 * radius, $fn = facets);
+                }
+            }
         }
     }
     // connector to bridge
@@ -326,8 +355,9 @@ module h2n_column(height, ring_height, tilt, transition, radius, col_wall, wall)
 
 module h2n_columns(width, height, ring_height, tilt, transition, radius, col_wall, wall) {
     for (m = [0, 1]) mirror([m, 0, 0]) {
+        screw_mount = height * 3/4 * (1 - m);
         translate([-(width / 2 + col_wall - wall / 2), 0, 0]) {
-            h2n_column(height, ring_height, tilt, transition, radius, col_wall, wall);
+            h2n_column(height, ring_height, tilt, transition, radius, col_wall, wall, screw_mount);
         }
     }
 }
@@ -597,7 +627,6 @@ module h2n_bridge_core_no_ws(width, base_height, radius, col_wall, wall, offset)
 }
 
 module h2n_bridge_core(width, base_height, radius, col_wall, wall, thread_radius, thread_height, offset) {
-    pedestal = 0.5;
     difference() {
         hull() {
             // top of bridge
@@ -631,14 +660,14 @@ module h2n_bridge_core(width, base_height, radius, col_wall, wall, thread_radius
     }
     if (thread_radius > 0 && offset == 0) {
         // pedestal for thread
-        translate([0, 0, base_height + radius + col_wall + offset + pedestal]) {
+        translate([0, 0, base_height + radius + col_wall + offset + h2n_thread_pedestal]) {
             difference() {
                 cylinder(r = thread_radius + windscreen_thread_depth + offset, h = wall, $fn = facets);
                 cylinder(r = thread_radius - windscreen_thread_depth - wall, h = wall, $fn = facets);
             }
         }
         // thread
-        translate([0, 0, base_height + radius + col_wall + wall + pedestal]) {
+        translate([0, 0, base_height + radius + col_wall + wall + h2n_thread_pedestal]) {
             difference() {
                 metric_thread(diameter = thread_radius * 2, pitch = windscreen_thread_pitch,
                     length = thread_height, angle = windscreen_thread_angle, internal = false);
@@ -710,6 +739,27 @@ module h2n_bridge_no_ws(width, base_height, stalk_height, radius, col_wall, stal
 // bridge with thread for windscreen mount
 
 module h2n_bridge(width, base_height, stalk_height, radius, col_wall, stalk_wall, wall, thread_radius, thread_height) {
+    translate([0, 0, base_height + radius + col_wall + thread_height + h2n_thread_pedestal]) {
+        // capsule array mount
+        rotate([0, 0, -90]) translate([0, 0, h2n_bridge_array_height]) {
+            tetra_capsule_array_mount([-45, 135], mount_radius, wall);
+        }
+        // cylindrical stalk
+        translate([0, 0, h2n_bridge_array_height - h2n_bridge_cylinder_height]) {
+            difference() {
+                cylinder(r = mount_radius + wall, h = h2n_bridge_cylinder_height, $fn = facets);
+                cylinder(r = mount_radius, h = h2n_bridge_cylinder_height, $fn = facets);
+            }
+        }
+        // conical funnel to bridge
+        fun_height = h2n_bridge_array_height - h2n_bridge_cylinder_height;
+        difference() {
+            cylinder(r1 = windscreen_thread_radius - windscreen_thread_depth, r2 = mount_radius + wall,
+                    h = fun_height, $fn = facets);
+            cylinder(r1 = windscreen_thread_radius - windscreen_thread_depth - wall, r2 = mount_radius,
+                    h = fun_height, $fn = facets);
+        }
+    }
     difference() {
         union() {
             h2n_bridge_core(width, base_height, radius, col_wall, wall, thread_radius, thread_height, 0);