1
+ // Prusa I3 E3D-v5 Auto Levelling Carriage
2
+ // Created by David "N3MIS15" Gray 2014
3
+
4
+ heatsink_outer = 16 ; // Outside of nozzle mounting groove
5
+ heatsink_inner = 12 ; // Inside of nozzle mounting groove
6
+ bowden_hotend = true ; // If you have Bowden version or not ("false" requires carriage to be tapped)
7
+ heatsink_bolt = 4 ; // Bolt size to hold heatsink (3 or 4mm)
8
+ heatsink_nut = 7.66 ; // Nut size from point to point (M3=6.01, M4=7.66)
9
+ bowden_thread = 11 ; // Hole size for bowden mount (8.8 if using 1/8" BSP tap)
10
+ heatsink_fan = true ; // Add fan on heatsink side
11
+ servo_fan = true ; // Add fan on servo side
12
+ servo_hole = 7.11 ; // Servo hole on servo arm
13
+ hole_padding = 0.7 ; // Extra allowance on holes (3mm hole becomes 3mm+padding)
14
+
15
+
16
+
17
+
18
+ // Heatsink bolt offsets
19
+ hsb_x_offset = (heatsink_inner/2 )+ (heatsink_bolt/2 );
20
+ hsb_z_offset = - 7 + (5.75 + (heatsink_bolt/2 ));
21
+
22
+ module fan() {
23
+ difference (){
24
+ translate ([- 3 , 0 , 0 ]) cube ([56 ,40 ,4 ], center= true );
25
+ cylinder (h= 5 , r= 19 , center= true , $ fn= 30 );
26
+ translate ([- 16 , - 16 , 0 ]) cylinder (h= 5 , r= 1.5 + (hole_padding/2 ), center= true , $ fn= 30 );
27
+ translate ([- 16 , 16 , 0 ]) cylinder (h= 5 , r= 1.5 + (hole_padding/2 ), center= true , $ fn= 30 );
28
+ translate ([8 , 0 , 0 ]) cube ([40 ,41 ,5 ], center= true );
29
+ }
30
+ }
31
+
32
+ module servo_box() {
33
+ difference (){
34
+ if (bowden_hotend == true ) {
35
+ translate ([- 28.75 , - 5 , 13 ]) cube ([19.5 ,50 ,40 ], center= true );
36
+ }
37
+ else {
38
+ translate ([- 28.75 , - 5 , 10 ]) cube ([19.5 ,50 ,46 ], center= true );
39
+ }
40
+ translate ([- 29.25 , - 3.5 , 13.5 ]) cube ([13 ,47 ,39 ], center= true );
41
+ translate ([- 29.25 , - 5 , 13 ]) cube ([13 ,50 ,23.5 ], center= true );
42
+ translate ([- 29.25 ,0 ,- 1 ]) rotate ([90 ,0 ,0 ]) cylinder (h= 65 , r= 1.5 + (hole_padding/2 ), center= true , $ fn= 15 );
43
+ translate ([- 29.25 ,0 ,27 ]) rotate ([90 ,0 ,0 ]) cylinder (h= 65 , r= 1.5 + (hole_padding/2 ), center= true , $ fn= 15 );
44
+ translate ([- 37 , 7 , 35 ]) rotate ([90 ,0 ,90 ]) cylinder (h= 10 , r= 35 , center= true , $ fn= 6 );
45
+ translate ([- 21 , 8 , 15 ]) rotate ([90 ,0 ,90 ]) cylinder (h= 10 , r= 6 , center= true , $ fn= 8 );
46
+ }
47
+ }
48
+
49
+ module main_body() {
50
+ difference (){
51
+ union () {
52
+ if (bowden_hotend == true ) {
53
+ cube ([40 ,40 ,14 ], center= true );
54
+ translate ([21 , 0 , 13 ]) cube ([4 ,40 ,40 ], center= true );
55
+ }
56
+ else {
57
+ translate ([0 , 0 , - 3 ]) cube ([40 ,40 ,20 ], center= true );
58
+ translate ([21 , 0 , 10 ]) cube ([4 ,40 ,46 ], center= true );
59
+ }
60
+
61
+ // Heatsink bolt dimples
62
+ translate ([- hsb_x_offset,- 20.5 ,hsb_z_offset]) rotate ([90 ,0 ,180 ]) cylinder (h= 1 , r1= (heatsink_bolt* 1.75 )/2 , r2= (heatsink_bolt* 2.25 )/2 , center= true , $ fn= 30 );
63
+ translate ([hsb_x_offset,- 20.5 ,hsb_z_offset]) rotate ([90 ,0 ,180 ]) cylinder (h= 1 , r1= (heatsink_bolt* 1.75 )/2 , r2= (heatsink_bolt* 2.25 )/2 , center= true , $ fn= 30 );
64
+
65
+ // Fan mount
66
+ if (heatsink_fan == true ) {
67
+ translate ([38.8 , 0 , 50 ]) rotate ([0 ,- 45 ,0 ]) fan();
68
+ }
69
+
70
+ // Fan mount (servo)
71
+ if (servo_fan == true ) {
72
+ translate ([- 38.8 , 0 , 50 ]) rotate ([0 ,- 45 ,180 ]) fan();
73
+ }
74
+
75
+ // Back wall
76
+ translate ([0 , 17.5 , 20 ]) cube ([38 ,5 ,26 ], center= true );
77
+ }
78
+
79
+ // CUTOUTS
80
+ // Bowden thread
81
+ translate ([0 ,- 5 ,]) cylinder (h= 30 , r= bowden_thread/2 , center= true , $ fn= 30 );
82
+
83
+ // Heatsink Hole
84
+ translate ([0 ,- 5 ,1 ]) cylinder (h= 12 , r= (heatsink_outer/2 )+ (hole_padding/2 ), center= true , $ fn= 60 );
85
+
86
+ // Carriage mount holes
87
+ translate ([- 15 ,0 ,0 ]) rotate ([90 ,0 ,0 ]) cylinder (h= 60 , r= 1.5 + (hole_padding/2 ), center= true , $ fn= 30 );
88
+ translate ([- 15 ,- 15 ,0 ]) rotate ([90 ,0 ,0 ]) cylinder (h= 40 , r= 3 + (hole_padding/2 ), center= true , $ fn= 30 );
89
+ translate ([15 ,0 ,0 ]) rotate ([90 ,0 ,0 ]) cylinder (h= 60 , r= 1.5 + (hole_padding/2 ), center= true , $ fn= 30 );
90
+ translate ([15 ,- 15 ,0 ]) rotate ([90 ,0 ,0 ]) cylinder (h= 40 , r= 3 + (hole_padding/2 ), center= true , $ fn= 30 );
91
+
92
+ // Heatsink bolts
93
+ translate ([- hsb_x_offset,0 ,hsb_z_offset]) rotate ([90 ,0 ,0 ]) cylinder (h= 60 , r= (heatsink_bolt/2 )+ (hole_padding/2 ), center= true , $ fn= 30 );
94
+ translate ([hsb_x_offset,0 ,hsb_z_offset]) rotate ([90 ,0 ,0 ]) cylinder (h= 60 , r= (heatsink_bolt/2 )+ (hole_padding/2 ), center= true , $ fn= 30 );
95
+
96
+ // Heatsink nuts
97
+ translate ([- hsb_x_offset,16.1 ,hsb_z_offset]) rotate ([90 ,90 ,0 ]) cylinder (h= 8 , r= (heatsink_nut/2 )+ (hole_padding/2 ), center= true , $ fn= 6 );
98
+ translate ([hsb_x_offset,16.1 ,hsb_z_offset]) rotate ([90 ,90 ,0 ]) cylinder (h= 8 , r= (heatsink_nut/2 )+ (hole_padding/2 ), center= true , $ fn= 6 );
99
+
100
+ // Back wall
101
+ translate ([0 , - 2.5 , 21 ]) cube ([38 ,36 ,28 ], center= true );
102
+ translate ([0 , - 2.5 , 33 ]) rotate ([90 ,0 ,0 ]) cylinder (h= 60 , r= 19 , center= true , $ fn= 6 );
103
+ }
104
+ servo_box();
105
+ }
106
+
107
+ module servo_arm() {
108
+ difference (){
109
+ union () {
110
+ cylinder (h= 4.5 , r= 5.5 , center= true , $ fn= 30 );
111
+ translate ([0 , - 19.5 , 0 ]) cube ([11 ,39 ,4.5 ], center= true );
112
+ translate ([0 , - 42 , 0 ]) cube ([20 ,8 ,4.5 ], center= true );
113
+ }
114
+
115
+ // CUTOUTS
116
+ // Servo hole
117
+ cylinder (h= 4.5 , r= (servo_hole/2 )+ (hole_padding/2 ), center= true , $ fn= 30 );
118
+
119
+ translate ([0 , 0 , 1.5 ]) {
120
+ hull () {
121
+ cylinder (h= 1.5 , r= 3 + (hole_padding/2 ), center= true , $ fn= 30 );
122
+ translate ([0 , - 16.5 , 0 ]) cylinder (h= 1.5 , r= 2 + (hole_padding/2 ), center= true , $ fn= 30 );
123
+ }
124
+ }
125
+
126
+ // Endstop holes
127
+ translate ([0 , - 42 , 0 ]) {
128
+ translate ([5 , 0 , 0 ]) cylinder (h= 4.5 , r= 1.5 + (hole_padding/2 ), center= true , $ fn= 30 );
129
+ translate ([- 5 , 0 , 0 ]) cylinder (h= 4.5 , r= 1.5 + (hole_padding/2 ), center= true , $ fn= 30 );
130
+ }
131
+ }
132
+ }
133
+
134
+ main_body();
135
+ // servo_arm();
0 commit comments