| 1 | /* |
| 2 | min y = 0 |
| 3 | max y = 100 |
| 4 | min x = 1205 |
| 5 | max x = 1254 |
| 6 | |
| 7 | Makerfair X carriage plate adapter for the Wilson RepRap. |
| 8 | Copyright (c) 2015 Clinton Ebadi <clinton@unknownlamer.org> |
| 9 | |
| 10 | This program is free software: you can redistribute it and/or modify |
| 11 | it under the terms of the GNU General Public License as published by |
| 12 | the Free Software Foundation, either version 3 of the License, or |
| 13 | (at your option) any later version. |
| 14 | |
| 15 | This program is distributed in the hope that it will be useful, |
| 16 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 17 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 18 | GNU General Public License for more details. |
| 19 | |
| 20 | You should have received a copy of the GNU General Public License |
| 21 | along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 22 | |
| 23 | Measurements reverse engineered from |
| 24 | https://github.com/RickSisco/MakerFarm-Prusa-i3v-12-Inch |
| 25 | |
| 26 | Intended for use with the itty bitty dual extruder series. |
| 27 | |
| 28 | Source needs a good cleanup. Evil loops that don't take advantage of |
| 29 | the geometry of the object abound. |
| 30 | |
| 31 | major todo: |
| 32 | |
| 33 | - square hole placement is a total mess |
| 34 | |
| 35 | */ |
| 36 | |
| 37 | use <MCAD/nuts_and_bolts.scad> |
| 38 | |
| 39 | $fn = 64; |
| 40 | |
| 41 | hole_tolerance = 0.3; // widen holes a bit, may still need to drill out |
| 42 | |
| 43 | // Size of mounting bolt heads so they can be recessed |
| 44 | bolthead_depth = 2; |
| 45 | bolthead_diameter = 5.5 + hole_tolerance; |
| 46 | |
| 47 | // X-Carriage plate size |
| 48 | |
| 49 | // Wilson II |
| 50 | // WARNING: not yet compatible with rack and pinion carriage |
| 51 | carriage_height = 72.35; |
| 52 | carriage_width = 60; |
| 53 | shelf_offset = [0, 3, 0]; // shift the mount for extruder |
| 54 | |
| 55 | // Wilson TS |
| 56 | //carriage_height = 64; |
| 57 | //carriage_width = 51; |
| 58 | //shelf_offset = [0, 0, 0]; // shift the mount for extruder |
| 59 | |
| 60 | plate_width = 75; // wilson carriage is only 50mm wide! |
| 61 | plate_depth = 6 + bolthead_depth; // wilson default depth = 8, makerfarm = 6 |
| 62 | |
| 63 | plate_cut_height = 6.5; |
| 64 | plate_cut_width = 6; |
| 65 | plate_cut_distance = 13.3; |
| 66 | plate_cut_y_offset = 27; |
| 67 | plate_cut_bolt = 3 + hole_tolerance; |
| 68 | plate_cut_x_bolt_offset = plate_cut_distance + plate_cut_bolt / 2; |
| 69 | |
| 70 | plate_extra_height = 6; // make plate a bit taller so it is structurally sound |
| 71 | |
| 72 | plate_height = plate_cut_height + plate_cut_y_offset + plate_extra_height; |
| 73 | |
| 74 | lower_cut_y_offset = 5.33; // 5.325 in CAD |
| 75 | lower_bolt_x_offset = 1.5 + plate_cut_bolt / 2; |
| 76 | lower_bolt_y_offset = 3.275 + plate_cut_bolt / 2; |
| 77 | |
| 78 | carriage_bolt = 4 + hole_tolerance; |
| 79 | carriage_hole_spacing = 23; |
| 80 | carriage_clearance = 20; // holes are 20mm from bottom of plate |
| 81 | carriage_y_offset = plate_cut_y_offset + plate_cut_height + carriage_clearance; |
| 82 | carriage_nut_depth = 3.2 + 3.2/2 + 0.1; // m4 nut depth + half of an m4 nut + tolerance |
| 83 | carriage_offset = [(plate_width - carriage_width) / 2, 0 , 0]; |
| 84 | |
| 85 | corner_radius = 3; // round off the corners to make it look nicer |
| 86 | |
| 87 | module itty_wilson () { |
| 88 | difference () { |
| 89 | union () { |
| 90 | translate (carriage_offset) carriage_mount_base (); |
| 91 | translate (shelf_offset) shelf_mount_base (); |
| 92 | } |
| 93 | rotate ([0, 0, -1]) translate (carriage_offset) carriage_mount_holes (); |
| 94 | translate (shelf_offset) shelf_mount_holes (); |
| 95 | } |
| 96 | } |
| 97 | |
| 98 | itty_wilson (); |
| 99 | |
| 100 | // mount to wilson x-carriage |
| 101 | module carriage_mount_base () { |
| 102 | linear_extrude (height = plate_depth, convexity = 8) { |
| 103 | // outline of plate + bolt holes |
| 104 | translate ([corner_radius, corner_radius, 0]) { |
| 105 | minkowski () { |
| 106 | square ([carriage_width - corner_radius*2, carriage_height - corner_radius*2]); |
| 107 | circle (r = corner_radius); |
| 108 | } |
| 109 | } |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | module carriage_mount_holes () { |
| 114 | #translate ([(carriage_width - carriage_hole_spacing) / 2, (carriage_height - carriage_hole_spacing) /2, 0]) |
| 115 | for (x = [0, carriage_hole_spacing], y = [0, carriage_hole_spacing]) { |
| 116 | translate ([x, y, -50.1]) cylinder (d = carriage_bolt, h = plate_depth+100); |
| 117 | } |
| 118 | |
| 119 | // after extruding, cut out spaces for M4 hex nuts. |
| 120 | translate ([(carriage_width - carriage_hole_spacing) / 2, (carriage_height - carriage_hole_spacing) /2, plate_depth - carriage_nut_depth]) { |
| 121 | for (x = [0, carriage_hole_spacing], y = [0, carriage_hole_spacing]) { |
| 122 | translate ([x, y, 0]) linear_extrude (height = carriage_nut_depth + 0.01) nutHole (size = carriage_bolt, proj = 1); |
| 123 | } |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | // mount for makerfarm extruder shelf |
| 128 | module shelf_mount_base () { |
| 129 | linear_extrude (height = plate_depth, convexity = 8) { |
| 130 | translate ([corner_radius, corner_radius, 0]) { |
| 131 | minkowski () { |
| 132 | square ([plate_width - corner_radius*2, plate_height - corner_radius*2]); |
| 133 | circle (r = corner_radius); |
| 134 | } |
| 135 | } |
| 136 | } |
| 137 | } |
| 138 | |
| 139 | module shelf_mount_holes () { |
| 140 | depth = plate_depth*2+0.4; |
| 141 | translate ([0, 0, -0.1]) { |
| 142 | // upper shelf mount |
| 143 | translate ([plate_cut_width/2, plate_cut_y_offset, 0]) { |
| 144 | for (x = [-0.001, plate_cut_width + plate_cut_distance, |
| 145 | plate_width - plate_cut_width + 0.001, plate_width - plate_cut_width*2 - plate_cut_distance]) |
| 146 | translate ([x, plate_cut_height/2, 0]) cube ([plate_cut_width + hole_tolerance, plate_cut_height, depth], center = true); |
| 147 | |
| 148 | // looks like the bolt is at the midpoint between the cut outs |
| 149 | for (x = [plate_cut_x_bolt_offset - plate_cut_width, plate_width - plate_cut_x_bolt_offset]) |
| 150 | translate ([x, plate_cut_height / 2, 0]) { |
| 151 | #cylinder (d = plate_cut_bolt, h = depth); |
| 152 | cylinder (d = bolthead_diameter, h = bolthead_depth+0.1); |
| 153 | } |
| 154 | |
| 155 | } |
| 156 | |
| 157 | // lower shelf mount |
| 158 | translate ([0, lower_cut_y_offset, 0]) { |
| 159 | for (x = [plate_cut_width/2 - 0.01, plate_width - plate_cut_width/2 + 0.01]) { |
| 160 | // lower cut out is closer to 6mm than 6.5mm in cad drawings |
| 161 | translate ([x, plate_cut_height/2, 0]) cube ([plate_cut_width, plate_cut_height - 0.5, depth*2], center=true); |
| 162 | } |
| 163 | // I think the intention is for the screw holes to be centered over the cut out |
| 164 | for (x = [lower_bolt_x_offset, plate_width - lower_bolt_x_offset]) |
| 165 | translate ([x, plate_cut_height + lower_bolt_y_offset, 0]) { |
| 166 | cylinder (d = plate_cut_bolt, h = depth); |
| 167 | cylinder (d = bolthead_diameter, h = bolthead_depth+0.1); |
| 168 | } |
| 169 | } |
| 170 | } |
| 171 | } |