Improved tolerance and positioning
[clinton/3d-models.git] / carriage adapter / itty-wilson.scad
index 75cbb6c..3abb13d 100644 (file)
@@ -28,98 +28,134 @@ Intended for use with the itty bitty dual extruder series.
 Source needs a good cleanup. Evil loops that don't take advantage of
 the geometry of the object abound.
 
+major todo:
+
+ - square hole placement is a total mess
+
 */
 
 use <MCAD/nuts_and_bolts.scad>
 
-carriage_height = 65;
+$fn = 64;
+
+hole_tolerance = 0.6; // widen holes a bit, may still need to drill out
+
+// Size of mounting bolt heads so they can be recessed
+bolthead_depth = 2;
+bolthead_diameter = 5.5 + hole_tolerance;
+
+carriage_height = 64;
+carriage_width = 51;
 
 plate_width = 75; // wilson carriage is only 50mm wide!
-plate_depth = 8; // wilson default depth = 8, makerfarm = 6
+plate_depth = 6 + bolthead_depth; // wilson default depth = 8, makerfarm = 6
 
 plate_cut_height = 6.5;
 plate_cut_width = 6;
-plate_cut_distance = 13;
-plate_cut_center = 25.1;
+plate_cut_distance = 13.3;
 plate_cut_y_offset = 27;
-plate_cut_bolt = 3;
-plate_cut_x_bolt_offset = 10.5 + plate_cut_bolt / 2;
+plate_cut_bolt = 3 + hole_tolerance;
+plate_cut_x_bolt_offset = plate_cut_distance + plate_cut_bolt / 2;
+
+plate_extra_height = 4; // make plate a bit taller so it is structurally sound
 
-plate_height = carriage_height + plate_cut_height + plate_cut_y_offset; //100;
+plate_height = plate_cut_height + plate_cut_y_offset + plate_extra_height;
 
 lower_cut_y_offset = 5.33; // 5.325 in CAD
 lower_bolt_x_offset = 1.5 + plate_cut_bolt / 2;
 lower_bolt_y_offset = 3.275 + plate_cut_bolt / 2;
 
-carriage_bolt = 4;
-carriage_hole_spacing = 24;
+carriage_bolt = 4 + hole_tolerance;
+carriage_hole_spacing = 23;
 carriage_clearance = 20; // holes are 20mm from bottom of plate
 carriage_y_offset =  plate_cut_y_offset + plate_cut_height + carriage_clearance;
-carriage_nut_depth = 2 * 3.2 + 0.1; // m4 nut depth + tolerance
+carriage_nut_depth = 3.2 + 3.2/2 + 0.1; // m4 nut depth + half of an m4 nut + tolerance
+carriage_offset = [(plate_width - carriage_width) / 2, 0 , 0];
 
 corner_radius = 3; // round off the corners to make it look nicer
 
-bump_strip = false; // generate holes to mount a strip to hit the end stop -- experimental / bad code
-
-module plate_outline () {
-     $fn = 16;
-      difference () {
-          minkowski () {
-               translate ([corner_radius, corner_radius, 0])
-                    square ([plate_width - corner_radius*2, plate_height - corner_radius*2]);
-               circle (r = corner_radius);
-          }
-
-         // upper plate mount
-         translate ([0, plate_cut_y_offset, 0]) {
-              for (x = [-0.01, plate_cut_width + plate_cut_distance, plate_cut_width*2 + plate_cut_distance + plate_cut_center, plate_cut_width*3 + plate_cut_distance*2 + plate_cut_center + 0.01])
-                   translate ([x, 0, 0]) square ([plate_cut_width, plate_cut_height]);
-
-              // looks like the bolt is at the midpoint between the cut outs
-              for (x = [plate_cut_x_bolt_offset, plate_width - plate_cut_x_bolt_offset])
-                   translate ([x, plate_cut_height / 2, 0]) circle (d = plate_cut_bolt, $fn = 16);
+module itty_wilson () {
+     difference () {
+         union () {
+              translate (carriage_offset) carriage_mount_base ();
+              shelf_mount_base ();
          }
+         translate (carriage_offset) carriage_mount_holes ();
+         shelf_mount_holes ();
+     }
+}
 
-         // lower plate mount
-         translate ([0, lower_cut_y_offset, 0]) {
-              for (x = [-0.01, plate_width - plate_cut_width + 0.01]) {
-                   // lower cut out is closer to 6mm than 6.5mm in cad drawings
-                   translate ([x, -0.01, 0]) square ([plate_cut_width, plate_cut_height - 0.5]);
-              }
-              // I think the intention is for the screw holes to be centered over the cut out
-              for (x = [lower_bolt_x_offset, plate_width - lower_bolt_x_offset])
-                   translate ([x, plate_cut_height + lower_bolt_y_offset, 0]) circle (d = plate_cut_bolt, $fn = 16);
-         }
+itty_wilson ();
 
-         // mount to wilson x-carriage
-         translate ([(plate_width - carriage_hole_spacing) / 2, carriage_y_offset, 0])
-              for (x = [0, carriage_hole_spacing], y = [0, carriage_hole_spacing]) {
-                   translate ([x, y, 0]) circle (d = carriage_bolt, $fn = 16);
+// mount to wilson x-carriage
+module carriage_mount_base () {
+     linear_extrude (height = plate_depth, convexity = 8) {
+         // outline of plate + bolt holes
+         translate ([corner_radius, corner_radius, 0]) {
+              minkowski () {
+                   square ([carriage_width - corner_radius*2, carriage_height - corner_radius*2]);
+                   circle (r = corner_radius);
               }
-
-         if (bump_strip) {
-              translate ([6, carriage_y_offset, 0])
-                   for (y = [0, carriage_hole_spacing]) {
-                        translate ([0, y, 0]) circle (d = carriage_bolt, $fn = 16);
-                   }
          }
      }
 }
 
-difference () {
-     linear_extrude (height = plate_depth, convexity = 50) plate_outline ();
-     // after extruding, cut out spaces for M4 hex nuts (6 - 6.5mm deep, for two nuts)
-     translate ([(plate_width - carriage_hole_spacing) / 2, carriage_y_offset, plate_depth - carriage_nut_depth]) {
+module carriage_mount_holes () {
+     #translate ([(carriage_width - carriage_hole_spacing) / 2, (carriage_height - carriage_hole_spacing) /2, 0])
+     for (x = [0, carriage_hole_spacing], y = [0, carriage_hole_spacing]) {
+         translate ([x, y, -50.1]) cylinder (d = carriage_bolt, h = plate_depth+100);
+     }
+
+     // after extruding, cut out spaces for M4 hex nuts.
+     translate ([(carriage_width - carriage_hole_spacing) / 2, (carriage_height - carriage_hole_spacing) /2, plate_depth - carriage_nut_depth]) {
          for (x = [0, carriage_hole_spacing], y = [0, carriage_hole_spacing]) {
               translate ([x, y, 0]) linear_extrude (height = carriage_nut_depth + 0.01) nutHole (size = carriage_bolt, proj = 1);
          }
      }
+}
 
-     if (bump_strip) {
-         translate ([6, carriage_y_offset, plate_depth - carriage_nut_depth/2]) {
-              for (y = [0, carriage_hole_spacing]) {
-                   translate ([0, y, 0]) linear_extrude (height = carriage_nut_depth/2 + 0.01) nutHole (size = carriage_bolt, proj = 1);
+// mount for makerfarm extruder shelf
+module shelf_mount_base () {
+     linear_extrude (height = plate_depth, convexity = 8) {
+         translate ([corner_radius, corner_radius, 0]) {
+              minkowski () {
+                   square ([plate_width - corner_radius*2, plate_height - corner_radius*2]);
+                   circle (r = corner_radius);
               }
          }
      }
 }
+
+module shelf_mount_holes () {
+     depth = plate_depth*2+0.4;
+     translate ([0, 0, -0.1]) {
+         // upper shelf mount
+         translate ([plate_cut_width/2, plate_cut_y_offset, 0]) {
+              for (x = [-0.001, plate_cut_width + plate_cut_distance,
+                             plate_width - plate_cut_width + 0.001, plate_width - plate_cut_width*2 - plate_cut_distance])
+                        translate ([x, plate_cut_height/2, 0]) cube ([plate_cut_width + hole_tolerance, plate_cut_height, depth], center = true);
+
+                        // looks like the bolt is at the midpoint between the cut outs
+                        for (x = [plate_cut_x_bolt_offset - plate_cut_width, plate_width - plate_cut_x_bolt_offset])
+                             translate ([x, plate_cut_height / 2, 0]) {
+                                  #cylinder (d = plate_cut_bolt, h = depth);
+                                  cylinder (d = bolthead_diameter, h = bolthead_depth+0.1);
+                             }
+
+              }
+
+              // lower shelf mount
+              translate ([0, lower_cut_y_offset, 0]) {
+                   for (x = [plate_cut_width/2 - 0.01, plate_width - plate_cut_width/2 + 0.01]) {
+                        // lower cut out is closer to 6mm than 6.5mm in cad drawings
+                        translate ([x, plate_cut_height/2, 0]) cube ([plate_cut_width, plate_cut_height - 0.5, depth*2], center=true);
+              }
+                   // I think the intention is for the screw holes to be centered over the cut out
+                   for (x = [lower_bolt_x_offset, plate_width - lower_bolt_x_offset])
+                        translate ([x, plate_cut_height + lower_bolt_y_offset, 0]) {
+                             cylinder (d = plate_cut_bolt, h = depth);
+                             cylinder (d = bolthead_diameter, h = bolthead_depth+0.1);
+                        }
+              }
+         }
+}