Welcome to mirror list, hosted at ThFree Co, Russian Federation.

flyingExtruderSuspender.scad - github.com/haydnhuntley/kumu-3d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e6c76805fa3ce26a3ecf3a5f0056ab33dea1c6ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
// Flying extruder suspender.
// This works with Shane's extruder (which works quite well) and many others.
//
// Requires:
// Qty: Description
//  2: M3x16 SHCS for pinching motor.
//  2: M3 nuts for pinching motor.
//  1: M3x10 SHCS for suspending motor.
//  1: M3 nylock nut for suspending motor.
//  3: 190mm long pieces of 1/4" (6mm) inside diameter 3/8" (9mm) outside
//     diameter rubber tubing for suspending from carriages.  If you're using
//     this on a different sized printer, then the rubber tubing should be a
//     little bit more than half the length of the horizontal extrusions.
//  3: M3 nylock nuts for attaching to the M3x35 SHCS on the carriages.
//  6: small zip ties for securing rubber tubing.
//  1: Key-Bak "Super48" heavy duty retractable key holder, 48" Kevlar cord,
//     8-10 oz retraction force (which seems to be plenty).  Here is the Amazon
//     link:  https://www.amazon.com/KEY-BAK-Retractable-Stainless-Polycarbonate-Oversized/dp/B0088MQ9JS
//  4: small zip ties, two to attach the Key-Bak to the frame, one to act as a
//     as a filament guide near the top, and one to attach the Key-Bak to
//	   motorWyeSuspender (with a little bit of string).
//
//
// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0
// International License.
// Visit:  http://creativecommons.org/licenses/by-sa/4.0/
//
// Haydn Huntley
// haydn.huntley@gmail.com


$fn = 360/8;

include <configuration.scad>;
include <roundedBox.scad>;
include <motor.scad>;

zMotorRing         = 10.0;
motorRingThickness =  3.0;
rubberTubingID     = 0.25*mmPerInch + 5*smidge;
	

module motorRing()
{
	xyScale            = (nema17Width+2*motorRingThickness) / nema17Width;
	motorWingSize      = 10.7-m3NutRadius+1;
	motorWingThickness = 4*motorRingThickness;
	
	difference()
	{
		union()
		{
			// The basic shape of the ring, motorRingThickness thick.
			scale([xyScale, xyScale, 1])
			motorRingHelper();

			// Add the wings for the M3 bolts to secure it.
			hull()
			{
				translate([0, 0, zMotorRing/2])
				rotate([90, 0, 0])
				roundedBox([nema17Width*xyScale+2*motorWingSize,
							zMotorRing,
							motorWingThickness], zMotorRing/2, true);

				scale([xyScale, xyScale, 1])
				motorRingHelper();
			}

			// Add extra material to thicken the top where the
			// M3 bolt to suspend it will be.
			translate([0, nema17Width*xyScale/2, zMotorRing/2])
			rotate([-90, 0, 0])
			cylinder(d1=zMotorRing,
					 d2=2*m3LooseRadius,
					 h=motorRingThickness,
					 $fn=24);
		}

		// Remove a hole in the middle for the NEMA17 motor.
		translate([0, 0, -smidge/2])
		scale([1, 1, 1.01])
		motorRingHelper();

		// Cut it into two pieces.
		translate([0, 0, zMotorRing/2])
		cube([nema17Width*xyScale+2*motorWingSize+smidge,
			  motorRingThickness,
			  zMotorRing+smidge], true);

		// Holes for two M3x16 bolts with nuts to tighten it.
		for (x = [1, -1])
			translate([x*(nema17Width*xyScale+motorWingSize-1)/2,
					   0,
					   zMotorRing/2])
			rotate([90, 0, 0])
			{
				// M3 SHCS head.
				translate([0, 0, -6])
				rotate([0, 0, 30])
				rotate([0, 180, 0])
				cylinder(r1=m3LooseHeadRadius,
						 r2=m3LooseHeadRadius+4*smidge,
						 h=motorWingThickness*0.75,
						 center=false,
						 $fn=24);
				// M3 shaft.
				cylinder(r=m3LooseRadius,
						 h=2*motorWingThickness,
						 center=true,
						 $fn=24);
				// Make room for an M3 nut trap.
				translate([0, 0, 6])
				rotate([0, 0, 30])
				cylinder(r1=m3TightNutRadius,
						 r2=m3LooseNutRadius+4*smidge,
						 h=motorWingThickness*0.75,
						 center=false,
						 $fn=6);
			}

					 

		// A hole for an M3x10 bolt and nut to suspend it from.
		translate([0, nema17Width/2, zMotorRing/2])
		rotate([-90, 0, 0])
		translate([0, 0, -smidge/2])
		{
			cylinder(r=m3LooseRadius, h=2*motorRingThickness+smidge, $fn=24);
			cylinder(r=m3LooseHeadRadius, h=m3HeadHeight+2*smidge, $fn=24);
		}
	}
}


module motorWyeSuspender()
{
	difference()
	{
		union()
		{
			// The common body of the "wye".
			cylinder(d=zMotorRing, h=rubberTubingID);

			// The three arms to attach it to the 0.25" ID rubber tubing.
			for (a = [1:3])
				rotate([0, 0, a*120])
				translate([0, 0, rubberTubingID/2])
				rotate([-90, 0, 0])
				cylinder(d=rubberTubingID, h=15);
		}

		// Hole for the M3 bolt to attach it to the motorRing.
		translate([0, 0, -smidge/2])
		cylinder(r=m3LooseRadius, h=rubberTubingID+smidge, $fn=24);

		// Pocket for the M3 nut to secure it to the motor.
		translate([0, 0, rubberTubingID-m3NutHeight])
		cylinder(r1=m3TightNutRadius,
				 r2=m3LooseNutRadius,
				 h=m3NutHeight+smidge, $fn=6);
	}
}


module motorRingHelper()
{
	intersection()
	{
		rotate([0, -90, 0])
		nema17Motor();

		translate([0, 0, zMotorRing/2])
		cube([nema17Width, nema17Width, zMotorRing], true);
	}
}


module tubingAdapter()
{
	h = 14.0 - m3NylockNutHeight;
	
	difference()
	{
		cylinder(d=rubberTubingID, h=h);

		translate([0, 0, -smidge/2])
		cylinder(r=m3LooseRadius, h=h+smidge);
	}
}


motorRing();

// Flip the wye upside down for printing.
motorWyeSuspender();

// Include 3 adaptors for mating the M3x35 SHCS on the carriages to the
// 0.25" ID rubber tubing.
for (a = [0:2])
	rotate([0, 0, a*120])
	translate([0, -15, 0])
	tubingAdapter();