Commit | Line | Data |
---|---|---|
f9a12374 CE |
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 | ||
62f36d7f CE |
31 | major todo: |
32 | ||
33 | - square hole placement is a total mess | |
34 | ||
f9a12374 CE |
35 | */ |
36 | ||
37 | use <MCAD/nuts_and_bolts.scad> | |
38 | ||
62f36d7f CE |
39 | $fn = 64; |
40 | ||
a88774ed | 41 | hole_tolerance = 0.3; // widen holes a bit, may still need to drill out |
70d8c6b3 CE |
42 | |
43 | // Size of mounting bolt heads so they can be recessed | |
736cd53b | 44 | bolthead_depth = 2; |
70d8c6b3 CE |
45 | bolthead_diameter = 5.5 + hole_tolerance; |
46 | ||
b7ecf412 CE |
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 | |
f9a12374 CE |
59 | |
60 | plate_width = 75; // wilson carriage is only 50mm wide! | |
70d8c6b3 | 61 | plate_depth = 6 + bolthead_depth; // wilson default depth = 8, makerfarm = 6 |
f9a12374 CE |
62 | |
63 | plate_cut_height = 6.5; | |
64 | plate_cut_width = 6; | |
70d8c6b3 | 65 | plate_cut_distance = 13.3; |
f9a12374 | 66 | plate_cut_y_offset = 27; |
84a5e569 | 67 | plate_cut_bolt = 3 + hole_tolerance; |
70d8c6b3 | 68 | plate_cut_x_bolt_offset = plate_cut_distance + plate_cut_bolt / 2; |
f9a12374 | 69 | |
a88774ed | 70 | plate_extra_height = 6; // make plate a bit taller so it is structurally sound |
84a5e569 | 71 | |
70d8c6b3 | 72 | plate_height = plate_cut_height + plate_cut_y_offset + plate_extra_height; |
f9a12374 CE |
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 | ||
84a5e569 | 78 | carriage_bolt = 4 + hole_tolerance; |
62f36d7f | 79 | carriage_hole_spacing = 23; |
f9a12374 CE |
80 | carriage_clearance = 20; // holes are 20mm from bottom of plate |
81 | carriage_y_offset = plate_cut_y_offset + plate_cut_height + carriage_clearance; | |
84a5e569 | 82 | carriage_nut_depth = 3.2 + 3.2/2 + 0.1; // m4 nut depth + half of an m4 nut + tolerance |
70d8c6b3 | 83 | carriage_offset = [(plate_width - carriage_width) / 2, 0 , 0]; |
f9a12374 CE |
84 | |
85 | corner_radius = 3; // round off the corners to make it look nicer | |
86 | ||
736cd53b CE |
87 | module itty_wilson () { |
88 | difference () { | |
89 | union () { | |
90 | translate (carriage_offset) carriage_mount_base (); | |
b7ecf412 | 91 | translate (shelf_offset) shelf_mount_base (); |
736cd53b | 92 | } |
b7ecf412 CE |
93 | rotate ([0, 0, -1]) translate (carriage_offset) carriage_mount_holes (); |
94 | translate (shelf_offset) shelf_mount_holes (); | |
70d8c6b3 | 95 | } |
70d8c6b3 | 96 | } |
f9a12374 | 97 | |
736cd53b CE |
98 | itty_wilson (); |
99 | ||
70d8c6b3 CE |
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 () { | |
736cd53b | 106 | square ([carriage_width - corner_radius*2, carriage_height - corner_radius*2]); |
70d8c6b3 | 107 | circle (r = corner_radius); |
f9a12374 | 108 | } |
f9a12374 | 109 | } |
70d8c6b3 CE |
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]) { | |
736cd53b | 116 | translate ([x, y, -50.1]) cylinder (d = carriage_bolt, h = plate_depth+100); |
70d8c6b3 CE |
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); | |
f9a12374 CE |
123 | } |
124 | } | |
125 | } | |
126 | ||
84a5e569 | 127 | // mount for makerfarm extruder shelf |
70d8c6b3 CE |
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); | |
84a5e569 | 134 | } |
70d8c6b3 CE |
135 | } |
136 | } | |
137 | } | |
f9a12374 | 138 | |
70d8c6b3 | 139 | module shelf_mount_holes () { |
736cd53b | 140 | depth = plate_depth*2+0.4; |
70d8c6b3 | 141 | translate ([0, 0, -0.1]) { |
736cd53b CE |
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, | |
70d8c6b3 | 145 | plate_width - plate_cut_width + 0.001, plate_width - plate_cut_width*2 - plate_cut_distance]) |
736cd53b | 146 | translate ([x, plate_cut_height/2, 0]) cube ([plate_cut_width + hole_tolerance, plate_cut_height, depth], center = true); |
70d8c6b3 CE |
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 | } | |
84a5e569 | 154 | |
84a5e569 CE |
155 | } |
156 | ||
157 | // lower shelf mount | |
158 | translate ([0, lower_cut_y_offset, 0]) { | |
62f36d7f | 159 | for (x = [plate_cut_width/2 - 0.01, plate_width - plate_cut_width/2 + 0.01]) { |
84a5e569 | 160 | // lower cut out is closer to 6mm than 6.5mm in cad drawings |
70d8c6b3 CE |
161 | translate ([x, plate_cut_height/2, 0]) cube ([plate_cut_width, plate_cut_height - 0.5, depth*2], center=true); |
162 | } | |
84a5e569 CE |
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]) | |
70d8c6b3 CE |
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 | } | |
f9a12374 CE |
169 | } |
170 | } | |
f9a12374 | 171 | } |