etc: scads of random scad
[clinton/3d-models.git] / carriage adapter / itty-wilson.scad
CommitLineData
f9a12374
CE
1/*
2min y = 0
3max y = 100
4min x = 1205
5max x = 1254
6
7Makerfair X carriage plate adapter for the Wilson RepRap.
8Copyright (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
23Measurements reverse engineered from
24https://github.com/RickSisco/MakerFarm-Prusa-i3v-12-Inch
25
26Intended for use with the itty bitty dual extruder series.
27
28Source needs a good cleanup. Evil loops that don't take advantage of
29the geometry of the object abound.
30
62f36d7f
CE
31major todo:
32
33 - square hole placement is a total mess
34
f9a12374
CE
35*/
36
37use <MCAD/nuts_and_bolts.scad>
38
62f36d7f
CE
39$fn = 64;
40
a88774ed 41hole_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 44bolthead_depth = 2;
70d8c6b3
CE
45bolthead_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
51carriage_height = 72.35;
52carriage_width = 60;
53shelf_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
60plate_width = 75; // wilson carriage is only 50mm wide!
70d8c6b3 61plate_depth = 6 + bolthead_depth; // wilson default depth = 8, makerfarm = 6
f9a12374
CE
62
63plate_cut_height = 6.5;
64plate_cut_width = 6;
70d8c6b3 65plate_cut_distance = 13.3;
f9a12374 66plate_cut_y_offset = 27;
84a5e569 67plate_cut_bolt = 3 + hole_tolerance;
70d8c6b3 68plate_cut_x_bolt_offset = plate_cut_distance + plate_cut_bolt / 2;
f9a12374 69
a88774ed 70plate_extra_height = 6; // make plate a bit taller so it is structurally sound
84a5e569 71
70d8c6b3 72plate_height = plate_cut_height + plate_cut_y_offset + plate_extra_height;
f9a12374
CE
73
74lower_cut_y_offset = 5.33; // 5.325 in CAD
75lower_bolt_x_offset = 1.5 + plate_cut_bolt / 2;
76lower_bolt_y_offset = 3.275 + plate_cut_bolt / 2;
77
84a5e569 78carriage_bolt = 4 + hole_tolerance;
62f36d7f 79carriage_hole_spacing = 23;
f9a12374
CE
80carriage_clearance = 20; // holes are 20mm from bottom of plate
81carriage_y_offset = plate_cut_y_offset + plate_cut_height + carriage_clearance;
84a5e569 82carriage_nut_depth = 3.2 + 3.2/2 + 0.1; // m4 nut depth + half of an m4 nut + tolerance
70d8c6b3 83carriage_offset = [(plate_width - carriage_width) / 2, 0 , 0];
f9a12374
CE
84
85corner_radius = 3; // round off the corners to make it look nicer
86
736cd53b
CE
87module 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
98itty_wilson ();
99
70d8c6b3
CE
100// mount to wilson x-carriage
101module 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
113module 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
128module 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 139module 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}