Browse Source

Added E3Dv6 model and triple hotend mount for x-carriage

Thomas Buck 6 years ago
parent
commit
b7c02a512c
4 changed files with 258 additions and 5 deletions
  1. 121
    0
      lib/e3d_v6_all_metall_hotend.scad
  2. 124
    4
      lib/linear_bearing.scad
  3. 12
    0
      lib/tslot_xy.scad
  4. 1
    1
      xyRepRap.scad

+ 121
- 0
lib/e3d_v6_all_metall_hotend.scad View File

@@ -0,0 +1,121 @@
1
+/*
2
+Name: E3D-v6 All Metal HotEnd in OpenSCAD
3
+Author: Jons Collasius from Germany/Hamburg
4
+
5
+License: CC BY-NC-SA 4.0
6
+License URL: https://creativecommons.org/licenses/by-nc-sa/4.0/
7
+
8
+Creator of "E3D-v6 All Metal HotEnd": E3D Online - JR 
9
+URL E3D v6: http://wiki.e3d-online.com/wiki/E3D-v6_Documentation
10
+*/
11
+
12
+// retrieved from https://www.thingiverse.com/thing:548237
13
+
14
+// ######################################################################################################################
15
+
16
+/* [Global] */
17
+
18
+// resolution of round object. each line segment is fnr mm long. fnr = 1 crude and good for development (its faster), aim for fnr = 0.4 or smaller for a production render. smaller means more details (and a lot more time to render).
19
+fnresolution = 1.0;
20
+// detail level
21
+detaillevel = 1; // [0:coarse render only outlines,1:fine render with all details]
22
+
23
+// ######################################################################################################################
24
+//e3d_v6();
25
+
26
+// ######################################################################################################################
27
+
28
+e3d_v6_height = 65.6;
29
+e3d_upper_large_dia = 16;
30
+e3d_upper_small_dia = 12;
31
+e3d_upper_small_height = 6;
32
+e3d_max_dia = 22;
33
+
34
+module e3d_v6() {
35
+    translate([0, 0, e3d_v6_height])
36
+        rotate([0, 180, 0])
37
+        e3d();
38
+}
39
+
40
+// ######################################################################################################################
41
+module e3d() {
42
+	difference() {
43
+		union() {
44
+			translate([0,0,0]) fncylinder(r=8,h=7);
45
+			translate([0,0,6]) fncylinder(r=6,h=8);
46
+			translate([0,0,13]) fncylinder(r=8,h=8);
47
+			translate([0,0,20]) fncylinder(r=11.15,h=26);
48
+			translate([0,0,0]) fncylinder(r=8,h=7);
49
+			translate([0,0,45]) fncylinder(r=2,h=4.1);
50
+			translate([-8,-4.5,48.1]) chamfercube([16,20,11.5],side=[0.4,0.4,0.4,0.4],top=[0.4,0.4,0.4,0.4],bottom=[0.4,0.4,0.4,0.4]);
51
+			translate([0,0,58.6]) fncylinder(r=2.5,h=3);
52
+			translate([0,0,60.6]) fncylinder(r=4.03,h=3,fn=6);
53
+			translate([0,0,62.6]) fncylinder(r=3,r2=0.5,h=3);
54
+		}
55
+		if(detaillevel==1) {
56
+			translate([0,0,-1]) fncylinder(r=1.6,h=64.1);
57
+			translate([0,0,62.1]) fncylinder(r=0.25,h=4,fn=10);
58
+			translate([0,0,16]) fnpipe(r=9,r2=4.475,h=1.5); 
59
+			translate([0,0,18.5]) fnpipe(r=9,r2=4.475,h=1.5); 
60
+			for ( i = [0 : 9] ) {
61
+				translate([0,0,21+i*2.5]) fnpipe(r=12.15,r2=4.475+i*0.15,h=1.5); 
62
+			}
63
+			translate([-9,8,55.6]) rotate([0,90,0]) fncylinder(r=3.05, h=18);
64
+			translate([-9,8,54.6]) cube([18,8.5,2]);
65
+			translate([0,13,47.1]) fncylinder(r=1.4, h=13.5);
66
+			translate([4.45,-1,54.8]) rotate([0,90,0]) fncylinder(r=1.4, h=4.45);
67
+			translate([3.45,-2.5,57.6]) rotate([0,90,0]) fncylinder(r=1.15, h=5.45);
68
+		}
69
+	}
70
+}
71
+
72
+// ######################################################################################################################
73
+module chamfercube(xyz=[0,0,0],side=[0,0,0,0],top=[0,0,0,0],bottom=[0,0,0,0],x=false,y=false,z=false) {
74
+	translate([x==true?-xyz[0]/2:0,y==true?-xyz[1]/2:0,z==true?-xyz[2]/2:0]) difference() {
75
+		cube(xyz);
76
+		if(side[0]>=0) translate([0,0,xyz[2]/2]) rotate([0,0,45]) cube([side[0]*2,side[0]*3,xyz[2]+2],center=true);
77
+		if(side[1]>=0) translate([xyz[0],0,xyz[2]/2]) rotate([0,0,-45]) cube([side[1]*2,side[1]*3,xyz[2]+2],center=true);
78
+		if(side[2]>=0) translate([xyz[0],xyz[1],xyz[2]/2]) rotate([0,0,45]) cube([side[2]*2,side[2]*3,xyz[2]+2],center=true);
79
+		if(side[3]>=0) translate([0,xyz[1],xyz[2]/2]) rotate([0,0,-45]) cube([side[3]*2,side[3]*3,xyz[2]+2],center=true);
80
+		if(top[0]>=0) translate([xyz[0]/2,0,xyz[2]]) rotate([-45,0,0]) cube([xyz[0]+2,top[0]*2,top[0]*3,],center=true);
81
+		if(top[2]>=0) translate([xyz[0]/2,xyz[1],xyz[2]]) rotate([45,0,0]) cube([xyz[0]+2,top[2]*2,top[2]*3,],center=true);
82
+		if(top[3]>=0) translate([0,xyz[1]/2,xyz[2]]) rotate([0,45,0]) cube([top[3]*2,xyz[1]+2,top[3]*3,],center=true);
83
+		if(top[1]>=0) translate([xyz[0],xyz[1]/2,xyz[2]]) rotate([0,-45,0]) cube([top[1]*2,xyz[1]+2,top[1]*3,],center=true);
84
+		if(bottom[0]>=0) translate([xyz[0]/2,0,0]) rotate([45,0,0]) cube([xyz[0]+2,bottom[0]*2,bottom[0]*3,],center=true);
85
+		if(bottom[2]>=0) translate([xyz[0]/2,xyz[1],0]) rotate([-45,0,0]) cube([xyz[0]+2,bottom[2]*2,bottom[2]*3,],center=true);
86
+		if(bottom[3]>=0) translate([0,xyz[1]/2,0]) rotate([0,-45,0]) cube([bottom[3]*2,xyz[1]+2,bottom[3]*3,],center=true);
87
+		if(bottom[1]>=0) translate([xyz[0],xyz[1]/2,0]) rotate([0,45,0]) cube([bottom[1]*2,xyz[1]+2,bottom[1]*3,],center=true);
88
+	}	
89
+}
90
+
91
+// ######################################################################################################################
92
+module fnpipe(r,r2,h,fn){
93
+	if (fn==undef) {
94
+		difference() {
95
+			fncylinder(r=r,h=h,$fn=2*r*3.14/fnresolution);
96
+			translate([0,0,-1]) fncylinder(r=r2,h=h+2,$fn=2*r*3.14/fnresolution);
97
+		}
98
+	} else {
99
+		difference() {
100
+			fncylinder(r=r,h=h,fn=fn);
101
+			translate([0,0,-1]) fncylinder(r=r2,h=h+2,fn=fn);
102
+		}
103
+	}
104
+}
105
+
106
+// ######################################################################################################################
107
+module fncylinder(r,r2,h,fn){
108
+	if (fn==undef) {
109
+		if (r2==undef) {
110
+			cylinder(r=r,h=h,$fn=2*r*3.14/fnresolution);
111
+		} else {
112
+			cylinder(r=r,r2=r2,h=h,$fn=2*r*3.14/fnresolution);
113
+		}
114
+	} else {
115
+		if (r2==undef) {
116
+			cylinder(r=r,h=h,$fn=fn);
117
+		} else {
118
+			cylinder(r=r,r2=r2,h=h,$fn=fn);
119
+		}
120
+	}
121
+}

+ 124
- 4
lib/linear_bearing.scad View File

@@ -1,5 +1,6 @@
1 1
 
2 2
 include <bearing_idler.scad>
3
+include <e3d_v6_all_metall_hotend.scad>
3 4
 
4 5
 // #######################################################
5 6
 // ################### Linear Bearings ###################
@@ -9,7 +10,7 @@ lm8uu_outer = 15;
9 10
 lm8uu_inner = 8;
10 11
 lm8uu_height = 24;
11 12
 
12
-x_rail_dist = 60;
13
+x_rail_dist = 70;
13 14
 
14 15
 lm8uu_dia_add = 0.5;
15 16
 lm8uu_len_add = 1.0;
@@ -41,7 +42,7 @@ x_carriage_belt_block_width = 8;
41 42
 x_carriage_belt_block_length = 8;
42 43
 x_carriage_belt_block_height = 25;
43 44
 x_carriage_belt_block_height_b = x_carriage_belt_block_height - 7;
44
-x_carriage_block_hole_off = 4.5;
45
+x_carriage_block_hole_off = 6.0;
45 46
 x_carriage_block_length = 4;
46 47
 x_carriage_block_off = 2.5;
47 48
 x_carriage_block_add = 4.4;
@@ -50,6 +51,9 @@ x_carriage_length = x_rail_dist + (2 * x_carriage_len_add);
50 51
 
51 52
 x_carriage_block_height = 2 * (x_carriage_block_hole_off + x_carriage_block_add);
52 53
 
54
+x_cutout_width = x_carriage_width - (2 * x_carriage_belt_block_width) - 5;
55
+x_cutout_length = x_rail_dist - 25;
56
+
53 57
 draw_x_carriage = false;
54 58
 draw_y_carriage = false;
55 59
 draw_y_carriage_idlers = true;
@@ -72,6 +76,8 @@ module lm8uu() {
72 76
 
73 77
 // TODO add cable tie canal for lm8uu mounting
74 78
 
79
+// TODO get ready to actually print these
80
+
75 81
 module generate_spacer(pos) {
76 82
     color("green")
77 83
     translate([pos[0], pos[1], -0.5])
@@ -178,7 +184,7 @@ module belt_fix() {
178 184
             cylinder(d = 6.1, h = 3.8, $fn = 6);
179 185
         }
180 186
             
181
-        translate([x_carriage_belt_block_width / 2, -1, x_carriage_block_hole_off + 8.8])
187
+        translate([x_carriage_belt_block_width / 2, -1, x_carriage_block_height - -x_carriage_block_hole_off - 9])
182 188
         rotate([-90, 0, 0]) {
183 189
             cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
184 190
             cylinder(d = 6.1, h = 3.8, $fn = 6);
@@ -255,6 +261,8 @@ module belt_mounts() {
255 261
 }
256 262
 
257 263
 module x_carriage() {
264
+    $fn = 20;
265
+    
258 266
     //color("green")
259 267
     difference() {
260 268
         union() {
@@ -267,7 +275,7 @@ module x_carriage() {
267 275
         
268 276
         // big center cutout
269 277
         translate([x_carriage_width / 2, x_carriage_length / 2, x_carriage_wall / 2])
270
-            cube([x_carriage_width - (2 * x_carriage_belt_block_width) - 5, x_rail_dist - 25, x_carriage_wall + 2], center=true);
278
+            cube([x_cutout_width, x_cutout_length, x_carriage_wall + 2], center=true);
271 279
         
272 280
         for (i = [0 : 1 : 1]) {
273 281
             translate([lm8uu_height + x_carriage_bearing_off + (i * (x_carriage_width - (2 * x_carriage_bearing_off) - lm8uu_height)), 0, ])
@@ -298,6 +306,118 @@ module x_carriage() {
298 306
                     cylinder(d = lm8uu_inner + rail_dia_add, h = x_carriage_width * 2);
299 307
             }
300 308
         }
309
+        
310
+        // left mounting screw
311
+        translate([5.5, x_carriage_length / 2, -1])
312
+            cylinder(d = e3d_hole_dia, h = x_carriage_wall + 12);
313
+        // right mounting screw
314
+        translate([x_carriage_width - 5.5, x_carriage_length / 2, -1])
315
+            cylinder(d = e3d_hole_dia, h = x_carriage_wall + 12);
316
+        
317
+        // bottom mounting screw
318
+        translate([x_carriage_width / 2, 19, -1])
319
+            cylinder(d = e3d_hole_dia, h = x_carriage_wall + 12);
320
+        // top mounting screw
321
+        translate([x_carriage_width / 2, x_carriage_length - 19, -1])
322
+            cylinder(d = e3d_hole_dia, h = x_carriage_wall + 12);
323
+    }
324
+        
325
+    e3d_v6_dist_x = 23 + 5;
326
+    e3d_v6_dist_y = 18 + 1;
327
+    e3d_v6_z_off = 13;
328
+    
329
+    translate([x_carriage_width / 2, x_carriage_length / 2, -e3d_v6_height + x_carriage_wall + e3d_v6_z_off]) {
330
+        
331
+        color("red")
332
+        %translate([-e3d_v6_dist_x / 2, e3d_v6_dist_y / 2, 0])
333
+            e3d_v6();
334
+        
335
+        color("yellow")
336
+        %translate([e3d_v6_dist_x / 2, e3d_v6_dist_y / 2, 0])
337
+            e3d_v6();
338
+        
339
+        color("blue")
340
+        %translate([0, (e3d_v6_dist_y / 2) - e3d_v6_dist_y, 0])
341
+            rotate([0, 0, 180])
342
+            e3d_v6();
343
+    }
344
+    
345
+    e3d_clamp_width = x_cutout_width;
346
+    e3d_clamp_width_add = 10;
347
+    e3d_clamp_length = e3d_v6_dist_y;
348
+    e3d_clamp_b_length = ((x_cutout_length - e3d_clamp_length) / 2) + 7;
349
+    e3d_clamp_height = e3d_upper_small_height;
350
+    e3d_clamp_dia_add = 0.2;
351
+    e3d_clamp_cut = 0.2; // x2
352
+    e3d_clamp_hole_off = 4;
353
+    e3d_hole_dia = 3.2;
354
+    
355
+    echo(m3_screw_len=e3d_clamp_length + (2 * e3d_clamp_b_length));
356
+    
357
+    // hotend clamp center piece
358
+    translate([(x_carriage_width - e3d_clamp_width) / 2, (x_carriage_length - e3d_clamp_length) / 2, x_carriage_wall])
359
+    difference() {
360
+        union() {
361
+            // center clamp part
362
+            color("magenta")
363
+            translate([-e3d_clamp_width_add, e3d_clamp_cut, 0])
364
+                cube([e3d_clamp_width + (2 * e3d_clamp_width_add), e3d_clamp_length - (2 * e3d_clamp_cut), e3d_clamp_height]);
365
+            
366
+            // blue clamp
367
+            color("cyan")
368
+            translate([0, -e3d_clamp_b_length, 0])
369
+                cube([e3d_clamp_width, e3d_clamp_b_length - e3d_clamp_cut, e3d_clamp_height]);
370
+            
371
+            // red & yellow clamp
372
+            color("cyan")
373
+            translate([0, e3d_clamp_length + e3d_clamp_cut, 0])
374
+                cube([e3d_clamp_width, e3d_clamp_b_length - e3d_clamp_cut, e3d_clamp_height]);
375
+        }
376
+        
377
+        // left clamping screw
378
+        translate([e3d_clamp_hole_off, -e3d_clamp_b_length - 1, e3d_clamp_height / 2])
379
+            rotate([-90, 0, 0])
380
+            cylinder(d = e3d_hole_dia, h = x_cutout_width + 2);
381
+        // right clamping screw
382
+        translate([x_cutout_width - e3d_clamp_hole_off, -e3d_clamp_b_length - 1, e3d_clamp_height / 2])
383
+            rotate([-90, 0, 0])
384
+            cylinder(d = e3d_hole_dia, h = x_cutout_width + 2);
385
+        
386
+        // left mounting screw
387
+        translate([-5, e3d_clamp_length / 2, -1])
388
+            cylinder(d = e3d_hole_dia, h = e3d_clamp_height + 2);
389
+        // right mounting screw
390
+        translate([e3d_clamp_width + e3d_clamp_width_add - 5, e3d_clamp_length / 2, -1])
391
+            cylinder(d = e3d_hole_dia, h = e3d_clamp_height + 2);
392
+        
393
+        // bottom mounting screw
394
+        translate([e3d_clamp_width / 2, -e3d_clamp_b_length + 3.5, -1])
395
+            cylinder(d = e3d_hole_dia, h = e3d_clamp_height + 2);
396
+        // top mounting screw
397
+        translate([e3d_clamp_width / 2, e3d_clamp_length + e3d_clamp_b_length - 3.5, -1])
398
+            cylinder(d = e3d_hole_dia, h = e3d_clamp_height + 2);
399
+        
400
+        // red e3d clamp cutout
401
+        translate([(e3d_clamp_width - e3d_v6_dist_x) / 2, e3d_clamp_length, -1])
402
+            cylinder(d = e3d_upper_small_dia + e3d_clamp_dia_add, h = e3d_clamp_height + 2);
403
+        
404
+        // yellow e3d clamp cutout
405
+        translate([(e3d_clamp_width + e3d_v6_dist_x) / 2, e3d_clamp_length, -1])
406
+            cylinder(d = e3d_upper_small_dia + e3d_clamp_dia_add, h = e3d_clamp_height + 2);
407
+        
408
+        // blue e3d clamp cutout
409
+        translate([e3d_clamp_width / 2, 0, -1])
410
+            cylinder(d = e3d_upper_small_dia + e3d_clamp_dia_add, h = e3d_clamp_height + 2);
411
+    }
412
+    
413
+    // hotend cooling fan
414
+    color("grey")
415
+    %translate([x_carriage_width + 5, (x_carriage_length - 40) / 2, -40])
416
+    difference() {
417
+        cube([20, 40, 40]);
418
+        translate([-1, 20, 20])
419
+            rotate([0, 90, 0])
420
+            cylinder(d = 35, h = 22);
301 421
     }
302 422
 }
303 423
 

+ 12
- 0
lib/tslot_xy.scad View File

@@ -5,6 +5,8 @@
5 5
 
6 6
 include <tslot.scad>
7 7
 module tslot_x(slot, length) {
8
+    echo(t_slot_x=slot, t_slot_y=slot, length=length);
9
+    
8 10
     color("white")
9 11
     if (slot == 30) {
10 12
         translate([0, 0, slot])
@@ -17,6 +19,8 @@ module tslot_x(slot, length) {
17 19
     }
18 20
 }
19 21
 module tslot_y(slot, length) {
22
+    echo(t_slot_x=slot, t_slot_y=slot, length=length);
23
+    
20 24
     color("white")
21 25
     if (slot == 30) {
22 26
         translate([0, 0, slot])
@@ -29,6 +33,8 @@ module tslot_y(slot, length) {
29 33
     }
30 34
 }
31 35
 module tslot_z(slot, length) {
36
+    echo(t_slot_x=slot, t_slot_y=slot, length=length);
37
+    
32 38
     color("white")
33 39
     if (slot == 30) {
34 40
         translate([0, 0, 0])
@@ -40,6 +46,8 @@ module tslot_z(slot, length) {
40 46
 }
41 47
 
42 48
 module tslot_2_x(slot, length) {
49
+    echo(t_slot_x=slot, t_slot_y=slot * 2, length=length);
50
+    
43 51
     color("white")
44 52
     if (slot == 30) {
45 53
         translate([0, 0, slot])
@@ -52,6 +60,8 @@ module tslot_2_x(slot, length) {
52 60
     }
53 61
 }
54 62
 module tslot_2_y(slot, length) {
63
+    echo(t_slot_x=slot, t_slot_y=slot * 2, length=length);
64
+    
55 65
     color("white")
56 66
     if (slot == 30) {
57 67
         translate([0, 0, slot])
@@ -64,6 +74,8 @@ module tslot_2_y(slot, length) {
64 74
     }
65 75
 }
66 76
 module tslot_2_z(slot, length) {
77
+    echo(t_slot_x=slot, t_slot_y=slot * 2, length=length);
78
+    
67 79
     color("white")
68 80
     if (slot == 30) {
69 81
         translate([0, 0, 0])

+ 1
- 1
xyRepRap.scad View File

@@ -411,5 +411,5 @@ module heatbed() {
411 411
 
412 412
 frame();
413 413
 motion_xy();
414
-heatbed();
414
+//heatbed();
415 415
 

Loading…
Cancel
Save