Commit | Line | Data |
---|---|---|
2159eed1 VAH |
1 | // PRUSA iteration3 |
2 | // X carriage | |
3 | // GNU GPL v3 | |
4 | // Josef Průša <josefprusa@me.com> | |
5 | // Václav 'ax' Hůla <axtheb@gmail.com> | |
6 | // http://www.reprap.org/wiki/Prusa_Mendel | |
7 | // http://github.com/prusajr/PrusaMendel | |
8 | ||
9 | include <configuration.scad> | |
10 | use <bushing.scad> | |
88f30890 VAH |
11 | // mounting plate |
12 | use <extras/groovemount.scad> | |
2159eed1 | 13 | |
ad345632 | 14 | |
ccb73da3 VAH |
15 | //Use 30 for single extruder, 50 for wades, 80 for dual extruders (moved to config file) |
16 | //carriage_l_base = 80; | |
c9d4aabe | 17 | //check if we need to extend carriage to fit bearings |
9e4aaf5a VAH |
18 | carriage_l_adjusted = max(adjust_bushing_len(bushing_xy, carriage_l_base, layer_height * 9), adjust_bushing_len(bushing_carriage, carriage_l_base, layer_height * 9)); |
19 | //For bearings 30mm long or shorter enforce double len | |
20 | carriage_l_real = max((bushing_xy[2] > 30 ? carriage_l_adjusted : (2 * bushing_xy[2] + 6)), carriage_l_adjusted); | |
c9d4aabe VAH |
21 | // if the carriage was extended, we want to increase carriage_hole_to_side |
22 | carriage_hole_to_side = max(3, ((carriage_l_real - carriage_l_base) / 2)); | |
9e4aaf5a | 23 | echo(carriage_hole_to_side); |
c9d4aabe | 24 | carriage_l = carriage_l_base + 2 * carriage_hole_to_side; |
2159eed1 | 25 | |
9e4aaf5a | 26 | |
ad345632 VAH |
27 | bushing_carriage_len = adjust_bushing_len(bushing_carriage, 21, layer_height * 9); |
28 | ||
88f30890 VAH |
29 | module x_carriage(){ |
30 | mirror([1,0,0]) { | |
31 | difference() { | |
32 | union() { | |
33 | //upper bearing | |
c9d4aabe | 34 | rotate([0, 0, 90]) linear(bushing_carriage); |
88f30890 | 35 | //lower bearing |
c9d4aabe | 36 | translate([xaxis_rod_distance,0,0]) rotate([0, 0, 90]) linear(bushing_xy, carriage_l); |
d3618a65 | 37 | |
ccb73da3 | 38 | //This block moves with varying bearing thickness to ensure the front side is flat |
c9d4aabe VAH |
39 | translate([0, -bushing_foot_len(bushing_xy), 0]) { |
40 | // main plate | |
81d18889 | 41 | translate([4, -1, 0]) cube_fillet([xaxis_rod_distance + 4, 6, carriage_l], radius=2); |
c9d4aabe | 42 | translate([-8, -1, 0]) cube_fillet([xaxis_rod_distance + 16, 6, bushing_carriage_len + 3], radius=2); |
88f30890 | 43 | } |
d3618a65 | 44 | |
88f30890 | 45 | translate([45/2,0,0]){ |
d3618a65 | 46 | |
ccb73da3 | 47 | //fill the space where the belt is, as it will be substracted at later point and we want it stiff here. |
c9d4aabe VAH |
48 | //belt smooth side |
49 | translate([-13.5 - belt_thickness, -8.5, 0]) cube_fillet([5, 15, carriage_l], vertical = [2, 2, 0, 0]); | |
50 | //belt teethed side, with cutouts for belt ends. | |
88f30890 | 51 | difference(){ |
81d18889 VAH |
52 | union() { |
53 | translate([-3, -1, carriage_l/2]) cube_fillet([11, 16, carriage_l], vertical = [2, 2, 0, 0], center = true); | |
54 | translate([-13, -10, 0]) cube([8, 10, carriage_l]); | |
55 | } | |
9e4aaf5a VAH |
56 | translate([-3.5, 0, 67 + carriage_hole_to_side]) cube([13, 10, 8], center = true); |
57 | translate([-3.5, 0, 40 + carriage_hole_to_side]) cube([13, 10, 8], center = true); | |
58 | translate([-3.5, 0, 15 + carriage_hole_to_side]) cube([13, 10, 8], center = true); | |
59 | if (carriage_l_base == 30) { | |
60 | //more space for belt ends, as there is only one cutout | |
61 | #translate([-3.5, 0, 15 + carriage_hole_to_side]) cube([13, 10, 14], center = true); | |
62 | } | |
88f30890 VAH |
63 | } |
64 | ||
65 | } | |
66 | } | |
c9d4aabe | 67 | //Ensure upper bearing can be inserted cleanly |
81d18889 | 68 | rotate([0, 0, 90]) { |
58279f58 | 69 | linear_negative(bushing_carriage, carriage_l); |
f88c1104 | 70 | } |
c9d4aabe | 71 | //Same for lower bearing |
81d18889 | 72 | translate([xaxis_rod_distance, 0, 0]) rotate([0, 0, 90]) { |
f88c1104 VAH |
73 | linear_negative(bushing_xy, carriage_l); |
74 | } | |
5ea6ab38 | 75 | // extruder mounts |
c9d4aabe | 76 | translate([20, -2, carriage_hole_to_side]) { |
0ae9e1f0 | 77 | rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true,$fn=small_hole_segments); |
81d18889 | 78 | translate([0, 7, 0]) rotate([90, 60, 0]) cylinder(r=3.4, h=5, $fn=6, center=true); |
88f30890 | 79 | } |
c9d4aabe | 80 | translate([20, -2, carriage_hole_to_side + 30]) { |
0ae9e1f0 | 81 | rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true,$fn=small_hole_segments); |
81d18889 | 82 | translate([0, 7, 0]) rotate([90, 60, 0]) cylinder(r=3.4, h=5, $fn=6, center=true); |
2159eed1 | 83 | } |
c9d4aabe VAH |
84 | if (carriage_l >= 50 + 2 * carriage_hole_to_side) { |
85 | translate([20, -2, carriage_hole_to_side + 30 + 20]) { | |
0ae9e1f0 | 86 | rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true,$fn=small_hole_segments); |
81d18889 | 87 | translate([0, 7, 0]) rotate([90, 60, 0]) cylinder(r=3.4, h=5, $fn=6, center=true); |
c9d4aabe | 88 | } |
eb7e175e | 89 | } |
c9d4aabe | 90 | if (carriage_l >= 80 + 2 * carriage_hole_to_side) { |
81d18889 | 91 | translate([20, -2, carriage_hole_to_side + 30 + 20 + 30]) { |
0ae9e1f0 | 92 | rotate([90, 0, 0]) cylinder(r=1.8, h=32, center=true,$fn=small_hole_segments); |
81d18889 | 93 | translate([0, 7, 0]) rotate([90, 60, 0]) cylinder(r=3.4, h=5, $fn=6, center=true); |
c9d4aabe VAH |
94 | } |
95 | } | |
96 | //belt insert | |
97 | translate([-8.5 + 45 / 2, 0, 0]) mirror([1, 0, 0]) { | |
98 | belt(carriage_l, 5); | |
99 | %belt(carriage_l); | |
9d36b130 | 100 | } |
9d36b130 NZ |
101 | } |
102 | } | |
103 | } | |
104 | ||
88f30890 | 105 | x_carriage(); |