Skip to content

Commit 82102ae

Browse files
committed
I3 carriage
1 parent c79d3db commit 82102ae

File tree

3 files changed

+135
-0
lines changed

3 files changed

+135
-0
lines changed

I3_E3D_autolevel_carriage.scad

+135
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
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();

I3_E3D_autolevel_carriage.stl

137 KB
Binary file not shown.

Servo_arm.stl

25.9 KB
Binary file not shown.

0 commit comments

Comments
 (0)