Explorar el Código

add robotic arm mount, fix rendering for new capsule array (temporary hack, should be done with parameters)

Fernando Pablo Lopez-Lezcano hace 7 años
padre
commit
dc0b51c8d4
Se han modificado 1 ficheros con 49 adiciones y 34 borrados
  1. 49 34
      Octathingy_mount_pcb.scad

+ 49 - 34
Octathingy_mount_pcb.scad

@@ -996,6 +996,11 @@ module octa_shock_mount_band(band_height, radius, delta_radius) {
             rotate([0, 0, -22.5 + 90]) translate([-40, -(1.273 * radius)/2, 0]) {
                 cube([80, 1.273 * radius, band_height + thin_mint]);
             }
+            // space for screw heads
+            slot_w = 4.0;
+            slot_d = 1.5;
+            for (r = [0, 180]) rotate([0, 0, r - 45])
+            translate([radius - slot_d/2, -slot_w/2, 0]) cube([slot_d, slot_w, band_height]);
         }
         // the outer octagon
         rounded_octagon_wall(band_height, radius + delta_radius, 2 * wall);
@@ -1131,52 +1136,62 @@ module octa_quik_release_stand_mount(band_height, radius) {
     }
 }
 
-// stand mount for robotic arm
+// mount pillars that plug into robotic arm sockets
 
-module octa_arm_mount(band_height, radius, height) {
-    vertical_offset = 18;
-    mount_offset = 3.0;
-    // octagonal band
-    octa_shock_mount_band(band_height, radius, pcb_version == 2 ? 7.5 : 6);
+module sphear_arm_mount_pillars(radius, height, grip_sep, grip_width) {
     // pillars for arm grips
-    // grip_width = 21.8;
-    grip_width = 15;
-    for (m = [0, 1]) mirror([m, 0, 0]) translate([radius + 3 * wall, -grip_width/2, 0]) {
-        cube([5, grip_width, height - 50.0]);
+    m_r = 1.0;
+    for (m = [0, 1]) mirror([m, 0, 0]) translate([radius + 3 * wall + m_r, - grip_width/2 + m_r, 0]) {
+        minkowski() {
+            cube([5 - 2*m_r, grip_width - 2*m_r, height]);
+            cylinder(r = m_r, h = thin_mint, $fn = 32);
+        }
     }
     // transition
-    grip_sep = 25.4 * 1.5 / 2;
+    tran_h = 30.0;
     for (m = [0, 1]) mirror([m, 0, 0]) {
-        difference() {
-            hull() {
-                translate([radius + 3 * wall, -grip_width/2, height - 50]) {
-                    cube([5, grip_width, thin_mint]);
-                }
-                translate([grip_sep - wall, -(arm_w + 2 * fit + 2 * wall)/2, height - 20.0]) {
-                    cube([arm_l - 2 * fit + 2 * wall, arm_w - 2 * fit + 2 * wall, thin_mint]);
+        hull() {
+            translate([radius + 3 * wall + m_r, -grip_width/2 + m_r, height]) {
+                minkowski() {
+                    cube([5 - 2 * m_r, grip_width - 2 * m_r, thin_mint]);
+                    cylinder(r = m_r, h = thin_mint, $fn = 32);
                 }
             }
-            *hull() {
-                translate([radius + 3 * wall, -grip_width/2, height - 50]) {
-                    translate([2 * wall, 2 * wall, 0]) cube([5 - 4 * wall, grip_width - 4 * wall, thin_mint]);
-                }
-                translate([grip_sep, -(arm_w + 2 * fit)/2, height - 20.0]) {
-                    translate([2 * wall, 2 * wall, 0]) cube([arm_l - 2 * fit - 4 * wall, arm_w - 2 * fit - 4 * wall, thin_mint]);
+            translate([grip_sep - wall + m_r, -(arm_w + 2 * fit + 2 * wall)/2 + m_r, height + tran_h]) {
+                minkowski() {
+                    cube([arm_l - 2 * fit + 2 * wall - 2 * m_r, arm_w - 2 * fit + 2 * wall - 2 * m_r, thin_mint]);
+                    cylinder(r = m_r, h = thin_mint, $fn = 32);
                 }
             }
         }
     }
     // grip pillar, plugs into slots
     for (m = [0, 1]) mirror([m, 0, 0]) {
-        translate([grip_sep, -(arm_w + 2 * fit)/2, height - 20.0]) {
-            difference() {
-                cube([arm_l - 2 * fit, arm_w - 2 * fit, 20 - 3.0]);
-                *translate([2 * wall, 2 * wall, 0]) cube([arm_l - 2 * fit - 4 * wall, arm_w - 2 * fit - 4 * wall, 20]);
+        translate([grip_sep + m_r, -(arm_w + 2 * fit)/2 + m_r, height + tran_h]) {
+            minkowski() {
+                cube([arm_l - 2 * fit - 2 * m_r, arm_w - 2 * fit - 2 * m_r, 20 - 3.0]);
+                cylinder(r = m_r, h = thin_mint, $fn = 32);
             }
         }
     }
 }
 
+// octathingy arm mount for robotic arm
+
+module octa_arm_mount(band_height, radius, height) {
+    vertical_offset = 18;
+    mount_offset = 3.0;
+    // octagonal band
+    octa_shock_mount_band(band_height, radius, pcb_version == 2 ? 7.5 : 6);
+    // pillars for arm grips
+    //
+    // this separation between pillars comes from original arm gripper (it
+    // could be something else now), this should be move to a common parameter
+    grip_sep = 25.4 * 1.5 / 2;
+    grip_width = 15.0;
+    sphear_arm_mount_pillars(radius, height - 50.0, grip_sep, grip_width);
+}
+
 ////
 //// render all the different parts
 ////
@@ -1186,7 +1201,7 @@ module octa_arm_mount(band_height, radius, height) {
 module render_octa_capsule_flare(z_offset) {
     translate([0, 0, z_offset]) {
         octa_mount_flare(pcb_hi_clear + pcb_hi_exp, mount_lip, flare_height, octa_pcb_radius, mount_radius + wall, stalk_height, 1);
-        translate([0, 0, pcb_hi_clear + pcb_hi_exp + flare_height + stalk_height]) {
+        *translate([0, 0, pcb_hi_clear + pcb_hi_exp + flare_height + stalk_height]) {
             octa_capsule_array_mount([45, 135, -45, -135]);
         }
     }
@@ -1261,9 +1276,9 @@ module render_octa_mount_dsub_flare(z_offset, flip) {
     }
     rotate([0, updown, 90]) {
         conn_offset = 2.0;
-        translate([0, 0, -mount_lip]) {
-            octa_mount_flare_dsub(pcb_low_clear + pcb_low_exp, mount_lip, 20,
-                                octa_pcb_radius,
+        translate([0, 0, z_offset - mount_lip]) {
+            octa_mount_flare_dsub(pcb_low_clear + pcb_low_exp - (pcb_version == 2 ? 13 : 0), mount_lip,
+                                pcb_version == 2 ? 33 : 20, octa_pcb_radius,
                                 conn_core_o_diam / 2, conn_core_o_diam + conn_offset);
         }
     }
@@ -1273,7 +1288,7 @@ module render_octa_mount_dsub_flare(z_offset, flip) {
 //
 module render_octa_body(z_offset, spread, showint) {
     rotate([0, 180, 0]) {
-        render_octa_mount_dsub_flare(0);
+        render_octa_mount_dsub_flare(pcb_version == 2 ? 10 : 0, 0);
     }
     lippy = spread - mount_lip;
     render_octa_pcb_mount(lippy, showint);
@@ -1285,7 +1300,7 @@ module render_octa_body(z_offset, spread, showint) {
 module render_octa_microphone(z_offset, spread) {
     render_octa_body(z_offset, spread);
     lippy = spread - mount_lip;
-    render_octa_capsule_array(z_offset + octa_pcb_mount_height + mount_top_height +
+    *render_octa_capsule_array(z_offset + octa_pcb_mount_height + mount_top_height +
             flare_height + stalk_height + pcb_hi_clear + pcb_hi_exp + 2 * lippy + spread + mic_radius);
 }